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("", true, false, true), "n", true) vim.schedule(function() MakeAnd(function() end, silent) end) end local function buildAndRunSilent() buildAndRun(true) end vim.keymap.set('n', '', buildAndRunSilent) vim.keymap.set('i', '', buildAndRunSilent) vim.keymap.set('n', '', buildAndRun) vim.keymap.set('i', '', buildAndRun) vim.keymap.set('n', '', buildAndRun) vim.keymap.set('i', '', buildAndRun)