Как я могу скомпилировать все в моем каталоге .emacs.d?

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

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

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

Удивительно, но это не добавляет моего времени загрузки (если что-то не нужно компилировать).

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

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