Add proper pyenv support to fish
This commit is contained in:
16
config/fish/completions/pyenv.bash
Normal file
16
config/fish/completions/pyenv.bash
Normal file
@ -0,0 +1,16 @@
|
||||
_pyenv() {
|
||||
COMPREPLY=()
|
||||
local word="${COMP_WORDS[COMP_CWORD]}"
|
||||
|
||||
if [ "$COMP_CWORD" -eq 1 ]; then
|
||||
COMPREPLY=( $(compgen -W "$(pyenv commands)" -- "$word") )
|
||||
else
|
||||
local words=("${COMP_WORDS[@]}")
|
||||
unset words[0]
|
||||
unset words[$COMP_CWORD]
|
||||
local completions=$(pyenv completions "${words[@]}")
|
||||
COMPREPLY=( $(compgen -W "$completions" -- "$word") )
|
||||
fi
|
||||
}
|
||||
|
||||
complete -F _pyenv pyenv
|
||||
@ -1,24 +1,23 @@
|
||||
function __fish_pyenv_needs_command
|
||||
set cmd (commandline -opc)
|
||||
if test (count $cmd) -eq 1 -a "$cmd[1]" = "pyenv"
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
set cmd (commandline -opc)
|
||||
if [ (count $cmd) -eq 1 -a $cmd[1] = 'pyenv' ]
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
function __fish_pyenv_using_command
|
||||
set cmd (commandline -opc)
|
||||
if test (count $cmd) -gt 1
|
||||
if test "$argv[1]" = "$cmd[2]"
|
||||
return 0
|
||||
end
|
||||
set cmd (commandline -opc)
|
||||
if [ (count $cmd) -gt 1 ]
|
||||
if [ $argv[1] = $cmd[2] ]
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
if command -s pyenv > /dev/null
|
||||
complete -f -c pyenv -n '__fish_pyenv_needs_command' -a '(pyenv commands)'
|
||||
for cmd in (pyenv commands)
|
||||
complete -f -c pyenv -n "__fish_pyenv_using_command $cmd" -a "(pyenv completions $cmd)"
|
||||
end
|
||||
complete -f -c pyenv -n '__fish_pyenv_needs_command' -a '(pyenv commands)'
|
||||
for cmd in (pyenv commands)
|
||||
complete -f -c pyenv -n "__fish_pyenv_using_command $cmd" -a \
|
||||
"(pyenv completions (commandline -opc)[2..-1])"
|
||||
end
|
||||
|
||||
18
config/fish/completions/pyenv.zsh
Normal file
18
config/fish/completions/pyenv.zsh
Normal file
@ -0,0 +1,18 @@
|
||||
if [[ ! -o interactive ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
compctl -K _pyenv pyenv
|
||||
|
||||
_pyenv() {
|
||||
local words completions
|
||||
read -cA words
|
||||
|
||||
if [ "${#words}" -eq 2 ]; then
|
||||
completions="$(pyenv commands)"
|
||||
else
|
||||
completions="$(pyenv completions ${words[2,-2]})"
|
||||
fi
|
||||
|
||||
reply=(${(ps:\n:)completions})
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
if not command -s pyenv > /dev/null
|
||||
echo "Install <github.com/yyuu/pyenv> to use 'pyenv'."
|
||||
exit 1
|
||||
end
|
||||
|
||||
set -l pyenv_root ""
|
||||
|
||||
if test -z "$PYENV_ROOT"
|
||||
set pyenv_root ~/.pyenv
|
||||
set -x PYENV_ROOT "$pyenv_root"
|
||||
else
|
||||
set pyenv_root "$PYENV_ROOT"
|
||||
end
|
||||
|
||||
if status --is-login
|
||||
set -x PATH "$pyenv_root/shims" $PATH
|
||||
set -x PYENV_SHELL fish
|
||||
end
|
||||
command mkdir -p "$pyenv_root/"{shims,versions}
|
||||
@ -3,5 +3,4 @@ jethrokuan/fzf
|
||||
simnalamburt/shellder
|
||||
fishgretel/fasd
|
||||
oh-my-fish/theme-bobthefish
|
||||
pyenv
|
||||
daenney/pyenv
|
||||
yyuu/pyenv
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
function pyenv
|
||||
set command $argv[1]
|
||||
set -e argv[1]
|
||||
|
||||
switch "$command"
|
||||
case rehash shell
|
||||
source (pyenv "sh-$command" $argv | psub)
|
||||
|
||||
case \*
|
||||
command pyenv "$command" $argv
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user