Динамический выбор символа суффикса завершения tcsh - PullRequest
0 голосов
/ 24 декабря 2018

Я работаю над сценарием завершения 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] не добавляется суффикс пробела.

1 Ответ

0 голосов
/ 11 мая 2019

Вы смотрели в настройку adduffix в shell?Для меня это позволяет поведение, которое вы ищете.

(я бы добавил это как комментарий к вопросу, но у меня недостаточно репутации, чтобы комментировать: /)

...