diff options
-rw-r--r-- | Completion/Core/_files | 34 | ||||
-rw-r--r-- | Completion/User/_diff_options | 46 |
2 files changed, 47 insertions, 33 deletions
diff --git a/Completion/Core/_files b/Completion/Core/_files index 1b16f4e67..2a2f67ef0 100644 --- a/Completion/Core/_files +++ b/Completion/Core/_files @@ -1,6 +1,7 @@ #autoload local opts opt type=file glob group gopts dopts aopts tmp _file_pat_checked=yes +local hasign ign opts=() group=() @@ -9,11 +10,12 @@ dopts=(-/) aopts=(-f) while getopts "P:S:qr:R:W:F:J:V:X:f/g:M:12n" opt; do case "$opt" in - /) type="${type}dir" ;; - g) type="${type}glob"; gopts=(-g "$OPTARG") ;; - [qn12]) opts=("$opts[@]" "-$opt" ) ;; - [JV]) group=( "-$opt" "$OPTARG") ;; - [^f]) opts=("$opts[@]" "-$opt" "$OPTARG") ;; + /) type="${type}dir" ;; + g) type="${type}glob"; gopts=(-g "$OPTARG") ;; + [qn12]) opts=("$opts[@]" "-$opt" ) ;; + [JV]) group=( "-$opt" "$OPTARG") ;; + F) opts=("$opts[@]" "-$opt" "$OPTARG"); hasign=yes ;; + [^f]) opts=("$opts[@]" "-$opt" "$OPTARG") ;; esac done @@ -60,32 +62,44 @@ while _tags; do if (( $#group )); then group[2]=all-files _setup all-files + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi - _path_files "$opts[@]" "$aopts[@]" + _path_files "$opts[@]" "$ign[@]" "$aopts[@]" return elif _requested directories; then if _requested globbed-files; then if (( $#group )); then group[2]=globbed-files _setup globbed-files + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi - _path_files "$opts[@]" "$dopts[@]" "$gopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$dopts[@]" "$gopts[@]" && return 0 else if (( $#group )); then group[2]=directories _setup directories + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi - _path_files "$opts[@]" "$dopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$dopts[@]" && return 0 fi elif _requested globbed-files; then if (( $#group )); then group[2]=globbed-files _setup globbed-files + [[ -z "$hasign" ]] && + zstyle -a ":completion${curcontext}:all-files" ignored-patterns _comp_ignore && + ign=(-F _comp_ignore) fi if [[ "$type" = (*dir*glob*|*glob*dir*) ]]; then - _path_files "$opts[@]" "$dopts[@]" "$gopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$dopts[@]" "$gopts[@]" && return 0 else - _path_files "$opts[@]" "$gopts[@]" && return 0 + _path_files "$opts[@]" "$ign[@]" "$gopts[@]" && return 0 fi fi done diff --git a/Completion/User/_diff_options b/Completion/User/_diff_options index 0ac110452..3b60153b0 100644 --- a/Completion/User/_diff_options +++ b/Completion/User/_diff_options @@ -4,7 +4,7 @@ local of ofwuc ouc oss ofwy ofwg ofwl (( $+_diff_is_gnu )) || { _diff_is_gnu=0; - [[ $(diff -v </dev/null) == *GNU* ]] && _diff_is_gnu=1 + [[ $(command diff -v </dev/null) == *GNU* ]] && _diff_is_gnu=1 } if (( _diff_is_gnu )) @@ -50,15 +50,15 @@ then '(--ignore-space-change)-b[ignore changes in the amount of white space]' \ '(-B)--ignore-blank-lines[ignore lines that are all blank]' \ '(--ignore-blank-lines)-B[ignore lines that are all blank]' \ - '(-I)--ignore-matching-lines=[ignore lines that match regex]:regex:' \ - '(--ignore-matching-lines)-I[ignore lines that match regex]:regex:' \ + '(-I)--ignore-matching-lines=[ignore lines that match regex]:line exclusion regex:' \ + '(--ignore-matching-lines)-I[ignore lines that match regex]:line exclusion regex:' \ '(-a)--text[treat all files as text]' \ '(--text)-a[treat all files as text]' \ - "($of $oss)--context=[context diff]::# lines of copied context:" \ - "($of $oss)-C[output a context diff]:# lines of copied context:" \ + "($of $oss)--context=[context diff]::number of lines of copied context:" \ + "($of $oss)-C[output a context diff]:number of lines of copied context:" \ "($of $oss)-c[output a context diff]" \ - "($of $oss)--unified=[output a unified diff]::# lines of unified context:" \ - "($of $oss)-U[output a unified diff]:# lines of unified context:" \ + "($of $oss)--unified=[output a unified diff]::number of lines of unified context:" \ + "($of $oss)-U[output a unified diff]:number of lines of unified context:" \ "($of $oss)-u[output a unified diff]" \ "($ofwuc $oss -L)--label[set label to use instead of file name]:label:" \ "($ofwuc $oss --label)-L[set label to use instead of file name]:label:" \ @@ -75,18 +75,18 @@ then "($of $ouc $oss)-n[RCS format diff]" \ "($of $ouc)--side-by-side[output in two columns]" \ "($of $ouc)-y[output in two columns]" \ - "($ofwy $ouc -W)--width[set size of line]:# characters per line:" \ - "($ofwy $ouc --width)-W[set size of line]:# characters per line:" \ + "($ofwy $ouc -W)--width[set size of line]:number of characters per line:" \ + "($ofwy $ouc --width)-W[set size of line]:number of characters per line:" \ "($ofwy $ouc)--left-column[output only left column of common lines]" \ "($ofwy $ouc)--suppress-common-lines[do not ouput commun lines]" \ - "($ofwg $ouc $oss)--old-group-format=[set old group format]:group format:" \ - "($ofwg $ouc $oss)--new-group-format=[set new group format]:group format:" \ - "($ofwg $ouc $oss)--changed-group-format=[set changed group format]:group format:" \ - "($ofwg $ouc $oss)--unchanged-group-format=[set unchanged group format]:group format:" \ + "($ofwg $ouc $oss)--old-group-format=[set old group format]:old group format:" \ + "($ofwg $ouc $oss)--new-group-format=[set new group format]:new group format:" \ + "($ofwg $ouc $oss)--changed-group-format=[set changed group format]:changed group format:" \ + "($ofwg $ouc $oss)--unchanged-group-format=[set unchanged group format]:unchanged group format:" \ "($ofwl $ouc $oss)--line-format=[set line format]:line format:" \ - "($ofwl $ouc $oss)--old-line-format=[set old line format]:line format:" \ - "($ofwl $ouc $oss)--new-line-format=[set new line format]:line format:" \ - "($ofwl $ouc $oss)--changed-line-format=[set changed line format]:line format:" \ + "($ofwl $ouc $oss)--old-line-format=[set old line format]:old line format:" \ + "($ofwl $ouc $oss)--new-line-format=[set new line format]:new line format:" \ + "($ofwl $ouc $oss)--changed-line-format=[set changed line format]:changed line format:" \ '(-l)--paginate[output through pr]' \ '(--paginate)-l[output through pr]' \ '(-t)--expand-tabs[expand tabs to spaces]' \ @@ -101,13 +101,13 @@ then '(--unidirectional-new-file)-P[treat absent first files as empty]' \ '(-s)--report-identical-files[report when two files are the same]' \ '(--report-identical-files)-s[report when two files are the same]' \ - '(-x)--exclude=[exclude files matching pattern]:pattern:' \ - '(--exclude)-x[exclude files matching pattern]:pattern:' \ - '(-X)--exclude-from=[exclude files matching pattern in file]:file:_files' \ - '(--exclude-from)-X[exclude files matching pattern in file]:file:_files' \ - '(-S)--starting-file=[set first file in comparison]:file:_files' \ - '(--starting-file)-S=[set first file in comparison]:file:_files' \ - '--horizon-lines=[set number of lines to keep in prefix and suffix]:number:' \ + '(-x)--exclude=[exclude files matching pattern]:exclusion pattern:' \ + '(--exclude)-x[exclude files matching pattern]:exclusion pattern:' \ + '(-X)--exclude-from=[exclude files matching pattern in file]:exclude file:_files' \ + '(--exclude-from)-X[exclude files matching pattern in file]:exclude file:_files' \ + '(-S)--starting-file=[set first file in comparison]:start with file:_files' \ + '(--starting-file)-S=[set first file in comparison]:start with file:_files' \ + '--horizon-lines=[set number of lines to keep in prefix and suffix]:number of horizon lines:' \ '(-d)--mininal[try to find a smaler set of changes]' \ '(--mininal)-d[try to find a smaler set of changes]' \ '(-H)--speed-large-files[assume large files and many small changes]' \ |