summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Base/Core/_description24
-rw-r--r--Doc/Zsh/compsys.yo25
3 files changed, 47 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index eaee9a94e..1244cc48d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-11-15 Peter Stephenson <pws@csr.com>
+
+ * users/10989: Completion/Base/Core/_description,
+ Doc/Zsh/compsys.yo: add fake-always style that overrides
+ ignored-patterns.
+
2006-11-14 Peter Stephenson <pws@csr.com>
* users/10981: Jean-Rene David <jrdavid@magma.ca>:
diff --git a/Completion/Base/Core/_description b/Completion/Base/Core/_description
index 573bfbc3d..593369a0a 100644
--- a/Completion/Base/Core/_description
+++ b/Completion/Base/Core/_description
@@ -58,7 +58,9 @@ if [[ -z "$_comp_no_ignore" ]]; then
"${(@)words[CURRENT+1,-1]}" );;
esac
- (( $#_comp_ignore )) && opts=( $opts -F _comp_ignore )
+ # Ensure the ignore option is first so we can override it
+ # for fake-always.
+ (( $#_comp_ignore )) && opts=( -F _comp_ignore $opts )
else
_comp_ignore=()
fi
@@ -86,15 +88,21 @@ else
fi
fi
-if ! (( ${funcstack[2,-1][(I)_description]} )) &&
- zstyle -a ":completion:${curcontext}:$tag" fake match; then
+if ! (( ${funcstack[2,-1][(I)_description]} )); then
+ local fakestyle descr
+ for fakestyle in fake fake-always; do
+ zstyle -a ":completion:${curcontext}:$tag" $fakestyle match ||
+ continue
- local descr
+ descr=( "${(@M)match:#*[^\\]:*}" )
- descr=( "${(@M)match:#*[^\\]:*}" )
-
- compadd "${(@P)name}" - "${(@)${(@)match:#*[^\\]:*}:s/\\:/:/}"
- (( $#descr )) && _describe -t "$tag" '' descr "${(@P)name}"
+ opts=("${(@P)name}")
+ if [[ $fakestyle = fake-always && $opts[1,2] = "-F _comp_ignore" ]]; then
+ shift 2 opts
+ fi
+ compadd "${(@)opts}" - "${(@)${(@)match:#*[^\\]:*}:s/\\:/:/}"
+ (( $#descr )) && _describe -t "$tag" '' descr "${(@)opts}"
+ done
fi
return 0
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index ae6238b6c..de8f18094 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -1308,6 +1308,31 @@ It is important to use a sufficiently restrictive context when specifying
fake strings. Note that the styles tt(fake-files) and tt(fake-parameters)
provide additional features when completing files or parameters.
)
+kindex(fake-always, completion style)
+item(tt(fake-always))(
+This works identically to the tt(fake) style except that
+the tt(ignored-patterns) style is not applied to it. This makes it
+possible to override a set of matches completely by setting the
+ignored patterns to `tt(*)'.
+
+The following shows a way of supplementing any tag with arbitrary data, but
+having it behave for display purposes like a separate tag. In this example
+we use the features of the tt(tag-order) style to divide the
+tt(named-directories) tag into two when performing completion with
+the standard completer tt(complete) for arguments of tt(cd). The tag
+tt(named-directories-normal) behaves as normal, but the tag
+tt(named-directories-mine) contains a fixed set of directories.
+This has the effect of adding the match group `tt(extra directories)' with
+the given completions.
+
+example(zstyle ':completion::complete:cd:*' tag-order \
+ 'named-directories:-mine:extra\ directories
+ named-directories:-normal:named\ directories *'
+zstyle ':completion::complete:cd:*:named-directories-mine' \
+ fake-always mydir1 mydir2
+zstyle ':completion::complete:cd:*:named-directories-mine' \
+ ignored-patterns '*')
+)
kindex(fake-files, completion style)
item(tt(fake-files))(
This style is used when completing files and looked up