Где мне добавить файлы автозагрузки в мой пакет Emacs Lisp? Есть ли исчерпывающее руководство?
Я поддерживаю несколько популярный пакет Emacs ( ido-ubiquitous), и я хотел бы добавить ;;;###autoload
комментарии к моему пакету, так что его не нужно загружать, пока его режим не активирован. Я пытался сделать это некоторое время назад с тем же пакетом, и это привело к ряду загадочных ошибок, которые возникали только при автоматической загрузке пакета, поэтому я удалил все элементы автозагрузки, и проблемы исчезли. Я хотел бы попробовать еще раз, но только если я смогу найти исчерпывающую документацию о том, как это сделать, чтобы я не стал снова вводить те же ошибки.
Так есть ли полное руководство по добавлению файлов автозагрузки в пакет Emacs Lisp?
РЕДАКТИРОВАТЬ: Глядя на мои журналы Git для моего пакета, я вижу пару коммитов, ссылающихся на автозагрузки:
- 283f9e9 Удалите ненужные автозагрузки
- 66b782f Автозагрузка значений по умолчанию для переопределенных переменных
- f6086e5 Исправление автозагрузки
- 0eed206 Удалите ненужный файл автозагрузки
Эти коммиты показывают, что я действительно не уверен, к чему добавлять автозагрузки. В частности, f6086e5 и 66b782f показывают, что я подумал, что я должен автоматически загружать пользовательские переменные, и пришел к выводу, что мне также нужно было загрузить defconst
формы, которые определили их значения по умолчанию. Если я правильно помню, это было в ответ на ошибку void-variable, поскольку у автозагрузки defcustom не было доступа к неавтоматически загруженному значению по умолчанию ( ссылка на проблему). Наконец, в 283f9e9 у меня было видение будущего, и я воспользовался советом Стефана, удалив все автозагрузки, кроме той, которая была включена в определение второстепенного режима.
2 ответа
;;;###autoload
куки просто помечают код, который нужно поднять в <pkg>-autoloads.el
файл. Этот файл затем загружается с нетерпением при запуске, но это можно сделать быстро, потому что это файл намного меньшего размера. Таким образом, вам, как правило, нужен только такой файл cookie в нескольких основных точках входа. Например, я бы положил только один такой файл cookie на ido-ubiquitous-mode
,
Документация по автозагрузке находится здесь:
Chяг (elisp) Autoload
RET
Можете ли вы рассказать подробнее об ошибках, с которыми вы столкнулись?