You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

49 lines
1.5 KiB

return {
"tpope/vim-fugitive",
event = "VeryLazy",
dependencies = {
"shumphrey/fugitive-gitlab.vim",
},
config = function()
vim.opt.diffopt = vim.opt.diffopt + "vertical"
vim.opt.display = vim.opt.display + "lastline"
local fugitive_augroup = vim.api.nvim_create_augroup("fugitive_mappings", { clear = true })
local function set_fugitive_mappings()
local opts = { noremap = true, silent = true }
vim.api.nvim_buf_set_keymap(0, "n", "<leader>gp", "<cmd>Git push<CR>", opts)
vim.api.nvim_buf_set_keymap(0, "n", "<leader>gP", "<cmd>Git pull<CR>", opts)
vim.api.nvim_buf_set_keymap(0, "n", "<leader>gc", "<cmd>Git commit<CR>", opts)
end
-- Create an autocmd to trigger the function when entering a Fugitive buffer
vim.api.nvim_create_autocmd("FileType", {
group = fugitive_augroup,
pattern = "fugitive",
callback = set_fugitive_mappings,
})
local opts = { noremap = true, silent = true }
vim.keymap.set("n", "<leader>gg", function ()
vim.cmd("Git")
end, opts)
vim.keymap.set("v", "<leader>gl", function()
local startPos = vim.fn.getpos("v")
local endPos = vim.fn.getpos(".")
local startLine = math.min(startPos[2], endPos[2])
local endLine = math.max(startPos[2], endPos[2])
if startLine == 0 or endLine == 0 then
vim.notify(vim.inspect(vim.fn.getpos("'<")) .. " to " .. vim.inspect(vim.fn.getpos("'>")))
return
end
vim.cmd(string.format("Git log -L %d,%d:%s", startLine, endLine, vim.fn.expand("%:.")))
end, opts)
end,
}