Как мне побайтно скомпилировать все в моем каталоге .emacs.d? - PullRequest
127 голосов
/ 01 августа 2009

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

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

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

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

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

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

Ответы [ 5 ]

200 голосов
/ 01 августа 2009

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

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

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

43 голосов
/ 18 января 2012

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

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

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

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

23 голосов
/ 12 сентября 2012

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

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

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

или для перекомпиляции одного файла из Makefile,

emacs --batch --eval '(byte-compile-file "your-elisp-file.el")'
17 голосов
/ 02 августа 2009

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

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

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

2 голосов
/ 01 мая 2018

Для моего использования spacemacs, команда - spacemacs/recompile-elpa. Команда byte-recompile-directory не компилирует ни один файл.

...