aboutsummaryrefslogtreecommitdiffstats
path: root/modules/development/nixvim
diff options
context:
space:
mode:
Diffstat (limited to 'modules/development/nixvim')
-rw-r--r--modules/development/nixvim/default.nix40
-rw-r--r--modules/development/nixvim/keymaps.nix41
-rw-r--r--modules/development/nixvim/plugins/comment.nix14
-rw-r--r--modules/development/nixvim/plugins/dap-ui.nix25
-rw-r--r--modules/development/nixvim/plugins/dap-virtual-text.nix7
-rw-r--r--modules/development/nixvim/plugins/dap.nix81
-rw-r--r--modules/development/nixvim/plugins/default.nix3
-rw-r--r--modules/development/nixvim/plugins/gitsigns.nix103
-rw-r--r--modules/development/nixvim/plugins/lsp.nix242
-rw-r--r--modules/development/nixvim/plugins/nvim-tree.nix78
-rw-r--r--modules/development/nixvim/plugins/telescope.nix10
-rw-r--r--modules/development/nixvim/plugins/which-key.nix29
12 files changed, 374 insertions, 299 deletions
diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix
index bf3d143..8506b7d 100644
--- a/modules/development/nixvim/default.nix
+++ b/modules/development/nixvim/default.nix
@@ -28,31 +28,29 @@
tabstop = 2;
softtabstop = 2;
expandtab = true;
+ wrap = true;
+ linebreak = true;
+ breakindent = true;
+ showbreak = "↳";
list = true;
laststatus = 3;
foldlevel = 99;
clipboard = "unnamedplus";
updatetime = 500;
+ fillchars = "eob: ";
+ listchars = "tab: ,trail:_,lead: ";
+ exrc = true;
};
+ globals.mapleader = " ";
clipboard.providers.xclip.enable = true;
- extraConfigLuaPre = with config.scheme.withHashtag; ''
- vim.opt.fillchars:append({ eob = " " })
- vim.opt.listchars = { tab = " ", trail = "_", lead = " " }
- vim.api.nvim_set_hl(0, "WinSeparator", {
- fg = "${base01}",
- bg = "${base00}",
- })
- vim.api.nvim_create_autocmd({ "FileType" }, {
- pattern = { "yaml", "yml" },
- callback = function()
- vim.opt_local.expandtab = true
- vim.opt_local.shiftwidth = 2
- vim.opt_local.softtabstop = 2
- vim.opt_local.tabstop = 2
- end,
- })
- '';
+ highlight = with config.scheme.withHashtag; {
+ WinSeparator = {
+ fg = base01;
+ bg = base00;
+ };
+ };
+
performance = {
byteCompileLua.enable = true;
combinePlugins.enable = true;
@@ -83,6 +81,14 @@
end
'';
}
+ {
+ event = [ "FileType" ];
+ pattern = [
+ "yaml"
+ "yml"
+ ];
+ command = "setlocal expandtab shiftwidth=2 softtabstop=2 tabstop=2";
+ }
];
};
};
diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix
index 46c3168..cc258c1 100644
--- a/modules/development/nixvim/keymaps.nix
+++ b/modules/development/nixvim/keymaps.nix
@@ -2,13 +2,25 @@
{ config, lib, ... }:
{
config.programs.nixvim.keymaps = lib.mkIf config.development.nixvim.enable [
+ # set the <space> key to nop for normal and visual modes as we are tyring
+ # to use it as our <leader>
+ {
+ mode = [
+ "n"
+ "v"
+ ];
+ key = "<space>";
+ action = "<nop>";
+ options.desc = "Disable leader delay";
+ }
+ # window navigation
{
key = "<c-h>";
action = "<c-w>h";
options.desc = "Move to left window";
}
{
- key = "<c-w>";
+ key = "<c-j>";
action = "<c-w>j";
options.desc = "Move to bottom window";
}
@@ -22,15 +34,28 @@
action = "<c-w>l";
options.desc = "Move to right window";
}
+ # window resizing
{
- key = "<c-n>";
- action = "<cmd>NvimTreeToggle<cr>";
- mode = [
- "n"
- "i"
- ];
- options.desc = "Toggle file explorer";
+ key = "<C-=>";
+ action = "<c-w>+";
+ options.desc = "Increase window height";
+ }
+ {
+ key = "<C-->";
+ action = "<c-w>-";
+ options.desc = "Decrease window height";
+ }
+ {
+ key = "<C-.>";
+ action = "<c-w>>";
+ options.desc = "Increase window height";
+ }
+ {
+ key = "<C-,>";
+ action = "<c-w><";
+ options.desc = "Decrease window height";
}
+ # scrolling
{
key = "<c-d>";
action = "<c-d>zz";
diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment.nix
index 10bed84..8c69218 100644
--- a/modules/development/nixvim/plugins/comment.nix
+++ b/modules/development/nixvim/plugins/comment.nix
@@ -5,17 +5,17 @@
enable = true;
settings = {
toggler = {
- line = "gcc"; # toggle line comment
- block = "gbc"; # toggle block comment
+ line = "<leader>cc"; # toggle line comment
+ block = "<leader>cb"; # toggle block comment
};
opleader = {
- line = "gc"; # line comment operator (gc + motion)
- block = "gb"; # block comment operator (gb + motion)
+ line = "<leader>cc"; # toggle line comment
+ block = "<leader>cb"; # toggle block comment
};
extra = {
- above = "gcO"; # add comment line above
- below = "gco"; # add comment line below
- eol = "gcA"; # add comment at end of line
+ above = "<leader>cu"; # add comment line above
+ below = "<leader>cd"; # add comment line below
+ eol = "<leader>ce"; # add comment at end of line
};
};
};
diff --git a/modules/development/nixvim/plugins/dap-ui.nix b/modules/development/nixvim/plugins/dap-ui.nix
new file mode 100644
index 0000000..cc25d2d
--- /dev/null
+++ b/modules/development/nixvim/plugins/dap-ui.nix
@@ -0,0 +1,25 @@
+# A UI for nvim-dap.
+{ config, lib, ... }:
+{
+ config.programs.nixvim = lib.mkIf config.development.nixvim.enable {
+ plugins.dap-ui = {
+ enable = true;
+ };
+
+ keymaps = [
+ # dap-ui controls
+ {
+ mode = "n";
+ key = "<leader>du";
+ action = "<cmd>lua require('dapui').toggle()<CR>";
+ options.desc = "Debug: Toggle UI";
+ }
+ {
+ mode = "n";
+ key = "<leader>de";
+ action = "<cmd>lua require('dapui').eval()<CR>";
+ options.desc = "Debug: Eval Expression Under Cursor";
+ }
+ ];
+ };
+}
diff --git a/modules/development/nixvim/plugins/dap-virtual-text.nix b/modules/development/nixvim/plugins/dap-virtual-text.nix
new file mode 100644
index 0000000..4fea5ca
--- /dev/null
+++ b/modules/development/nixvim/plugins/dap-virtual-text.nix
@@ -0,0 +1,7 @@
+# A plugin that adds virtual text support to the nvim-dap.
+{ config, lib, ... }:
+{
+ config.programs.nixvim.plugins.dap-virtual-text = lib.mkIf config.development.nixvim.enable {
+ enable = true;
+ };
+}
diff --git a/modules/development/nixvim/plugins/dap.nix b/modules/development/nixvim/plugins/dap.nix
new file mode 100644
index 0000000..02bffa6
--- /dev/null
+++ b/modules/development/nixvim/plugins/dap.nix
@@ -0,0 +1,81 @@
+# Debug Adapter Protocol client implementation for Neovim.
+{ config, lib, ... }:
+{
+ config.programs.nixvim = lib.mkIf config.development.nixvim.enable {
+ plugins.dap = {
+ enable = true;
+ };
+
+ keymaps = [
+ # Core DAP controls
+ {
+ mode = "n";
+ key = "<leader>dc";
+ action = "<cmd>lua require('dap').continue()<CR>";
+ options.desc = "Debug: Continue";
+ }
+ {
+ mode = "n";
+ key = "<leader>di";
+ action = "<cmd>lua require('dap').step_into()<CR>";
+ options.desc = "Debug: Step Into";
+ }
+ {
+ mode = "n";
+ key = "<leader>do";
+ action = "<cmd>lua require('dap').step_over()<CR>";
+ options.desc = "Debug: Step Over";
+ }
+ {
+ mode = "n";
+ key = "<leader>dO";
+ action = "<cmd>lua require('dap').step_out()<CR>";
+ options.desc = "Debug: Step Out";
+ }
+ {
+ mode = "n";
+ key = "<leader>db";
+ action = "<cmd>lua require('dap').toggle_breakpoint()<CR>";
+ options.desc = "Debug: Toggle Breakpoint";
+ }
+ {
+ mode = "n";
+ key = "<leader>dB";
+ action = "<cmd>lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>";
+ options.desc = "Debug: Conditional Breakpoint";
+ }
+ {
+ mode = "n";
+ key = "<leader>dl";
+ action = "<cmd>lua require('dap').run_last()<CR>";
+ options.desc = "Debug: Run Last";
+ }
+ {
+ mode = "n";
+ key = "<leader>dt";
+ action = "<cmd>lua require('dap').terminate()<CR>";
+ options.desc = "Debug: Terminate";
+ }
+ {
+ mode = "n";
+ key = "<leader>dr";
+ action = "<cmd>lua require('dap').repl.toggle()<CR>";
+ 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 c7ebea4..67f7f06 100644
--- a/modules/development/nixvim/plugins/default.nix
+++ b/modules/development/nixvim/plugins/default.nix
@@ -4,6 +4,9 @@
imports = [
./cmp.nix
./comment.nix
+ ./dap-ui.nix
+ ./dap-virtual-text.nix
+ ./dap.nix
./gitsigns.nix
./indent-blankline.nix
./lsp.nix
diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix
index 38ad85f..28123fd 100644
--- a/modules/development/nixvim/plugins/gitsigns.nix
+++ b/modules/development/nixvim/plugins/gitsigns.nix
@@ -1,7 +1,104 @@
-# Git status in the sign column
+# Git integration: signs, blame, diffs and hunk operations
{ config, lib, ... }:
{
- config.programs.nixvim.plugins.gitsigns = lib.mkIf config.development.nixvim.enable {
- enable = true;
+ 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 config.scheme.withHashtag; {
+ 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/lsp.nix b/modules/development/nixvim/plugins/lsp.nix
index 0a92f86..6c64a37 100644
--- a/modules/development/nixvim/plugins/lsp.nix
+++ b/modules/development/nixvim/plugins/lsp.nix
@@ -6,228 +6,28 @@
inlayHints = true;
autoLoad = true;
- keymaps.lspBuf = {
- K = "hover";
- gD = "references";
- gd = "definition";
- gi = "implementation";
- gt = "type_definition";
- };
-
- servers = {
- # System and configuration
- nixd = {
- enable = true;
- package = null;
- }; # Nix
- bashls = {
- enable = true;
- package = null;
- }; # Bash shell
- taplo = {
- enable = true;
- package = null;
- }; # TOML
- yamlls = {
- enable = true;
- package = null;
- }; # YAML
- jsonls = {
- enable = true;
- package = null;
- }; # JSON
- marksman = {
- enable = true;
- package = null;
- }; # Markdown
-
- # Web development
- html = {
- enable = true;
- package = null;
- }; # HTML
- cssls = {
- enable = true;
- package = null;
- }; # CSS, SCSS and LESS
- tailwindcss = {
- enable = true;
- package = null;
- }; # Tailwind CSS
- vtsls = {
- # JS and TS fast wrapper for tsserver
- enable = true;
- package = null;
- settings = {
- # Limits huge generic type hints
- vtsls.experimental.maxInlayHintLength = 30;
-
- # TypeScript type inferences
- typescript.inlayHints = {
- parameterNames.enabled = "all";
- parameterTypes.enabled = true;
- variableTypes.enabled = true;
- propertyDeclarationTypes.enabled = true;
- functionLikeReturnTypes.enabled = true;
- enumMemberValues.enabled = true;
- };
-
- # JavaScript type inferences
- javascript.inlayHints = {
- parameterNames.enabled = "all";
- parameterTypes.enabled = true;
- variableTypes.enabled = true;
- propertyDeclarationTypes.enabled = true;
- functionLikeReturnTypes.enabled = true;
- enumMemberValues.enabled = true;
- };
- };
- };
- eslint = {
- enable = true;
- package = null;
- }; # ESLint diagnostics and formatting
-
- # Web frameworks
- volar = {
- # Vue
- enable = true;
- package = null;
- tslsIntegration = false;
- };
- svelte = {
- enable = true;
- package = null;
- }; # Svelte
- astro = {
- enable = true;
- package = null;
- }; # Astro
-
- # Scripting and high-level languages
- basedpyright = {
- # Python, modern faster fork of Pyright
- enable = true;
- package = null;
- settings.basedpyright.analysis.inlayHints = {
- variableTypes = true;
- callArgumentNames = true;
- functionReturnTypes = true;
- genericTypes = false; # Opt in since these can get noisy
- };
+ 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";
};
- ruff = {
- enable = true;
- package = null;
- }; # Python linter and formatter
- ruby_lsp = {
- enable = true;
- package = null;
- }; # Ruby
- lua_ls = {
- # Lua
- enable = true;
- package = null;
- settings.Lua.hint = {
- enable = true;
- arrayIndex = "Auto";
- setType = true;
- paramName = "All";
- paramType = true;
- };
- };
- intelephense = {
- enable = true;
- package = null;
- }; # PHP
- elixirls = {
- enable = true;
- package = null;
- }; # Elixir
-
- # Systems, compiled and enterprise
- clangd = {
- enable = true;
- package = null;
- }; # C and C++ with inlay hints on by default
- rust_analyzer = {
- # Rust with inlay hints on by default
- enable = true;
- package = null;
- installCargo = false;
- installRustc = false;
- };
- gopls = {
- # Go
- enable = true;
- package = null;
- settings.gopls.hints = {
- assignVariableTypes = true;
- compositeLiteralFields = true;
- compositeLiteralTypes = true;
- constantValues = true;
- functionTypeParameters = true;
- parameterNames = true;
- rangeVariableTypes = true;
- };
- };
- zls = {
- enable = true;
- package = null;
- }; # Zig with inlay hints on by default
- jdtls = {
- # Java
- enable = true;
- package = null;
- settings.java.inlayHints.parameterNames.enabled = "all";
- };
- kotlin_language_server = {
- enable = true;
- package = null;
- }; # Kotlin
- csharp_ls = {
- enable = true;
- package = null;
- }; # C# without inlay hint support
- hls = {
- # Haskell
- enable = true;
- package = null;
- installGhc = false;
- settings.haskell.plugin."inlay-hints".globalOn = true;
- };
- ocamllsp = {
- enable = true;
- package = null;
- }; # OCaml
-
- # Infrastructure and DevOps
- dockerls = {
- enable = true;
- package = null;
- }; # Dockerfile
- docker_compose_language_service = {
- enable = true;
- package = null;
- }; # Docker Compose
- terraformls = {
- enable = true;
- package = null;
- }; # Terraform and HCL
-
- # Data and APIs
- sqlls = {
- enable = true;
- package = null;
- }; # SQL
- graphql = {
- enable = true;
- package = null;
- }; # GraphQL
- prismals = {
- enable = true;
- package = null;
- }; # Prisma ORM
};
};
}
diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree.nix
index 2f35e3c..67f61fd 100644
--- a/modules/development/nixvim/plugins/nvim-tree.nix
+++ b/modules/development/nixvim/plugins/nvim-tree.nix
@@ -1,43 +1,57 @@
# File explorer sidebar
{ config, lib, ... }:
{
- config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.development.nixvim.enable {
- enable = true;
- settings = {
- filters = {
- dotfiles = false;
- git_clean = false;
- no_buffer = false;
- custom = { };
- };
- git = {
- enable = true;
- ignore = false;
- };
- view = {
- width = 30;
- };
- renderer = {
- indent_markers = {
+ config.programs.nixvim = lib.mkIf config.development.nixvim.enable {
+ plugins.nvim-tree = {
+ enable = true;
+ settings = {
+ filters = {
+ dotfiles = false;
+ git_clean = false;
+ no_buffer = false;
+ custom = { };
+ };
+ git = {
enable = true;
- inline_arrows = false;
- icons = {
- corner = "└";
- edge = "│";
- item = "├";
- bottom = "─";
- none = " ";
- };
+ ignore = false;
+ };
+ view = {
+ width = 30;
};
- icons = {
- show = {
- folder = true;
- folder_arrow = false;
- file = true;
- git = true;
+ renderer = {
+ indent_markers = {
+ enable = true;
+ inline_arrows = false;
+ icons = {
+ corner = "└";
+ edge = "│";
+ item = "├";
+ bottom = "─";
+ none = " ";
+ };
+ };
+ icons = {
+ show = {
+ folder = true;
+ folder_arrow = false;
+ file = true;
+ git = true;
+ };
};
};
};
};
+
+ keymaps = [
+ {
+ key = "<leader>nt";
+ action = "<cmd>NvimTreeToggle<cr>";
+ mode = [
+ "n"
+ "i"
+ ];
+ options.desc = "Toggle file explorer";
+ }
+ ];
};
}
diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope.nix
index 8f06ec9..505a3eb 100644
--- a/modules/development/nixvim/plugins/telescope.nix
+++ b/modules/development/nixvim/plugins/telescope.nix
@@ -56,16 +56,6 @@
options.desc = "Document symbols";
};
- # Git
- "<leader>gc" = {
- action = "git_commits";
- options.desc = "Git commits";
- };
- "<leader>gb" = {
- action = "git_branches";
- options.desc = "Git branches";
- };
-
# Misc
"<leader>fh" = {
action = "help_tags";
diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix
index 81ecd14..3a0c0ef 100644
--- a/modules/development/nixvim/plugins/which-key.nix
+++ b/modules/development/nixvim/plugins/which-key.nix
@@ -9,12 +9,39 @@
registers = true;
spelling = {
enabled = true;
- suggestions = 20;
};
};
win = {
border = "single";
};
+
+ # Group descriptions for leader prefixes
+ spec = [
+ {
+ __unkeyed-1 = "<leader>g";
+ group = "+Git";
+ }
+ {
+ __unkeyed-1 = "<leader>f";
+ group = "+Find";
+ }
+ {
+ __unkeyed-1 = "<leader>d";
+ group = "+Debug";
+ }
+ {
+ __unkeyed-1 = "<leader>l";
+ group = "+LSP";
+ }
+ {
+ __unkeyed-1 = "<leader>c";
+ group = "+Comment";
+ }
+ {
+ __unkeyed-1 = "<leader>n";
+ group = "+Explorer";
+ }
+ ];
};
};
}