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).