Сохранение файлов автозагрузки Emacs для установленного пользователем elisp? - PullRequest
9 голосов
/ 05 января 2011

Emacs имеет это, на первый взгляд, очень удобное средство для создания автозагрузки файлов на основе волшебных комментариев исходного кода ("куки автозагрузки") в форме ;;;###autoload, которые должны быть размещены в строках непосредственно над каждое определение для автозагрузки; см (elisp) Автозагрузка .

Казалось бы, это идеальный инструмент для поддержки автозагрузки тех маленьких однофайловых пакетов, которые пользователи Emacs неизбежно заканчивают тем, что устанавливали в свои профили. Есть только одна небольшая проблема: эта возможность (в любом случае в GNU Emacs) почти полностью сфокусирована на создании файла loaddefs.el для самого Emacs, с очень небольшой (если таковой имеется) уступкой для других целей.

Это не мешает большим пакетам использовать механизм autoloads.el для создания своих собственных файлов автозагрузки, но те, на которые я смотрел, имеют довольно немного довольно сложный код, посвященный тому, чтобы заставить его делать то, что нужно, хотя некоторые из них могут быть связаны с расхождением GNU Emacs / XEmacs.

(Я думаю, что XEmacs немного лучше в этом плане, вероятно, по крайней мере частично из-за того, что его официальная система пакетов использует этот механизм для создания отдельных файлов автозагрузки для каждого пакета. Надеемся, что GNU Emacs включил пакет ELPA Система, которая также использует этот механизм, приводит к аналогичным улучшениям с их стороны.)

Итак, мой вопрос к вам:

Как сохранить файл автозагрузки для всех файлов .el в каталоге, если они уже содержат все необходимые комментарии ;;;###autoload (файлы автозагрузки)?

[Хм. цитаты блоков выглядят намного лучше на tex.SE ...]

В настоящее время я использую GNU Emacs 23.2.1, хотя чем дальше работает ответ, тем лучше. (В этом отношении было бы хорошо, если бы это также работало с XEmacs.)

Я на Windows, но MSYS установлен вместе с Emacs, так что сценарии sh / bash, вероятно, будут хорошими, если они не призывают ничего ужасно экзотического.

[Я не совсем уверен, что это относится не к суперпользователю, а к SO. Если уже есть пакет, который может позаботиться об этом только с небольшим количеством конфигурации, это возможно; с другой стороны, если (как я подозреваю) есть только довольно грубые фрагменты кода, которые могут потребовать большого количества прямых изменений, я думаю, что он, вероятно, принадлежит здесь на SO.]

Ответы [ 2 ]

2 голосов
/ 05 января 2011

Проверить этот ответ на "emacs23 / elisp: как правильно загрузить эту библиотеку?" .

Таким образом, вы выгружаете все пакеты вконкретного каталога, и создайте собственный пакет update-auto-loads.el, который создает loaddefs.el и предоставляет функцию, которую вы можете регулярно запускать для восстановления файла loaddefs.el в любое время.

0 голосов
/ 09 августа 2017

В 2017 году вам не нужно поддерживать это самостоятельно.Вместо этого вы можете использовать современный менеджер пакетов, такой как straight.el, который специально разработан для того, чтобы позаботиться об этом (а также о многих других вещах) за вас.1006 * вместо straight.el, но package.el имеет ряд серьезных проблем, и особенно уместным является то, что очень неудобно получать package.el для загрузки локального пакета, который вы написали самостоятельно, и в частности package.el абсолютно не поддерживает внесение изменений в пакет после его установки.

Вы также можете использовать другие менеджеры пакетов.Я написал обширный раздел , сравнивающий straight.el с другими менеджерами пакетов .

...