зеркало из https://github.com/microsoft/git.git
Merge branch 'pd/mergetool-nvimdiff'
The existing backends for "git mergetool" based on variants of vim have been refactored and then support for "nvim" has been added. * pd/mergetool-nvimdiff: mergetools: add support for nvimdiff (neovim) family mergetool--lib: improve support for vimdiff-style tool variants
This commit is contained in:
Коммит
873fa13e3f
|
@ -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 ()
|
||||
|
|
|
@ -43,7 +43,14 @@ show_tool_names () {
|
|||
|
||||
shown_any=
|
||||
( cd "$MERGE_TOOLS_DIR" && ls ) | {
|
||||
while read toolname
|
||||
while read scriptname
|
||||
do
|
||||
setup_tool "$scriptname" 2>/dev/null
|
||||
variants="$variants$(list_tool_variants)\n"
|
||||
done
|
||||
variants="$(echo "$variants" | sort | uniq)"
|
||||
|
||||
for toolname in $variants
|
||||
do
|
||||
if setup_tool "$toolname" 2>/dev/null &&
|
||||
(eval "$condition" "$toolname")
|
||||
|
@ -157,6 +164,10 @@ setup_tool () {
|
|||
echo "$1"
|
||||
}
|
||||
|
||||
list_tool_variants () {
|
||||
echo "$tool"
|
||||
}
|
||||
|
||||
# Most tools' exit codes cannot be trusted, so By default we ignore
|
||||
# their exit code and check the merged file's modification time in
|
||||
# check_unchanged() to determine whether or not the merge was
|
||||
|
@ -178,19 +189,26 @@ setup_tool () {
|
|||
false
|
||||
}
|
||||
|
||||
|
||||
if ! test -f "$MERGE_TOOLS_DIR/$tool"
|
||||
if test -f "$MERGE_TOOLS_DIR/$tool"
|
||||
then
|
||||
. "$MERGE_TOOLS_DIR/$tool"
|
||||
elif test -f "$MERGE_TOOLS_DIR/${tool%[0-9]}"
|
||||
then
|
||||
. "$MERGE_TOOLS_DIR/${tool%[0-9]}"
|
||||
else
|
||||
setup_user_tool
|
||||
return $?
|
||||
fi
|
||||
|
||||
# Load the redefined functions
|
||||
. "$MERGE_TOOLS_DIR/$tool"
|
||||
# Now let the user override the default command for the tool. If
|
||||
# they have not done so then this will return 1 which we ignore.
|
||||
setup_user_tool
|
||||
|
||||
if ! list_tool_variants | grep -q "^$tool$"
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if merge_mode && ! can_merge
|
||||
then
|
||||
echo "error: '$tool' can not be used to resolve merges" >&2
|
||||
|
@ -286,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
|
||||
}
|
||||
|
|
|
@ -21,3 +21,8 @@ translate_merge_tool_path() {
|
|||
echo bcompare
|
||||
fi
|
||||
}
|
||||
|
||||
list_tool_variants () {
|
||||
echo bc
|
||||
echo bc3
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
. "$MERGE_TOOLS_DIR/bc"
|
|
@ -1 +0,0 @@
|
|||
. "$MERGE_TOOLS_DIR/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
|
||||
|
@ -46,3 +49,11 @@ translate_merge_tool_path() {
|
|||
exit_code_trustable () {
|
||||
true
|
||||
}
|
||||
|
||||
list_tool_variants () {
|
||||
for prefix in '' g n; do
|
||||
for suffix in '' 2 3; do
|
||||
echo "${prefix}vimdiff${suffix}"
|
||||
done
|
||||
done
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
. "$MERGE_TOOLS_DIR/vimdiff"
|
|
@ -1 +0,0 @@
|
|||
. "$MERGE_TOOLS_DIR/vimdiff"
|
Загрузка…
Ссылка в новой задаче