Давным-давно, когда я писал свои настройки .emacs [1], я использовал сценарий оболочки для компиляции и соединения всего этого. Эта вещь сейчас очень старая и «хрустящая», поэтому я сейчас переписываю ее, чтобы заменить такие вещи, как:
(defmacro make-new-comment( mode face strcom color1 color2)
(list 'progn
`(make-face ',face)
`(if (not (assoc ,strcom ,(intern (concat (symbol-name mode) "-comments-alist"))))
(setf ,(intern (concat (symbol-name mode) "-comments-alist"))
(append ,(intern (concat (symbol-name mode) "-comments-alist")) '((,strcom . ,face)))
)
)
`(modify-face ',face ,color1 ,color2 nil t nil nil nil nil)
)
)
и что-то произошло со мной. При компиляции я обращаюсь к нескольким переменным среды, дающим информацию о системе, например, [2], полное имя большинства программ, вызываемых каким-либо режимом, использующим comint [3]. Вместо того, чтобы читать переменные окружения, я мог бы использовать некоторый инструмент, подобный autoconf, чтобы настроить файлы .emacs и затем скомпилировать их.
Проблема в том, что autoconf просто ужасен. Я рассмотрел cmake, но документация очень плохая, особенно при создании вашей собственной системы сборки. Я не знаком с альтернативными системами.
Предложения
[1]: Для ясности под настройкой .emacs я имею в виду примерно 30 файлов и два подкаталога кода, которые у меня есть. Не говоря уже о нескольких пакетах, которые (на момент включения) не являются частью стандартного дистрибутива emacs.
[2] Я заменил, например, на «», так как, очевидно, многие люди не знают, что, например, означает, например. Либо так, либо они не знают, что такое пример.
[3] Такие как diff-mode и ruby-mode.