From 751e555fddac5ddb679bdd53ac4e3af3be0a9418 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Tue, 14 Feb 2023 17:23:19 -0600 Subject: fix(nvim): fix gitsigns visual keybinds --- nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua | 44 +++++++--------------- 1 file changed, 13 insertions(+), 31 deletions(-) (limited to 'nvim/.config') diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua index 36d9ab5..267d0a4 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/gitsigns.lua @@ -15,11 +15,13 @@ local M = { on_attach = function(bufnr) local with_range = function(callback) return function() - callback(function() - local start_pos = vim.fn.getpos("v") - local end_pos = vim.fn.getcurpos() - return { start_pos[2], end_pos[2] } - end) + local cursor = vim.fn.getpos(".") + local visual = vim.fn.getpos("v") + if cursor == visual then + callback() + else + callback({ cursor[2], visual[2] }) + end end end @@ -57,18 +59,18 @@ local M = { buffer = bufnr, }) - vim.keymap.set("n", "gp", require("gitsigns").preview_hunk, { - desc = "preview hunk", + vim.keymap.set({ "n", "v" }, "gr", with_range(require("gitsigns").reset_hunk), { + desc = "reset hunk", buffer = bufnr, }) - vim.keymap.set("n", "gr", require("gitsigns").reset_hunk, { - desc = "reset hunk", + vim.keymap.set({ "n", "v" }, "gs", with_range(require("gitsigns").stage_hunk), { + desc = "stage hunk", buffer = bufnr, }) - vim.keymap.set("n", "gs", require("gitsigns").stage_hunk, { - desc = "stage hunk", + vim.keymap.set({ "n", "v" }, "gp", with_range(require("gitsigns").preview_hunk), { + desc = "preview hunk", buffer = bufnr, }) @@ -92,26 +94,6 @@ local M = { buffer = bufnr, }) - vim.keymap.set("v", "gr", with_range(require("gitsigns").reset_hunk), { - desc = "reset hunk", - buffer = bufnr, - }) - - vim.keymap.set("v", "gs", with_range(require("gitsigns").stage_hunk), { - desc = "stage hunk", - buffer = bufnr, - }) - - vim.keymap.set("v", "gu", with_range(require("gitsigns").undo_stage_hunk), { - desc = "unstage hunk", - buffer = bufnr, - }) - - vim.keymap.set("v", "gp", with_range(require("gitsigns").preview_hunk), { - desc = "preview hunk", - buffer = bufnr, - }) - vim.api.nvim_exec_autocmds("User", { pattern = "GitAttach", data = { buf = bufnr } }) end, }, -- cgit v1.2.3-70-g09d2