completion.zsh (2793B)
1 # fixme - the load process here seems a bit bizarre 2 zmodload -i zsh/complist 3 4 WORDCHARS='' 5 6 unsetopt menu_complete # do not autoselect the first completion entry 7 unsetopt flowcontrol 8 setopt auto_menu # show completion menu on successive tab press 9 setopt complete_in_word 10 setopt always_to_end 11 12 # should this be in keybindings? 13 bindkey -M menuselect '^o' accept-and-infer-next-history 14 zstyle ':completion:*:*:*:*:*' menu select 15 16 # case insensitive (all), partial-word and substring completion 17 if [[ "$CASE_SENSITIVE" = true ]]; then 18 zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*' 19 else 20 if [[ "$HYPHEN_INSENSITIVE" = true ]]; then 21 zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*' 22 else 23 zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*' 24 fi 25 fi 26 unset CASE_SENSITIVE HYPHEN_INSENSITIVE 27 28 # Complete . and .. special directories 29 zstyle ':completion:*' special-dirs true 30 31 zstyle ':completion:*' list-colors '' 32 zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' 33 34 if [[ "$OSTYPE" = solaris* ]]; then 35 zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm" 36 else 37 zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w" 38 fi 39 40 # disable named-directories autocompletion 41 zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories 42 43 # Use caching so that commands like apt and dpkg complete are useable 44 zstyle ':completion::complete:*' use-cache 1 45 zstyle ':completion::complete:*' cache-path $ZSH_CACHE_DIR 46 47 # Don't complete uninteresting users 48 zstyle ':completion:*:*:*:users' ignored-patterns \ 49 adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \ 50 clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \ 51 gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \ 52 ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \ 53 named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \ 54 operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \ 55 rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \ 56 usbmux uucp vcsa wwwrun xfs '_*' 57 58 # ... unless we really want to. 59 zstyle '*' single-ignored show 60 61 if [[ $COMPLETION_WAITING_DOTS = true ]]; then 62 expand-or-complete-with-dots() { 63 # toggle line-wrapping off and back on again 64 [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti rmam 65 print -Pn "%{%F{red}......%f%}" 66 [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti smam 67 68 zle expand-or-complete 69 zle redisplay 70 } 71 zle -N expand-or-complete-with-dots 72 bindkey "^I" expand-or-complete-with-dots 73 fi