about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Completion/Commands/_expand_word3
-rw-r--r--Completion/Core/_expand8
-rw-r--r--Doc/Zsh/compsys.yo14
3 files changed, 24 insertions, 1 deletions
diff --git a/Completion/Commands/_expand_word b/Completion/Commands/_expand_word
index 570f06987..d8f5f42f8 100644
--- a/Completion/Commands/_expand_word
+++ b/Completion/Commands/_expand_word
@@ -10,12 +10,14 @@ local oeg="$compconfig[expand_glob]"
 local oem="$compconfig[expand_menu]"
 local oeo="$compconfig[expand_original]"
 local oep="$compconfig[expand_prompt]"
+local oec="$compconfig[expand_completions]"
 
 compconfig[expand_substitute]="${compconfig[expandword_substitute]}"
 compconfig[expand_glob]="${compconfig[expandword_glob]-$oeg}"
 compconfig[expand_menu]="${compconfig[expandword_menu]-$oem}"
 compconfig[expand_original]="${compconfig[expandword_original]-$oeo}"
 compconfig[expand_prompt]="${compconfig[expandword_prompt]-$oep}"
+compconfig[expand_completions]="${compconfig[expandword_completions]-$oec}"
 
 _main_complete _expand
 
@@ -24,3 +26,4 @@ compconfig[expand_glob]="$oeg"
 compconfig[expand_menu]="$oem"
 compconfig[expand_original]="$oeo"
 compconfig[expand_prompt]="$oep"
+compconfig[expand_completions]="$oec"
diff --git a/Completion/Core/_expand b/Completion/Core/_expand
index 0b8083845..5018a6871 100644
--- a/Completion/Core/_expand
+++ b/Completion/Core/_expand
@@ -58,6 +58,14 @@
 
 local exp word="$PREFIX$SUFFIX" group=-V expl expl2 disp
 
+# First, see if we should insert all *completions*.
+
+if [[ -n "$compconfig[expand_completions]" &&
+      "${(e):-\$[$compconfig[expand_substitute]]}" -eq 1 ]]; then
+  compstate[insert]=all
+  return 1
+fi
+
 # Do this only for the first global matcher.
 
 [[ "$compstate[matcher]" -le 1 ]] || return 1
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 4b4716a48..36c148404 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -479,6 +479,10 @@ tt(expand_menu), tt(expand_original), and tt(expand_prompt), see
 ifzman(the section `Completion System Configuration' below)\
 ifnzman(noderef(Completion System Configuration)).
 
+In a different mode selected by the tt(expand_completions)
+configuration key, all em(completions) generated for the string on the 
+line are inserted.
+
 None of these configuration keys has a default value.
 )
 item(tt(_list))(
@@ -1323,8 +1327,16 @@ tt(compadd) and thus may contain the control sequences `tt(%n)',
 `tt(%B)', etc. Also, the sequence `tt(%o)' in this string will be
 replaced by the original string.
 )
+item(tt(expand_completions))(
+If this is set and non-empty, its value will be evaluated in the same
+way as tt(expand_substitute) and if the result is `tt(1)', no
+expansions will be generated, but instead the completions will be
+generated as normal and all of them will be inserted in the command
+line.
+)
 item(tt(expandword_substitute), tt(expandword_glob),
-tt(expandword_menu),tt(expandword_original), tt(expandword_prompt))(
+tt(expandword_menu), tt(expandword_original), tt(expandword_prompt),
+tt(expandword_completions))(
 If these keys are set, they are used by the tt(_expand_word) bindable
 command to override the values for the configuration keys with the
 tt(expand_) prefix.