diff options
author | Minijackson <minijackson@riseup.net> | 2024-05-21 21:40:16 +0200 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2024-05-21 21:40:16 +0200 |
commit | cff9b446f7947386c275067e724b925c3015f1ce (patch) | |
tree | 33fb567e4aa151f718e7034f250f1a2576248a37 /common | |
parent | c582932b3815423e49cefc98d6c0a147e0774079 (diff) | |
download | nixos-config-reborn-cff9b446f7947386c275067e724b925c3015f1ce.tar.gz nixos-config-reborn-cff9b446f7947386c275067e724b925c3015f1ce.zip |
nixvim: better mini.ai bindings + gitsigns bindings
Diffstat (limited to 'common')
-rw-r--r-- | common/nixvim.nix | 80 |
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 | ||