From 55a96f83b4f7542bd556cfe4d103ada35910c2c1 Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Fri, 12 Jun 2026 14:44:46 +0200 Subject: [PATCH] treewide: migrate to vim.keymaps --- modules/plugins/assistant/chatgpt/config.nix | 43 ++++---- modules/plugins/git/git-conflict/config.nix | 24 ++--- modules/plugins/git/gitsigns/config.nix | 99 +++++++++++++------ modules/plugins/lsp/nvim-docs-view/config.nix | 13 ++- modules/plugins/lsp/otter/config.nix | 11 +-- modules/plugins/minimap/codewindow/config.nix | 29 ++++-- .../plugins/notes/todo-comments/config.nix | 22 +++-- .../session/nvim-session-manager/config.nix | 15 ++- .../tabline/nvim-bufferline/config.nix | 44 ++++----- .../utility/gestures/gesture-nvim/config.nix | 29 +++--- modules/plugins/utility/motion/hop/config.nix | 15 +-- .../plugins/utility/preview/glow/config.nix | 16 +-- .../visuals/cellular-automaton/config.nix | 6 +- 13 files changed, 211 insertions(+), 155 deletions(-) diff --git a/modules/plugins/assistant/chatgpt/config.nix b/modules/plugins/assistant/chatgpt/config.nix index bf4d9972..3b471e7d 100644 --- a/modules/plugins/assistant/chatgpt/config.nix +++ b/modules/plugins/assistant/chatgpt/config.nix @@ -4,29 +4,14 @@ options, ... }: let - inherit (lib.modules) mkIf mkMerge; + inherit (lib.modules) mkIf; inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; + inherit (lib.nvim.binds) mkKeymap; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.assistant.chatgpt; - mappingDefinitions = options.vim.assistant.chatgpt.mappings; - mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; - maps = mkMerge [ - (mkSetBinding mappings.editWithInstructions "ChatGPTEditWithInstruction") - (mkSetBinding mappings.grammarCorrection "ChatGPTRun grammar_correction") - (mkSetBinding mappings.translate "ChatGPTRun translate") - (mkSetBinding mappings.keyword "ChatGPTRun keywords") - (mkSetBinding mappings.docstring "ChatGPTRun docstring") - (mkSetBinding mappings.addTests "ChatGPTRun add_tests") - (mkSetBinding mappings.optimize "ChatGPTRun optimize_code") - (mkSetBinding mappings.summarize "ChatGPTRun summarize") - (mkSetBinding mappings.fixBugs "ChatGPTRun fix_bugs") - (mkSetBinding mappings.explain "ChatGPTRun explain_code") - (mkSetBinding mappings.roxygenEdit "ChatGPTRun roxygen_edit") - (mkSetBinding mappings.readabilityanalysis "ChatGPTRun code_readability_analysis") - ]; + inherit (options.vim.assistant.chatgpt) mappings; in { config = mkIf cfg.enable { vim = { @@ -45,13 +30,21 @@ in { require("chatgpt").setup(${toLuaObject cfg.setupOpts}) ''; - maps = { - visual = maps; - normal = mkMerge [ - (mkSetBinding mappings.chatGpt "ChatGPT") - maps - ]; - }; + keymaps = [ + (mkKeymap ["n" "v"] cfg.mappings.editWithInstructions "ChatGPTEditWithInstruction" {desc = mappings.editWithInstructions.description;}) + (mkKeymap ["n" "v"] cfg.mappings.grammarCorrection "ChatGPTRun grammar_correction" {desc = mappings.grammarCorrection.description;}) + (mkKeymap ["n" "v"] cfg.mappings.translate "ChatGPTRun translate" {desc = mappings.translate.description;}) + (mkKeymap ["n" "v"] cfg.mappings.keyword "ChatGPTRun keywords" {desc = mappings.keyword.description;}) + (mkKeymap ["n" "v"] cfg.mappings.docstring "ChatGPTRun docstring" {desc = mappings.docstring.description;}) + (mkKeymap ["n" "v"] cfg.mappings.addTests "ChatGPTRun add_tests" {desc = mappings.addTests.description;}) + (mkKeymap ["n" "v"] cfg.mappings.optimize "ChatGPTRun optimize_code" {desc = mappings.optimize.description;}) + (mkKeymap ["n" "v"] cfg.mappings.summarize "ChatGPTRun summarize" {desc = mappings.summarize.description;}) + (mkKeymap ["n" "v"] cfg.mappings.fixBugs "ChatGPTRun fix_bugs" {desc = mappings.fixBugs.description;}) + (mkKeymap ["n" "v"] cfg.mappings.explain "ChatGPTRun explain_code" {desc = mappings.explain.description;}) + (mkKeymap ["n" "v"] cfg.mappings.roxygenEdit "ChatGPTRun roxygen_edit" {desc = mappings.roxygenEdit.description;}) + (mkKeymap ["n" "v"] cfg.mappings.readabilityanalysis "ChatGPTRun code_readability_analysis" {desc = mappings.readabilityanalysis.description;}) + (mkKeymap "n" cfg.mappings.chatGpt "ChatGPT" {desc = mappings.chatGpt.description;}) + ]; }; }; } diff --git a/modules/plugins/git/git-conflict/config.nix b/modules/plugins/git/git-conflict/config.nix index 9d99aacc..3953e757 100644 --- a/modules/plugins/git/git-conflict/config.nix +++ b/modules/plugins/git/git-conflict/config.nix @@ -5,31 +5,27 @@ ... }: let inherit (lib.modules) mkIf mkMerge; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; + inherit (lib.nvim.binds) mkKeymap; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.git.git-conflict; - gcMappingDefinitions = options.vim.git.git-conflict.mappings; - - gcMappings = addDescriptionsToMappings cfg.mappings gcMappingDefinitions; + inherit (options.vim.git.git-conflict) mappings; in { config = mkIf cfg.enable (mkMerge [ { vim = { startPlugins = ["git-conflict-nvim"]; - maps = { - normal = mkMerge [ - (mkSetBinding gcMappings.ours "(git-conflict-ours)") - (mkSetBinding gcMappings.theirs "(git-conflict-theirs)") - (mkSetBinding gcMappings.both "(git-conflict-both)") - (mkSetBinding gcMappings.none "(git-conflict-none)") - (mkSetBinding gcMappings.prevConflict "(git-conflict-prev-conflict)") - (mkSetBinding gcMappings.nextConflict "(git-conflict-next-conflict)") - ]; - }; + keymaps = [ + (mkKeymap "n" cfg.mappings.ours "(git-conflict-ours)" {desc = mappings.ours.description;}) + (mkKeymap "n" cfg.mappings.theirs "(git-conflict-theirs)" {desc = mappings.theirs.description;}) + (mkKeymap "n" cfg.mappings.both "(git-conflict-both)" {desc = mappings.both.description;}) + (mkKeymap "n" cfg.mappings.none "(git-conflict-none)" {desc = mappings.none.description;}) + (mkKeymap "n" cfg.mappings.prevConflict "(git-conflict-prev-conflict)" {desc = mappings.prevConflict.description;}) + (mkKeymap "n" cfg.mappings.nextConflict "(git-conflict-next-conflict)" {desc = mappings.nextConflict.description;}) + ]; pluginRC.git-conflict = entryAnywhere '' require('git-conflict').setup(${toLuaObject ({default_mappings = false;} // cfg.setupOpts)}) diff --git a/modules/plugins/git/gitsigns/config.nix b/modules/plugins/git/gitsigns/config.nix index e2d31df5..35b45952 100644 --- a/modules/plugins/git/gitsigns/config.nix +++ b/modules/plugins/git/gitsigns/config.nix @@ -7,66 +7,107 @@ inherit (builtins) toJSON; inherit (lib.modules) mkIf mkMerge; inherit (lib.generators) mkLuaInline; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetExprBinding mkSetLuaBinding pushDownDefault; + inherit (lib.nvim.binds) mkKeymap pushDownDefault; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.git.gitsigns; - gsMappingDefinitions = options.vim.git.gitsigns.mappings; - - gsMappings = addDescriptionsToMappings cfg.mappings gsMappingDefinitions; + inherit (options.vim.git.gitsigns) mappings; in { config = mkIf cfg.enable (mkMerge [ { vim = { startPlugins = ["gitsigns-nvim"]; - maps = { - normal = mkMerge [ - (mkSetExprBinding gsMappings.nextHunk '' + keymaps = [ + (mkKeymap "n" cfg.mappings.nextHunk '' function() - if vim.wo.diff then return ${toJSON gsMappings.nextHunk.value} end + if vim.wo.diff then return ${toJSON cfg.mappings.nextHunk} end vim.schedule(function() package.loaded.gitsigns.next_hunk() end) return '' end - '') + '' { + desc = mappings.nextHunk.description; + lua = true; + expr = true; + }) - (mkSetExprBinding gsMappings.previousHunk '' + (mkKeymap "n" cfg.mappings.previousHunk '' function() - if vim.wo.diff then return ${toJSON gsMappings.previousHunk.value} end + if vim.wo.diff then return ${toJSON cfg.mappings.previousHunk} end vim.schedule(function() package.loaded.gitsigns.prev_hunk() end) return '' end - '') + '' { + desc = mappings.previousHunk.description; + lua = true; + expr = true; + }) - (mkSetLuaBinding gsMappings.stageHunk "package.loaded.gitsigns.stage_hunk") - (mkSetLuaBinding gsMappings.resetHunk "package.loaded.gitsigns.reset_hunk") - (mkSetLuaBinding gsMappings.undoStageHunk "package.loaded.gitsigns.undo_stage_hunk") + (mkKeymap "n" cfg.mappings.stageHunk "package.loaded.gitsigns.stage_hunk" { + desc = mappings.stageHunk.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.resetHunk "package.loaded.gitsigns.reset_hunk" { + desc = mappings.resetHunk.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.undoStageHunk "package.loaded.gitsigns.undo_stage_hunk" { + desc = mappings.undoStageHunk.description; + lua = true; + }) - (mkSetLuaBinding gsMappings.stageBuffer "package.loaded.gitsigns.stage_buffer") - (mkSetLuaBinding gsMappings.resetBuffer "package.loaded.gitsigns.reset_buffer") + (mkKeymap "n" cfg.mappings.stageBuffer "package.loaded.gitsigns.stage_buffer" { + desc = mappings.stageBuffer.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.resetBuffer "package.loaded.gitsigns.reset_buffer" { + desc = mappings.resetBuffer.description; + lua = true; + }) - (mkSetLuaBinding gsMappings.previewHunk "package.loaded.gitsigns.preview_hunk") + (mkKeymap "n" cfg.mappings.previewHunk "package.loaded.gitsigns.preview_hunk" { + desc = mappings.previewHunk.description; + lua = true; + }) - (mkSetLuaBinding gsMappings.blameLine "function() package.loaded.gitsigns.blame_line{full=true} end") - (mkSetLuaBinding gsMappings.toggleBlame "package.loaded.gitsigns.toggle_current_line_blame") + (mkKeymap "n" cfg.mappings.blameLine "function() package.loaded.gitsigns.blame_line{full=true} end" { + desc = mappings.blameLine.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.toggleBlame "package.loaded.gitsigns.toggle_current_line_blame" { + desc = mappings.toggleBlame.description; + lua = true; + }) - (mkSetLuaBinding gsMappings.diffThis "package.loaded.gitsigns.diffthis") - (mkSetLuaBinding gsMappings.diffProject "function() package.loaded.gitsigns.diffthis('~') end") + (mkKeymap "n" cfg.mappings.diffThis "package.loaded.gitsigns.diffthis" { + desc = mappings.diffThis.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.diffProject "function() package.loaded.gitsigns.diffthis('~') end" { + desc = mappings.diffProject.description; + lua = true; + }) - (mkSetLuaBinding gsMappings.toggleDeleted "package.loaded.gitsigns.toggle_deleted") - ]; + (mkKeymap "n" cfg.mappings.toggleDeleted "package.loaded.gitsigns.toggle_deleted" { + desc = mappings.toggleDeleted.description; + lua = true; + }) - visual = mkMerge [ - (mkSetLuaBinding gsMappings.stageHunk "function() package.loaded.gitsigns.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end") - (mkSetLuaBinding gsMappings.resetHunk "function() package.loaded.gitsigns.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end") - ]; - }; + (mkKeymap "v" cfg.mappings.stageHunk "function() package.loaded.gitsigns.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end" { + desc = mappings.stageHunk.description; + lua = true; + }) + (mkKeymap "v" cfg.mappings.resetHunk "function() package.loaded.gitsigns.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end" { + desc = mappings.resetHunk.description; + lua = true; + }) + ]; binds.whichKey.register = pushDownDefault { "h" = "+Gitsigns"; diff --git a/modules/plugins/lsp/nvim-docs-view/config.nix b/modules/plugins/lsp/nvim-docs-view/config.nix index 997e9a72..911bff5d 100644 --- a/modules/plugins/lsp/nvim-docs-view/config.nix +++ b/modules/plugins/lsp/nvim-docs-view/config.nix @@ -4,15 +4,14 @@ options, ... }: let - inherit (lib.modules) mkIf mkMerge; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; + inherit (lib.modules) mkIf; + inherit (lib.nvim.binds) mkKeymap; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.lsp.nvim-docs-view; - mappingDefinitions = options.vim.lsp.nvim-docs-view.mappings; - mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; + inherit (options.vim.lsp.nvim-docs-view) mappings; in { config = mkIf cfg.enable { vim = { @@ -23,9 +22,9 @@ in { require("docs-view").setup ${toLuaObject cfg.setupOpts} ''; - maps.normal = mkMerge [ - (mkSetBinding mappings.viewToggle "DocsViewToggle") - (mkSetBinding mappings.viewUpdate "DocsViewUpdate") + keymaps = [ + (mkKeymap "n" cfg.mappings.viewToggle "DocsViewToggle" {desc = mappings.viewToggle.description;}) + (mkKeymap "n" cfg.mappings.viewUpdate "DocsViewUpdate" {desc = mappings.viewUpdate.description;}) ]; }; }; diff --git a/modules/plugins/lsp/otter/config.nix b/modules/plugins/lsp/otter/config.nix index f3dbe4d6..29ece9ca 100644 --- a/modules/plugins/lsp/otter/config.nix +++ b/modules/plugins/lsp/otter/config.nix @@ -4,22 +4,21 @@ options, ... }: let - inherit (lib.modules) mkIf mkMerge; + inherit (lib.modules) mkIf; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; + inherit (lib.nvim.binds) mkKeymap; cfg = config.vim.lsp; - mappingDefinitions = options.vim.lsp.otter-nvim.mappings; - mappings = addDescriptionsToMappings cfg.otter-nvim.mappings mappingDefinitions; + inherit (options.vim.lsp.otter-nvim) mappings; in { config = mkIf (cfg.enable && cfg.otter-nvim.enable) { vim = { startPlugins = ["otter-nvim"]; - maps.normal = mkMerge [ - (mkSetBinding mappings.toggle "lua require'otter'.activate()") + keymaps = [ + (mkKeymap "n" cfg.otter-nvim.mappings.toggle "lua require'otter'.activate()" {desc = mappings.toggle.description;}) ]; pluginRC.otter-nvim = entryAnywhere '' diff --git a/modules/plugins/minimap/codewindow/config.nix b/modules/plugins/minimap/codewindow/config.nix index 020eab7d..72fdbba8 100644 --- a/modules/plugins/minimap/codewindow/config.nix +++ b/modules/plugins/minimap/codewindow/config.nix @@ -4,15 +4,14 @@ options, ... }: let - inherit (lib.modules) mkIf mkMerge; + inherit (lib.modules) mkIf; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLuaBinding pushDownDefault; + inherit (lib.nvim.binds) mkKeymap pushDownDefault; cfg = config.vim.minimap.codewindow; - mappingDefinitions = options.vim.minimap.codewindow.mappings; - mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; + inherit (options.vim.minimap.codewindow) mappings; in { config = mkIf cfg.enable { vim = { @@ -20,11 +19,23 @@ in { "codewindow-nvim" ]; - maps.normal = mkMerge [ - (mkSetLuaBinding mappings.open "require('codewindow').open_minimap") - (mkSetLuaBinding mappings.close "require('codewindow').close_minimap") - (mkSetLuaBinding mappings.toggle "require('codewindow').toggle_minimap") - (mkSetLuaBinding mappings.toggleFocus "require('codewindow').toggle_focus") + keymaps = [ + (mkKeymap "n" cfg.mappings.open "require('codewindow').open_minimap" { + desc = mappings.open.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.close "require('codewindow').close_minimap" { + desc = mappings.close.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.toggle "require('codewindow').toggle_minimap" { + desc = mappings.toggle.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.toggleFocus "require('codewindow').toggle_focus" { + desc = mappings.toggleFocus.description; + lua = true; + }) ]; binds.whichKey.register = pushDownDefault { diff --git a/modules/plugins/notes/todo-comments/config.nix b/modules/plugins/notes/todo-comments/config.nix index 47fa3641..32e0b4f8 100644 --- a/modules/plugins/notes/todo-comments/config.nix +++ b/modules/plugins/notes/todo-comments/config.nix @@ -4,8 +4,9 @@ options, ... }: let - inherit (lib.modules) mkMerge mkIf; - inherit (lib.nvim.binds) mkBinding; + inherit (lib.modules) mkIf; + inherit (lib.lists) optional; + inherit (lib.nvim.binds) mkKeymap; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.notes.todo-comments; @@ -17,11 +18,18 @@ in { "todo-comments-nvim" ]; - maps.normal = mkMerge [ - (mkBinding cfg.mappings.quickFix ":TodoQuickFix" mappings.quickFix.description) - (mkIf config.vim.telescope.enable (mkBinding cfg.mappings.telescope ":TodoTelescope" mappings.telescope.description)) - (mkIf config.vim.lsp.trouble.enable (mkBinding cfg.mappings.trouble ":TodoTrouble" mappings.trouble.description)) - ]; + keymaps = + [ + (mkKeymap "n" cfg.mappings.quickFix ":TodoQuickFix" {desc = mappings.quickFix.description;}) + ] + ++ ( + optional config.vim.telescope.enable + (mkKeymap "n" cfg.mappings.telescope ":TodoTelescope" {desc = mappings.telescope.description;}) + ) + ++ ( + optional config.vim.lsp.trouble.enable + (mkKeymap "n" cfg.mappings.trouble ":TodoTrouble" {desc = mappings.trouble.description;}) + ); pluginRC.todo-comments = '' require('todo-comments').setup(${toLuaObject cfg.setupOpts}) diff --git a/modules/plugins/session/nvim-session-manager/config.nix b/modules/plugins/session/nvim-session-manager/config.nix index 3585b715..aca83743 100644 --- a/modules/plugins/session/nvim-session-manager/config.nix +++ b/modules/plugins/session/nvim-session-manager/config.nix @@ -3,11 +3,11 @@ lib, ... }: let - inherit (lib.modules) mkIf mkMerge; + inherit (lib.modules) mkIf; inherit (lib.lists) optionals; inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.binds) mkBinding; + inherit (lib.nvim.binds) mkKeymap; cfg = config.vim.session.nvim-session-manager; in { @@ -20,12 +20,11 @@ in { ] ++ optionals cfg.usePicker ["dressing-nvim"]; - maps.normal = mkMerge [ - (mkBinding cfg.mappings.loadSession ":SessionManager load_session" "Load session") - (mkBinding cfg.mappings.deleteSession ":SessionManager delete_session" "Delete session") - (mkBinding cfg.mappings.saveCurrentSession ":SessionManager save_current_session" "Save current session") - (mkBinding cfg.mappings.loadLastSession ":SessionManager load_last_session" "Load last session") - # TODO: load_current_dir_session + keymaps = [ + (mkKeymap "n" cfg.mappings.loadSession ":SessionManager load_session" {desc = "Load session";}) + (mkKeymap "n" cfg.mappings.deleteSession ":SessionManager delete_session" {desc = "Delete session";}) + (mkKeymap "n" cfg.mappings.saveCurrentSession ":SessionManager save_current_session" {desc = "Save current session";}) + (mkKeymap "n" cfg.mappings.loadLastSession ":SessionManager load_last_session" {desc = "Load last session";}) ]; pluginRC.nvim-session-manager = entryAnywhere '' diff --git a/modules/plugins/tabline/nvim-bufferline/config.nix b/modules/plugins/tabline/nvim-bufferline/config.nix index b3285537..1fd3e860 100644 --- a/modules/plugins/tabline/nvim-bufferline/config.nix +++ b/modules/plugins/tabline/nvim-bufferline/config.nix @@ -4,8 +4,8 @@ options, ... }: let - inherit (lib.modules) mkIf mkMerge; - inherit (lib.nvim.binds) mkLuaBinding mkBinding pushDownDefault; + inherit (lib.modules) mkIf; + inherit (lib.nvim.binds) mkKeymap pushDownDefault; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; @@ -29,30 +29,30 @@ in { mousemoveevent = true; }; - maps.normal = mkMerge [ + keymaps = [ ( - mkLuaBinding cfg.mappings.closeCurrent "require(\"bufdelete\").bufdelete" - mappings.closeCurrent.description + mkKeymap "n" cfg.mappings.closeCurrent "require('bufdelete').bufdelete" + { + desc = mappings.closeCurrent.description; + lua = true; + } ) - (mkBinding cfg.mappings.cycleNext ":BufferLineCycleNext" mappings.cycleNext.description) - (mkBinding cfg.mappings.cycleNext ":BufferLineCycleNext" mappings.cycleNext.description) - (mkBinding cfg.mappings.cyclePrevious ":BufferLineCyclePrev" mappings.cyclePrevious.description) - (mkBinding cfg.mappings.pick ":BufferLinePick" mappings.pick.description) + (mkKeymap "n" cfg.mappings.cycleNext ":BufferLineCycleNext" {desc = mappings.cycleNext.description;}) + (mkKeymap "n" cfg.mappings.cycleNext ":BufferLineCycleNext" {desc = mappings.cycleNext.description;}) + (mkKeymap "n" cfg.mappings.cyclePrevious ":BufferLineCyclePrev" {desc = mappings.cyclePrevious.description;}) + (mkKeymap "n" cfg.mappings.pick ":BufferLinePick" {desc = mappings.pick.description;}) + (mkKeymap "n" cfg.mappings.sortByExtension ":BufferLineSortByExtension" {desc = mappings.sortByExtension.description;}) + (mkKeymap "n" cfg.mappings.sortByDirectory ":BufferLineSortByDirectory" {desc = mappings.sortByDirectory.description;}) ( - mkBinding cfg.mappings.sortByExtension ":BufferLineSortByExtension" - mappings.sortByExtension.description + mkKeymap "n" cfg.mappings.sortById + "function() require('bufferline').sort_buffers_by(function (buf_a, buf_b) return buf_a.id < buf_b.id end) end" + { + desc = mappings.sortById.description; + lua = true; + } ) - ( - mkBinding cfg.mappings.sortByDirectory ":BufferLineSortByDirectory" - mappings.sortByDirectory.description - ) - ( - mkLuaBinding cfg.mappings.sortById - "function() require(\"bufferline\").sort_buffers_by(function (buf_a, buf_b) return buf_a.id < buf_b.id end) end" - mappings.sortById.description - ) - (mkBinding cfg.mappings.moveNext ":BufferLineMoveNext" mappings.moveNext.description) - (mkBinding cfg.mappings.movePrevious ":BufferLineMovePrev" mappings.movePrevious.description) + (mkKeymap "n" cfg.mappings.moveNext ":BufferLineMoveNext" {desc = mappings.moveNext.description;}) + (mkKeymap "n" cfg.mappings.movePrevious ":BufferLineMovePrev" {desc = mappings.movePrevious.description;}) ]; binds.whichKey.register = pushDownDefault { diff --git a/modules/plugins/utility/gestures/gesture-nvim/config.nix b/modules/plugins/utility/gestures/gesture-nvim/config.nix index 6c40e3ea..fa3d2d05 100644 --- a/modules/plugins/utility/gestures/gesture-nvim/config.nix +++ b/modules/plugins/utility/gestures/gesture-nvim/config.nix @@ -4,26 +4,33 @@ options, ... }: let - inherit (lib.modules) mkIf mkMerge; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLuaBinding; + inherit (lib.modules) mkIf; + inherit (lib.lists) optional; + inherit (lib.nvim.binds) mkKeymap; inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.gestures.gesture-nvim; - mappingDefinitions = options.vim.gestures.gesture-nvim.mappings; - mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; + inherit (options.vim.gestures.gesture-nvim) mappings; in { config = mkIf cfg.enable { vim = { startPlugins = ["gesture-nvim"]; - maps.normal = mkMerge [ - (mkSetLuaBinding mappings.draw "require('gesture').draw") - (mkSetLuaBinding mappings.finish "require('gesture').finish") - (mkIf (mappings.draw.value == "") { - "" = {action = "";}; - }) - ]; + keymaps = + [ + (mkKeymap "n" cfg.mappings.draw "require('gesture').draw" { + desc = mappings.draw.description; + lua = true; + }) + (mkKeymap "n" cfg.mappings.finish "require('gesture').finish" { + desc = mappings.finish.description; + lua = true; + }) + ] + ++ optional + (cfg.mappings.draw == "") + (mkKeymap "n" "" "" {desc = "Disable right mouse";}); options.mouse = "a"; pluginRC.gesture-nvim = entryAnywhere '' diff --git a/modules/plugins/utility/motion/hop/config.nix b/modules/plugins/utility/motion/hop/config.nix index 21292269..9c0221d1 100644 --- a/modules/plugins/utility/motion/hop/config.nix +++ b/modules/plugins/utility/motion/hop/config.nix @@ -5,20 +5,21 @@ ... }: let inherit (lib.modules) mkIf; - inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; + inherit (lib.nvim.binds) mkKeymap; inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.utility.motion.hop; - mappingDefinitions = options.vim.utility.motion.hop.mappings; - mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; + inherit (options.vim.utility.motion.hop) mappings; in { - config = mkIf cfg.enable { - vim.startPlugins = ["hop.nvim"]; + config.vim = mkIf cfg.enable { + startPlugins = ["hop.nvim"]; - vim.maps.normal = mkSetBinding mappings.hop " HopPattern"; + keymaps = [ + (mkKeymap "n" cfg.mappings.hop "HopPattern" {desc = mappings.hop.description;}) + ]; - vim.pluginRC.hop-nvim = entryAnywhere '' + pluginRC.hop-nvim = entryAnywhere '' require('hop').setup() ''; }; diff --git a/modules/plugins/utility/preview/glow/config.nix b/modules/plugins/utility/preview/glow/config.nix index 7297df83..dfc73605 100644 --- a/modules/plugins/utility/preview/glow/config.nix +++ b/modules/plugins/utility/preview/glow/config.nix @@ -5,25 +5,25 @@ options, ... }: let - inherit (lib.modules) mkIf mkMerge; - inherit (lib.nvim.binds) mkBinding pushDownDefault; + inherit (lib.modules) mkIf; + inherit (lib.nvim.binds) mkKeymap pushDownDefault; inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.utility.preview.glow; inherit (options.vim.utility.preview.glow) mappings; in { - config = mkIf cfg.enable { - vim.startPlugins = ["glow-nvim"]; + config.vim = mkIf cfg.enable { + startPlugins = ["glow-nvim"]; - vim.maps.normal = mkMerge [ - (mkBinding cfg.mappings.openPreview ":Glow" mappings.openPreview.description) + keymaps = [ + (mkKeymap "n" cfg.mappings.openPreview ":Glow" {desc = mappings.openPreview.description;}) ]; - vim.binds.whichKey.register = pushDownDefault { + binds.whichKey.register = pushDownDefault { "pm" = "+Preview Markdown"; }; - vim.pluginRC.glow = entryAnywhere '' + pluginRC.glow = entryAnywhere '' require('glow').setup({ glow_path = "${pkgs.glow}/bin/glow" }); diff --git a/modules/plugins/visuals/cellular-automaton/config.nix b/modules/plugins/visuals/cellular-automaton/config.nix index 10c305b3..2123a35a 100644 --- a/modules/plugins/visuals/cellular-automaton/config.nix +++ b/modules/plugins/visuals/cellular-automaton/config.nix @@ -7,7 +7,7 @@ inherit (lib.strings) optionalString; inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.dag) entryAnywhere entryAfter; - inherit (lib.nvim.binds) mkBinding; + inherit (lib.nvim.binds) mkKeymap; cfg = config.vim.visuals.cellular-automaton; in { @@ -15,7 +15,9 @@ in { vim = { startPlugins = ["cellular-automaton-nvim"]; - maps.normal = mkBinding cfg.mappings.makeItRain "CellularAutomaton make_it_rain" "Make it rain"; + keymaps = [ + (mkKeymap "n" cfg.mappings.makeItRain "CellularAutomaton make_it_rain" {desc = "Make it rain";}) + ]; pluginRC = { # XXX: This has no error handling. User can set