diff --git a/lazy-lock.json b/lazy-lock.json index 16a5f4a..9b8e931 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -6,7 +6,9 @@ "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "conform.nvim": { "branch": "master", "commit": "235dd79731c1dc51ec04abb4045cbc54727a172a" }, + "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "gitsigns.nvim": { "branch": "main", "commit": "42d6aed4e94e0f0bbced16bbdcc42f57673bd75e" }, "kanagawa": { "branch": "master", "commit": "aef7f5cec0a40dbe7f3304214850c472e2264b10" }, "lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" }, "lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" }, diff --git a/lua/core/keymaps.lua b/lua/core/keymaps.lua index 4a189ee..92a1a18 100644 --- a/lua/core/keymaps.lua +++ b/lua/core/keymaps.lua @@ -9,6 +9,12 @@ keymap('n', 'ff', 'Telescope find_files', { desc = "Find files" keymap('n', 'fg', 'Telescope live_grep', { desc = "Live grep" }) keymap('n', 'fb', 'Telescope buffers', { desc = "Find buffers" }) +-- Git (Telescope pickers) +keymap('n', 'gt', 'Telescope git_status', { desc = "Git status" }) +keymap('n', 'gc', 'Telescope git_commits', { desc = "Git commits" }) +keymap('n', 'gf', 'Telescope git_bcommits', { desc = "File commits" }) +keymap('n', 'gw', 'Telescope git_branches', { desc = "Git branches" }) + -- Better window navigation keymap('n', '', 'h') keymap('n', '', 'j') diff --git a/lua/plugins/plugin.lua b/lua/plugins/plugin.lua index 68251b0..4c2eb8f 100644 --- a/lua/plugins/plugin.lua +++ b/lua/plugins/plugin.lua @@ -42,6 +42,47 @@ return { end, }, + -- Git signs + { + "lewis6991/gitsigns.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + require("gitsigns").setup({ + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + local map = function(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + -- Navigation + map("n", "]c", function() gs.next_hunk() end, { desc = "Next hunk" }) + map("n", "[c", function() gs.prev_hunk() end, { desc = "Previous hunk" }) + -- Actions + map("n", "gs", gs.stage_hunk, { desc = "Stage hunk" }) + map("n", "gr", gs.reset_hunk, { desc = "Reset hunk" }) + map("n", "gS", gs.stage_buffer, { desc = "Stage buffer" }) + map("n", "gu", gs.undo_stage_hunk, { desc = "Undo stage" }) + map("n", "gp", gs.preview_hunk, { desc = "Preview hunk" }) + map("n", "gb", function() gs.blame_line({ full = true }) end, { desc = "Blame line" }) + map("n", "gd", gs.diffthis, { desc = "Diff this" }) + end, + }) + end, + }, + + -- Diff view + { + "sindrets/diffview.nvim", + cmd = { "DiffviewOpen", "DiffviewFileHistory" }, + keys = { + { "gv", "DiffviewOpen", desc = "Diff view" }, + { "gh", "DiffviewFileHistory %", desc = "File history" }, + { "gx", "DiffviewClose", desc = "Close diff" }, + }, + config = true, + }, + -- Fuzzy finder { "nvim-telescope/telescope.nvim", @@ -190,6 +231,7 @@ return { { "ff", desc = "Find files" }, { "fg", desc = "Live grep" }, { "fb", desc = "Find buffers" }, + { "g", group = "Git" }, { "w", desc = "Save" }, { "q", desc = "Quit" }, })