Genehack, вероятно, прав; Я слишком буквально отвечаю на вопрос. Лучший способ справиться с чем-то подобным — выяснить, какие функции требуются для внешнего кода, и добавить для них autoload
.
Но если autoload
в вашем случае не сработает, обычный способ что-то сделать при загрузке файла - это сделать
(eval-after-load "semantic" '(load "cedet"))
Но я только что заметил, что вы говорите, что semantic.el не загружается, если сначала не был загружен CEDET. Как следует из названия, eval-after-load
запускает код после загрузки указанного файла.
Вы можете попробовать найти другой файл для запуска загрузки вместо использования semantic.el. (Возможно, какой-то другой файл, который требуется semantic.el.)
При необходимости вы можете подключиться к require
:
(defadvice require (before CEDET-require activate)
(if (eq 'semantic (ad-get-arg 0))
(load "cedet")))
Хотя (load "cedet")
, вероятно, должно быть (require 'cedet)
, иначе вы будете перезагружать его каждый раз. (Я не уверен, есть ли у CEDET (provide 'cedet)
, поэтому в моем примере я этого не делал.)
Обратите внимание, что добавление совета в require
ничего не даст, если семантика уже загружена, поэтому вам может потребоваться сначала проверить (featurep 'semantic)
и при необходимости сразу же загрузить cedet.el.
person
cjm
schedule
03.09.2009