В Emacs есть это, казалось бы, очень хорошее средство для создания файлов автозагрузки на основе магических комментариев исходного кода («куки-файлы автозагрузки») в форме ;;;###autoload
, которые должны быть помещены в отдельные строки непосредственно над каждым определением, чтобы быть автозагрузка; см. (elisp) Autoload.
Казалось бы, это идеальный инструмент для поддержки автозагрузки для тех небольших однофайловых пакетов, которые пользователи Emacs неизбежно устанавливают в своих профилях. Есть только одна небольшая проблема: это средство (во всяком случае в GNU Emacs), по-видимому, почти полностью сосредоточено на генерации loaddefs.el
файла для самого Emacs, с очень небольшими уступками (если таковые имеются) для других целей.
Это не мешает крупным пакетам использовать механизм autoloads.el
для создания своих собственных файлов автозагрузки, но те, на которые я смотрел, имеют изрядную часть довольно сложного кода, посвященного тому, чтобы заставить его делать то, что необходимо, хотя некоторые из этих волосатых могут быть связано с расхождением GNU Emacs / XEmacs.
(Я думаю, что XEmacs немного лучше в этом отношении, вероятно, частично из-за того, что его официальная система пакетов использует этот механизм для создания отдельных файлов автозагрузки для каждого пакета. Надеюсь, включение GNU Emacs системы пакетов ELPA, которая также использует эту технику, приводит к аналогичным улучшениям на своей стороне.)
Итак, мой вопрос к вам:
Как мне поддерживать файл автозагрузки для всех
.el
файлов в каталоге, если у них уже есть все необходимые;;;###autoload
комментарии (файлы cookie автозагрузки)?
[Хм. блочные цитаты выглядят круто или на tex.SE ...]
В настоящее время я использую GNU Emacs 23.2.1, хотя чем дальше ответ сработает, тем лучше. (В этом отношении было бы неплохо, если бы он также работал с XEmacs.)
Я работаю в Windows, но вместе с Emacs у меня установлен MSYS, так что сценарии sh / bash, вероятно, подойдут, если они не вызывают ничего ужасно экзотического.
[Я не совсем уверен, что это не относится к суперпользователю, а не к SO. Если уже существует пакет, который может позаботиться об этом с небольшой настройкой, вероятно, так и есть; с другой стороны, если (как я подозреваю) есть только довольно грубые фрагменты кода, которые могут потребовать значительных прямых изменений, я думаю, что это, вероятно, принадлежит SO.]