forked from marlonrichert/zsh-autocomplete
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.autocomplete.config
134 lines (115 loc) 路 5.35 KB
/
.autocomplete.config
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
#!/bin/zsh
zmodload -Fa zsh/zutil b:zstyle
typeset -g ZLE_REMOVE_SUFFIX_CHARS=$' /;\n\r\t'
typeset -g ZLE_SPACE_SUFFIX_CHARS=$'|&<>-+'
.autocomplete.config.precmd() {
typeset -g _comp_setup="$_comp_setup"';
[[ $_comp_caller_options[globdots] == yes ]] && setopt globdots'
# Remove incompatible settings.
local -P key= setting=
for key in menu list-prompt; do
for setting in ${(f)"$( zstyle -L '*' $key )"}; do
eval "${setting/zstyle(| -e)/zstyle -d}"
done
done
builtin zstyle ':completion:*:*:*:*:default' menu no no-select
unset LISTPROMPT
}
builtin zstyle ':completion:*' use-cache yes
builtin zstyle -e ':completion:*' cache-path _autocomplete.config.cache-path
_autocomplete.config.cache-path() {
reply=( "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/compcache" )
}
builtin zstyle -e ':completion:*' completer _autocomplete.config.completer
_autocomplete.config.completer() {
if [[ $CURRENT -eq 1 && -z $PREFIX$SUFFIX && $compstate[context] == command ]]; then
reply=( _complete )
else
reply=( _complete _prefix _ignored _correct _approximate )
fi
}
builtin zstyle ':completion:*:expand:*' tag-order '! original' -
builtin zstyle -e ':completion:*:-command-:*' tag-order _autocomplete.config.tag-order.command
_autocomplete.config.tag-order.command() {
if [[ $PREFIX == (|.|*/*) ]]; then
reply=( 'suffix-aliases (|*-)directories executables (|*-)files' - )
else
reply=( aliases suffix-aliases functions 'reserved-words builtins' )
if [[ -n $path[(r).] ]]; then
reply+=( '(|*-)directories executables (|*-)files' commands )
else
reply+=( commands '(|*-)directories executables (|*-)files' )
fi
fi
}
builtin zstyle ':completion:*:-tilde-:*' tag-order directory-stack named-directories
builtin zstyle ':completion:*:(approximate|correct):*' tag-order '! original' -
builtin zstyle ':completion:*:git-*:(|*-)argument-*:*' tag-order \
'! (|cached-)files *-remote remote-* (|*-)tags' \
'! *-remote remote-* tags'
# Order of matchers matters: m should come before r, which should come before l.
# Otherwise, the results are not as expected.
builtin zstyle ':completion:*' matcher-list \
'm:{[:lower:]-}={[:upper:]_} r:|[.]=**' \
'+l:|=*' \
'm:{[:lower:]-}={[:upper:]_} r:|[.]=** l:?|=[-_\\ ] r:?||[-_]=*' \
'm:{[:lower:]-}={[:upper:]_} r:|?=**'
builtin zstyle ':completion:*:options' matcher 'b:-=+'
builtin zstyle ':completion:*' prefix-needed yes
builtin zstyle ':completion:*:-command-:*' ignore-line current
builtin zstyle ':completion:*:functions' ignored-patterns '*.*' '*:*' '+*'
builtin zstyle ':completion:*:users' ignored-patterns '_*'
builtin zstyle ':completion:*:widgets' ignored-patterns '*.*' '*:*'
builtin zstyle ':completion:*' single-ignored ''
builtin zstyle ':completion:*:expand:*' accept-exact continue
builtin zstyle -e ':completion:*:expand:*' glob _autocomplete.is_glob
builtin zstyle ':completion:*:expand:*' keep-prefix no # Needed for file type highlighting
builtin zstyle ':completion:*:expand:*' add-space subst
builtin zstyle -e ':completion:*:expand:*' substitute _autocomplete.config.expand.substitute
_autocomplete.config.expand.substitute() {
local -P __word__=$PREFIX$SUFFIX
if [[ ${(Q)__word__} == *(\`*\`|\$\(*\))* ]]; then
reply=( false )
else
reply=( true )
fi
}
builtin zstyle ':completion:*:expand-alias:*' complete yes
# Complete only the tail of a path.
builtin zstyle ':completion:*' ignore-parents 'parent pwd directory'
builtin zstyle ':completion:*:paths' expand suffix
builtin zstyle ':completion:*:paths' list-suffixes yes
builtin zstyle ':completion:*:paths' path-completion no
builtin zstyle ':completion:*:paths' special-dirs no
builtin zstyle ':completion:*' group-name ''
builtin zstyle ':completion:*' group-order \
all-expansions expansions options \
aliases suffix-aliases functions reserved-words builtins commands \
local-directories directories executables
builtin zstyle ':completion:*' complete-options yes
builtin zstyle ':completion:*' file-patterns \
'*(-/):directories:directory %p(#q^-/):globbed-files'
builtin zstyle -e ':completion:*:-command-:*' file-patterns \
_autocomplete.config.file-patterns.command
_autocomplete.config.file-patterns.command() {
[[ $PREFIX$SUFFIX != */* ]] &&
reply=( '*(-/):directories:directory ./*(-*^/):executables:"executable file"' )
}
builtin zstyle ':completion:*:(.|source):*' file-patterns \
'%p(#q-/):directories:directory %p~*.zwc(-.^*):globbed-files' '%p~*.zwc(-^/):globbed-files'
builtin zstyle ':completion:*:descriptions' format $'%{\e[0;1;2m%}%d%{\e[0m%}'
builtin zstyle -e ':completion:*:warnings' format _autocomplete.config.format
_autocomplete.config.format() {
[[ $CURRENT == 1 && -z $PREFIX$SUFFIX ]] ||
reply=( $'%{\e[0;2m%}'"no matching %d completions"$'%{\e[0m%}' )
}
builtin zstyle ':completion:*:messages' format '%F{9}%d%f'
builtin zstyle ':completion:*:history-lines' format ''
builtin zstyle ':completion:*' auto-description '%d'
builtin zstyle ':completion:*:parameters' extra-verbose yes
builtin zstyle ':completion:*:default' select-prompt '%F{black}%K{12}line %l %p%f%k'
builtin zstyle ':completion:*' insert-sections yes
builtin zstyle ':completion:*' separate-sections yes
# Needed for _gnu_generic to prevent descriptions from getting cropped.
is-at-least 5.9 ||
builtin zstyle ':completion:*' command '- COLUMNS=999'