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.
 
 
 

53 lines
2.1 KiB

return {
"tpope/vim-fugitive",
dependencies = {
"shumphrey/fugitive-gitlab.vim",
},
config = function()
vim.opt.diffopt = vim.opt.diffopt + "vertical"
vim.opt.display = vim.opt.display + "lastline"
local function gitBlame(lines)
local current_file = vim.fn.expand('%:p')
local range = lines[1] .. "," .. lines[2]
local cmd = string.format("git -C %s blame -C -C -C -L %s %s | awk '{print $1}'", vim.fn.shellescape(vim.fn.fnamemodify(current_file, ':h')), range, vim.fn.fnamemodify(current_file, ':t'))
local handle = io.popen(cmd)
local result = handle:read("*a")
handle:close()
return result
end
vim.keymap.set('n', '<leader>gC', function ()
vim.cmd(string.format('Git show %s', gitBlame({vim.fn.line('.'), vim.fn.line('.')})))
end)
local options = { noremap = true, silent = true }
vim.keymap.set('n', '<leader>gg', '<cmd>Git<CR>', options)
vim.keymap.set('n', '<leader>gp', '<cmd>Git push<CR>', options)
vim.keymap.set('n', '<leader>gP', '<cmd>Git pull<CR>', options)
vim.keymap.set('n', '<leader>ga', '<cmd>Git add .<CR>', options)
vim.keymap.set('n', '<leader>gA', '<cmd>Git add<CR>', options)
vim.keymap.set('n', '<leader>gc', '<cmd>Git commit<CR>', options)
-- vim.keymap.set('n', '<leader>gC', '<cmd>Git commit -a<CR>', options)
vim.keymap.set('v', '<leader>gl', function ()
local startPos = vim.fn.getpos("'<")
local endPos = vim.fn.getpos("'>")
local startLine = startPos[2]
local endLine = endPos[2]
if (startLine == 0 or endLine == 0)
then
vim.notify(vim.inspect(vim.fn.getpos("'<")) .. " to " .. vim.inspect(vim.fn.getpos("'>")))
-- vim.notify('Error getting start or end line', vim.log.levels.ERROR)
return
end
vim.cmd(string.format('Git log -L %d,%d:%s', startLine, endLine, vim.fn.expand("%:.")))
end, options);
end,
}