Re: autoload cookies
Zajcev Evgeny <[email protected]> Wed, 20 Oct 2004 10:03:16 +0400
| Newsgroups | gmane.emacs.xemacs.user.russian |
|---|---|
| Message-ID | <[email protected]> |
Andrey Slusar <[email protected]> writes: > Tue, 19 Oct 2004 22:59:35 +0400, Vasily Korytov wrote: > >> > А зачем в elisp иногда вставляют ";;;###autoload" строки? Для чего они >> > служат? > >> В XEmacs очень занятеный механизм автоподгрузки до самих файлов разной >> фигни из них. На мой взгляд, он просто порочен: от него растут разные >> проблемы, если у тебя, скажем, один Gnus в xemacs-packages, второй -- >> где-то еще в load-path. > > Да не, там все примерное ясно - load-path считается приоритетным(по > собственному опыту), но в комментариях писать autoload-ы, это какое-то > извращение:\ > >> В принципе, идея иметь в каждом каталоге в load-path файл >> auto-autoloads.el, в который пишутся (autoload ...)'ы, вычленяемые из >> *.el именно по этим самым комментариям, не так плоха. Но переменные -- >> это уж увольте. =(( > > Так все-же какой механизм ";;;###autoload" и когда оно подгружается? > > Или это что-то типа (unless (fboundp 'func) defun func())? autoload функциая - это специальная форма фунции которая нужна чтобы подгружать файл с самой фунцией только в момент первого доступа к этой фунции. Вот например (autoload 'mytest-func "myfile.el" "my documentation for `mytest-func'." nil) (1) ==> (autoload "myfile.el" "my documentation for `mytest-func'." nil nil) (symbol-function 'mytest-func) ==> (autoload "myfile.el" "my documentation for `mytest-func'." nil nil) как видишь все продолжает работать и фунция `mytest-func' является определенной. Теперь (mytest-func nil) ==> error: Can't load myfile.el Видишь, XEmacs попытался подгрузить файл myfile.el где он надеялся что найдет реальную фунцию mytest-func. а кука ';;;###autoload' позволяет автоматичски генерить такие вот записи(1) в специальном файле. В итоге получается что файлы подгружаются по мере необходимости, а не все сразу. -- lg