2015-02-24 4 views
0

Я не могу понять, как вызвать функцию завершения zsh, с которой я могу подключиться и предоставить результат возврата доступных элементов. Например, я хотел бы иметь возможность обратиться в веб-службу и вернуть обратно массив потенциалов.Вызывать пользовательскую функцию в завершении zsh?

Я пытался что-то вроде этого:

#compdef test 

local arguments 


_run(){ 
    reply=(1 2 3) 
} 

arguments=(
'--test[foo]:bar:_run' 
) 

_arguments -s $arguments 

Если я ставлю эхо в функции _run я могу видеть его получение выполняется, но ЗШ всегда говорит, что нет ни одного совпадения

ответ

1

Взял меня в то время, чтобы понять это (и только потому, что я украл его из brew ЗШ доработок файл:

#compdef test 

local arguments 

_run(){ 
    val=(1 2 3) 
    _wanted val expl "Items" compadd -a val 
} 

_biz(){ 
    val=(4 5 6) 
    _wanted val expl "Biz" compadd -a val 
} 

local expl 
local -a val 

arguments=(
'--test[foo]:bar:_run' 
'--biz[boo]:boo:_biz' 
) 

_arguments $arguments 

Теперь вы можете сделать

$ test --test 
-- Items -- 
1 2 3 

и

$ test --test 2 --biz 4 
-- Biz -- 
4 5 6