emacs elisp bytecode dot-emacs

¿Cómo compilo byte todo en mi directorio.emacs.d?



elisp bytecode (5)

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, he añadido algunas cosas como yasnippet , color-themes , unbound y otras cosas. He configurado un repositorio github donde guardo todas las personalizaciones para poder acceder a ellas desde varios lugares o en caso de que algo vaya mal y pierdo mi directorio .emacs.d.

Todo esto es muy bueno, pero hay un problema: Emacs tarda aproximadamente 1-2 segundos en cargarse. AFAIK Puedo compilar archivos .el individuales con Mx byte-compile-file en .elc, y funciona. Pero hay muchos archivos .el, y me pregunto si hay una forma de compilarlos todos con un simple comando o algo así, para acelerar la carga de Emacs. My Emacs no siempre está abierto, y lo abro y cierro con bastante frecuencia, especialmente después de haberlo configurado como editor predeterminado para el comando de edición en Total Commander para acostumbrarme a él más rápido (sí, Windows XP aquí).

Mi versión de Emacs es 22.3. Y sí, la instalación predeterminada de Emacs sin personalizaciones se activa al instante.

No estoy seguro de qué versión prefiere al cargar, el .el o compilado .elc uno por cierto Oo

Entonces, ¿hay un comando elisp o un cambio de línea de comando de Emacs para hacer que Emacs compile todo en el directorio .emacs.d?


Esto se tambalea un poco por la pregunta, pero para resolver el problema de la carga lenta puedes usar la nueva función daemon en Emacs 23.

"Si tienes muchos paquetes de soporte, el inicio de emacs puede ser un poco lento. Sin embargo, emacs 23 trae emacs --daemon, que te permite iniciar emacs en el fondo (por ejemplo, cuando inicias sesión). Puedes hacer pop al instante nuevas ventanas de emacs (marcos) con emacsclient. Por supuesto, ya puedes tener un ''servidor'' de emacs en versiones anteriores, pero poder iniciarlo en segundo plano hace que esta sea una solución mucho más agradable "

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


Para compilar automáticamente todo lo que necesita compilar byte cada vez que inicio emacs, pongo lo siguiente después de mis cambios en load-path en la parte superior de mi archivo .emacs :

(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 las reemplacé con autoloads .


Para mis mazos espaciales, el comando es spacemacs/recompile-elpa . El comando byte-recompile-directory no compila ningún archivo.


Puede usar el indicador --batch para recompilar desde la línea de comando.

Para recompilar todo, hazlo

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

o para recompilar un solo archivo como desde un Makefile,

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


Cu 0 Mx byte-recompile-directory

compilará todos los archivos .el en el directorio y en todos los subdirectorios a continuación.

La parte Cu 0 es hacer que no pregunte por cada archivo .el que no tiene una contraparte .elc.