---@type LazySpec
return {
	{
		"lewis6991/gitsigns.nvim",
		event = { "BufReadPost" },
		cmd = { "Gitsigns" },
		keys = {
			{ "gs", "Gitsigns", mode = "ca" },
		},
		dependencies = {
			"tpope/vim-repeat",
		},
		opts = {
			signs = {
				add = { text = "+" },
				change = { text = "~" },
				delete = { text = "_" },
				topdelete = { text = "‾" },
				changedelete = { text = "~_" },
			},
			current_line_blame = true,
			on_attach = function(buffer)
				local opts = { silent = true, buffer = buffer }
				vim.keymap.set("n", "<leader>gg", "<cmd>Gitsigns<cr>", opts)
				vim.keymap.set("n", "<leader>gS", "<cmd>Gitsigns stage_buffer<cr>", opts)
				vim.keymap.set("n", "<leader>gh", "<cmd>Gitsigns preview_hunk<cr>", opts)
				vim.keymap.set("n", "<leader>gs", "<cmd>Gitsigns stage_hunk<cr>", opts)
				vim.keymap.set("n", "<leader>gu", "<cmd>Gitsigns undo_stage_hunk<cr>", opts)
				vim.keymap.set("n", "<leader>gr", "<cmd>Gitsigns reset_hunk<cr>", opts)
				vim.keymap.set("n", "<leader>gR", "<cmd>Gitsigns reset_buffer<cr>", opts)
				-- vim.keymap.set({ "o", "x" }, "ih", "<cmd><c-u>Gitsigns select_hunk<cr>", opts)
				vim.keymap.set("n", "<leader>gd", "<cmd>Gitsigns diffthis split=rightbelow<cr>", opts)
				-- vim.keymap.set("n", "<leader>gm", "<cmd>Gitsigns blame_line<cr>", opts)
			end,
		},
		config = true,
	},
}