diff --git a/brethil_dotfile.sh b/brethil_dotfile.sh index e3fd801..54648d7 100755 --- a/brethil_dotfile.sh +++ b/brethil_dotfile.sh @@ -12,6 +12,9 @@ export ZSH_THEME="brethil" export DISABLE_UNTRACKED_FILES_DIRTY=true export VIRTUAL_ENV_DISABLE_PROMPT=true +# Setup completion style +source $DOTFILES/completion_style.zsh + # Source all zsh plugins source <(antibody init) diff --git a/completion_style.zsh b/completion_style.zsh new file mode 100644 index 0000000..72b1fd4 --- /dev/null +++ b/completion_style.zsh @@ -0,0 +1,83 @@ +# stolen from https://github.com/Phantas0s/.dotfiles/blob/master/zsh/completion.zsh + + +## General +# zstyle pattern for the completion +# :completion::::: + +# Should be called before compinit +zmodload zsh/complist + +# Use hjlk in menu selection (during completion) +# Doesn't work well with interactive mode +bindkey -M menuselect 'h' vi-backward-char +bindkey -M menuselect 'k' vi-up-line-or-history +bindkey -M menuselect 'j' vi-down-line-or-history +bindkey -M menuselect 'l' vi-forward-char + +bindkey -M menuselect '^xg' clear-screen +bindkey -M menuselect '^xi' vi-insert # Insert +bindkey -M menuselect '^xh' accept-and-hold # Hold +bindkey -M menuselect '^xn' accept-and-infer-next-history # Next +bindkey -M menuselect '^xu' undo # Undo + +#setopt GLOB_COMPLETE # Show autocompletion menu with globs +#setopt MENU_COMPLETE # Automatically highlight first element of completion menu +setopt AUTO_LIST # Automatically list choices on ambiguous completion. + +## Zstyles +# Ztyle pattern +# :completion::::: + +# Define completers +zstyle ':completion:*' completer _extensions _complete _approximate + +# Use cache for commands using cache +zstyle ':completion:*' use-cache on +zstyle ':completion:*' cache-path "$HOME/.cache/zsh/.zcompcache" +# Complete the alias when _expand_alias is used as a function +zstyle ':completion:*' complete true + +zle -C alias-expension complete-word _generic +bindkey '^A' alias-expension +zstyle ':completion:alias-expension:*' completer _expand_alias + +# Allow you to select in a menu +zstyle ':completion:*' menu select + +# Autocomplete options for cd instead of directory stack +zstyle ':completion:*' complete-options true + +zstyle ':completion:*' file-sort modification + + +zstyle ':completion:*:*:*:*:corrections' format '%F{yellow}!- %d (errors: %e) -!%f' +zstyle ':completion:*:*:*:*:descriptions' format '%F{blue}-- %D %d --%f' +zstyle ':completion:*:*:*:*:messages' format ' %F{purple} -- %d --%f' +zstyle ':completion:*:*:*:*:warnings' format ' %F{red}-- no matches found --%f' +# zstyle ':completion:*:default' list-prompt '%S%M matches%s' +# Colors for files and directory +zstyle ':completion:*:*:*:*:default' list-colors ${(s.:.)LS_COLORS} + +# Only display some tags for the command cd +zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories +# zstyle ':completion:*:complete:git:argument-1:' tag-order !aliases + +# Required for completion to be in good groups (named after the tags) +zstyle ':completion:*' group-name '' + +zstyle ':completion:*:*:-command-:*:*' group-order aliases builtins functions commands + +# See ZSHCOMPWID "completion matching control" +zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' + +zstyle ':completion:*' keep-prefix true + +zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })' + +# kubectl +zstyle ':completion:*:*:kubectl:*' list-grouped false + +# docker +zstyle ':completion:*:*:docker:*' option-stacking yes +zstyle ':completion:*:*:docker-*:*' option-stacking yes