zsh:diffcmds(): Handle some edge cases
This commit is contained in:
@@ -668,6 +668,24 @@ diffcmds() {
|
|||||||
let i++
|
let i++
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Just execute the command without *diff if there is only one argument
|
||||||
|
if (( i + 1 == # )); then
|
||||||
|
eval "${(q@)${@:1:$((i-1))}//\%\%/${@[$#]}}"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fallback or abort if more than 2 arguments were supplied to `diff`
|
||||||
|
if [[ $cmd = diff ]] && (( # - i > 2 )); then
|
||||||
|
printf >&2 "Too many arguments for diff."
|
||||||
|
if (( $+commands[vimdiff] )); then
|
||||||
|
printf >&2 " Using vimdiff.\n"
|
||||||
|
cmd=vimdiff
|
||||||
|
else
|
||||||
|
printf >&2 "\n"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# NOTE: `=()` is necessary since vimdiff is seeking the file. See zshexpn(1)
|
# NOTE: `=()` is necessary since vimdiff is seeking the file. See zshexpn(1)
|
||||||
[[ $cmd = vimdiff ]] && ps_sub='=(' || ps_sub='<('
|
[[ $cmd = vimdiff ]] && ps_sub='=(' || ps_sub='<('
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user