Browse Source

node: Optimize completions for loading lazily on demand

Move `grunt` and `gulp` to separate completion definitions wrapping
`grunt --completion=zsh` and `gulp --completion=zsh` respectively.

Since the completions are loaded lazily on demand, they avoid the
performance overhead during Zsh initialization.

Additionally, remove `npm` completion since it is already bundled with
Zsh for quite a while.
master
Indrajit Raychaudhuri 4 years ago committed by Indrajit Raychaudhuri
parent
commit
4ea51d1aa2
  1. 3
      modules/node/README.md
  2. 15
      modules/node/functions/_grunt
  3. 15
      modules/node/functions/_gulp
  4. 28
      modules/node/init.zsh

3
modules/node/README.md

@ -3,6 +3,9 @@
Provides utility functions for [Node.js][1], loads the Node Version Manager, and Provides utility functions for [Node.js][1], loads the Node Version Manager, and
enables [_npm_][2] completion. enables [_npm_][2] completion.
This module must be loaded _before_ the _`completion`_ module so that the
provided completion definitions are loaded.
## nodenv ## nodenv
[_nodenv_][5] does one thing well - it is concerned solely with switching [_nodenv_][5] does one thing well - it is concerned solely with switching

15
modules/node/functions/_grunt

@ -0,0 +1,15 @@
#compdef grunt
#autoload
#
# Grunt completion, delegating to grunt to do all the completion work.
#
# Authors:
# Indrajit Raychaudhuri <irc@indrajit.com>
#
if (( $+commands[grunt] )); then
eval "$(grunt --completion=zsh)"
_grunt_completion "$@"
fi

15
modules/node/functions/_gulp

@ -0,0 +1,15 @@
#compdef gulp
#autoload
#
# Gulp completion, delegating to gulp to do all the completion work.
#
# Authors:
# Indrajit Raychaudhuri <irc@indrajit.com>
#
if (( $+commands[gulp] )); then
eval "$(gulp --completion=zsh)"
_gulp_completion "$@"
fi

28
modules/node/init.zsh

@ -5,6 +5,7 @@
# Authors: # Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# Zeh Rizzatti <zehrizzatti@gmail.com> # Zeh Rizzatti <zehrizzatti@gmail.com>
# Indrajit Raychaudhuri <irc@indrajit.com>
# #
# Possible lookup locations. # Possible lookup locations.
@ -36,30 +37,3 @@ elif (( $+commands[brew] )) \
elif (( ! $+commands[node] )); then elif (( ! $+commands[node] )); then
return 1 return 1
fi fi
# Load NPM and known helper completions.
typeset -A _compl_commands=(
npm 'npm completion'
grunt 'grunt --completion=zsh'
gulp 'gulp --completion=zsh'
)
for _compl_command in "${(k)_compl_commands[@]}"; do
if (( $+commands[$_compl_command] )); then
cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/${_compl_command}-cache.zsh"
# Completion commands are slow; cache their output if old or missing.
if [[ "$commands[$_compl_command]" -nt "$cache_file" \
|| "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \
|| ! -s "$cache_file" ]]; then
mkdir -p "$cache_file:h"
command ${=_compl_commands[$_compl_command]} >! "$cache_file" 2> /dev/null
fi
source "$cache_file"
unset cache_file
fi
done
unset _compl_command{s,}

Loading…
Cancel
Save