Gostaria de preencher os candidatos de conclusão com a ordem exata especificada na função. Pelo que entendi, -o nosort
deve funcionar, mas não está funcionando como esperado. Devo estar faltando algo muito básico. O que é isso?
autoload -Uz compinit && compinit -u
compdef _foo foo
_foo() {
compadd -o nosort -- ccc aaa bbb
}
% foo <Tab>
aaa bbb ccc
# Want: ccc aaa bbb
Não sei por que isso é necessário, mas adicionar um nome de grupo via
-J the-group-name
ou-V the-group-name
(que é a abreviação de-J the-group-name -o nosort
) funciona. Então:Na verdade, nunca me esforcei para entender detalhadamente como funciona o sistema de conclusão. Ao tentar definir alguns completadores personalizados, geralmente observo aqueles fornecidos pelo zsh como exemplos. Aqui
grep -rw -- nosort $fpath
revela alguns completadores que o utilizam. Doingfunctions -t one-of-those-completers
permite o rastreamento desse completador e mostra como o compadd está sendo invocado para eles.