summaryrefslogtreecommitdiff
path: root/.zsh/zshrc/20_compsys
blob: 0bfdebd5518ef9cb459918f2ef361122c58c2fd6 (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
# zshrc/20_compsys
#
# configure the completions system
#
# 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'

# 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

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

# initialise the completion system
autoload -U compinit
compinit -d $ZVARDIR/comp-$HOST

# 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:*' list-colors ${(s.:.)LS_COLORS}

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

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=()'

# 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"'

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

zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'no matches for: %d'
zstyle ':completion:*' group-name ''

# #527301
zstyle :completion::complete:xmms2:\*:values list-grouped false
zstyle :completion::complete:xmms2:\*:values sort false

# vim:ft=zsh