zsh-workers
 help / color / mirror / code / Atom feed
6daf92f9ffc6832e1e78f529cb0e5d1a9ba68f90 blob 4083 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
140
141
 
# 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_fd _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

exec {_d_fd}>$_d_file
print "#files: $#_d_files\tversion: $ZSH_VERSION" >& $_d_fd

# 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_fd
for _d_f in ${(ok)_comps}; do
  print -r - "${(qq)_d_f}" "${(qq)_comps[$_d_f]}"
done >& $_d_fd
print ")" >& $_d_fd

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

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

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

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

print >& $_d_fd

# 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_fd
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_fd

print >& $_d_fd


# 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_fd
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_fd

print >& $_d_fd

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

print >& $_d_fd

print "typeset -gUa _comp_assocs" >& $_d_fd
print "_comp_assocs=( ${(qq)_comp_assocs} )" >& $_d_fd
exec {_d_fd}>&-

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

unfunction compdump
autoload -Uz compdump
debug log:

solving 6daf92f9f ...
found 6daf92f9f 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).