zsh-workers
 help / color / mirror / code / Atom feed
e0dc8b805c60eed667ed2723d4dc9c7e939f1ed6 blob 4092 bytes (raw)

  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
 
# This is a function to dump the definitions for new-style
# completion defined by 'compinit' in the same directory.  The output
# should be directed into the "compinit.dump" in the same directory as
# compinit. If you rename init, just stick .dump onto the end of whatever
# you have called it and put it in the same directory.  This is handled
# automatically if you invoke compinit with the option -d.
#
# You will need to update the dump every time you add a new completion.
# To do this, simply remove the .dump file, start a new shell, and
# create the .dump file as before.  Again, compinit -d handles this
# automatically.

# Print the number of files used for completion. This is used in compinit
# to see if auto-dump should re-dump the dump-file.

emulate -L zsh
setopt extendedglob noshglob

typeset _d_file _d_f _d_bks _d_line _d_als _d_files _d_name _d_tmp

_d_file=${_comp_dumpfile-${0:h}/compinit.dump}.$HOST.$$
[[ $_d_file = //* ]] && _d_file=${_d_file[2,-1]}

[[ -w ${_d_file:h} ]] || return 1

_d_files=( ${^~fpath:/.}/^([^_]*|*~|*.zwc)(N) )

if [[ -n "$_comp_secure" ]]; then
  _d_wdirs=( ${^fpath}(Nf:g+w:,f:o+w:,^u0u${EUID}) )
  _d_wfiles=( ${^~fpath:/.}/^([^_]*|*~|*.zwc)(N^u0u${EUID}) )

  (( $#_d_wfiles )) && _d_files=( "${(@)_d_files:#(${(j:|:)_d_wfiles})}"  )
  (( $#_d_wdirs ))  && _d_files=( "${(@)_d_files:#(${(j:|:)_d_wdirs})/*}" )
fi

print "#files: $#_d_files\tversion: $ZSH_VERSION" > $_d_file

# Dump the arrays _comps, _services and _patcomps.  The quoting
# hieroglyphics ensure that a single quote inside a variable is itself
# correctly quoted.

print "\n_comps=(" >> $_d_file
for _d_f in ${(ok)_comps}; do
  print -r - "${(qq)_d_f}" "${(qq)_comps[$_d_f]}"
done >> $_d_file
print ")" >> $_d_file

print "\n_services=(" >> $_d_file
for _d_f in ${(ok)_services}; do
  print -r - "${(qq)_d_f}" "${(qq)_services[$_d_f]}"
done >> $_d_file
print ")" >> $_d_file

print "\n_patcomps=(" >> $_d_file
for _d_f in ${(ok)_patcomps}; do
  print -r - "${(qq)_d_f}" "${(qq)_patcomps[$_d_f]}"
done >> $_d_file
print ")" >> $_d_file

_d_tmp="_postpatcomps"
print "\n_postpatcomps=(" >> $_d_file
for _d_f in ${(ok)_postpatcomps}; do
  print -r - "${(qq)_d_f}" "${(qq)_postpatcomps[$_d_f]}"
done >> $_d_file
print ")" >> $_d_file

print "\n_compautos=(" >> $_d_file
for _d_f in "${(ok@)_compautos}"; do
  print -r - "${(qq)_d_f}" "${(qq)_compautos[$_d_f]}"
done >> $_d_file
print ")" >> $_d_file

print >> $_d_file

# Now dump the key bindings. We dump all bindings for zle widgets
# whose names start with a underscore.
# We need both the zle -C's and the bindkey's to recreate.
# We can ignore any zle -C which rebinds a standard widget (second
# argument to zle does not begin with a `_').

_d_bks=()
typeset _d_complist=
zle -lL |
  while read -rA _d_line; do
    if [[ ${_d_line[3]} = _* && ${_d_line[5]} = _* ]]; then
      if [[ -z "$_d_complist" && ${_d_line[4]} = .menu-select ]]; then
        print 'zmodload -i zsh/complist'
	_d_complist=yes
      fi
      print -r - ${_d_line}
      _d_bks+=(${_d_line[3]})
    fi
  done >> $_d_file
bindkey |
  while read -rA _d_line; do
    if [[ ${_d_line[2]} = (${(j.|.)~_d_bks}) ]]; then
      print -r "bindkey '${_d_line[1][2,-2]}' ${_d_line[2]}"
    fi
  done >> $_d_file

print >> $_d_file


# Autoloads: look for all defined functions beginning with `_' (that also
# exists in fpath: see workers/38547).

_d_als=($^fpath/(${(o~j.|.)$(typeset +fm '_*')})(N:t))

# print them out:  about five to a line looks neat

integer _i=5
print -n autoload -Uz >> $_d_file
while (( $#_d_als )); do
  if (( ! $+_compautos[$_d_als[1]] )); then
    print -n " $_d_als[1]"
    if (( ! --_i && $#_d_als > 1 )); then
      _i=5
      print -n ' \\\n           '
    fi
  fi
  shift _d_als
done >> $_d_file

print >> $_d_file

local _c
for _c in "${(ok@)_compautos}"; do
  print "autoload -Uz $_compautos[$_c] $_c" >> $_d_file
done

print >> $_d_file

print "typeset -gUa _comp_assocs" >> $_d_file
print "_comp_assocs=( ${(qq)_comp_assocs} )" >> $_d_file

mv -f $_d_file ${_d_file%.$HOST.$$}

unfunction compdump
autoload -Uz compdump
debug log:

solving e0dc8b805 ...
found e0dc8b805 in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this inbox:

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).