Пользовательское завершение zsh: произвольная сортировка?

Я использую _values, чтобы добавить завершение к пользовательской команде zsh, но, к сожалению, zsh игнорирует порядок, в котором я передаю значения и сортирую их в обратном порядке (я хочу sort -rn, в основном).

Есть ли способ заставить его соблюдать порядок, который я передал, или, если нет, каким-то образом изменить механизм сортировки, используемый для этой конкретной команды (т. Е. Я не хочу изменять порядок все завершенные, только это конкретное.

Пример:

_values 'my completions' foo bar

показывает bar перед foo, но я хочу foo перед bar.


person Gal    schedule 28.01.2018    source источник
comment
Вы имеете в виду расширения глобусов?   -  person kvantour    schedule 29.01.2018
comment
Нет, я имею в виду завершение вкладок. Список, переданный в функцию _values, создается без глобусов.   -  person Gal    schedule 29.01.2018


Ответы (1)


В общем, совпадения завершения Zsh могут быть добавлены как в отсортированную, так и в несортированную группу. Однако _values не включает параметр, чтобы указать это. Итак, вы можете:

_wanted -V values expl 'my completions' compadd foo bar

Какие функции _values вам нужны? Если вам нужен список с разделителями, без дубликатов, _sequence может обернуть вышеуказанное. Если вам нужны описания для каждого совпадения, _describe может помочь. Но если вам нужны некоторые из более сложных функций _values, вы либо застряли на сортировке, либо вам придется делать гораздо больше вручную.

person okapi    schedule 04.02.2018
comment
Я пробовал использовать _describe, но когда я добавил к нему параметр -V, похоже, это не сработало. Мой код находится здесь. Когда я пытаюсь завершить hello, он не упорядочивается, но описание группы совпадений изменяется на -V. Если я заменяю строку «stuff», скажем, «my desc», она завершает только первую запись в массиве и включает описание как часть завершения, то есть hello foo:foo\ desc, что очень странно. - person Gal; 07.02.2018
comment
Ваш код работает у меня в zsh 5.4.2 (а также в 5.2), но не в 5.0.2. Может быть, попробовать более новую версию zsh? - person okapi; 08.02.2018
comment
К сожалению, моя рабочая станция ограничена 5.0.5 :( Тем не менее, спасибо за выяснение основной причины! - person Gal; 11.02.2018