diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index ee468ea3b0..aed08f8df5 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1712,8 +1712,8 @@ _git_diff () } __git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff - tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc - codecompare smerge + tkdiff vimdiff nvimdiff gvimdiff xxdiff araxis p4merge + bc codecompare smerge " _git_difftool () diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index 29fecc340f..2defef28cd 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -304,11 +304,14 @@ list_merge_tool_candidates () { tools="$tools smerge" fi case "${VISUAL:-$EDITOR}" in + *nvim*) + tools="$tools nvimdiff vimdiff emerge" + ;; *vim*) - tools="$tools vimdiff emerge" + tools="$tools vimdiff nvimdiff emerge" ;; *) - tools="$tools emerge vimdiff" + tools="$tools emerge vimdiff nvimdiff" ;; esac } diff --git a/mergetools/nvimdiff b/mergetools/nvimdiff new file mode 100644 index 0000000000..04a5bb0ea8 --- /dev/null +++ b/mergetools/nvimdiff @@ -0,0 +1 @@ +. "$MERGE_TOOLS_DIR/vimdiff" diff --git a/mergetools/vimdiff b/mergetools/vimdiff index 3925e1fc3e..abc8ce4ec4 100644 --- a/mergetools/vimdiff +++ b/mergetools/vimdiff @@ -5,7 +5,7 @@ diff_cmd () { merge_cmd () { case "$1" in - gvimdiff|vimdiff) + *vimdiff) if $base_present then "$merge_tool_path" -f -d -c '4wincmd w | wincmd J' \ @@ -15,11 +15,11 @@ merge_cmd () { "$LOCAL" "$MERGED" "$REMOTE" fi ;; - gvimdiff2|vimdiff2) + *vimdiff2) "$merge_tool_path" -f -d -c 'wincmd l' \ "$LOCAL" "$MERGED" "$REMOTE" ;; - gvimdiff3|vimdiff3) + *vimdiff3) if $base_present then "$merge_tool_path" -f -d -c 'hid | hid | hid' \ @@ -34,10 +34,13 @@ merge_cmd () { translate_merge_tool_path() { case "$1" in - gvimdiff|gvimdiff2|gvimdiff3) + nvimdiff*) + echo nvim + ;; + gvimdiff*) echo gvim ;; - vimdiff|vimdiff2|vimdiff3) + vimdiff*) echo vim ;; esac @@ -48,7 +51,7 @@ exit_code_trustable () { } list_tool_variants () { - for prefix in '' g; do + for prefix in '' g n; do for suffix in '' 2 3; do echo "${prefix}vimdiff${suffix}" done