# # Completion enhancements # # # initialization # # if it's a dumb terminal, return. if [[ ${TERM} == 'dumb' ]]; then return 1 fi # add the completions to the fpath fpath=(${0:h}/external/src ${fpath}) # load and initialize the completion system autoload -Uz compinit && compinit -C -d "${ZDOTDIR:-${HOME}}/${zcompdump_file:-.zcompdump}" # # zsh options # # If a completion is performed with the cursor within a word, and a full # completion is inserted, the cursor is moved to the end of the word. setopt ALWAYS_TO_END # Perform a path search even on command names with slashes in them. setopt PATH_DIRS # Make globbing (filename generation) not sensitive to case. setopt NO_CASE_GLOB # Don't beep on an ambiguous completion. setopt NO_LIST_BEEP # # completion module options # # group matches and describe. zstyle ':completion:*:*:*:*:*' menu select zstyle ':completion:*:matches' group yes zstyle ':completion:*:options' description yes zstyle ':completion:*:options' auto-description '%d' zstyle ':completion:*:corrections' format '%F{green}-- %d (errors: %e) --%f' zstyle ':completion:*:descriptions' format '%F{yellow}-- %d --%f' zstyle ':completion:*:messages' format '%F{purple}-- %d --%f' zstyle ':completion:*:warnings' format '%F{red}-- no matches found --%f' zstyle ':completion:*' format '%F{yellow}-- %d --%f' zstyle ':completion:*' group-name '' zstyle ':completion:*' verbose yes zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' '+r:|?=**' # directories if (( ! ${+LS_COLORS} )); then # Locally use same LS_COLORS definition from utility module, in case it was not set local LS_COLORS='di=1;34:ln=35:so=32:pi=33:ex=31:bd=1;36:cd=1;33:su=30;41:sg=30;46:tw=30;42:ow=30;43' fi zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories zstyle ':completion:*:*:cd:*:directory-stack' menu yes select zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'expand' zstyle ':completion:*' squeeze-slashes true # enable caching zstyle ':completion::complete:*' use-cache on zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-${HOME}}/.zcompcache" # ignore useless commands and functions zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec)|prompt_*)' # completion sorting zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters # Man zstyle ':completion:*:manuals' separate-sections true zstyle ':completion:*:manuals.(^1*)' insert-sections true # history zstyle ':completion:*:history-words' stop yes zstyle ':completion:*:history-words' remove-all-dups yes zstyle ':completion:*:history-words' list false zstyle ':completion:*:history-words' menu yes # ignore multiple entries. zstyle ':completion:*:(rm|kill|diff):*' ignore-line other zstyle ':completion:*:rm:*' file-patterns '*:all-files' # If the _my_hosts function is defined, it will be called to add the ssh hosts # completion, otherwise _ssh_hosts will fall through and read the ~/.ssh/config zstyle -e ':completion:*:*:ssh:*:my-accounts' users-hosts \ '[[ -f ${HOME}/.ssh/config && ${key} == hosts ]] && key=my_hosts reply=()'