about summary refs log tree commit diff
path: root/Completion/Base
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2009-03-16 18:29:38 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2009-03-16 18:29:38 +0000
commitb0fde52d53c039af943336268e9e2b2d485fac0f (patch)
treeff8b9affa5a9347bc63e55c41a168533f96369e9 /Completion/Base
parent14e7096982b27fddd3c098dc09444b44bbed9cef (diff)
downloadzsh-b0fde52d53c039af943336268e9e2b2d485fac0f.tar.gz
zsh-b0fde52d53c039af943336268e9e2b2d485fac0f.tar.xz
zsh-b0fde52d53c039af943336268e9e2b2d485fac0f.zip
26744: completion of history modifiers in normal command line arguments
Diffstat (limited to 'Completion/Base')
-rw-r--r--Completion/Base/Core/_normal13
1 files changed, 13 insertions, 0 deletions
diff --git a/Completion/Base/Core/_normal b/Completion/Base/Core/_normal
index 36ecb225d..6bdb8f09b 100644
--- a/Completion/Base/Core/_normal
+++ b/Completion/Base/Core/_normal
@@ -9,6 +9,19 @@ else
   _compskip=''
 fi
 
+# Check for a history reference to complete modifiers.
+# $PREFIX has a quoted form of the !, so we can't test that
+# (it might the start of a real argument), but words has the
+# raw McCoy.
+if [[ -o BANG_HIST && $words[CURRENT] = \!*: && -z $compstate[quote] ]]; then
+  # This looks like a real history expansion; in that case
+  # we'd better put the !'s back the way pfalstad intended.
+  PREFIX=${PREFIX//\\!/!}
+  compset -P '*:'
+  _history_modifiers h
+  return
+fi
+
 # Completing in command position?
 
 if [[ CURRENT -eq 1 ]]; then