97 lines
2.9 KiB
Lua
97 lines
2.9 KiB
Lua
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)
|