Files
oni-priority-ux/.nvim.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)