2009-08-01 12 views
116

Я решил проверить Emacs, и мне это очень понравилось. Теперь я использую Emacs Starter Kit, который предоставляет лучшие настройки по умолчанию и некоторые приятные настройки для установки Emacs по умолчанию.Как я могу скомпилировать все в моем каталоге .emacs.d?

Я немного настроил его, добавил некоторые вещи, такие как yasnippet, color-themes, unbound и другие материалы. Я установил github repository, где я сохраняю все настройки, поэтому я могу получить к ним доступ из нескольких мест или в случае, если что-то пойдет не так, и я потерял свой каталог .emacs.d.

Все это очень приятно, но есть проблема: Emacs занимает около 1-2 секунд для загрузки. AFAIK Я могу скомпилировать отдельные файлы .el с файлом-байтом M-x в .elc, и он работает. Но есть много файлов .el, и мне интересно, есть ли способ скомпилировать их с помощью простой команды или чего-то еще, чтобы ускорить загрузку Emacs. Мой Emacs не всегда открыт, и я открываю и закрываю его довольно часто, особенно после того, как я настроил его как редактор по умолчанию для команды редактирования в Total Commander, чтобы быстрее привыкнуть к нему (да, здесь xp здесь).

My Emacs версия 22.3. И да, установка Emacs по умолчанию без каких-либо настроек запускается мгновенно.

Я не уверен, что является предпочтительным вариант при загрузке, в .El или скомпилирован .elc один, кстати Оо

Итак, есть ли Elisp команда или Emacs ключ командной строки, чтобы сделать Emacs байт-компиляции все в каталоге .emacs.d?

ответ

182

C-u 0 M-x byte-recompile-directory

компилирует все файлы .el в каталоге и во всех подкаталогах ниже.

Часть C-u 0 состоит в том, чтобы не спрашивать о каждом файле .el, который не имеет .elc-аналога.

+8

И после этого (когда каждый из них был составлен один раз), просто использовать ту же команду без «Cu 0» (ака 'C-0', BTW). Это будет байт-компилировать только те исходные файлы, которые являются более поздними, чем их байт-скомпилированные версии. – Drew

+1

Небольшая заметка: для меня это не сработало, пока я не удалил все файлы «.elc». Он просто сказал что-то вроде «Done, 0 файлов comiled, α файлы пропущены». –

+1

@ Привет-Ангел У меня такая же проблема. Вы нашли решение? – zhanxw

15

Это качается немного от вопроса, но решить проблему загрузки медленно вы можете использовать новую функцию демона в Emacs 23.

«Если у вас есть много пакетов поддержки, Emacs Однако emacs 23 приносит emacs --daemon, который позволяет вам запускать emacs в фоновом режиме (например, при входе в систему). Вы можете мгновенно всплывать новые окна emacs (frames) с emacsclient. Конечно, вы могли бы уже иметь сервер emacs 'в старые версии, но будучи в состоянии запустить его в фоновом режиме, делает это гораздо приятнее решение»

От http://emacs-fu.blogspot.com/2009/07/emacs-23-is-very-near.html

+0

Я определенно собираюсь проверить это. Спасибо! – Mikka

+2

Если вы добавите alias emacs = 'emacsclient -nw -a "" -c' в ваш .bashrc (или версию вашей оболочки), он сначала попытается подключиться к работающему демонам, если он есть, если он не запустится один и подключить вас. – Frederick

41

Для автоматического BYTE скомпилировать все, что нужно байт компиляции каждый раз, когда я начинаю Emacs, я поставить следующее после моих изменений load-path в верхней части моего .emacs файла:

(byte-recompile-directory (expand-file-name "~/.emacs.d") 0) 

Удивительно, но он не добавляет к моему времени запуска (если не somethi ng необходимо скомпилировать).

Чтобы ускорить работу emacs, я сначала определил медленные части, используя profile-dotemacs.el, а затем заменил их на autoloads.

20

Вы можете использовать флаг --batch для перекомпиляции из командной строки.

Чтобы перекомпилировать все, сделать

emacs --batch --eval '(byte-recompile-directory "~/.emacs.d")' 

или перекомпилировать один файл как из Makefile,

emacs --batch --eval '(byte-compile-file "your-elisp-file.el")' 
+5

использовать [batch-byte-compile] (http://www.gnu.org/software/emacs/manual/html_node/elisp/Compilation-Functions.html#index-batch_002dbyte_002dcompile-909). – npostavs

+0

Не могли бы вы его использовать? – nacho4d

+4

@ nacho4d 'emacs -Q --batch -f batch-byte-compile * .el foo/*. El' - он не рекурсивно, как ** byte-recompile-directory **. –

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