summaryrefslogtreecommitdiff
path: root/.zsh/zshrc/20_compsys
blob: 102c31b801a510b9abf9f449ec0d26468b5df950 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# zshrc/20_compsys
#
# configure the completions system
#
# Parts taken from grml's zsh setup.
#
# Copyright © 2011 Tobias Klauser <tklauser@distanz.ch>
# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
# Released under the terms of the Artistic Licence 2.0
#
# Source repository: git://git.distanz.ch/dotfiles/zsh.git

zstyle :compinstall filename '$ZDOTDIR/zshrc/20_compsys'

### INIT

autoload -Uz compinit
compinit -d $ZVARDIR/comp-$HOST

# load fancy completion list and menu handler
zmodload zsh/complist

# avoid old-style completion (compctl)
zstyle ':completion:*' use-compctl false

### OPTIONS

# do not complete just at the end
setopt completeinword

# automatically list choices on an ambiguous completion
setopt auto_list

# use menu after the second completion request
setopt auto_menu

# recognise exact matches even if they're ambiguous
setopt rec_exact

# move cursor to end of word being completed
setopt always_to_end

# correct the command if mistyped
setopt correct

# correct all arguments, not just the command
#setopt correctall

# be magic about adding/removing final characters on tab completion
setopt auto_param_keys auto_param_slash auto_remove_slash

# cache results
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path $ZVARDIR/compcache

#zstyle ':completion:*' completer _list _expand _complete _ignored _match _correct _approximate _prefix
zstyle ':completion:*' completer _complete _ignored _match _correct _approximate

# allow cursor-key navigation through completion set
zstyle ':completion:*:*:*:*'            menu select

# use colours in completion lists and menus
zstyle ':completion:*:default'          list-colors ${(s.:.)LS_COLORS}

# activate menu
zstyle ':completion:*:history-words'    menu yes

# ignore duplicate entries
zstyle ':completion:*:history-words'    remove-all-dups yes
zstyle ':completion:*:history-words'    stop yes

# match uppercase from lowercase
zstyle ':completion:*'                  matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'

# ignore working and backup copies, and compiled objects
#zstyle ':completion:*:(all-|)files' ignored-patterns \
#  '*.bk' '*.bak' '*.old' '*~' '.*.sw?' '*.o' '*.pyc'

# allow one error for every three characters typed in approximate completer
zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3)) not-numeric )'
zstyle -e ':completion:*:correct:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/2)) numeric )'
#zstyle ':completion:*:correct:::' max-errors 1 not-numeric
#zstyle ':completion:*:approximate:::' max-errors 2 numeric

#zstyle ':completion:*' list-suffixes true
#zstyle ':completion:*' match-original both
#zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
#zstyle ':completion:*:match:*' original only
#zstyle ':completion:*' original true
#zstyle ':completion:*' squeeze-slashes true

# functions which start with _ are internal and ignored
zstyle ':completion:*:functions' ignored-patterns '_*'

# do not offer files already specified on the line
zstyle ':completion:*:rm:*' ignore-line yes

#zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
#zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}

# ignore current directory when completing in ../
#zstyle ':completion:*:cd:*' ignore-parents parent pwd
zstyle ':completion:*' ignore-parents parent pwd

# http://xana.scru.org/2005/08/20#ignorelatexjunk
zstyle -e ':completion:*:*:vim#:*:*' ignored-patterns \
  'texfiles=$(echo ${PREFIX}*.tex); [[ -n "$texfiles" ]] &&
  reply=(*.(aux|dvi|log|ps|pdf|bbl|toc|lot|lof|latexmain)) || reply=()'

zstyle ':completion:*:messages'        format '%d'
zstyle ':completion:*:options'         auto-description '%d'

# describe options in full
zstyle ':completion:*:options'         description 'yes'

# http://madism.org/~madcoder/dotfiles/zsh/40_completion
zstyle ':completion:*:processes' command 'ps -au$USER -o pid,time,cmd|grep -v "ps -au$USER -o pid,time,cmd"'

# offer indexes before parameters in subscripts
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters

# provide verbose completion information
zstyle ':completion:*'                 verbose true

# commands that take commands as arguments
compdef _precommand gdb
compdef _precommand nohup
compdef _precommand strace

zstyle ':completion:*'              verbose yes
zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}'
zstyle ':completion:*:messages'     format '%d'
zstyle ':completion:*:warnings'     format 'no matches for: %d'
zstyle ':completion:*'              group-name ''

# complete manual by their section
zstyle ':completion:*:manuals'      separate-sections true
zstyle ':completion:*:manuals.*'    insert-sections   true
zstyle ':completion:*:man:*'        menu yes select

# provide .. as a completion
zstyle ':completion:*' special-dirs true

# automatically load bash completion functions
autoload -Uz bashcompinit && bashcompinit

# vim:ft=zsh