Skip to content

Commit 2e18a0e

Browse files
committed
Create a git related lua file
gitsigns for git gutter symbols vim-fugitive for everything else gitsigns can also handle some of the functionality handled by fugitive but right now my worflow still relies on the latter.
1 parent df6c026 commit 2e18a0e

File tree

2 files changed

+81
-18
lines changed

2 files changed

+81
-18
lines changed

init.lua

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -176,24 +176,6 @@ require('lazy').setup({
176176
-- "gc" to comment visual regions/lines
177177
{ 'numToStr/Comment.nvim', opts = {} },
178178

179-
-- Here is a more advanced example where we pass configuration
180-
-- options to `gitsigns.nvim`. This is equivalent to the following Lua:
181-
-- require('gitsigns').setup({ ... })
182-
--
183-
-- See `:help gitsigns` to understand what the configuration keys do
184-
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
185-
'lewis6991/gitsigns.nvim',
186-
opts = {
187-
signs = {
188-
add = { text = '+' },
189-
change = { text = '~' },
190-
delete = { text = '_' },
191-
topdelete = { text = '' },
192-
changedelete = { text = '~' },
193-
},
194-
},
195-
},
196-
197179
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
198180
--
199181
-- This is often very useful to both group configuration, as well as handle

lua/custom/plugins/git.lua

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
-- nmap <leader>gs :G<cr>
2+
-- nmap <leader>gp :Git push<CR>
3+
-- nmap <leader>gc :Git commitf<CR>
4+
-- nmap <leader>gh <Plug>(GitGutterPreviewHunk)
5+
-- nmap <leader>ga <Plug>(GitGutterStageHunk)
6+
-- nmap <leader>gu <Plug>(GitGutterUndoHunk)
7+
-- " Git log
8+
-- nmap <leader>gl :GV<cr>
9+
-- nmap <leader>glf :GV!<cr>
10+
-- nmap <leader>glb :GV --first-parent<cr>
11+
return {
12+
{
13+
'tpope/vim-fugitive',
14+
config = function()
15+
vim.keymap.set('n', '<leader>gs', '<Cmd>:G<CR>', { desc = '[G]it [S]atus' })
16+
vim.keymap.set('n', '<leader>gp', '<Cmd>:Git push<CR>', { desc = '[G]it [P]ush' })
17+
vim.keymap.set('n', '<leader>gc', '<Cmd>:Git commit<CR>', { desc = '[G]it [C]ommit' })
18+
end,
19+
},
20+
{
21+
'lewis6991/gitsigns.nvim',
22+
opts = {
23+
signs = {
24+
add = { text = '' },
25+
change = { text = '' },
26+
delete = { text = '_' },
27+
topdelete = { text = '' },
28+
changedelete = { text = '~' },
29+
untracked = { text = '' },
30+
},
31+
current_line_blame = false,
32+
on_attach = function(bufnr)
33+
local gitsigns = require 'gitsigns'
34+
local function map(mode, l, r, opts)
35+
opts = opts or {}
36+
opts.buffer = bufnr
37+
vim.keymap.set(mode, l, r, opts)
38+
end
39+
-- Navigation
40+
41+
-- Navigation
42+
map('n', '}} }', function()
43+
if vim.wo.diff then
44+
vim.cmd.normal { ']c', bang = true }
45+
else
46+
gitsigns.nav_hunk 'next'
47+
end
48+
end)
49+
50+
map('n', '{{', function()
51+
if vim.wo.diff then
52+
vim.cmd.normal { '[c', bang = true }
53+
else
54+
gitsigns.nav_hunk 'prev'
55+
end
56+
end)
57+
58+
map('n', '<leader>ga', gitsigns.stage_hunk)
59+
map('v', '<leader>ga', function()
60+
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
61+
end)
62+
map('n', '<leader>gA', gitsigns.undo_stage_hunk)
63+
map('n', '<leader>gu', gitsigns.reset_hunk)
64+
map('v', '<leader>gu', function()
65+
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
66+
end)
67+
map('n', '<leader>gp', gitsigns.preview_hunk)
68+
map('n', '<leader>gb', function()
69+
gitsigns.blame_line { full = true }
70+
end)
71+
map('n', '<leader>gd', gitsigns.diffthis)
72+
-- map('n', '<leader>gS', gitsigns.stage_buffer)
73+
-- map('n', '<leader>gR', gitsigns.reset_buffer)
74+
-- map('n', '<leader>gD', function()
75+
-- gitsigns.diffthis '~'
76+
-- end)
77+
-- map('n', '<leader>td', gitsigns.toggle_deleted)
78+
end,
79+
},
80+
},
81+
}

0 commit comments

Comments
 (0)