summaryrefslogtreecommitdiff
path: root/dot-oh-my-zsh/custom/plugins/zsh-autocomplete/scripts/.autocomplete.config
blob: a79a9c92235ad613adeee51c71f69d67823e61d7 (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
#!/bin/zsh
zmodload -Fa zsh/zutil b:zstyle
builtin autoload -RUz is-at-least
typeset -g ZLE_REMOVE_SUFFIX_CHARS=$' /;\n\r\t'
typeset -g ZLE_SPACE_SUFFIX_CHARS=$'|&<>-+'

.autocomplete.config.precmd() {
  typeset -gH _comp_setup="$_comp_setup"';
      [[ $_comp_caller_options[globdots] == yes ]] && setopt globdots'

  # Remove incompatible settings.
  builtin zstyle -d ':completion:*:*:*:*:*' menu
  builtin zstyle -d ':completion:*:default' list-prompt
  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=( _expand _complete _approximate _complete:-loose _complete:-fuzzy _ignored )
  fi
}
builtin zstyle ':completion:list-expand:*' completer \
    _expand _complete:-fuzzy _ignored
builtin zstyle ':completion:history-incremental-*search-*:*' completer \
    _autocomplete.history_lines

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:list-expand:*:-command-:*' tag-order '*'
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'
builtin zstyle ':completion:list-expand:*:git-*:(|*-)argument-*:*' tag-order '*'

# 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:|=*'
builtin zstyle ':completion:*-loose:*'  matcher-list \
    'm:{[:lower:]-}={[:upper:]_} r:|[.]=** l:?|=[-_\\ ] r:?||[-_]=*'
builtin zstyle ':completion:*-fuzzy:*'  matcher-list \
    '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 '.*' '*:*' '*orig-*'
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 != */* ]] &&
      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;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{14}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.
# TODO: Might be fixed in a future version of zsh.
builtin zstyle ':completion:*' command '- COLUMNS=999'