diff --git a/common/home/neovim/default.nix b/common/home/neovim/default.nix index 5845075..f0da777 100644 --- a/common/home/neovim/default.nix +++ b/common/home/neovim/default.nix @@ -161,7 +161,7 @@ in { { plugin = gitsigns-nvim; type = "lua"; - config = "require('gitsigns').setup()"; + config = fileContents ./plugins/gitsigns.lua; } { plugin = nvim-autopairs; diff --git a/common/home/neovim/plugins/gitsigns.lua b/common/home/neovim/plugins/gitsigns.lua new file mode 100644 index 0000000..75da4fd --- /dev/null +++ b/common/home/neovim/plugins/gitsigns.lua @@ -0,0 +1,15 @@ +local gitsigns = require("gitsigns") + +local function visual_stage() + local first_line = vim.fn.line('v') + local last_line = vim.fn.getpos('.')[2] + gitsigns.stage_hunk({ first_line, last_line }) + -- Switch back to normal mode, there may be a cleaner way to do this + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('', true, false, true), 't', false) +end + +vim.keymap.set("v", "gbhs", function() + visual_stage() +end) + +gitsigns.setup();