автодополнение tcsh для файлов модулей

Я нашел этот фрагмент кода, который выполняет автодополнение для файлов модулей в tcsh по адресу https://opensource.apple.com/source/tcsh/tcsh-66/tcsh/complete.tcsh.

Может ли кто-нибудь помочь мне понять, как работает «псевдоним Compl_module»?

#from Dan Nicolaescu <[email protected]>
if ( $?MODULESHOME ) then
  alias Compl_module 'find ${MODULEPATH:as/:/ /} -name .version -o -name .modulea\* -prune -o -print  | sed `echo "-e s@${MODULEPATH:as%:%/\*@@g -e s@%}/\*@@g"`'
  complete module 'p%1%(add load unload switch display avail use unuse update purge list clear help initadd initrm initswitch initlist initclear)%' \
  'n%{unl*,sw*,inits*}%`echo "$LOADEDMODULES:as/:/ /"`%' \
  'n%{lo*,di*,he*,inita*,initr*}%`eval Compl_module`%' \
  'N%{sw*,initsw*}%`eval Compl_module`%' 'C%-%(-append)%' 'n%{use,unu*,av*}%d%' 'n%-append%d%' \
  'C%[^-]*%`eval Compl_module`%'
endif

Большое спасибо.


person Leo    schedule 22.06.2018    source источник


Ответы (1)


Не уверен, что этот псевдоним Compl_module работает хорошо, поскольку он пытается определить все существующие файлы модулей в путях к модулям, просто просматривая существующие файлы. Файлы модулей также могут быть псевдонимами, символическими версиями и виртуальными (в более новых версиях модулей >= 4.1), поэтому псевдоним Compl_module пропустит это.

Вы найдете полный скрипт завершения для команды module в исходниках репозиторий проекта Modules.

Этот сценарий завершения вызывает module avail для правильного получения всех существующих файлов модулей в разрешенных путях к модулям.

Сценарий завершения TCSH включается автоматически, начиная с версии Modules 4.0.

person Xavier Delaruelle    schedule 23.06.2018
comment
Привет, Ксавьер, большое спасибо; обновление решило проблему! - person Leo; 30.06.2018