diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/nixvim.nix | 236 |
1 files changed, 139 insertions, 97 deletions
diff --git a/common/nixvim.nix b/common/nixvim.nix index 526e55d..29e8add 100644 --- a/common/nixvim.nix +++ b/common/nixvim.nix | |||
@@ -96,87 +96,123 @@ in | |||
96 | TSDefinitionUsage.link = "GruvboxAquaSign"; | 96 | TSDefinitionUsage.link = "GruvboxAquaSign"; |
97 | }; | 97 | }; |
98 | 98 | ||
99 | keymaps = [ | 99 | keymaps = |
100 | { | 100 | let |
101 | key = "<leader>fu"; | 101 | toggle = key: option: { |
102 | action = "require('telescope').extensions.undo.undo"; | 102 | key = "yo${key}"; |
103 | lua = true; | 103 | action = "<Cmd>setlocal ${option}! ${option}?<CR>"; |
104 | options = { | 104 | options.desc = "Toggle ${option}"; |
105 | silent = true; | ||
106 | desc = "Telescope undo"; | ||
107 | }; | 105 | }; |
108 | } | 106 | in |
109 | 107 | [ | |
110 | { | 108 | { |
111 | key = "-"; | 109 | key = "<leader>fu"; |
112 | action = "require('oil').open"; | 110 | action = "require('telescope').extensions.undo.undo"; |
113 | lua = true; | 111 | lua = true; |
114 | options.desc = "Open parent directory"; | 112 | options = { |
115 | } | 113 | silent = true; |
116 | 114 | desc = "Telescope undo"; | |
117 | # TODO: add "] " and "[ " | 115 | }; |
118 | 116 | } | |
119 | # Gitsigns | 117 | |
120 | 118 | { | |
121 | # TODO: that was not exactly that | 119 | key = "-"; |
122 | # { | 120 | action = "require('oil').open"; |
123 | # key = "]g"; | 121 | lua = true; |
124 | # action = "require('gitsigns').next_hunk"; | 122 | options.desc = "Open parent directory"; |
125 | # lua = true; | 123 | } |
126 | # } | 124 | |
127 | 125 | # TODO: add "] " and "[ " | |
128 | # TODO: noremap? buffer local? silent? | 126 | |
129 | { | 127 | # Gitsigns |
130 | key = "<leader>gs"; | 128 | |
131 | action = "require('gitsigns').stage_hunk"; | 129 | # TODO: that was not exactly that |
132 | lua = true; | 130 | # { |
133 | options.desc = "Stage hunk"; | 131 | # key = "]g"; |
134 | } | 132 | # action = "require('gitsigns').next_hunk"; |
135 | 133 | # lua = true; | |
136 | { | 134 | # } |
137 | key = "<leader>gr"; | 135 | |
138 | action = "require('gitsigns').reset_hunk"; | 136 | # TODO: noremap? buffer local? silent? |
139 | lua = true; | 137 | { |
140 | options.desc = "Reset hunk"; | 138 | key = "<leader>gs"; |
141 | } | 139 | action = "require('gitsigns').stage_hunk"; |
142 | 140 | lua = true; | |
143 | # TODO: visual stage/reset | 141 | options.desc = "Stage hunk"; |
144 | 142 | } | |
145 | { | 143 | |
146 | key = "<leader>gS"; | 144 | { |
147 | action = "require('gitsigns').stage_buffer"; | 145 | key = "<leader>gr"; |
148 | lua = true; | 146 | action = "require('gitsigns').reset_hunk"; |
149 | options.desc = "Stage buffer"; | 147 | lua = true; |
150 | } | 148 | options.desc = "Reset hunk"; |
151 | 149 | } | |
152 | { | 150 | |
153 | key = "<leader>gR"; | 151 | # TODO: visual stage/reset |
154 | action = "require('gitsigns').reset_buffer"; | 152 | |
155 | lua = true; | 153 | { |
156 | options.desc = "Stage buffer"; | 154 | key = "<leader>gS"; |
157 | } | 155 | action = "require('gitsigns').stage_buffer"; |
158 | 156 | lua = true; | |
159 | { | 157 | options.desc = "Stage buffer"; |
160 | key = "<leader>gu"; | 158 | } |
161 | action = "require('gitsigns').undo_stage_hunk"; | 159 | |
162 | lua = true; | 160 | { |
163 | options.desc = "Undo stage hunk"; | 161 | key = "<leader>gR"; |
164 | } | 162 | action = "require('gitsigns').reset_buffer"; |
165 | 163 | lua = true; | |
166 | { | 164 | options.desc = "Stage buffer"; |
167 | key = "<leader>gp"; | 165 | } |
168 | action = "require('gitsigns').preview_hunk_inline"; | 166 | |
169 | lua = true; | 167 | { |
170 | options.desc = "Preview hunk"; | 168 | key = "<leader>gu"; |
171 | } | 169 | action = "require('gitsigns').undo_stage_hunk"; |
172 | 170 | lua = true; | |
173 | { | 171 | options.desc = "Undo stage hunk"; |
174 | key = "<leader>gb"; | 172 | } |
175 | action = "function() require('gitsigns').blame_line { full = true } end"; | 173 | |
176 | lua = true; | 174 | { |
177 | options.desc = "Blame line"; | 175 | key = "<leader>gp"; |
178 | } | 176 | action = "require('gitsigns').preview_hunk_inline"; |
179 | ]; | 177 | lua = true; |
178 | options.desc = "Preview hunk"; | ||
179 | } | ||
180 | |||
181 | { | ||
182 | key = "<leader>gb"; | ||
183 | action = "function() require('gitsigns').blame_line { full = true } end"; | ||
184 | lua = true; | ||
185 | options.desc = "Blame line"; | ||
186 | } | ||
187 | |||
188 | # Toggle options | ||
189 | (toggle "c" "cursorline") | ||
190 | (toggle "C" "cursorcolumn") | ||
191 | (toggle "h" "hlsearch") | ||
192 | (toggle "i" "ignorecase") | ||
193 | (toggle "l" "list") | ||
194 | (toggle "n" "number") | ||
195 | (toggle "r" "relativenumber") | ||
196 | (toggle "s" "spell") | ||
197 | (toggle "w" "wrap") | ||
198 | |||
199 | { | ||
200 | key = "yod"; | ||
201 | action = '' | ||
202 | function() | ||
203 | if vim.wo.diff then | ||
204 | vim.cmd.diffoff() | ||
205 | print('diffoff') | ||
206 | else | ||
207 | vim.cmd.diffthis() | ||
208 | print('diffthis') | ||
209 | end | ||
210 | end | ||
211 | ''; | ||
212 | lua = true; | ||
213 | options.desc = "Toggle diff"; | ||
214 | } | ||
215 | ]; | ||
180 | 216 | ||
181 | # TODO: | 217 | # TODO: |
182 | # extraPlugins = with pkgs.unstable.vimPlugins; [ | 218 | # extraPlugins = with pkgs.unstable.vimPlugins; [ |
@@ -308,6 +344,10 @@ in | |||
308 | triggers = [ | 344 | triggers = [ |
309 | { | 345 | { |
310 | mode = "n"; | 346 | mode = "n"; |
347 | keys = "yo"; | ||
348 | } | ||
349 | { | ||
350 | mode = "n"; | ||
311 | keys = "["; | 351 | keys = "["; |
312 | } | 352 | } |
313 | { | 353 | { |
@@ -461,23 +501,25 @@ in | |||
461 | enable = true; | 501 | enable = true; |
462 | lookahead = true; | 502 | lookahead = true; |
463 | # selectionModes = "V"; | 503 | # selectionModes = "V"; |
464 | keymaps = let | 504 | keymaps = |
465 | keymap = object: type: { | 505 | let |
466 | query = "@${object}.${type}"; | 506 | keymap = object: type: { |
467 | desc = "Select ${type} ${object}"; | 507 | query = "@${object}.${type}"; |
508 | desc = "Select ${type} ${object}"; | ||
509 | }; | ||
510 | in | ||
511 | { | ||
512 | "af" = keymap "function" "outer"; | ||
513 | "if" = keymap "function" "inner"; | ||
514 | "aF" = keymap "call" "outer"; | ||
515 | "iF" = keymap "call" "inner"; | ||
516 | "aC" = keymap "comment" "outer"; | ||
517 | "iC" = keymap "comment" "inner"; | ||
518 | "ab" = keymap "block" "outer"; | ||
519 | "ib" = keymap "block" "inner"; | ||
520 | "aa" = keymap "parameter" "outer"; | ||
521 | "ia" = keymap "parameter" "inner"; | ||
468 | }; | 522 | }; |
469 | in { | ||
470 | "af" = keymap "function" "outer"; | ||
471 | "if" = keymap "function" "inner"; | ||
472 | "aF" = keymap "call" "outer"; | ||
473 | "iF" = keymap "call" "inner"; | ||
474 | "aC" = keymap "comment" "outer"; | ||
475 | "iC" = keymap "comment" "inner"; | ||
476 | "ab" = keymap "block" "outer"; | ||
477 | "ib" = keymap "block" "inner"; | ||
478 | "aa" = keymap "parameter" "outer"; | ||
479 | "ia" = keymap "parameter" "inner"; | ||
480 | }; | ||
481 | }; | 523 | }; |
482 | }; | 524 | }; |
483 | }; | 525 | }; |
@@ -506,5 +548,5 @@ in | |||
506 | ''; | 548 | ''; |
507 | }; | 549 | }; |
508 | 550 | ||
509 | config.environment.systemPackages = [config.programs.nixvim.finalPackage]; | 551 | config.environment.systemPackages = [ config.programs.nixvim.finalPackage ]; |
510 | } | 552 | } |