summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2024-05-21 21:40:16 +0200
committerMinijackson <minijackson@riseup.net>2024-05-21 21:40:16 +0200
commitcff9b446f7947386c275067e724b925c3015f1ce (patch)
tree33fb567e4aa151f718e7034f250f1a2576248a37
parentc582932b3815423e49cefc98d6c0a147e0774079 (diff)
downloadnixos-config-reborn-cff9b446f7947386c275067e724b925c3015f1ce.tar.gz
nixos-config-reborn-cff9b446f7947386c275067e724b925c3015f1ce.zip
nixvim: better mini.ai bindings + gitsigns bindings
-rw-r--r--common/nixvim.nix80
1 files 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
123 options.desc = "Open parent directory"; 123 options.desc = "Open parent directory";
124 } 124 }
125 125
126 # TODO: add "] " and "[ "
127
128 # Gitsigns 126 # Gitsigns
129 127
130 # TODO: that was not exactly that
131 # {
132 # key = "]g";
133 # action = "require('gitsigns').next_hunk";
134 # lua = true;
135 # }
136
137 # TODO: noremap? buffer local? silent? 128 # TODO: noremap? buffer local? silent?
138 { 129 {
139 key = "<leader>gs"; 130 key = "<leader>gs";
@@ -186,6 +177,38 @@ in
186 options.desc = "Blame line"; 177 options.desc = "Blame line";
187 } 178 }
188 179
180 {
181 key = "]g";
182 action = ''
183 function()
184 if vim.wo.diff then return ']c' end
185 vim.schedule(function() package.loaded.gitsigns.next_hunk() end)
186 return '<Ignore>'
187 end
188 '';
189 lua = true;
190 options = {
191 expr = true;
192 desc = "Next hunk";
193 };
194 }
195
196 {
197 key = "[g";
198 action = ''
199 function()
200 if vim.wo.diff then return '[c' end
201 vim.schedule(function() package.loaded.gitsigns.prev_hunk() end)
202 return '<Ignore>'
203 end
204 '';
205 lua = true;
206 options = {
207 expr = true;
208 desc = "Next hunk";
209 };
210 }
211
189 # Toggle options 212 # Toggle options
190 (toggle "c" "cursorline") 213 (toggle "c" "cursorline")
191 (toggle "C" "cursorcolumn") 214 (toggle "C" "cursorcolumn")
@@ -301,7 +324,6 @@ in
301 notification.overrideVimNotify = true; 324 notification.overrideVimNotify = true;
302 }; 325 };
303 326
304 # TODO: add xdg-open for :GBrowse?
305 fugitive.enable = true; 327 fugitive.enable = true;
306 328
307 gitignore.enable = true; 329 gitignore.enable = true;
@@ -339,7 +361,19 @@ in
339 mini = { 361 mini = {
340 enable = true; 362 enable = true;
341 modules = { 363 modules = {
342 ai = { }; 364 ai.custom_textobjects = {
365 f.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@function.outer', i = '@function.inner' })";
366 F.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@call.outer', i = '@call.inner' })";
367 c.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@comment.outer', i = '@comment.inner' })";
368 b.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@block.outer', i = '@block.inner' })";
369 a.__raw = "require('mini.ai').gen_spec.treesitter({ a = '@parameter.outer', i = '@parameter.inner' })";
370 o.__raw = ''
371 require('mini.ai').gen_spec.treesitter({
372 a = { '@conditional.outer', '@loop.outer' },
373 i = { '@conditional.inner', '@loop.inner' },
374 })
375 '';
376 };
343 align = { }; 377 align = { };
344 bracketed = { }; 378 bracketed = { };
345 clue = { 379 clue = {
@@ -499,30 +533,6 @@ in
499 }; 533 };
500 }; 534 };
501 }; 535 };
502 select = {
503 enable = true;
504 lookahead = true;
505 # selectionModes = "V";
506 keymaps =
507 let
508 keymap = object: type: {
509 query = "@${object}.${type}";
510 desc = "Select ${type} ${object}";
511 };
512 in
513 {
514 "af" = keymap "function" "outer";
515 "if" = keymap "function" "inner";
516 "aF" = keymap "call" "outer";
517 "iF" = keymap "call" "inner";
518 "aC" = keymap "comment" "outer";
519 "iC" = keymap "comment" "inner";
520 "ab" = keymap "block" "outer";
521 "ib" = keymap "block" "inner";
522 "aa" = keymap "parameter" "outer";
523 "ia" = keymap "parameter" "inner";
524 };
525 };
526 }; 536 };
527 }; 537 };
528 538