Qual è il formato per l'opzione -F di _path_files e compadd ?
Sto passando diverse directory a _path_files :
_path_files -W "($base_directories)" -/
Ma alcuni di quegli alberi di directory non voglio completare per questo particolare comando.
La documentazione che posso trovare per _path_files dice che accetta un -F opzione, proprio come compadd , ma non riesco a trovare il formato per passarli.
Anche gironzolare non è stato molto fruttuoso.
Ho provato, ad esempio,
_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
Risposta accettata:
Sembra corretto se vuoi ignorare shared alla radice dell'albero delle directory, cioè se stai ignorando una delle $base_directories . Ma se intendevi ignorare shared da qualche parte più in profondità nella gerarchia, hai bisogno di -F "(shared **shared)" . Puoi anche inserire i modelli in una matrice, che ridurrà i problemi di citazione.
local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored
Ci sono esempi nella distribuzione standard in _cvs e _darcs .
Se questo non aiuta, prova a indagare su cosa sta succedendo aggiungendo set -x e set +x intorno al codice problematico, o setopt local_options xtrace (aka set -x e modificare le opzioni solo per la durata della funzione corrente).