about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Completion/Base/Completer/_menu23
1 files changed, 23 insertions, 0 deletions
diff --git a/Completion/Base/Completer/_menu b/Completion/Base/Completer/_menu
new file mode 100644
index 000000000..41fc178ba
--- /dev/null
+++ b/Completion/Base/Completer/_menu
@@ -0,0 +1,23 @@
+#autoload
+
+[[ _matcher_num -gt 1 ]] && return 1
+
+# This completer is an example showing how menucompletion can be
+# implemented with the new completion system.
+# Use this one before the normal _complete completer, as in:
+#
+#   zstyle ":completion:::::" completer _menu _complete
+
+if [[ -n "$compstate[old_list]" ]]; then
+
+  # We have an old list, keep it and insert the next match.
+
+  compstate[old_list]=keep
+  compstate[insert]=$((compstate[old_insert]+1))
+else
+  # No old list, make completion insert the first match.
+
+  compstate[insert]=1
+fi
+
+return 1