Genehack a probablement raison; Je suis trop littéral pour répondre à la question. La meilleure façon de gérer quelque chose comme ceci est de comprendre quelle (s) fonction (s) est (sont) requise (s) par un code externe, et d'ajouter autoload
s pour eux.
Mais si autoload
ne fonctionnera pas dans votre cas, la façon normale de faire quelque chose quand un fichier est chargé est de faire
(eval-after-load "semantic" '(load "cedet"))
Mais je viens de remarquer que vous dites que semantic.el ne parvient pas à charger si CEDET n'a pas été chargé en premier. Comme implicite par le nom, eval-after-load
exécute le code après le fichier spécifié est chargé.
Vous pouvez essayer de trouver un fichier différent pour déclencher le chargement, au lieu d'utiliser semantic.el. (Peut-être un autre fichier qui nécessite semantic.el.)
Si nécessaire, vous pouvez brancher en require
:
(defadvice require (before CEDET-require activate)
(if (eq 'semantic (ad-get-arg 0))
(load "cedet")))
Bien que (load "cedet")
devrait probablement être (require 'cedet)
, ou vous aurez le vent rechargeant à chaque fois. (Je ne suis pas sûr si CEDET a un (provide 'cedet)
, donc je ne l'ai pas fait comme ça dans mon exemple.)
Notez que mettre des conseils sur require
ne fera rien si la sémantique a déjà été chargée, donc vous pouvez besoin de vérifier d'abord (featurep 'semantic)
et de charger cedet.el immédiatement si nécessaire.
L'accrochage dans require fonctionne. J'ai dû supprimer l'apostrophe avant CEDET-require. Le problème est que même si eassist-list-methods se charge, il n'a rien à afficher. Je dois rétablir la mémoire tampon de sorte que toutes les opérations d'analyse syntaxique sémantique entrent en jeu. Cependant, ce n'était pas vraiment l'idée. Trop compliqué. Je suppose que je vais m'en tenir au chargement de CEDET quand je démarre Emacs. Cela n'arrive pas très souvent de toute façon. Eh bien, maintenant j'en sais plus sur defadvice;). – Eisen