diff options
Diffstat (limited to 'modules/development/nixvim/plugins')
23 files changed, 195 insertions, 185 deletions
diff --git a/modules/development/nixvim/plugins/cmp.nix b/modules/development/nixvim/plugins/cmp/default.nix index b2347ba..4698801 100644 --- a/modules/development/nixvim/plugins/cmp.nix +++ b/modules/development/nixvim/plugins/cmp/default.nix @@ -16,15 +16,7 @@ "<C-u>" = "cmp.mapping.scroll_docs(-4)"; # scroll docs up "<C-d>" = "cmp.mapping.scroll_docs(4)"; # scroll docs down - "<Escape>" = '' - cmp.mapping(function(fallback) - if cmp.visible() then - cmp.abort() - else - fallback() - end - end, { "i" }) - ''; + "<Escape>" = builtins.readFile ./escape.lua; }; sources = [ { name = "nvim_lsp"; } diff --git a/modules/development/nixvim/plugins/cmp/escape.lua b/modules/development/nixvim/plugins/cmp/escape.lua new file mode 100644 index 0000000..e215bc7 --- /dev/null +++ b/modules/development/nixvim/plugins/cmp/escape.lua @@ -0,0 +1,7 @@ +cmp.mapping(function(fallback) + if cmp.visible() then + cmp.abort() + else + fallback() + end +end, { "i" }) diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment/default.nix index 8c69218..8c69218 100644 --- a/modules/development/nixvim/plugins/comment.nix +++ b/modules/development/nixvim/plugins/comment/default.nix diff --git a/modules/development/nixvim/plugins/dap-ui/dap-ui.lua b/modules/development/nixvim/plugins/dap-ui/dap-ui.lua new file mode 100644 index 0000000..bcf4fe3 --- /dev/null +++ b/modules/development/nixvim/plugins/dap-ui/dap-ui.lua @@ -0,0 +1,10 @@ +local dap, dapui = require("dap"), require("dapui") +dap.listeners.after.event_initialized["dapui_config"] = function() + dapui.open() +end +dap.listeners.before.event_terminated["dapui_config"] = function() + dapui.close() +end +dap.listeners.before.event_exited["dapui_config"] = function() + dapui.close() +end diff --git a/modules/development/nixvim/plugins/dap-ui.nix b/modules/development/nixvim/plugins/dap-ui/default.nix index cc25d2d..eb83609 100644 --- a/modules/development/nixvim/plugins/dap-ui.nix +++ b/modules/development/nixvim/plugins/dap-ui/default.nix @@ -21,5 +21,8 @@ options.desc = "Debug: Eval Expression Under Cursor"; } ]; + + # Auto open/close dap-ui with the debug session lifecycle + extraConfigLua = builtins.readFile ./dap-ui.lua; }; } diff --git a/modules/development/nixvim/plugins/dap-virtual-text.nix b/modules/development/nixvim/plugins/dap-virtual-text/default.nix index 4fea5ca..4fea5ca 100644 --- a/modules/development/nixvim/plugins/dap-virtual-text.nix +++ b/modules/development/nixvim/plugins/dap-virtual-text/default.nix diff --git a/modules/development/nixvim/plugins/dap.nix b/modules/development/nixvim/plugins/dap/default.nix index 02bffa6..97452ac 100644 --- a/modules/development/nixvim/plugins/dap.nix +++ b/modules/development/nixvim/plugins/dap/default.nix @@ -63,19 +63,5 @@ options.desc = "Debug: Toggle REPL"; } ]; - - # Auto open/close dap-ui with the debug session lifecycle - extraConfigLua = '' - local dap, dapui = require("dap"), require("dapui") - dap.listeners.after.event_initialized["dapui_config"] = function() - dapui.open() - end - dap.listeners.before.event_terminated["dapui_config"] = function() - dapui.close() - end - dap.listeners.before.event_exited["dapui_config"] = function() - dapui.close() - end - ''; }; } diff --git a/modules/development/nixvim/plugins/default.nix b/modules/development/nixvim/plugins/default.nix index 67f7f06..ecc9441 100644 --- a/modules/development/nixvim/plugins/default.nix +++ b/modules/development/nixvim/plugins/default.nix @@ -2,21 +2,21 @@ { ... }: { imports = [ - ./cmp.nix - ./comment.nix - ./dap-ui.nix - ./dap-virtual-text.nix - ./dap.nix - ./gitsigns.nix - ./indent-blankline.nix - ./lsp.nix - ./lualine.nix - ./luasnip.nix - ./noice.nix - ./nvim-tree.nix - ./telescope.nix - ./treesitter.nix - ./web-devicons.nix - ./which-key.nix + ./cmp + ./comment + ./dap-ui + ./dap-virtual-text + ./dap + ./gitsigns + ./indent-blankline + ./lsp + ./lualine + ./luasnip + ./noice + ./nvim-tree + ./telescope + ./treesitter + ./web-devicons + ./which-key ]; } diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix deleted file mode 100644 index d9bda21..0000000 --- a/modules/development/nixvim/plugins/gitsigns.nix +++ /dev/null @@ -1,112 +0,0 @@ -# Git integration: signs, blame, diffs and hunk operations -{ - config, - lib, - pkgs, - ... -}: -let - base16Colors = import ../../../colors/base16 { inherit config lib pkgs; }; -in -{ - config.programs.nixvim = lib.mkIf config.development.nixvim.enable { - plugins.gitsigns = { - enable = true; - - settings = { - signs = { - add.text = "┃"; - change.text = "┃"; - delete.text = "▁"; - topdelete.text = "▔"; - changedelete.text = "~"; - untracked.text = "┆"; - }; - - signcolumn = false; - numhl = true; - current_line_blame = false; - current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>"; - - on_attach = '' - function(bufnr) - local gitsigns = require('gitsigns') - local function map(mode, lhs, rhs, desc) - vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, silent = true, desc = desc }) - end - - -- Navigation - map('n', ']c', function() gitsigns.nav_hunk('next') end, 'Next hunk') - map('n', '[c', function() gitsigns.nav_hunk('prev') end, 'Previous hunk') - map('n', ']C', function() gitsigns.nav_hunk('last') end, 'Last hunk') - map('n', '[C', function() gitsigns.nav_hunk('first') end, 'First hunk') - - -- Hunk actions - map('n', '<leader>gs', gitsigns.stage_hunk, 'Stage hunk') - map('v', '<leader>gs', function() - gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) - end, 'Stage visual range hunk') - map('n', '<leader>gr', gitsigns.reset_hunk, 'Reset hunk') - map('v', '<leader>gr', function() - gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) - end, 'Reset visual range hunk') - map('n', '<leader>gS', gitsigns.stage_buffer, 'Stage buffer') - map('n', '<leader>gR', gitsigns.reset_buffer, 'Reset buffer') - map('n', '<leader>gi', gitsigns.reset_buffer_index, 'Unstage buffer (reset index)') - map('n', '<leader>gu', gitsigns.undo_stage_hunk, 'Undo stage hunk') - - -- Preview - map('n', '<leader>gp', gitsigns.preview_hunk, 'Preview hunk') - map('n', '<leader>gP', gitsigns.preview_hunk_inline, 'Preview hunk inline') - - -- Blame - map('n', '<leader>gb', gitsigns.blame_line, 'Blame line') - map('n', '<leader>gB', function() - gitsigns.blame_line({ full = true }) - end, 'Blame line (full)') - - -- Diffs / base - map('n', '<leader>gd', gitsigns.diffthis, 'Diff this (index)') - map('n', '<leader>gD', function() - gitsigns.diffthis('~') - end, 'Diff this (HEAD)') - map('n', '<leader>gc', function() - gitsigns.change_base(nil, true) - end, 'Change diff base') - - -- Quickfix / location list - map('n', '<leader>gq', gitsigns.setqflist, 'Hunks to quickfix') - map('n', '<leader>gQ', function() - gitsigns.setqflist('all') - end, 'Repo hunks to quickfix') - map('n', '<leader>gl', gitsigns.setloclist, 'Hunks to location list') - - -- Toggles - map('n', '<leader>gts', gitsigns.toggle_signs, 'Toggle signs') - map('n', '<leader>gtl', gitsigns.toggle_linehl, 'Toggle line highlight') - map('n', '<leader>gtn', gitsigns.toggle_numhl, 'Toggle number highlight') - map('n', '<leader>gtw', gitsigns.toggle_word_diff, 'Toggle word diff') - map('n', '<leader>gtb', gitsigns.toggle_current_line_blame, 'Toggle current line blame') - map('n', '<leader>gtd', gitsigns.toggle_deleted, 'Toggle deleted lines') - - -- Misc - map('n', '<leader>gF', gitsigns.refresh, 'Refresh gitsigns') - - -- Text object - map({ 'o', 'x' }, 'ih', gitsigns.select_hunk, 'Select hunk text object') - end - ''; - }; - }; - - highlight = with base16Colors.colorsWithHashPrefix; { - GitSignsAdd.fg = base0B; - GitSignsChange.fg = base0A; - GitSignsDelete.fg = base08; - GitSignsTopdelete.fg = base08; - GitSignsChangedelete.fg = base0A; - GitSignsUntracked.fg = base0C; - GitSignsCurrentLineBlame.fg = base04; - }; - }; -} diff --git a/modules/development/nixvim/plugins/gitsigns/default.nix b/modules/development/nixvim/plugins/gitsigns/default.nix new file mode 100644 index 0000000..af8b920 --- /dev/null +++ b/modules/development/nixvim/plugins/gitsigns/default.nix @@ -0,0 +1,45 @@ +# Git integration: signs, blame, diffs and hunk operations +{ + config, + lib, + pkgs, + ... +}: +let + base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; +in +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.gitsigns = { + enable = true; + + settings = { + signs = { + add.text = "┃"; + change.text = "┃"; + delete.text = "▁"; + topdelete.text = "▔"; + changedelete.text = "~"; + untracked.text = "┆"; + }; + + signcolumn = false; + numhl = true; + current_line_blame = false; + current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>"; + + on_attach = builtins.readFile ./on-attach.lua; + }; + }; + + highlight = with base16Colors.colorsWithHashPrefix; { + GitSignsAdd.fg = base0B; + GitSignsChange.fg = base0A; + GitSignsDelete.fg = base08; + GitSignsTopdelete.fg = base08; + GitSignsChangedelete.fg = base0A; + GitSignsUntracked.fg = base0C; + GitSignsCurrentLineBlame.fg = base04; + }; + }; +} diff --git a/modules/development/nixvim/plugins/gitsigns/on-attach.lua b/modules/development/nixvim/plugins/gitsigns/on-attach.lua new file mode 100644 index 0000000..5f63330 --- /dev/null +++ b/modules/development/nixvim/plugins/gitsigns/on-attach.lua @@ -0,0 +1,66 @@ +function(bufnr) + local gitsigns = require('gitsigns') + local function map(mode, lhs, rhs, desc) + vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, silent = true, desc = desc }) + end + + -- Navigation + map('n', ']c', function() gitsigns.nav_hunk('next') end, 'Next hunk') + map('n', '[c', function() gitsigns.nav_hunk('prev') end, 'Previous hunk') + map('n', ']C', function() gitsigns.nav_hunk('last') end, 'Last hunk') + map('n', '[C', function() gitsigns.nav_hunk('first') end, 'First hunk') + + -- Hunk actions + map('n', '<leader>gs', gitsigns.stage_hunk, 'Stage hunk') + map('v', '<leader>gs', function() + gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end, 'Stage visual range hunk') + map('n', '<leader>gr', gitsigns.reset_hunk, 'Reset hunk') + map('v', '<leader>gr', function() + gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) + end, 'Reset visual range hunk') + map('n', '<leader>gS', gitsigns.stage_buffer, 'Stage buffer') + map('n', '<leader>gR', gitsigns.reset_buffer, 'Reset buffer') + map('n', '<leader>gi', gitsigns.reset_buffer_index, 'Unstage buffer (reset index)') + map('n', '<leader>gu', gitsigns.undo_stage_hunk, 'Undo stage hunk') + + -- Preview + map('n', '<leader>gp', gitsigns.preview_hunk, 'Preview hunk') + map('n', '<leader>gP', gitsigns.preview_hunk_inline, 'Preview hunk inline') + + -- Blame + map('n', '<leader>gb', gitsigns.blame_line, 'Blame line') + map('n', '<leader>gB', function() + gitsigns.blame_line({ full = true }) + end, 'Blame line (full)') + + -- Diffs / base + map('n', '<leader>gd', gitsigns.diffthis, 'Diff this (index)') + map('n', '<leader>gD', function() + gitsigns.diffthis('~') + end, 'Diff this (HEAD)') + map('n', '<leader>gc', function() + gitsigns.change_base(nil, true) + end, 'Change diff base') + + -- Quickfix / location list + map('n', '<leader>gq', gitsigns.setqflist, 'Hunks to quickfix') + map('n', '<leader>gQ', function() + gitsigns.setqflist('all') + end, 'Repo hunks to quickfix') + map('n', '<leader>gl', gitsigns.setloclist, 'Hunks to location list') + + -- Toggles + map('n', '<leader>gts', gitsigns.toggle_signs, 'Toggle signs') + map('n', '<leader>gtl', gitsigns.toggle_linehl, 'Toggle line highlight') + map('n', '<leader>gtn', gitsigns.toggle_numhl, 'Toggle number highlight') + map('n', '<leader>gtw', gitsigns.toggle_word_diff, 'Toggle word diff') + map('n', '<leader>gtb', gitsigns.toggle_current_line_blame, 'Toggle current line blame') + map('n', '<leader>gtd', gitsigns.toggle_deleted, 'Toggle deleted lines') + + -- Misc + map('n', '<leader>gF', gitsigns.refresh, 'Refresh gitsigns') + + -- Text object + map({ 'o', 'x' }, 'ih', gitsigns.select_hunk, 'Select hunk text object') +end diff --git a/modules/development/nixvim/plugins/indent-blankline.nix b/modules/development/nixvim/plugins/indent-blankline/default.nix index 6890dbf..6890dbf 100644 --- a/modules/development/nixvim/plugins/indent-blankline.nix +++ b/modules/development/nixvim/plugins/indent-blankline/default.nix diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix deleted file mode 100644 index 6c64a37..0000000 --- a/modules/development/nixvim/plugins/lsp.nix +++ /dev/null @@ -1,33 +0,0 @@ -# Language Server Protocol configuration -{ config, lib, ... }: -{ - config.programs.nixvim.plugins.lsp = lib.mkIf config.development.nixvim.enable { - enable = true; - inlayHints = true; - autoLoad = true; - - keymaps = { - lspBuf = { - "<leader>lh" = "hover"; - "<leader>lr" = "references"; - "<leader>ld" = "definition"; - "<leader>li" = "implementation"; - "<leader>lt" = "type_definition"; - "<leader>lD" = "declaration"; - "<leader>lR" = "rename"; - "<leader>la" = "code_action"; - "<leader>lf" = "format"; - "<leader>ls" = "signature_help"; - "<leader>lwa" = "add_workspace_folder"; - "<leader>lwr" = "remove_workspace_folder"; - "<leader>lwl" = "list_workspace_folders"; - }; - diagnostic = { - "<leader>le" = "open_float"; - "<leader>lq" = "setloclist"; - "[d" = "goto_prev"; - "]d" = "goto_next"; - }; - }; - }; -} diff --git a/modules/development/nixvim/plugins/lsp/default.nix b/modules/development/nixvim/plugins/lsp/default.nix new file mode 100644 index 0000000..1d56b66 --- /dev/null +++ b/modules/development/nixvim/plugins/lsp/default.nix @@ -0,0 +1,43 @@ +# Language Server Protocol configuration +{ config, lib, ... }: +{ + config.programs.nixvim = lib.mkIf config.development.nixvim.enable { + plugins.lsp = { + enable = true; + inlayHints = true; + autoLoad = true; + + keymaps = { + lspBuf = { + "<leader>lh" = "hover"; + "<leader>lr" = "references"; + "<leader>ld" = "definition"; + "<leader>li" = "implementation"; + "<leader>lt" = "type_definition"; + "<leader>lD" = "declaration"; + "<leader>lR" = "rename"; + "<leader>la" = "code_action"; + "<leader>lf" = "format"; + "<leader>ls" = "signature_help"; + "<leader>lwa" = "add_workspace_folder"; + "<leader>lwr" = "remove_workspace_folder"; + "<leader>lwl" = "list_workspace_folders"; + }; + diagnostic = { + "<leader>le" = "open_float"; + "<leader>lq" = "setloclist"; + "[d" = "goto_prev"; + "]d" = "goto_next"; + }; + }; + }; + + autoCmd = [ + { + event = [ "CursorHold" ]; + pattern = "*"; + callback.__raw = builtins.readFile ./open-diagnostic-float.lua; + } + ]; + }; +} diff --git a/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua b/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua new file mode 100644 index 0000000..fbfb9b9 --- /dev/null +++ b/modules/development/nixvim/plugins/lsp/open-diagnostic-float.lua @@ -0,0 +1,3 @@ +function() + vim.diagnostic.open_float(nil, { focus = false }) +end diff --git a/modules/development/nixvim/plugins/lualine.nix b/modules/development/nixvim/plugins/lualine/default.nix index 55326ee..a7dd083 100644 --- a/modules/development/nixvim/plugins/lualine.nix +++ b/modules/development/nixvim/plugins/lualine/default.nix @@ -6,7 +6,7 @@ ... }: let - base16Colors = import ../../../colors/base16 { inherit config lib pkgs; }; + base16Colors = import ../../../../colors/base16 { inherit config lib pkgs; }; in { config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable { diff --git a/modules/development/nixvim/plugins/luasnip.nix b/modules/development/nixvim/plugins/luasnip/default.nix index cab0f62..cab0f62 100644 --- a/modules/development/nixvim/plugins/luasnip.nix +++ b/modules/development/nixvim/plugins/luasnip/default.nix diff --git a/modules/development/nixvim/plugins/noice.nix b/modules/development/nixvim/plugins/noice/default.nix index 8f2ea0d..8f2ea0d 100644 --- a/modules/development/nixvim/plugins/noice.nix +++ b/modules/development/nixvim/plugins/noice/default.nix diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree/default.nix index f54ada2..f54ada2 100644 --- a/modules/development/nixvim/plugins/nvim-tree.nix +++ b/modules/development/nixvim/plugins/nvim-tree/default.nix diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope/default.nix index 505a3eb..505a3eb 100644 --- a/modules/development/nixvim/plugins/telescope.nix +++ b/modules/development/nixvim/plugins/telescope/default.nix diff --git a/modules/development/nixvim/plugins/treesitter.nix b/modules/development/nixvim/plugins/treesitter/default.nix index 6150ad2..6150ad2 100644 --- a/modules/development/nixvim/plugins/treesitter.nix +++ b/modules/development/nixvim/plugins/treesitter/default.nix diff --git a/modules/development/nixvim/plugins/web-devicons.nix b/modules/development/nixvim/plugins/web-devicons/default.nix index 61ca5e9..61ca5e9 100644 --- a/modules/development/nixvim/plugins/web-devicons.nix +++ b/modules/development/nixvim/plugins/web-devicons/default.nix diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key/default.nix index 3a0c0ef..3a0c0ef 100644 --- a/modules/development/nixvim/plugins/which-key.nix +++ b/modules/development/nixvim/plugins/which-key/default.nix |
