Давным-давно, когда я писал свою установку .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 и режим ruby.