2011-01-05 2 views
9

У Emacs есть это, по-видимому, очень хорошее средство для построения autoload файлы, основанные на комментариях исходного кода магии («автозагрузка файлов cookie») формы ;;;###autoload, которые должны быть размещены на линиях непосредственно непосредственно над каждым определением, которое будет автоматически загружено; см. (elisp)Autoload.Сохранение файлов автозагрузки Emacs для установленного пользователем elisp?

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

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

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

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

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

[Hmm. блочные кавычки выглядят много coolor на tex.SE ...]

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

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

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

+0

Да, кажется, что кто-то, кроме меня, предпочел это, но не поддержал его: 2 пользователя одобрили его (один из которых я, я думаю), но нет голосов вообще. Интересно, почему это - забывчивость? – SamB

ответ

2

Отъезд this answer до "emacs23/elisp: how to properly autoload this library?".

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

0

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

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

Вы также можете использовать других менеджеров пакетов. Я написал обширный раздел comparing straight.el to other package managers.

+0

«очень сложно получить пакет package.el для загрузки локального пакета, который вы сами написали» ... erm, нет, это не так; на самом деле это невероятно просто: 'Mx package-install-file' – phils

+0

@phils Затем вы должны повторно запускать эту команду каждый раз, когда вы вносите изменения в файл, и, кроме того, вам нужно прыгать через обручи при использовании' Mx find- function' и friends, чтобы убедиться, что вы редактируете настоящий файл, а не копию, созданную 'package.el'. Я не называю это легко. –

Смежные вопросы