diff --git a/docs/manual/hacking/keybinds.md b/docs/manual/hacking/keybinds.md index 3940466f..8c9e7233 100644 --- a/docs/manual/hacking/keybinds.md +++ b/docs/manual/hacking/keybinds.md @@ -30,12 +30,53 @@ There are many settings available in the options. Please refer to the [documentation](https://notashelf.github.io/nvf/options.html#opt-vim.keymaps) to see a list of them. -**nvf** provides a helper function, so that you don't have to write the +**nvf** provides a list of helper commands, so that you don't have to write the mapping attribute sets every time: -- `mkKeymap`, which mimics neovim's `vim.keymap.set` function +- `mkBinding = key: action: desc:` - makes a basic binding, with `silent` set to + true. +- `mkExprBinding = key: action: desc:` - makes an expression binding, with + `lua`, `silent`, and `expr` set to true. +- `mkLuaBinding = key: action: desc:` - makes an expression binding, with `lua`, + and `silent` set to true. -You can read the source code of some modules to see them in action, but the +Do note that the Lua in these bindings is actual Lua, and not pasted into a +`:lua` command. Therefore, you should either pass in a function like +`require('someplugin').some_function`, without actually calling it, or you +should define your own functions, for example + +```lua +function() + require('someplugin').some_function() +end +``` + +Additionally, to not have to repeat the descriptions, there's another utility +function with its own set of functions: Utility function that takes two +attribute sets: + +- `{ someKey = "some_value" }` +- `{ someKey = { description = "Some Description"; }; }` + +and merges them into +`{ someKey = { value = "some_value"; description = "Some Description"; }; }` + +```nix +addDescriptionsToMappings = actualMappings: mappingDefinitions: +``` + +This function can be used in combination with the same `mkBinding` functions as +above, except they only take two arguments - `binding` and `action`, and have +different names: + +- `mkSetBinding = binding: action:` - makes a basic binding, with `silent` set + to true. +- `mkSetExprBinding = binding: action:` - makes an expression binding, with + `lua`, `silent`, and `expr` set to true. +- `mkSetLuaBinding = binding: action:` - makes an expression binding, with + `lua`, and `silent` set to true. + +You can read the source code of some modules to see them in action, but their usage should look something like this: ```nix @@ -49,13 +90,20 @@ in { # Mappings should always be inside an attrset called mappings mappings = { - workspaceDiagnostics = mkMappingOption "Workspace diagnostics [trouble]" "lwd"; - documentDiagnostics = mkMappingOption "Document diagnostics [trouble]" "ld"; - lspReferences = mkMappingOption "LSP References [trouble]" "lr"; - quickfix = mkMappingOption "QuickFix [trouble]" "xq"; - locList = mkMappingOption "LOCList [trouble]" "xl"; - symbols = mkMappingOption "Symbols [trouble]" "xs"; + # mkMappingOption is a helper function from lib, + # that takes a description (which will also appear in which-key), + # and a default mapping (which can be null) + toggleCurrentLine = mkMappingOption "Toggle current line comment" "gcc"; + toggleCurrentBlock = mkMappingOption "Toggle current block comment" "gbc"; + + toggleOpLeaderLine = mkMappingOption "Toggle line comment" "gc"; + toggleOpLeaderBlock = mkMappingOption "Toggle block comment" "gb"; + + toggleSelectedLine = mkMappingOption "Toggle selected comment" "gc"; + toggleSelectedBlock = mkMappingOption "Toggle selected block" "gb"; }; + + }; } ``` @@ -63,27 +111,56 @@ in { # config.nix { config, + pkgs, lib, - options, ... }: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.binds) mkKeymap; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.nvim.binds) mkSetBinding; - cfg = config.vim.plugin; + cfg = config.vim.plugin; + self = import ./plugindefinition.nix {inherit lib;}; + mappingDefinitions = self.options.vim.plugin; - keys = cfg.mappings; - inherit (options.vim.lsp.trouble) mappings; + # addDescriptionsToMappings is a helper function from lib, + # that merges mapping values and their descriptions + # into one nice attribute set + mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; in { - config = mkIf cfg.enable { - vim.keymaps = [ - (mkKeymap "n" keys.workspaceDiagnostics "Trouble toggle diagnostics" {desc = mappings.workspaceDiagnostics.description;}) - (mkKeymap "n" keys.documentDiagnostics "Trouble toggle diagnostics filter.buf=0" {desc = mappings.documentDiagnostics.description;}) - (mkKeymap "n" keys.lspReferences "Trouble toggle lsp_references" {desc = mappings.lspReferences.description;}) - (mkKeymap "n" keys.quickfix "Trouble toggle quickfix" {desc = mappings.quickfix.description;}) - (mkKeymap "n" keys.locList "Trouble toggle loclist" {desc = mappings.locList.description;}) - (mkKeymap "n" keys.symbols "Trouble toggle symbols" {desc = mappings.symbols.description;}) + config = mkIf (cfg.enable) { + # ... + vim.maps.normal = mkMerge [ + # mkSetBinding is another helper function from lib, + # that actually adds the mapping with a description. + (mkSetBinding mappings.findFiles " Telescope find_files") + (mkSetBinding mappings.liveGrep " Telescope live_grep") + (mkSetBinding mappings.buffers " Telescope buffers") + (mkSetBinding mappings.helpTags " Telescope help_tags") + (mkSetBinding mappings.open " Telescope") + + (mkSetBinding mappings.gitCommits " Telescope git_commits") + (mkSetBinding mappings.gitBufferCommits " Telescope git_bcommits") + (mkSetBinding mappings.gitBranches " Telescope git_branches") + (mkSetBinding mappings.gitStatus " Telescope git_status") + (mkSetBinding mappings.gitStash " Telescope git_stash") + + (mkIf config.vim.lsp.enable (mkMerge [ + (mkSetBinding mappings.lspDocumentSymbols " Telescope lsp_document_symbols") + (mkSetBinding mappings.lspWorkspaceSymbols " Telescope lsp_workspace_symbols") + + (mkSetBinding mappings.lspReferences " Telescope lsp_references") + (mkSetBinding mappings.lspImplementations " Telescope lsp_implementations") + (mkSetBinding mappings.lspDefinitions " Telescope lsp_definitions") + (mkSetBinding mappings.lspTypeDefinitions " Telescope lsp_type_definitions") + (mkSetBinding mappings.diagnostics " Telescope diagnostics") + ])) + + ( + mkIf config.vim.treesitter.enable + (mkSetBinding mappings.treesitter " Telescope treesitter") + ) ]; + # ... }; } ``` diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 4b778a0f..1a23634c 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -160,7 +160,6 @@ The changes are, in no particular order: [lz.n]: https://github.com/mrcjkb/lz.n - Add [lz.n] support and lazy-load some builtin plugins. -- Add simpler helper functions for making keymaps [jacekpoz](https://jacekpoz.pl): diff --git a/lib/binds.nix b/lib/binds.nix index bb40a89e..22bca735 100644 --- a/lib/binds.nix +++ b/lib/binds.nix @@ -68,7 +68,29 @@ pushDownDefault = attr: mapAttrs (_: mkDefault) attr; - mkKeymap = mode: key: action: opt: opt // {inherit mode key action;}; + mkLznBinding = mode: key: action: desc: { + inherit mode desc key action; + }; + + mkLznExprBinding = mode: key: action: desc: { + inherit mode desc key action; + lua = true; + silent = true; + expr = true; + }; + + mkSetLznBinding = mode: binding: action: { + inherit action mode; + key = binding.value; + desc = binding.description; + }; + + mkSetLuaLznBinding = mode: binding: action: { + inherit action mode; + key = binding.value; + lua = true; + desc = binding.description; + }; }; in binds diff --git a/modules/plugins/comments/comment-nvim/config.nix b/modules/plugins/comments/comment-nvim/config.nix index 4c18f7e9..c2c1a7e2 100644 --- a/modules/plugins/comments/comment-nvim/config.nix +++ b/modules/plugins/comments/comment-nvim/config.nix @@ -1,14 +1,14 @@ { - options, config, lib, ... }: let inherit (lib.modules) mkIf; - inherit (lib.nvim.binds) mkKeymap; + inherit (lib.nvim.binds) mkLznExprBinding mkLznBinding; cfg = config.vim.comments.comment-nvim; - inherit (options.vim.comments.comment-nvim) mappings; + self = import ./comment-nvim.nix {inherit lib;}; + inherit (self.options.vim.comments.comment-nvim) mappings; in { config = mkIf cfg.enable { vim.lazy.plugins.comment-nvim = { @@ -16,28 +16,24 @@ in { setupModule = "Comment"; inherit (cfg) setupOpts; keys = [ - (mkKeymap "n" cfg.mappings.toggleOpLeaderLine "(comment_toggle_linewise)" {desc = mappings.toggleOpLeaderLine.description;}) - (mkKeymap "n" cfg.mappings.toggleOpLeaderBlock "(comment_toggle_blockwise)" {desc = mappings.toggleOpLeaderBlock.description;}) - (mkKeymap "n" cfg.mappings.toggleCurrentLine '' + (mkLznBinding ["n"] cfg.mappings.toggleOpLeaderLine "(comment_toggle_linewise)" mappings.toggleOpLeaderLine.description) + (mkLznBinding ["n"] cfg.mappings.toggleOpLeaderBlock "(comment_toggle_blockwise)" mappings.toggleOpLeaderBlock.description) + (mkLznExprBinding ["n"] cfg.mappings.toggleCurrentLine '' function() return vim.api.nvim_get_vvar('count') == 0 and '(comment_toggle_linewise_current)' or '(comment_toggle_linewise_count)' end - '' { - expr = true; - desc = mappings.toggleCurrentLine.description; - }) - (mkKeymap ["n"] cfg.mappings.toggleCurrentBlock '' + '' + mappings.toggleCurrentLine.description) + (mkLznExprBinding ["n"] cfg.mappings.toggleCurrentBlock '' function() return vim.api.nvim_get_vvar('count') == 0 and '(comment_toggle_blockwise_current)' or '(comment_toggle_blockwise_count)' end - '' { - expr = true; - desc = mappings.toggleCurrentBlock.description; - }) - (mkKeymap "x" cfg.mappings.toggleSelectedLine "(comment_toggle_linewise_visual)" {desc = mappings.toggleSelectedLine.description;}) - (mkKeymap "x" cfg.mappings.toggleSelectedBlock "(comment_toggle_blockwise_visual)" {desc = mappings.toggleSelectedBlock.description;}) + '' + mappings.toggleCurrentBlock.description) + (mkLznBinding ["x"] cfg.mappings.toggleSelectedLine "(comment_toggle_linewise_visual)" mappings.toggleSelectedLine.description) + (mkLznBinding ["x"] cfg.mappings.toggleSelectedBlock "(comment_toggle_blockwise_visual)" mappings.toggleSelectedBlock.description) ]; }; }; diff --git a/modules/plugins/debugger/nvim-dap/config.nix b/modules/plugins/debugger/nvim-dap/config.nix index aa8f8386..b99fb3d3 100644 --- a/modules/plugins/debugger/nvim-dap/config.nix +++ b/modules/plugins/debugger/nvim-dap/config.nix @@ -1,5 +1,4 @@ { - options, config, lib, ... @@ -7,11 +6,13 @@ inherit (lib.strings) optionalString; inherit (lib.modules) mkIf mkMerge; inherit (lib.attrsets) mapAttrs; - inherit (lib.nvim.binds) mkKeymap; + inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLuaBinding mkSetLuaLznBinding; inherit (lib.nvim.dag) entryAnywhere entryAfter; cfg = config.vim.debugger.nvim-dap; - inherit (options.vim.debugger.nvim-dap) mappings; + self = import ./nvim-dap.nix {inherit lib;}; + mappingDefinitions = self.options.vim.debugger.nvim-dap.mappings; + mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; in { config = mkMerge [ (mkIf cfg.enable { @@ -28,24 +29,24 @@ in { } // mapAttrs (_: v: (entryAfter ["nvim-dap"] v)) cfg.sources; - keymaps = [ - (mkKeymap "n" cfg.mappings.continue "require('dap').continue" {desc = mappings.continue.description;}) - (mkKeymap "n" cfg.mappings.restart "require('dap').restart" {desc = mappings.restart.description;}) - (mkKeymap "n" cfg.mappings.terminate "require('dap').terminate" {desc = mappings.terminate.description;}) - (mkKeymap "n" cfg.mappings.runLast "require('dap').run_last" {desc = mappings.runLast.description;}) + maps.normal = mkMerge [ + (mkSetLuaBinding mappings.continue "require('dap').continue") + (mkSetLuaBinding mappings.restart "require('dap').restart") + (mkSetLuaBinding mappings.terminate "require('dap').terminate") + (mkSetLuaBinding mappings.runLast "require('dap').run_last") - (mkKeymap "n" cfg.mappings.toggleRepl "require('dap').repl.toggle" {desc = mappings.toggleRepl.description;}) - (mkKeymap "n" cfg.mappings.hover "require('dap.ui.widgets').hover" {desc = mappings.hover.description;}) - (mkKeymap "n" cfg.mappings.toggleBreakpoint "require('dap').toggle_breakpoint" {desc = mappings.toggleBreakpoint.description;}) + (mkSetLuaBinding mappings.toggleRepl "require('dap').repl.toggle") + (mkSetLuaBinding mappings.hover "require('dap.ui.widgets').hover") + (mkSetLuaBinding mappings.toggleBreakpoint "require('dap').toggle_breakpoint") - (mkKeymap "n" cfg.mappings.runToCursor "require('dap').run_to_cursor" {desc = mappings.runToCursor.description;}) - (mkKeymap "n" cfg.mappings.stepInto "require('dap').step_into" {desc = mappings.stepInto.description;}) - (mkKeymap "n" cfg.mappings.stepOut "require('dap').step_out" {desc = mappings.stepOut.description;}) - (mkKeymap "n" cfg.mappings.stepOver "require('dap').step_over" {desc = mappings.stepOver.description;}) - (mkKeymap "n" cfg.mappings.stepBack "require('dap').step_back" {desc = mappings.stepBack.description;}) + (mkSetLuaBinding mappings.runToCursor "require('dap').run_to_cursor") + (mkSetLuaBinding mappings.stepInto "require('dap').step_into") + (mkSetLuaBinding mappings.stepOut "require('dap').step_out") + (mkSetLuaBinding mappings.stepOver "require('dap').step_over") + (mkSetLuaBinding mappings.stepBack "require('dap').step_back") - (mkKeymap "n" cfg.mappings.goUp "require('dap').up" {desc = mappings.goUp.description;}) - (mkKeymap "n" cfg.mappings.goDown "require('dap').down" {desc = mappings.goDown.description;}) + (mkSetLuaBinding mappings.goUp "require('dap').up") + (mkSetLuaBinding mappings.goDown "require('dap').down") ]; }; }) @@ -59,7 +60,7 @@ in { inherit (cfg.ui) setupOpts; keys = [ - (mkKeymap "n" cfg.mappings.toggleDapUI "function() require('dapui').toggle() end" {desc = mappings.toggleDapUI.description;}) + (mkSetLuaLznBinding "n" mappings.toggleDapUI "function() require('dapui').toggle() end") ]; }; diff --git a/modules/plugins/filetree/nvimtree/config.nix b/modules/plugins/filetree/nvimtree/config.nix index e20a1458..7881fa79 100644 --- a/modules/plugins/filetree/nvimtree/config.nix +++ b/modules/plugins/filetree/nvimtree/config.nix @@ -6,7 +6,7 @@ }: let inherit (lib.strings) optionalString; inherit (lib.modules) mkIf; - inherit (lib.nvim.binds) mkKeymap; + inherit (lib.nvim.binds) mkLznBinding; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.binds) pushDownDefault; @@ -27,10 +27,10 @@ in { cmd = ["NvimTreeClipboard" "NvimTreeClose" "NvimTreeCollapse" "NvimTreeCollapseKeepBuffers" "NvimTreeFindFile" "NvimTreeFindFileToggle" "NvimTreeFocus" "NvimTreeHiTest" "NvimTreeOpen" "NvimTreeRefresh" "NvimTreeResize" "NvimTreeToggle"]; keys = [ - (mkKeymap "n" cfg.mappings.toggle ":NvimTreeToggle" {desc = mappings.toggle.description;}) - (mkKeymap "n" cfg.mappings.refresh ":NvimTreeRefresh" {desc = mappings.refresh.description;}) - (mkKeymap "n" cfg.mappings.findFile ":NvimTreeFindFile" {desc = mappings.findFile.description;}) - (mkKeymap "n" cfg.mappings.focus ":NvimTreeFocus" {desc = mappings.focus.description;}) + (mkLznBinding ["n"] cfg.mappings.toggle ":NvimTreeToggle" mappings.toggle.description) + (mkLznBinding ["n"] cfg.mappings.refresh ":NvimTreeRefresh" mappings.refresh.description) + (mkLznBinding ["n"] cfg.mappings.findFile ":NvimTreeFindFile" mappings.findFile.description) + (mkLznBinding ["n"] cfg.mappings.focus ":NvimTreeFocus" mappings.focus.description) ]; }; diff --git a/modules/plugins/lsp/trouble/config.nix b/modules/plugins/lsp/trouble/config.nix index c41dec60..b64a9151 100644 --- a/modules/plugins/lsp/trouble/config.nix +++ b/modules/plugins/lsp/trouble/config.nix @@ -5,11 +5,12 @@ ... }: let inherit (lib.modules) mkIf; - inherit (lib.nvim.binds) mkKeymap pushDownDefault; + inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLznBinding pushDownDefault; cfg = config.vim.lsp; - inherit (options.vim.lsp.trouble) mappings; + mappingDefinitions = options.vim.lsp.trouble.mappings; + mappings = addDescriptionsToMappings cfg.trouble.mappings mappingDefinitions; in { config = mkIf (cfg.enable && cfg.trouble.enable) { vim = { @@ -20,12 +21,12 @@ in { cmd = "Trouble"; keys = [ - (mkKeymap "n" cfg.trouble.mappings.workspaceDiagnostics "Trouble toggle diagnostics" {desc = mappings.workspaceDiagnostics.description;}) - (mkKeymap "n" cfg.trouble.mappings.documentDiagnostics "Trouble toggle diagnostics filter.buf=0" {desc = mappings.documentDiagnostics.description;}) - (mkKeymap "n" cfg.trouble.mappings.lspReferences "Trouble toggle lsp_references" {desc = mappings.lspReferences.description;}) - (mkKeymap "n" cfg.trouble.mappings.quickfix "Trouble toggle quickfix" {desc = mappings.quickfix.description;}) - (mkKeymap "n" cfg.trouble.mappings.locList "Trouble toggle loclist" {desc = mappings.locList.description;}) - (mkKeymap "n" cfg.trouble.mappings.symbols "Trouble toggle symbols" {desc = mappings.symbols.description;}) + (mkSetLznBinding "n" mappings.workspaceDiagnostics "Trouble toggle diagnostics") + (mkSetLznBinding "n" mappings.documentDiagnostics "Trouble toggle diagnostics filter.buf=0") + (mkSetLznBinding "n" mappings.lspReferences "Trouble toggle lsp_references") + (mkSetLznBinding "n" mappings.quickfix "Trouble toggle quickfix") + (mkSetLznBinding "n" mappings.locList "Trouble toggle loclist") + (mkSetLznBinding "n" mappings.symbols "Trouble toggle symbols") ]; }; diff --git a/modules/plugins/terminal/toggleterm/config.nix b/modules/plugins/terminal/toggleterm/config.nix index 280f29d2..d3a71fbd 100644 --- a/modules/plugins/terminal/toggleterm/config.nix +++ b/modules/plugins/terminal/toggleterm/config.nix @@ -7,7 +7,7 @@ inherit (lib.lists) optional; inherit (lib.modules) mkIf; inherit (lib.meta) getExe; - inherit (lib.nvim.binds) mkKeymap; + inherit (lib.nvim.binds) mkLznBinding; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.terminal.toggleterm; @@ -19,7 +19,7 @@ in { package = "toggleterm-nvim"; cmd = ["ToggleTerm" "ToggleTermSendCurrentLine" "ToggleTermSendVisualLines" "ToggleTermSendVisualSelection" "ToggleTermSetName" "ToggleTermToggleAll"]; keys = - [(mkKeymap "n" cfg.mappings.open "execute v:count . \"ToggleTerm\"" {desc = "Toggle terminal";})] + [(mkLznBinding ["n"] cfg.mappings.open "execute v:count . \"ToggleTerm\"" "Toggle terminal")] ++ optional cfg.lazygit.enable { key = cfg.lazygit.mappings.open; mode = "n"; diff --git a/modules/plugins/utility/motion/leap/config.nix b/modules/plugins/utility/motion/leap/config.nix index b9cb58d5..94a00c99 100644 --- a/modules/plugins/utility/motion/leap/config.nix +++ b/modules/plugins/utility/motion/leap/config.nix @@ -4,7 +4,7 @@ ... }: let inherit (lib.modules) mkIf mkDefault; - inherit (lib.nvim.binds) mkKeymap; + inherit (lib.nvim.binds) mkLznBinding; cfg = config.vim.utility.motion.leap; in { @@ -14,11 +14,11 @@ in { lazy.plugins.leap-nvim = { package = "leap-nvim"; keys = [ - (mkKeymap ["n" "o" "x"] cfg.mappings.leapForwardTo "(leap-forward-to)" {desc = "Leap forward to";}) - (mkKeymap ["n" "o" "x"] cfg.mappings.leapBackwardTo "(leap-backward-to)" {desc = "Leap backward to";}) - (mkKeymap ["n" "o" "x"] cfg.mappings.leapForwardTill "(leap-forward-till)" {desc = "Leap forward till";}) - (mkKeymap ["n" "o" "x"] cfg.mappings.leapBackwardTill "(leap-backward-till)" {desc = "Leap backward till";}) - (mkKeymap ["n" "o" "x"] cfg.mappings.leapFromWindow "(leap-from-window)" {desc = "Leap from window";}) + (mkLznBinding ["n" "o" "x"] cfg.mappings.leapForwardTo "(leap-forward-to)" "Leap forward to") + (mkLznBinding ["n" "o" "x"] cfg.mappings.leapBackwardTo "(leap-backward-to)" "Leap backward to") + (mkLznBinding ["n" "o" "x"] cfg.mappings.leapForwardTill "(leap-forward-till)" "Leap forward till") + (mkLznBinding ["n" "o" "x"] cfg.mappings.leapBackwardTill "(leap-backward-till)" "Leap backward till") + (mkLznBinding ["n" "o" "x"] cfg.mappings.leapFromWindow "(leap-from-window)" "Leap from window") ]; after = '' diff --git a/modules/plugins/utility/telescope/config.nix b/modules/plugins/utility/telescope/config.nix index 76cfa8bd..c94fe901 100644 --- a/modules/plugins/utility/telescope/config.nix +++ b/modules/plugins/utility/telescope/config.nix @@ -5,14 +5,15 @@ ... }: let inherit (lib.modules) mkIf; + inherit (lib.nvim.binds) addDescriptionsToMappings; inherit (lib.strings) optionalString; inherit (lib.lists) optionals; - inherit (lib.nvim.binds) pushDownDefault mkKeymap; + inherit (lib.nvim.binds) pushDownDefault mkSetLznBinding; cfg = config.vim.telescope; + mappingDefinitions = options.vim.telescope.mappings; - keys = cfg.mappings; - inherit (options.vim.telescope) mappings; + mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; in { config = mkIf cfg.enable { vim = { @@ -33,35 +34,39 @@ in { keys = [ - (mkKeymap "n" keys.findFiles "Telescope find_files" {desc = mappings.findFiles.description;}) - (mkKeymap "n" keys.liveGrep "Telescope live_grep" {desc = mappings.liveGrep.description;}) - (mkKeymap "n" keys.buffers "Telescope buffers" {desc = mappings.buffers.description;}) - (mkKeymap "n" keys.helpTags "Telescope help_tags" {desc = mappings.helpTags.description;}) - (mkKeymap "n" keys.open "Telescope" {desc = mappings.open.description;}) - (mkKeymap "n" keys.resume "Telescope resume" {desc = mappings.resume.description;}) + (mkSetLznBinding "n" mappings.findFiles "Telescope find_files") + (mkSetLznBinding "n" mappings.liveGrep "Telescope live_grep") + (mkSetLznBinding "n" mappings.buffers "Telescope buffers") + (mkSetLznBinding "n" mappings.helpTags "Telescope help_tags") + (mkSetLznBinding "n" mappings.open "Telescope") + (mkSetLznBinding "n" mappings.resume "Telescope resume") - (mkKeymap "n" keys.gitCommits "Telescope git_commits" {desc = mappings.gitCommits.description;}) - (mkKeymap "n" keys.gitBufferCommits "Telescope git_bcommits" {desc = mappings.gitBufferCommits.description;}) - (mkKeymap "n" keys.gitBranches "Telescope git_branches" {desc = mappings.gitBranches.description;}) - (mkKeymap "n" keys.gitStatus "Telescope git_status" {desc = mappings.gitStatus.description;}) - (mkKeymap "n" keys.gitStash "Telescope git_stash" {desc = mappings.gitStash.description;}) + (mkSetLznBinding "n" mappings.gitCommits "Telescope git_commits") + (mkSetLznBinding "n" mappings.gitBufferCommits "Telescope git_bcommits") + (mkSetLznBinding "n" mappings.gitBranches "Telescope git_branches") + (mkSetLznBinding "n" mappings.gitStatus "Telescope git_status") + (mkSetLznBinding "n" mappings.gitStash "Telescope git_stash") ] ++ (optionals config.vim.lsp.enable [ - (mkKeymap "n" keys.lspDocumentSymbols "Telescope lsp_document_symbols" {desc = mappings.lspDocumentSymbols.description;}) - (mkKeymap "n" keys.lspWorkspaceSymbols "Telescope lsp_workspace_symbols" {desc = mappings.lspWorkspaceSymbols.description;}) + (mkSetLznBinding "n" mappings.lspDocumentSymbols "Telescope lsp_document_symbols") + (mkSetLznBinding "n" mappings.lspWorkspaceSymbols "Telescope lsp_workspace_symbols") - (mkKeymap "n" keys.lspReferences "Telescope lsp_references" {desc = mappings.lspReferences.description;}) - (mkKeymap "n" keys.lspImplementations "Telescope lsp_implementations" {desc = mappings.lspImplementations.description;}) - (mkKeymap "n" keys.lspDefinitions "Telescope lsp_definitions" {desc = mappings.lspDefinitions.description;}) - (mkKeymap "n" keys.lspTypeDefinitions "Telescope lsp_type_definitions" {desc = mappings.lspTypeDefinitions.description;}) - (mkKeymap "n" keys.diagnostics "Telescope diagnostics" {desc = mappings.diagnostics.description;}) + (mkSetLznBinding "n" mappings.lspReferences "Telescope lsp_references") + (mkSetLznBinding "n" mappings.lspImplementations "Telescope lsp_implementations") + (mkSetLznBinding "n" mappings.lspDefinitions "Telescope lsp_definitions") + (mkSetLznBinding "n" mappings.lspTypeDefinitions "Telescope lsp_type_definitions") + (mkSetLznBinding "n" mappings.diagnostics "Telescope diagnostics") ]) - ++ optionals config.vim.treesitter.enable [ - (mkKeymap "n" keys.treesitter "Telescope treesitter" {desc = mappings.treesitter.description;}) - ] - ++ optionals config.vim.projects.project-nvim.enable [ - (mkKeymap "n" keys.findProjects "Telescope projects" {desc = mappings.findProjects.description;}) - ]; + ++ ( + optionals config.vim.treesitter.enable [ + (mkSetLznBinding "n" mappings.treesitter "Telescope treesitter") + ] + ) + ++ ( + optionals config.vim.projects.project-nvim.enable [ + (mkSetLznBinding "n" mappings.findProjects "Telescope projects") + ] + ); }; binds.whichKey.register = pushDownDefault {