Quel est le format de l'option -F de _path_files et compadd ?
Je passe plusieurs répertoires à _path_files :
_path_files -W "($base_directories)" -/
Mais certaines de ces arborescences de répertoires que je ne veux pas terminer pour cette commande particulière.
La documentation que je peux trouver pour _path_files dit qu'il accepte un -F option—tout comme compadd , mais je ne trouve pas le format pour les transmettre.
Tournoyer n'a pas été très fructueux non plus.
J'ai essayé, par exemple,
_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
Réponse acceptée :
Cela semble correct si vous voulez ignorer shared à la racine de l'arborescence des répertoires, c'est-à-dire si vous ignorez l'un des $base_directories . Mais si vous vouliez ignorer shared quelque part plus loin dans la hiérarchie, vous avez besoin de -F "(shared **shared)" . Vous pouvez également placer les motifs dans un tableau, ce qui réduira les difficultés de citation.
local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored
Il y a des exemples dans la distribution standard dans _cvs et _darcs .
Si cela ne vous aide pas, essayez d'enquêter sur ce qui se passe en ajoutant set -x et set +x autour du code problématique, ou setopt local_options xtrace (alias set -x et modifier les options uniquement pour la durée de la fonction en cours).