Передача текущей командной строки в функцию автозаполнения zsh

Я отслеживаю свои оплачиваемые часы. Каждый элемент имеет описание и количество тегов для разных клиентов, проектов и т. Д.

Недавно я добавил zsh завершение для этих тегов. Вот что у меня есть в моем файле автозаполнения zsh:

_arguments "*:tags:( $(cat timetrackingdata | extract_tags.py ) )"

Скрипт Python extract_tags.py извлекает все теги из моего файла timetrackingdata и возвращает их в zsh.

Я хотел бы иметь возможность ограничить теги, возвращаемые тегами уже в командной строке

Так что, если я уже поставил тег client1 в командной строке я хочу передать этот тег extract_tags.py чтобы он мог фильтровать свои выходные данные и возвращать только те теги, которые встречаются в элементах, которые также имеют тег client1,

1 ответ

Решение

Я думаю, что вы ищете $words переменная. Это массив всех слов, указанных в командной строке, который волшебным образом существует внутри функций завершения.

Где это задокументировано? Есть несколько преходящих ссылок в man zshcompsys что я бы пропустил, если бы я специально не искал их. Тем не менее, я нашел это более четко выделенным на этом сайте.

Другие вопросы по тегам