local map = require('my.functions').map local neogit = require('neogit') neogit.setup { disable_commit_confirmation = true, kind = 'tab', integrations = { diffview = true }, disable_insert_on_commit = false } map('n', 'gg', neogit.open, 'Open Neogit') local gitgroup = vim.api.nvim_create_augroup('config_git', { clear = true }) -- enable spell checking vim.api.nvim_create_autocmd({ 'FileType' }, { group = gitgroup, pattern = { 'gitcommit' }, command = [[setlocal spell]] }) -- start git commits in insert mode vim.api.nvim_create_autocmd({ 'FileType' }, { group = gitgroup, pattern = { 'gitcommit', 'gitrebase' }, command = [[startinsert | 1]] }) -- split Neogit commit messages vertically if possible vim.api.nvim_create_autocmd({ 'FileType' }, { group = gitgroup, pattern = { 'NeogitCommitMessage' }, callback = require('autosplit') }) -- fugitive and Neogit buffers vim.api.nvim_create_autocmd({ 'FileType' }, { group = gitgroup, pattern = { 'git', 'Neogit*' }, callback = function() vim.o.list = false -- when root is nil it can mess up pwd for some reason local root = require('my.functions').get_project_root() if root then vim.cmd.lcd(root) end end }) require('gitsigns').setup({ on_attach = function(bufnr) local gs = package.loaded.gitsigns map('n', 'gb', function() gs.blame_line({ full = true }) end, 'Show blame for current line', bufnr) end }) require('gitlinker').setup({ callbacks = { ['schlomp.space'] = require('gitlinker.hosts').get_gitea_type_url, ['git.gentoo.org'] = function(url_data) url_data.host = 'gitweb.gentoo.org' return require('gitlinker.hosts').get_cgit_type_url(url_data) end, ['anongit.gentoo.org'] = function(url_data) url_data.host = 'gitweb.gentoo.org' url_data.repo = url_data.repo:gsub('^git/', '', 1) return require('gitlinker.hosts').get_cgit_type_url(url_data) end, } }) require('which-key').register({ ['g'] = { name = 'Git' } }) require('which-key').register({ ['gc'] = { name = 'commit' } }) map('n', 'gcc', ':Git commit', 'commit') map('n', 'gca', ':Git commit --amend', 'amend') map('n', 'gP', ':Git push', 'push') require('which-key').register({ ['gp'] = { name = 'pull' } }) map('n', 'gpo', ':Git pull origin', 'origin') map('n', 'gpu', ':Git pull upstream', 'upstream') require('which-key').register({ ['ga'] = { name = 'add' } }) map('n', 'gau', ':Git add --update --patch', '--update --patch') map('n', 'ga%', ':Git add %', 'This file') map('n', 'gl', ':Git log --decorate', 'log') map('n', 'gs', ':Git status', 'status')