return { { "vim-fugitive", enabled = nixCats("git.merge") or false, cmd = { "Git", "Gvdiffsplit" }, }, { "resolve-nvim", enabled = nixCats("git.merge") or false, event = { "BufReadPre", "BufNewFile" }, after = function(plugin) require("resolve").setup({ default_keymaps = false, on_conflicts_resolved = function(info) -- NOTE: am not sure if i wanna stage files automatically -- local filepath = vim.api.nvim_buf_get_name(info.bufnr) -- vim.fn.system({ "git", "add", filepath }) -- vim.notify("conflicts resolved :3 file staged yayayayy <3", vim.log.levels.INFO) vim.notify("conflicts resolved :3", vim.log.levels.INFO) end, }) end, }, { "gitsigns.nvim", enabled = nixCats("git.gitsigns") or false, after = function(plugin) 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") -- toggle git blame vim.keymap.set("n", "gb", function() local wins = vim.api.nvim_list_wins() for _, win in ipairs(wins) do local buf = vim.api.nvim_win_get_buf(win) local ft = vim.api.nvim_get_option_value("filetype", { buf = buf }) if ft == "gitsigns-blame" then vim.api.nvim_win_close(win, true) return end end vim.cmd("Gitsigns blame") end) vim.keymap.set("n", "bl", gitsigns.toggle_current_line_blame) vim.keymap.set("n", "]c", function() if vim.wo.diff then vim.cmd.normal({ "]c", bang = true }) else gitsigns.nav_hunk("next") end end) vim.keymap.set("n", "[c", function() if vim.wo.diff then vim.cmd.normal({ "[c", bang = true }) else gitsigns.nav_hunk("prev") end end) vim.keymap.set("n", "hs", gitsigns.stage_hunk) vim.keymap.set("n", "hu", gitsigns.undo_stage_hunk) vim.keymap.set("n", "hS", gitsigns.stage_buffer) vim.keymap.set("n", "hU", gitsigns.reset_buffer_index) vim.keymap.set("n", "hi", gitsigns.toggle_current_line_blame) vim.keymap.set("n", "hp", gitsigns.preview_hunk_inline) end, }) end, }, }