Solution: ajouter les lignes suivantes en
début du script principal:
auto_mkindex . *.tcl
set auto_path [linsert $auto_path 0 .]
Ensuite, on peut directement appeler n'importe quelle
procédure définie dans un des fichiers *.tcl du
répertoire courant.
On déclare un ensemble de répertoires dans lesquels se trouvent nos fichiers source (.tcl). Lorsque tcl doit évaluer une commande dont il ne connait pas le nom (par exemple une de vos procédures), tcl va parcourir ces répertoires et lire les fichiers "tclIndex" qui s'y trouvent. L'index fait l'association "nom de commande -> fichier à évaluer pour définir la commande". Si tcl trouve la commande dans l'index, il évalue automatiquement le fichier source qui défini cette commande, et l'évaluation globale peut continuer.
Il faut donc :
La commande "auto_mkindex" crée un fichier index, par exemple :
auto_mkindex . *.tcl
crée un fichier index dans le répertoire courant.
Vous pouvez mettre une série de "auto_mkindex" au début de votre fichier script principal pour mettre à jour l'index de tout vos répertoires à chaque exécution de votre programme. Par contre, lorsque vous avez de nombreux fichier, ça prend un peu de temps au début de chaque utilisation...
Vous pouvez choisir de mettre à jour l'index "à la main" en créant un fichier, par exemple "mkIndex", dans chacun de vos répertoires. Ce fichier doit être rendu exécutable (voir "rendre un script exécutable" dans le cours TclTk). Ce fichier contient l'unique commande "auto_mkindex" présentée ci-dessus. Quand vous ajoutez de nouveaux fichiers dans un répertoire, exécutez ce script pour mettre à jour l'index.
Il suffit de mettre à jour la variable globale "auto_path". Par exemple la commande :
set auto_path [linsert $auto_path . src]
insère
le répertoire courant et le répertoire "src"
(situé dans le répertoire
courant) au débute de la liste "auto_path". Ces deux
répertoires seront
les premiers dans lesquels tcl partira à la recherche de la
définition
des commandes inconnues.
"auto_mkindex" ne repère que les procédures dans les
fichiers de scripts, non pas les méthodes de gml_Object.tcl.
Pour créer des index qui incluent les définitions de
méthodes, télécharger et utiliser "gml_MakeIndex.tcl".