summaryrefslogtreecommitdiffstats
path: root/dotfiles
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2023-06-21 14:51:51 +0200
committerMinijackson <minijackson@riseup.net>2023-06-21 14:51:51 +0200
commit9c8121916cd7acb8a3d9059bef9f5720a0edd9a3 (patch)
tree6209e30428d5e377d8680f56227cacd97dd65d16 /dotfiles
parent703f8cd6bc60e5d77fc8dbfc405544988e5c14df (diff)
downloadnixos-config-reborn-9c8121916cd7acb8a3d9059bef9f5720a0edd9a3.tar.gz
nixos-config-reborn-9c8121916cd7acb8a3d9059bef9f5720a0edd9a3.zip
vim: new way of adding keymaps for gitsigns.nvim
Diffstat (limited to 'dotfiles')
-rw-r--r--dotfiles/vim/lua/myConfig.lua62
1 files changed, 43 insertions, 19 deletions
diff --git a/dotfiles/vim/lua/myConfig.lua b/dotfiles/vim/lua/myConfig.lua
index 3dc45ce..65753ea 100644
--- a/dotfiles/vim/lua/myConfig.lua
+++ b/dotfiles/vim/lua/myConfig.lua
@@ -160,25 +160,49 @@ end, mapopts)
160-- Gitsigns 160-- Gitsigns
161 161
162require("gitsigns").setup { 162require("gitsigns").setup {
163 keymaps = { 163 on_attach = function(bufnr)
164 noremap = true, 164 local gs = package.loaded.gitsigns
165 buffer = true, 165
166 silent = true, 166 local function map(mode, l, r, opts)
167 167 opts = vim.tbl_extend("force", {
168 ["n ]c"] = { expr = true, "&diff ? ']c' : '<cmd>lua require\"gitsigns\".next_hunk()<CR>'" }, 168 noremap = true,
169 ["n [c"] = { expr = true, "&diff ? '[c' : '<cmd>lua require\"gitsigns\".prev_hunk()<CR>'" }, 169 buffer = buffnr,
170 170 silent = true,
171 ["n <leader>hs"] = '<cmd>lua require"gitsigns".stage_hunk()<CR>', 171 }, opts or {})
172 ["n <leader>hu"] = '<cmd>lua require"gitsigns".undo_stage_hunk()<CR>', 172 vim.keymap.set(mode, l, r, opts)
173 ["n <leader>hr"] = '<cmd>lua require"gitsigns".reset_hunk()<CR>', 173 end
174 ["n <leader>hR"] = '<cmd>lua require"gitsigns".reset_buffer()<CR>', 174
175 ["n <leader>hp"] = '<cmd>lua require"gitsigns".preview_hunk()<CR>', 175 -- Navigation
176 ["n <leader>hb"] = '<cmd>lua require"gitsigns".blame_line()<CR>', 176 map('n', ']c', function()
177 177 if vim.wo.diff then return ']c' end
178 -- Text objects 178 vim.schedule(function() gs.next_hunk() end)
179 ["o ih"] = ':<C-U>lua require"gitsigns".select_hunk()<CR>', 179 return '<Ignore>'
180 ["x ih"] = ':<C-U>lua require"gitsigns".select_hunk()<CR>', 180 end, { expr = true })
181 }, 181
182 map('n', '[c', function()
183 if vim.wo.diff then return '[c' end
184 vim.schedule(function() gs.prev_hunk() end)
185 return '<Ignore>'
186 end, { expr = true })
187
188 -- Actions
189 map('n', '<leader>hs', gs.stage_hunk, { desc = "Stage Hunk" })
190 map('n', '<leader>hr', gs.reset_hunk, { desc = "reset Hunk" })
191 map('v', '<leader>hs', function() gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end, { desc = "Stage hunk" })
192 map('v', '<leader>hr', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end, { desc = "Reset hunk" })
193 map('n', '<leader>hS', gs.stage_buffer, { desc = "Stage buffer" })
194 map('n', '<leader>hu', gs.undo_stage_hunk, { desc = "Undo stage hunk" })
195 map('n', '<leader>hR', gs.reset_buffer, { desc = "Reset buffer" })
196 map('n', '<leader>hp', gs.preview_hunk, { desc = "Preview hunk" })
197 map('n', '<leader>hb', function() gs.blame_line { full = true } end, { desc = "Blame line" })
198 map('n', '<leader>tb', gs.toggle_current_line_blame, { desc = "Toggle current line blame" })
199 map('n', '<leader>hd', gs.diffthis, { desc = "Diff this" })
200 map('n', '<leader>hD', function() gs.diffthis('~') end, { desc = "Diff this against ~" })
201 map('n', '<leader>td', gs.toggle_deleted, { desc = "Toggle deleted" })
202
203 -- Text object
204 map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = "Select hunk" })
205 end,
182} 206}
183 207
184-- Treesitter 208-- Treesitter