]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
zsh/rc: force reload of the completions if nothing matched
authorSimon Ruderich <simon@ruderich.org>
Sun, 16 Mar 2014 17:39:17 +0000 (18:39 +0100)
committerSimon Ruderich <simon@ruderich.org>
Sun, 16 Mar 2014 17:39:17 +0000 (18:39 +0100)
zsh/rc

diff --git a/zsh/rc b/zsh/rc
index 7c5ab05db5cd114da6d20fedfec07a7456026af6..afc78b0039ffb68ad45c17b5a12b453d50296d0b 100644 (file)
--- a/zsh/rc
+++ b/zsh/rc
@@ -665,8 +665,21 @@ setopt nolistambiguous
 # the _prefix completer.
 setopt completeinword
 
+# Force a reload of the completion system if nothing matched; this fixes
+# installing a program and then trying to tab-complete its name. Thanks to
+# Alex Munroe [1] for the code, read on 2014-03-03.
+#
+# [1]: https://github.com/eevee/rc/blob/master/.zshrc
+_force_rehash() {
+    if (( CURRENT == 1 )); then
+        rehash
+    fi
+    # We didn't really complete anything.
+    return 1
+}
+
 zstyle ':completion:::::' completer \
-    _expand _complete _prefix _ignored _approximate
+    _force_rehash _expand _complete _prefix _ignored _approximate
 
 # Match specification to be tried when completing items. Each group ('...') is
 # tried after another if no matches were found, once matches are found no