From fc939158762aade4f09556d8fd4e1c88171d72aa Mon Sep 17 00:00:00 2001 From: Andrew Tomaka Date: Thu, 24 Mar 2016 15:00:18 -0400 Subject: [PATCH] Straight up steal oh-my-zsh autocompletion --- zsh/completion | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++ zsh/prompt | 6 ----- zshrc | 2 ++ 3 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 zsh/completion diff --git a/zsh/completion b/zsh/completion new file mode 100644 index 0000000..f5b2924 --- /dev/null +++ b/zsh/completion @@ -0,0 +1,73 @@ +# fixme - the load process here seems a bit bizarre + +unsetopt menu_complete # do not autoselect the first completion entry +unsetopt flowcontrol +setopt auto_menu # show completion menu on succesive tab press +setopt complete_in_word +setopt always_to_end + +WORDCHARS='' + +zmodload -i zsh/complist + +## case-insensitive (all),partial-word and then substring completion +if [ "x$CASE_SENSITIVE" = "xtrue" ]; then + zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' + unset CASE_SENSITIVE +else + if [ "x$HYPHEN_INSENSITIVE" = "xtrue" ]; then + zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' + unset HYPHEN_INSENSITIVE + else + zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' + fi +fi + +zstyle ':completion:*' list-colors '' + +# should this be in keybindings? +bindkey -M menuselect '^o' accept-and-infer-next-history + +zstyle ':completion:*:*:*:*:*' menu select +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' +if [ "$OSTYPE[0,7]" = "solaris" ] +then + zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm" +else + zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w" +fi + +# disable named-directories autocompletion +zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories + +# Use caching so that commands like apt and dpkg complete are useable +zstyle ':completion::complete:*' use-cache 1 +zstyle ':completion::complete:*' cache-path $ZSH_CACHE_DIR + +# Don't complete uninteresting users +zstyle ':completion:*:*:*:users' ignored-patterns \ + adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \ + clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \ + gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \ + ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \ + named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \ + operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \ + rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \ + usbmux uucp vcsa wwwrun xfs '_*' + +# ... unless we really want to. +zstyle '*' single-ignored show + +if [[ $COMPLETION_WAITING_DOTS = true ]]; then + expand-or-complete-with-dots() { + # toggle line-wrapping off and back on again + [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti rmam + print -Pn "%{%F{red}......%f%}" + [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti smam + + zle expand-or-complete + zle redisplay + } + zle -N expand-or-complete-with-dots + bindkey "^I" expand-or-complete-with-dots +fi diff --git a/zsh/prompt b/zsh/prompt index d738c2a..9fc7f1d 100644 --- a/zsh/prompt +++ b/zsh/prompt @@ -24,12 +24,6 @@ precmd() { } local vcs='${vcs_info_msg_0_}' -# autocorrect -autoload -U compinit -compinit -setopt correct_all -zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' - # prompt local return_code="%(?..%?)" local prompt="%(?.%F{green}->.%F{red}-%B${return_code}%b%F{red}->%{%})%f" diff --git a/zshrc b/zshrc index 384f66a..e89e8f6 100644 --- a/zshrc +++ b/zshrc @@ -16,7 +16,9 @@ stty stop undef # Aliases/Functions files source $HOME/.aliases source $HOME/.functions + source $HOME/.zsh/prompt +source $HOME/.zsh/completion if [[ "$OSTYPE" == darwin* ]]; then source $HOME/.aliases-mac