From 615433f5772748d8beaa4eef61082ac39c7c5c3b Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Wed, 5 Aug 2026 03:19:05 +0300 Subject: [PATCH] Refactor compile/task system thing to be more flexible, can now define any number of tasks instead of just hardcoding build/run/test --- .config/nvim/lua/extra.lua | 19 +++++++++--------- .config/nvim/lua/keymaps.lua | 38 +++++++++++------------------------- 2 files changed, 20 insertions(+), 37 deletions(-) diff --git a/.config/nvim/lua/extra.lua b/.config/nvim/lua/extra.lua index 3af98a7..b6c2844 100644 --- a/.config/nvim/lua/extra.lua +++ b/.config/nvim/lua/extra.lua @@ -385,7 +385,7 @@ vim.api.nvim_create_autocmd('TermOpen', { ---------------------------------------------------------------------------- -- NOTE: Compile a project by opening a terminal, inspired by Casey's workflow ---------------------------------------------------------------------------- -function Compile_project(command) +function RunCommand(command) local x = 2 local y = 1 local filter = function(win) @@ -631,10 +631,11 @@ function JumpToDiagnostic(direction, is_error, is_warning) end, 0) -- in milliseconds vim.defer_fn(function() - if vim.g.project_compile_cmd then - Compile_project(vim.g.project_compile_cmd) + local build_task = vim.g.workspace_tasks['build'] + if build_task and build_task.cmd then + RunCommand(build_task.cmd) else - vim.notify('vim.g.project_compile_cmd missing', 'warn') + vim.notify('vim.g.workspace_tasks["build"].cmd missing', 'warn') end end, 100) -- in milliseconds end @@ -648,11 +649,11 @@ function JumpToPrevError() end function JumpToNextWarning() - return JumpToDiagnostic(1, true, true) + return JumpToDiagnostic(1, false, true) end function JumpToPrevWarning() - return JumpToDiagnostic(-1, true, true) + return JumpToDiagnostic(-1, false, true) end ---------------------------------------------------------------------------- @@ -980,15 +981,13 @@ local function open_scratch_buffer_map(is_global) end end -vim.keymap.set('n', 'ge', open_scratch_buffer_map(true)) -vim.keymap.set('n', 'we', open_scratch_buffer_map(false)) +vim.keymap.set('n', 'go', open_scratch_buffer_map(true)) +vim.keymap.set('n', 'so', open_scratch_buffer_map(false)) ---------------------------------------------------------------------------- -- NOTE: Insert commit msg into commit buffer in neogit ---------------------------------------------------------------------------- -local commit_msg = 'Your default commit message\nTest\nMultiline' - local group = vim.api.nvim_create_augroup('NeogitCommitMessage', { clear = true }) vim.api.nvim_create_autocmd('FileType', { diff --git a/.config/nvim/lua/keymaps.lua b/.config/nvim/lua/keymaps.lua index a5c1aad..20d977d 100644 --- a/.config/nvim/lua/keymaps.lua +++ b/.config/nvim/lua/keymaps.lua @@ -204,36 +204,20 @@ vim.api.nvim_create_autocmd('LspAttach', { end, }) -local compile = function() - if vim.g.project_compile_cmd then - Compile_project(vim.g.project_compile_cmd) - -- vim.notify(vim.g.project_compile_cmd) - else - vim.notify('vim.g.project_compile_cmd is not set', 'warn') - end -end -local run = function() - if vim.g.project_run_cmd then - Compile_project(vim.g.project_run_cmd) - -- vim.notify(vim.g.project_run_cmd) - else - vim.notify('vim.g.project_run_cmd is not set', 'warn') - end -end -local test = function() - if vim.g.project_test_cmd then - Compile_project(vim.g.project_test_cmd) - -- vim.notify(vim.g.project_test_cmd) - else - vim.notify('vim.g.project_test_cmd is not set', 'warn') +function RunTask(task_name) + return function() + local task = vim.g.workspace_tasks[task_name] + if task and task.cmd then + RunCommand(task.cmd) + else + vim.notify('either ' .. task_name .. "or vim.g.workspace_tasks[task_name].cmd don't exist", 'warn') + end end end -vim.keymap.set('n', '', compile, { desc = 'Idk? lol' }) -vim.keymap.set('n', '', compile, { desc = '[C]ompile Project' }) -vim.keymap.set('n', '', compile, { desc = '[B]uild Project' }) -vim.keymap.set('n', '', run, { desc = '[R]un Project' }) -vim.keymap.set('n', '', test, { desc = '[T]est Project' }) +vim.keymap.set('n', '', RunTask('build'), { desc = '[B]uild Project' }) +vim.keymap.set('n', '', RunTask('run'), { desc = '[R]un Project' }) +vim.keymap.set('n', '', RunTask('test'), { desc = '[T]est Project' }) vim.keymap.set('n', '', function() Run_nvim_lua()