about summary refs log tree commit diff
path: root/Completion/Base/Completer
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:05:27 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:05:27 +0000
commit4d58238a0aac0aa46f9cc396fd0e7e9590495ebb (patch)
tree52a637d656e20b03edfae467954b1ce94c8f1f41 /Completion/Base/Completer
parent881e049f31197c6c1810709314cc6ea695c7d9bf (diff)
downloadzsh-4d58238a0aac0aa46f9cc396fd0e7e9590495ebb.tar.gz
zsh-4d58238a0aac0aa46f9cc396fd0e7e9590495ebb.tar.xz
zsh-4d58238a0aac0aa46f9cc396fd0e7e9590495ebb.zip
moved from Completion/Core/_all_matches
Diffstat (limited to 'Completion/Base/Completer')
-rw-r--r--Completion/Base/Completer/_all_matches43
1 files changed, 43 insertions, 0 deletions
diff --git a/Completion/Base/Completer/_all_matches b/Completion/Base/Completer/_all_matches
new file mode 100644
index 000000000..f33d78040
--- /dev/null
+++ b/Completion/Base/Completer/_all_matches
@@ -0,0 +1,43 @@
+#autoload
+
+_all_matches() {
+  local old
+
+  zstyle -s ":completion:${curcontext}:" old-matches old
+
+  if [[ "$old" = (only|true|yes|1|on) ]]; then
+
+    if [[ -n "$compstate[old_list]" ]]; then
+      compstate[insert]=all
+      compstate[old_list]=keep
+      return 0
+    fi
+
+    [[ "$old" = *only* ]] && return 1
+  fi
+
+  (( $comppostfuncs[(I)_all_matches_end] )) ||
+      comppostfuncs=( "$comppostfuncs[@]" _all_matches_end )
+
+  _all_matches_context=":completion:${curcontext}:"
+
+  return 1
+}
+
+_all_matches_end() {
+  local not
+
+  zstyle -s "$_all_matches_context" avoid-completer not ||
+      not=( _expand _old_list _correct _approximate )
+
+  if [[ "$compstate[nmatches]" -gt 1 && $not[(I)(|_)$_completer] -eq 0 ]]; then
+    local expl
+
+    _description all-matches expl 'all matches'
+    compadd "$expl[@]" -C
+  fi
+
+  unset _all_matches_context
+}
+
+_all_matches "$@"