Build/editor stuff and fix mod compilation
This commit is contained in:
96
.nvim.lua
Normal file
96
.nvim.lua
Normal file
@@ -0,0 +1,96 @@
|
||||
require("lua/lemon")
|
||||
require("lua/snippets")
|
||||
|
||||
vim.opt.errorformat = table.concat({
|
||||
-- '%f(%l\\,%c):\\ %tarning\\ %m\\ [%.%#]',
|
||||
'%f(%l\\,%c):\\ %trror\\ %m\\ [%.%#]',
|
||||
}, ',')
|
||||
|
||||
local def_workspace = { args = {}, build_type = "Debug", binary = "ng", build_target = "native", }
|
||||
local workspace = InitWorkspace(def_workspace)
|
||||
|
||||
local bin_target
|
||||
local bin_name
|
||||
|
||||
local function updateBuildEnv()
|
||||
-- The run (F6) arguments
|
||||
vim.opt.makeprg = "dotnet build"
|
||||
end
|
||||
|
||||
updateBuildEnv()
|
||||
|
||||
-- Update args for both run and debug configs
|
||||
local function updateArgs(args)
|
||||
workspace.args = args
|
||||
WriteWorkspace()
|
||||
end
|
||||
|
||||
local function updateTarget(tgt)
|
||||
if type(tgt) ~= "string" then
|
||||
vim.api.nvim_echo({ { "Invalid target", "ErrorMsg" } }, false, {})
|
||||
return
|
||||
end
|
||||
workspace.binary = tgt
|
||||
updateBuildEnv()
|
||||
WriteWorkspace()
|
||||
end
|
||||
|
||||
-- The Configure command
|
||||
vim.api.nvim_create_user_command("Configure", function(a)
|
||||
local build_type = "Debug"
|
||||
local build_target = "native"
|
||||
local a1 = a.fargs
|
||||
if #a1 > 0 then build_type = a1[1] end
|
||||
if #a1 > 1 then build_target = a1[2] end
|
||||
vim.print(a1[1])
|
||||
|
||||
workspace.build_type = build_type
|
||||
workspace.build_target = build_target
|
||||
|
||||
updateBuildEnv()
|
||||
WriteWorkspace()
|
||||
|
||||
local args = {}
|
||||
table.insert(args, "-B" .. build_folder)
|
||||
table.insert(args, "-GNinja")
|
||||
table.insert(args, "-DCMAKE_BUILD_TYPE=" .. build_type)
|
||||
table.insert(args, "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON")
|
||||
if workspace.build_target == 'web' then
|
||||
table.insert(args, "-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/Web.cmake")
|
||||
table.insert(args, "-DTOOLS_HINT_PATH=" .. build_folder .. "/../b_Tool")
|
||||
else
|
||||
table.insert(args, "-DCMAKE_CXX_COMPILER=clang++")
|
||||
table.insert(args, "-DCMAKE_C_COMPILER=clang")
|
||||
end
|
||||
-- Feed into cmd !cmake
|
||||
|
||||
vim.fn.feedkeys(":!cmake " .. table.concat(args, " "))
|
||||
end, { nargs = '*', desc = "Update run/debug arguments" })
|
||||
|
||||
vim.api.nvim_create_user_command("Target", function(a) updateTarget(a.args) end,
|
||||
{ nargs = 1, desc = "Update run/debug target" })
|
||||
|
||||
vim.api.nvim_create_user_command("Args", function(a) updateArgs(a.fargs) end,
|
||||
{ nargs = '*', desc = "Update run/debug arguments" })
|
||||
|
||||
vim.api.nvim_create_user_command("ReloadWorkspace", function(a)
|
||||
workspace = InitWorkspace(def_workspace)
|
||||
updateBuildEnv()
|
||||
end,
|
||||
{ nargs = 0, desc = "Reload workspace debug/run configuration from file" })
|
||||
|
||||
-- F6 to run the application
|
||||
local function buildAndRun(silent)
|
||||
SaveAllCode()
|
||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", true)
|
||||
vim.schedule(function()
|
||||
MakeAnd(function() end, silent)
|
||||
end)
|
||||
end
|
||||
local function buildAndRunSilent() buildAndRun(true) end
|
||||
vim.keymap.set('n', '<F7>', buildAndRunSilent)
|
||||
vim.keymap.set('i', '<F7>', buildAndRunSilent)
|
||||
vim.keymap.set('n', '<F19>', buildAndRun)
|
||||
vim.keymap.set('i', '<F19>', buildAndRun)
|
||||
vim.keymap.set('n', '<S-F7>', buildAndRun)
|
||||
vim.keymap.set('i', '<S-F7>', buildAndRun)
|
||||
Reference in New Issue
Block a user