¿Cómo compilo byte todo en mi directorio .emacs.d?
Pregunta
He decidido echar un vistazo a Emacs, y me gustó mucho. Ahora, estoy usando el Emacs Starter Kit , que proporciona mejores valores predeterminados y algunas personalizaciones agradables para la instalación predeterminada de Emacs.
Lo he personalizado un poco, agregué algunas cosas como yasnippet , color-themes , sin consolidar y otras cosas. He configurado un repositorio de github donde guardo todas las personalizaciones para poder acceder a ellos desde múltiples lugares o en caso de que algo salga mal y pierda mi directorio .emacs.d.
Todo esto es muy bueno, pero hay un problema: Emacs tarda unos 1-2 segundos en cargarse. AFAIK Puedo compilar archivos .el individuales con M-x byte-compile-file a .elc, y funciona. Pero hay muchos archivos .el, y me pregunto si hay una manera de compilarlos todos con un simple comando o algo así, para acelerar la carga de Emacs. Mi Emacs no siempre está abierto, y lo abro y cierro con bastante frecuencia, especialmente después de configurarlo como editor predeterminado para el comando de edición en Total Commander para acostumbrarme más rápido (sí, Windows XP aquí).
Mi versión de Emacs es la 22.3. Y sí, la instalación predeterminada de Emacs sin ninguna personalización se activa instantáneamente.
No estoy seguro de qué versión se prefiere al cargar, el .el o .elc compilado por cierto O.o
Entonces, ¿hay un comando elisp o un interruptor de línea de comando Emacs para hacer que Emacs compile en bytes todo en el directorio .emacs.d?
Solución
C-u 0 M-x byte-recompile-directory
compilará todos los archivos .el en el directorio y en todos los subdirectorios a continuación.
La parte C-u 0
es hacer que no pregunte sobre todos los archivos .el que no tienen una contraparte .elc.
Otros consejos
Para compilar byte automáticamente todo lo que necesita compilación de bytes cada vez que inicio emacs, coloco lo siguiente después de mis cambios en load-path
en la parte superior de mi .emacs
archivo:
(byte-recompile-directory (expand-file-name "~/.emacs.d") 0)
Sorprendentemente, no agrega mucho a mi tiempo de inicio (a menos que sea necesario compilar algo).
Para acelerar mis emacs, primero identifiqué las partes lentas usando profile-dotemacs.el y luego los reemplazó con cargas automáticas .
Puede usar el indicador --batch
para volver a compilar desde la línea de comandos.
Para recompilar todo, haga
emacs --batch --eval '(byte-recompile-directory "~/.emacs.d")'
o para recompilar un solo archivo a partir de un Makefile,
emacs --batch --eval '(byte-compile-file "your-elisp-file.el")'
Esto se está alejando un poco de la pregunta, pero para resolver el problema de cargar lentamente puede usar la nueva función de demonio en Emacs 23.
" Si tiene muchos paquetes de soporte, El inicio de emacs puede ser un poco lento. Sin embargo, emacs 23 trae emacs --daemon, que le permite iniciar emacs en segundo plano (por ejemplo cuando inicias sesión). Puedes al instante abrir nuevas ventanas (marcos) de emacs con emacsclient Por supuesto que podrías ya tengo un 'servidor' de emacs en versiones anteriores, pero poder iniciarlo en segundo plano hace que esto una solución mucho mejor "
De http: // emacs-fu .blogspot.com / 2009/07 / emacs-23-is-very-near.html
Para mi uso de spacemacs, el comando es spacemacs / recompile-elpa
. El comando byte-recompile-directory
no compila ningún archivo.