about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Completion/Base/Utility/_as_if10
-rw-r--r--Doc/Zsh/compsys.yo8
3 files changed, 22 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index a0e742244..bdb60cf33 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,10 @@
 	* 53144: Completion/Unix/Command/_sysctl:
 	support completion with the dot delimiter on linux
 
+	* Matthew Martin: 53174 + comments:
+	Completion/Base/Utility/_as_if: complete `as if'
+	a different command were being completed
+
 2024-11-05  Bart Schaefer  <schaefer@toltec-ubuntu>
 
 	* 53209 + comments + test: Src/params.c, Test/D04parameter.ztst:
diff --git a/Completion/Base/Utility/_as_if b/Completion/Base/Utility/_as_if
new file mode 100644
index 000000000..c961aaa88
--- /dev/null
+++ b/Completion/Base/Utility/_as_if
@@ -0,0 +1,10 @@
+#autoload
+local words=("$words[@]") CURRENT=$CURRENT
+local _comp_command1 _comp_command2 _comp_command
+
+words[1]=("$@")
+(( CURRENT += $# - 1 ))
+
+_set_command
+
+_dispatch "$_comp_command" "$_comp_command1" "$_comp_command2" -default-
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 77627bacc..9b7f91148 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -4290,6 +4290,14 @@ arguments.  The first describes the first argument as a
 be completed.  The last description gives all other arguments the
 description `var(page number)' but does not offer completions.
 )
+findex(_as_if)
+item(tt(_as_if) var(command) [var(arg) ... ])(
+This function is useful when one command should be completed as if it were
+another command with particular arguments. For example to complete tt(foo) as
+if it were tt(bar --baz), use
+
+example(compdef '_as_if bar --baz' foo)
+)
 findex(_cache_invalid)
 item(tt(_cache_invalid) var(cache_identifier))(
 This function returns status zero if the completions cache corresponding to