web-dev-qa-db-fra.com

Comment puis-je compiler tout dans mon répertoire .emacs.d?

J'ai décidé de vérifier Emacs et je l'ai beaucoup aimé. Maintenant, j'utilise le Emacs Starter Kit , qui fournit en quelque sorte de meilleurs paramètres par défaut et quelques belles personnalisations pour l'installation par défaut d'Emacs.

Je l'ai un peu personnalisé, ajouté quelques trucs comme yasnippet , thèmes de couleur , non lié , et d'autres trucs. J'ai mis en place un référentiel github où je conserve toutes les personnalisations afin que je puisse y accéder à partir de plusieurs endroits ou en cas de problème et que je perds mon répertoire .emacs.d.

Tout cela est très agréable, mais il y a un problème: Emacs prend environ 1-2 secondes à charger. AFAIK Je peux compiler des fichiers .el individuels avec M-x byte-compile-file en .elc, et cela fonctionne. Mais il y a beaucoup de fichiers .el, et je me demande s'il existe un moyen de les compiler tous avec une simple commande ou quelque chose, pour accélérer le chargement d'Emacs. Mon Emacs n'est pas toujours ouvert, et je l'ouvre et le ferme assez fréquemment, surtout après l'avoir configuré comme éditeur par défaut pour la commande d'édition dans Total Commander pour s'y habituer plus rapidement (ouais, windows xp ici).

Ma version Emacs est 22.3. Et oui, l'installation Emacs par défaut sans aucune personnalisation se déclenche instantanément.

Je ne sais pas quelle version est préférée lors du chargement, celle .el ou compilée .elc par la manière O.o

Donc, y a-t-il une commande elisp ou un commutateur de ligne de commande Emacs pour que tout Emacs compile les octets dans le répertoire .emacs.d?

129
Mikka

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

compilera tous les fichiers .el dans le répertoire et dans tous les sous-répertoires ci-dessous.

Le C-u 0 partie est de ne pas demander à propos de chaque fichier .el qui n'a pas de contrepartie .elc.

201
Laurynas Biveinis

Pour compiler automatiquement tout ce qui nécessite une compilation d'octets chaque fois que je démarre emacs, je mets ce qui suit après mes modifications sur load-path en haut de mon .emacs fichier:

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

Étonnamment, cela n'ajoute pas grand-chose à mon temps de démarrage (sauf si quelque chose doit être compilé).

Pour accélérer mes emacs, j'ai d'abord identifié les parties lentes en utilisant profile-dotemacs.el puis les ai remplacées par autoloads .

44
Richard Hansen

Vous pouvez utiliser le --batch drapeau à recompiler à partir de la ligne de commande.

Pour tout recompiler, faites

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

ou pour recompiler un seul fichier à partir d'un Makefile,

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

Cela oscille un peu avec la question, mais pour résoudre le problème du chargement lent, vous pouvez utiliser la nouvelle fonctionnalité démon dans Emacs 23.

"Si vous avez beaucoup de packages de support, le démarrage d'emacs peut être un peu lent. Cependant, emacs 23 apporte emacs --daemon, qui vous permet de démarrer emacs en arrière-plan (par exemple lorsque vous vous connectez). Vous pouvez instantanément afficher de nouvelles fenêtres (cadres) emacs avec emacsclient. Bien sûr, vous pourriez déjà avoir un "serveur" emacs dans les anciennes versions, mais pouvoir le démarrer en arrière-plan en fait une solution beaucoup plus agréable "

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

17
mwilliams

Pour mon utilisation de spacemacs, la commande est spacemacs/recompile-elpa. La commande byte-recompile-directory ne compile aucun fichier.

2
Yu Shen