From cff9b446f7947386c275067e724b925c3015f1ce Mon Sep 17 00:00:00 2001 From: Minijackson Date: Tue, 21 May 2024 21:40:16 +0200 Subject: nixvim: better mini.ai bindings + gitsigns bindings --- common/nixvim.nix | 80 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/common/nixvim.nix b/common/nixvim.nix index de65547..30d1a71 100644 --- a/common/nixvim.nix +++ b/common/nixvim.nix @@ -123,17 +123,8 @@ in options.desc = "Open parent directory"; } - # TODO: add "] " and "[ " - # Gitsigns - # TODO: that was not exactly that - # { - # key = "]g"; - # action = "require('gitsigns').next_hunk"; - # lua = true; - # } - # TODO: noremap? buffer local? silent? { key = "gs"; @@ -186,6 +177,38 @@ in options.desc = "Blame line"; } + { + key = "]g"; + action = '' + function() + if vim.wo.diff then return ']c' end + vim.schedule(function() package.loaded.gitsigns.next_hunk() end) + return '' + end + ''; + lua = true; + options = { + expr = true; + desc = "Next hunk"; + }; + } + + { + key = "[g"; + action = '' + function() + if vim.wo.diff then return '[c' end + vim.schedule(function() package.loaded.gitsigns.prev_hunk() end) + return '' + end + ''; + lua = true; + options = { + expr = true; + desc = "Next hunk"; + }; + } + # Toggle options (toggle "c" "cursorline") (toggle "C" "cursorcolumn") @@ -301,7 +324,6 @@ in notification.overrideVimNotify = true; }; - # TODO: add xdg-open for :GBrowse? fugitive.enable = true; gitignore.enable = true; @@ -339,7 +361,19 @@ in mini = { enable = true; modules = { - ai = { }; + ai.custom_textobjects = { + f.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@function.outer', i = '@function.inner' })"; + F.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@call.outer', i = '@call.inner' })"; + c.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@comment.outer', i = '@comment.inner' })"; + b.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@block.outer', i = '@block.inner' })"; + a.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@parameter.outer', i = '@parameter.inner' })"; + o.__raw = '' + require('mini.ai').gen_spec.treesitter({ + a = { '@conditional.outer', '@loop.outer' }, + i = { '@conditional.inner', '@loop.inner' }, + }) + ''; + }; align = { }; bracketed = { }; clue = { @@ -499,30 +533,6 @@ in }; }; }; - select = { - enable = true; - lookahead = true; - # selectionModes = "V"; - keymaps = - let - keymap = object: type: { - query = "@${object}.${type}"; - desc = "Select ${type} ${object}"; - }; - in - { - "af" = keymap "function" "outer"; - "if" = keymap "function" "inner"; - "aF" = keymap "call" "outer"; - "iF" = keymap "call" "inner"; - "aC" = keymap "comment" "outer"; - "iC" = keymap "comment" "inner"; - "ab" = keymap "block" "outer"; - "ib" = keymap "block" "inner"; - "aa" = keymap "parameter" "outer"; - "ia" = keymap "parameter" "inner"; - }; - }; }; }; -- cgit v1.2.3