diff options
author | Nathan Houghton <nathan@brainwerk.org> | 2023-01-04 14:44:18 -0800 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2023-01-10 20:36:31 +0100 |
commit | 996b51515600859ce7f952f22c6262ecd24578e1 (patch) | |
tree | c2f04b88af90f56270f855075d7d002da477dd40 /Completion | |
parent | 81684e334d34ca315938569f3154945d0bfb05e0 (diff) | |
download | zsh-996b51515600859ce7f952f22c6262ecd24578e1.tar.gz zsh-996b51515600859ce7f952f22c6262ecd24578e1.tar.xz zsh-996b51515600859ce7f952f22c6262ecd24578e1.zip |
51276: Fix diff completion for non GNU / FreeBSD platforms
On OpenBSD, "diff -urpN dir1/ di<TAB>" would refuse to complete a second filename/directory name. This was caused by the -u and -U options getting dropped from args (overwriting args vs appending).
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/Unix/Type/_diff_options | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/Completion/Unix/Type/_diff_options b/Completion/Unix/Type/_diff_options index dfa9889f2..2646527df 100644 --- a/Completion/Unix/Type/_diff_options +++ b/Completion/Unix/Type/_diff_options @@ -133,33 +133,44 @@ else case $OSTYPE in openbsd*|solaris2.<9->) of+=' -u -U' + ;| + openbsd*|solaris*) + of+=' -n -C -D' + ;| + solaris*) + of+=' -h' + ;| + openbsd*) + of+=' -q' + ;| + # modifications to "$of" should be done above this line so that it is + # uniformly defined while constructing $args + openbsd*|solaris2.<9->) args+=( - "($of)-u[output a unified diff]" - "($of)-U+[output a unified diff]:lines of context" + "($of)-u[output a unified diff]" + "($of)-U+[output a unified diff]:lines of context" ) ;| openbsd*|solaris*) args+=( - "($of)-C+[output a context diff]:lines of context" - "($of)-D+[output merged file with preprocessor directives]:preprocessor symbol" - '-i[case insensitive]' - '-l[long output format (paginate with pr(1))]' - '-s[report on identical files]' - '-t[expand tabs in output lines]' + "($of)-C+[output a context diff]:lines of context" + "($of)-D+[output merged file with preprocessor directives]:preprocessor symbol" + '-i[case insensitive]' + '-s[report on identical files]' + '-t[expand tabs in output lines]' ) ;| solaris*) - of+=' -h -n' args+=( - '-w[ignore all white space]' - "($of)-h[do a fast, half-hearted job]" - "($of)-n[output a reversed ed script]" + '-w[ignore all white space]' + "($of)-h[do a fast, half-hearted job]" + "($of)-n[output a reversed ed script]" '-S+[set first file in comparison]:start with file:_files' + '-l[long output format (paginate with pr(1))]' ) ;; openbsd*) - of+=' -n -q -u -C -D -U' - args=( + args+=( "($of)-n[output an rcsdiff(1)-compatible diff]" "($of)-q[only print a line when the files differ; does not produce a list of changes]" '-a[treat all files as ASCII text]' @@ -173,7 +184,7 @@ else '-P[treat absent files in the second directory as if they were empty]' '-S[start a directory diff from a file name]:file name:_files' '*-X[exclude files and subdirectories whose basenames match lines in a file]:file name:_files' - '-x[exclude files and subdirectories whose basenames match a pattern]:pattern' + '*-x[exclude files and subdirectories whose basenames match a pattern]:pattern' ) ;; esac |