b42efeb87e
This commit uses the (hopefully) standard rmam and smam escape sequences which toggle off and on line wrapping respectively. This is so that extra dots that don't fit the current line won't be displayed in the next line, which would in turn make the shell display a new prompt on the next line after the dots are hidden. I've added a check for $terminfo rmam and smam values to be sure we have them before printing them out. If this commit breaks something post an issue with your terminal emulator and $TERM value and we'll figure out what went wrong.
74 lines
2.7 KiB
Bash
74 lines
2.7 KiB
Bash
# 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
|