mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-05-31 20:36:03 +02:00
47 lines
2.0 KiB
Plaintext
47 lines
2.0 KiB
Plaintext
#compdef diff3
|
|
|
|
local -a args ed
|
|
local ign
|
|
|
|
if _pick_variant gnu=GNU unix --version; then
|
|
ed=(
|
|
'(-m --merge -A --show-all)'{-e,--ed}'[output ed script for incorporating changes]'
|
|
'(-m --merge -A --show-all)'{-E,--show-overlap}'[like -e, but bracket conflicts]'
|
|
'(-m --merge -A --show-all)'{-3,--easy-only}'[like -e, but incorporate only nonoverlapping changes]'
|
|
'(-m --merge -A --show-all)'{-x,--overlap-only}'[like -e, but incorporate only overlapping changes]'
|
|
'(-m --merge -A --show-all)-X[like -x, but bracket conflicts]'
|
|
)
|
|
(( $#words > 2 )) && ign='!'
|
|
args=(
|
|
'(-A --show-all ed)'{-A,--show-all}'[output all changes, bracketing conflicts]'
|
|
"(-m --merge)-i[append 'w' and 'q' commands to ed scripts]"
|
|
'(-m --merge -i ed)'{-m,--merge}'[output merged file instead of ed script]'
|
|
'(-a --text)'{-a,--text}'[treat all files as text]'
|
|
'--strip-trailing-cr[strip trailing carriage return on input]'
|
|
'(-T --initial-tab)'{-T,--initial-tab}'[make tabs line up by prepending a tab]'
|
|
'--diff-program=[specify program to compare files]: : _command_names -e'
|
|
\*{-L+,--label=}'[use specified label instead of file name]:label'
|
|
"$ign(- :)--help[display usage information]"
|
|
"$ign(- :)"{-v,--version}'[display version information]'
|
|
)
|
|
else
|
|
args=( -A "-*" )
|
|
ed=(
|
|
'-e[output ed script for incorporating changes]'
|
|
'-E[like -e, but bracket conflicts]'
|
|
'-x[like -e, but incorporate only overlapping changes]'
|
|
'-X[like -x, but bracket conflicts]'
|
|
'-3[like -e, but incorporate only nonoverlapping changes]'
|
|
)
|
|
if [[ $OSTYPE != solaris* ]]; then # likely the openbsd diff3 implementation
|
|
args+=( '-a[treat all files as text]' )
|
|
fi
|
|
fi
|
|
|
|
_arguments -s -S $args \
|
|
'1: : _wanted files expl "first updated file (${${(As.:.)opt_args[-L]}[1]:-mine})" _files' \
|
|
'2: : _wanted files expl "original file (${${(As.:.)opt_args[-L]}[2]:-old})" _files' \
|
|
'3: : _wanted files expl "second updated file (${${(As.:.)opt_args[-L]}[3]:-their})" _files' \
|
|
+ '(ed)' $ed
|
|
|