2010-09-05 4 views
0

Давным-давно, когда я написал мою установку .emacs [1], я использовал сценарий оболочки для компиляции и объединения всего этого. Дело теперь очень старое и «корка», так что я теперь переписывать его заменить такие вещи, как:.emacs, automake и cmake

(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.

+0

Почему вы не можете просто изменить настройки PATH, чтобы найти общие программы, такие как diff? –

+0

Зачем вам нужно установить некоторые переменные среды для поиска таких инструментов, как diff или grep, которые обычно должны быть на вашем PATH? –

+0

Почему вы полностью изменили этот вопрос. Пожалуйста, начните новый вопрос и верните его. Благодарю. – ocodo

ответ

1

which diff?

Более подробная информация была бы здесь полезной. Являются ли эти переменные среды, которые вы установили сами? или вещи, предоставленные вашим дистрибутивом?

Как ни странно, это звучит подозрительно, так как невероятно мощный встроенный скрипт emacs - это то, что вы ищете.

1

Я согласен с jkerian: почему вы собираете свои .emacs из частей? Вот что я делаю: сломайте язык или функцию и используйте require и provide. Мой .emacs выглядит следующим образом:

; -*- emacs-lisp -*- 
(add-to-list 'load-path "~/elisp/personal") 

(require 'jdk-generic) 
(require 'jdk-haskell) 
(require 'jdk-keywiz) 
(require 'jdk-lua) 
(require 'jdk-ocaml) 
(require 'jdk-org) 
(require 'jdk-php) 
(require 'jdk-tex) 
(require 'jdk-text) 
(require 'jdk-whitespace) 

Каждый отдельный файл в ~/elisp/personal затем устанавливает поддержку для языка или любого других, то provide ы jdk-whatever. Вот jdk-lua.el:

(add-to-list 'load-path "~/elisp/packages/lua-mode-20071122") 
(add-to-list 'auto-mode-alist '("\\.lua$" . lua-mode)) 
(autoload 'lua-mode "lua-mode" "Lua editing mode." t) 
(provide 'jdk-lua) 

Обратите внимание, что я сохраняю все пакеты elisp в ~/elisp/packages. Это означает, что я могу скопировать каталог .emacs и ~/elisp где угодно и немедленно сработать.

1

Из того, что я понимаю, вы хотите, чтобы сценарий автоматически определял, где ваши инструменты (например, diff, grep ...), а не вручную сообщает ваш .emacs, где они находятся через переменные среды.

Если вы находитесь на платформе, подобной unix, все ваши инструменты, такие как diff, grep, уже должны быть на вашем PATH, и emacs не должны испытывать проблем с их поиском. Таким образом, в ваших .emacs вы не должны использовать какую-либо переменную среды и вносить в нее прямо имя инструмента.

Если ваша цель состоит в том, чтобы сделать переносной .emacs, который может быть выполнен в Windows, например, вы должны поместить все gnuwin32 tools в свою PATH, чтобы emacs находили их без проблем. Но для Windows вам нужно будет сделать много других крошечных аранжировок для правильной работы команд emacs, как в системе unix.

Использование такого инструмента, как autoconf, является чем-то очень трудоемким для того, что можно было бы хорошо обработать, настроив один файл .emacs. Если у вас есть конкретные вещи, чтобы сделать для конкретной системы, вы могли бы написать Elisp такого кода:

(if (eq window-system 'w32) 
    (progn ...)) 

Кроме того, если вы хотите автоматизировать байтовую компиляцию всех вашего .El файлов, вы можете использовать такую ​​команду это на вашей раковине:

emacs --batch -f batch-byte-compile *.el 
Смежные вопросы