diff --git a/nvim/.config/nvim/after/ftplugin/git.vim b/nvim/.config/nvim/after/ftplugin/git.vim index 04effea..ebb8f3a 100644 --- a/nvim/.config/nvim/after/ftplugin/git.vim +++ b/nvim/.config/nvim/after/ftplugin/git.vim @@ -3,7 +3,8 @@ autocmd! BufEnter DisableWhitespace nmap gb :call git#git_branch_checkout() nmap gB :call git#git_branch_delete() -nmap gd :call git#git_diff_commit() +nmap gd :call git#git_diffview_commit() +nmap gD :call git#git_diff_commit() nmap gl :call git#git_branch_log() nmap gL :call git#git_branch_log_pretty() nmap gp :call git#git_cherry_pick() diff --git a/nvim/.config/nvim/autoload/git.vim b/nvim/.config/nvim/autoload/git.vim index 34e7c6c..820c156 100644 --- a/nvim/.config/nvim/autoload/git.vim +++ b/nvim/.config/nvim/autoload/git.vim @@ -103,6 +103,15 @@ function! git#git_diff_commit() abort silent execute "Git difftool -y " . commit[1] . "^!" endfunction +" Run DiffviewOpen on the commit in the line which we are at. To be used after +" running some variation of Git log. +function! git#git_diffview_commit() abort + " A line in Git log is of the form commit + let line = trim(getline('.')) + let commit = split(line, " ") + silent execute "DiffviewOpen " . commit[1] . "^!" +endfunction + " The next two functions allow scoping diffs by line range of a file and named " block in a file. Inspired by reading the following article. " https://susanpotter.net/software/tracking-diffs-by-scoping-to-file-range-function-method-or-class-changes-in-git/ diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 8d4dd29..8653123 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -45,6 +45,7 @@ local init = function () use 'rhysd/conflict-marker.vim' use 'salcode/vim-interactive-rebase-reverse' use 'whiteinge/diffconflicts' + use 'sindrets/diffview.nvim' -- Boost vim command line mode use 'vim-utils/vim-husk' -- Rainbow Parentheses