ZSH Completion Delimiter - PullRequest
       25

ZSH Completion Delimiter

0 голосов
/ 19 февраля 2019

Я столкнулся со следующей ситуацией.Я получил записи автозаполнения, такие как:

server:install
server:lint
...

Они должны быть дополнены zsh.На самом деле мой метод завершения работает довольно хорошо, пока я заменяю двоеточия подчеркиванием или чем-то другим, поскольку ZSH (или лучше функция _describe) будет использовать двоеточие в качестве разделителя.

Вы можете увидеть это в этом пример :

local -a subcmds topics
subcmds=('c:description for c command' 'd:description for d command')
topics=('e:description for e help topic' 'f:description for f help topic')
_describe 'command' subcmds -- topics

Однако я этого не хочу.Я действительно хочу, чтобы эти двоеточия были в записях автозаполнения.

Поэтому мой вопрос: могу ли я как-нибудь избежать двоеточия, чтобы ZSH заметил, что мое двоеточие не является разделителем для описания, или изменил разделитель начто-то отличное от двоеточия?

В настоящее время завершение выглядит следующим образом:

#compdef mycmd

local -a completions
completions=$(complete_me 2>/dev/null)
result=$(echo "$completions" | sed "s/:/_/g") # This line should be removed
lines=("${(f)result}")
_describe 'command' lines

Весь этот материал более или менее скопирован вместе с разных сайтов.Поэтому, вероятно, я просто пропустил довольно простой вариант - но я просто не могу его найти -.-.

Может ли кто-нибудь помочь мне с этим?

Спасибо, Матиас

1 Ответ

0 голосов
/ 19 февраля 2019

Grml - это был простой ответ._describe (как следует из названия) всегда ожидает описание.Замена на compadd просто работает:

compadd $lines

Может быть, больше людей глупы, чем я: D - поэтому я оставлю это здесь ...

...