dotfiles

My personal shell configs and stuff
git clone git://git.alex.balgavy.eu/dotfiles.git
Log | Files | Refs | Submodules | README | LICENSE

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