]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - zsh/rc
zsh/rc: force reload of the completions if nothing matched
[config/dotfiles.git] / zsh / rc
diff --git a/zsh/rc b/zsh/rc
index 201e17c13a5ed103ffdb67e65c9e9b03e53430ea..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
@@ -727,6 +740,14 @@ zle_highlight=(suffix:none)
 
 # Ignore completion functions.
 zstyle ':completion:*:functions' ignored-patterns '_*'
+
+# When offering typo corrections, do not propose anything which starts with an
+# underscore (such as many of Zsh's shell functions). Thanks to paradigm [1]
+# for the idea (read on 2013-04-07).
+#
+# [1]: https://github.com/paradigm/dotfiles/blob/master/.zshrc
+CORRECT_IGNORE='_*'
+
 # Ignore parent directory.
 zstyle ':completion:*:(cd|mv|cp):*' ignore-parents parent pwd
 # Always complete file names only once in the current line. This makes it easy