Динамический выбор символа суффикса завершения tcsh

Я работаю над сценарием завершения tcsh для инструмента, который создает виртуальное дерево файлов. При запросе этот инструмент возвращает все доступные элементы, смешивающие файлы и каталог в результате (каталоги имеют конечный символ /, чтобы отличать их от файлов).

Например, эта команда доступности списка (module avail) может дать следующий результат:

$ module avail
file
b
cd/
d
dir/

Затем, если запрашивается содержимое каталога, возвращаются содержащиеся в нем элементы:

$ module avail dir/
dir/e
dir/f
dir/subdir/

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

Вот небольшой скрипт завершения, чтобы продемонстрировать проблему, с которой я столкнулся:

alias _module_avail 'echo file b cd/ d dir/'

set module_cmds = "load"

complete module 'n/load/`_module_avail`//' \
    "p/1/(${module_cmds})/"

В этом примере сценария я хотел бы добавить символ пробела, когда module load fi[tab] набирается, но не добавляется пробел module load dir[tab] набрано.

0 ответов

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