From fbe8d06de1785680f6f56408d6498d9d33b3bcaf Mon Sep 17 00:00:00 2001 From: matt1432 Date: Mon, 30 Oct 2023 20:24:47 -0400 Subject: [PATCH] feat(nvim): add visual git stage bind --- common/home/neovim/default.nix | 2 +- common/home/neovim/plugins/gitsigns.lua | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 common/home/neovim/plugins/gitsigns.lua 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();