mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-12-29 16:25:35 +01:00
Merge new completion 4.2 branch, 22235 by Eric Mangold.
This commit is contained in:
parent
03c0b99a40
commit
c57e1a7316
1 changed files with 86 additions and 0 deletions
86
Completion/Unix/Command/_twisted
Normal file
86
Completion/Unix/Command/_twisted
Normal file
|
@ -0,0 +1,86 @@
|
|||
#compdef trial conch mktap cftp tapconvert twistd ckeygen lore pyhtmlizer websetroot tap2deb tkmktap tkconch manhole tap2rpm
|
||||
|
||||
# Copyright (c) 2005 Eric Mangold
|
||||
# Maintainer: Eric Mangold <teratorn@twistedmatrix.com>
|
||||
|
||||
# This file is meant to be in your zsh function path. i.e. in one of those
|
||||
# directories listed in your $fpath variable.
|
||||
#
|
||||
# e.g. /usr/local/share/zsh/site-functions/
|
||||
#
|
||||
# It is responsible for passing completion control to the correct
|
||||
# completion function for the version of Twisted that is
|
||||
# currently in use.
|
||||
#
|
||||
# Goals:
|
||||
#
|
||||
# We want to detect any changes to PYTHONPATH since the last time we ran.
|
||||
# That way we can re-locate the completion functions so that we are sure
|
||||
# to be completing for the right version of Twisted.
|
||||
|
||||
local dir old_fpath python_code run shebang
|
||||
|
||||
function debug () {
|
||||
echo $@ >> /tmp/twisted_stub_debug
|
||||
}
|
||||
|
||||
#debug "START _twisted_stub"
|
||||
|
||||
function load_twisted_completions() {
|
||||
[[ -z $commands[twistd] ]] && echo 'ERROR: test command "twistd" not found in path' && return 1
|
||||
shebang=$(head -1 $commands[twistd])
|
||||
[[ $shebang != \#\!* ]] && echo 'ERROR: invalid shebang line for test script "twistd"' && return 1
|
||||
PYTHON=$shebang[3,-1] # strip #! off the shebang
|
||||
PYTHON=${PYTHON# *} # remove any spaces between #! and command
|
||||
|
||||
#debug PYTHON $PYTHON:q
|
||||
python_code='
|
||||
import twisted, os.path
|
||||
dir = os.path.dirname(twisted.__file__)
|
||||
print os.path.join(dir, "python", "zsh")
|
||||
'
|
||||
dir=$(${=PYTHON} -c "$python_code")
|
||||
#debug "Trying to load twisted functions from $dir:q"
|
||||
if [[ -r $dir/_twistd ]]; then
|
||||
old_fpath=($fpath)
|
||||
fpath=( $dir $fpath )
|
||||
autoload +X _trial _conch _mktap _cftp _tapconvert _twistd _ckeygen
|
||||
autoload +X _lore _pyhtmlizer _websetroot _tap2deb _tkmktap _tkconch
|
||||
autoload +X _manhole _tap2rpm
|
||||
fpath=($old_fpath)
|
||||
else
|
||||
echo 'ERROR: Cannot find twisted completion function files in $dir:q'
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function twisted_run () {
|
||||
# run completion function for current command
|
||||
# the :t modifier strips off any leading pathname components
|
||||
eval _$words[1]:t
|
||||
}
|
||||
|
||||
function twisted_save_load_run () {
|
||||
# save PYTHONPATH, load twisted completions, and run the completion
|
||||
# function for the current command
|
||||
load_twisted_completions && twisted_run && PYTHONPATH_last=$PYTHONPATH
|
||||
}
|
||||
|
||||
|
||||
if [[ -n $PYTHONPATH_last ]]; then
|
||||
#debug "PYTHONPATH_last is set to $PYTHONPATH_last"
|
||||
#check if it's the same as the last time we ran
|
||||
if [[ $PYTHONPATH == $PYTHONPATH_last ]]; then
|
||||
#debug "PYTHONPATH == PYTHONPATH_last"
|
||||
# it's the same, which means we've already loaded completion
|
||||
# functions and nothing has changed.
|
||||
twisted_run
|
||||
else
|
||||
twisted_save_load_run
|
||||
fi
|
||||
else
|
||||
twisted_save_load_run
|
||||
fi
|
||||
|
||||
#debug "END _twisted_stub"
|
||||
#
|
Loading…
Reference in a new issue