diff options
Diffstat (limited to 'nvim/.config/nvim/lua/plugins/gitsigns.lua')
-rwxr-xr-x[-rw-r--r--] | nvim/.config/nvim/lua/plugins/gitsigns.lua | 130 |
1 files changed, 74 insertions, 56 deletions
diff --git a/nvim/.config/nvim/lua/plugins/gitsigns.lua b/nvim/.config/nvim/lua/plugins/gitsigns.lua index 8856fae..8b99647 100644..100755 --- a/nvim/.config/nvim/lua/plugins/gitsigns.lua +++ b/nvim/.config/nvim/lua/plugins/gitsigns.lua @@ -1,65 +1,83 @@ -return { - "lewis6991/gitsigns.nvim", - config = function() +require("gitsigns").setup { + signs = { + add = { text = "┃" }, + change = { text = "┃" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "┆" }, + }, + signs_staged = { + add = { text = "┃" }, + change = { text = "┃" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "┆" }, + }, + on_attach = function(bufnr) local gitsigns = require "gitsigns" - local on_attach = function(bufnr) - local function map(mode, l, r, opts) - opts = opts or {} - opts.buffer = bufnr - vim.keymap.set(mode, l, r, opts) + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map("n", "]c", function() + if vim.wo.diff then + vim.cmd.normal { "]c", bang = true } + else + gitsigns.nav_hunk "next" + end + end) + + map("n", "[c", function() + if vim.wo.diff then + vim.cmd.normal { "[c", bang = true } + else + gitsigns.nav_hunk "prev" end + end) - -- Navigation - map("n", "]c", function() - if vim.wo.diff then - vim.cmd.normal { "]c", bang = true } - else - gitsigns.nav_hunk "next" - end - end) + -- Actions + map("n", "<leader>gs", gitsigns.stage_hunk, { desc = "Stage hunk" }) + map("n", "<leader>gr", gitsigns.reset_hunk, { desc = "Reset hunk" }) - map("n", "[c", function() - if vim.wo.diff then - vim.cmd.normal { "[c", bang = true } - else - gitsigns.nav_hunk "prev" - end - end) + map("v", "<leader>gs", function() + gitsigns.stage_hunk { vim.fn.line ".", vim.fn.line "v" } + end) - -- Actions - map("n", "<leader>gs", gitsigns.stage_hunk, { desc = "Stage hunk" }) - map("n", "<leader>gr", gitsigns.reset_hunk, { desc = "Reset hunk" }) - map("v", "<leader>gs", function() - gitsigns.stage_hunk { vim.fn.line ".", vim.fn.line "v" } - end, { desc = "Stage hunk" }) - map("v", "<leader>gr", function() - gitsigns.reset_hunk { vim.fn.line ".", vim.fn.line "v" } - end, { desc = "Reset hunk" }) - map("n", "<leader>gS", gitsigns.stage_buffer, { desc = "Stage buffer" }) - map("n", "<leader>gu", gitsigns.undo_stage_hunk, { desc = "Undo stage hunk" }) - map("n", "<leader>gR", gitsigns.reset_buffer, { desc = "Reset buffer" }) - map("n", "<leader>gp", gitsigns.preview_hunk, { desc = "Preview hunk" }) - map("n", "<leader>gb", function() - gitsigns.blame_line { full = true } - end, { desc = "Blame line" }) - map("n", "<leader>Tb", gitsigns.toggle_current_line_blame, { desc = "Toggle blame line" }) - map("n", "<leader>Td", gitsigns.toggle_deleted, { desc = "Toggle deleted" }) - map("n", "<leader>gd", gitsigns.diffthis, { desc = "Diff this" }) - map("n", "<leader>gD", function() - gitsigns.diffthis "~" - end, { desc = "Diff this ~" }) - end + map("v", "<leader>gr", function() + gitsigns.reset_hunk { vim.fn.line ".", vim.fn.line "v" } + end) + + map("n", "<leader>gS", gitsigns.stage_buffer, { desc = "Stage buffer" }) + map("n", "<leader>gR", gitsigns.reset_buffer, { desc = "Reset buffer" }) + map("n", "<leader>gp", gitsigns.preview_hunk, { desc = "Preview hunk" }) + map("n", "<leader>gi", gitsigns.preview_hunk_inline, { desc = "Preview hunk inline" }) + + map("n", "<leader>gb", function() + gitsigns.blame_line { full = true } + end, { desc = "Blame line full" }) + + map("n", "<leader>gd", gitsigns.diffthis, { desc = "Diff" }) + + map("n", "<leader>gD", function() + gitsigns.diffthis "~" + end, { desc = "Diff ~" }) + + map("n", "<leader>gQ", function() + gitsigns.setqflist "all" + end, { desc = "Setqflist all" }) + map("n", "<leader>gq", gitsigns.setqflist, { desc = "Setqflist" }) + + -- Toggles + map("n", "<leader>tb", gitsigns.toggle_current_line_blame, { desc = "Toggle current line blame" }) + map("n", "<leader>tw", gitsigns.toggle_word_diff, { desc = "Toggle word diff" }) - gitsigns.setup { - signs = { - add = { text = "+" }, - change = { text = "~" }, - delete = { text = "_" }, - topdelete = { text = "‾" }, - changedelete = { text = "~" }, - }, - on_attach = on_attach, - } + -- Text object + map({ "o", "x" }, "ih", gitsigns.select_hunk, { desc = "Select hunk" }) end, } |