web-dev-qa-db-fra.com

Comment puis-je recharger .emacs après l'avoir changé?

Comment puis-je obliger Emacs à recharger toutes mes définitions que j'ai mises à jour dans .emacs sans redémarrer Emacs?

357
Zubair

Vous pouvez utiliser la commande load-file (M-x load-file, puis appuyez deux fois sur la touche retour pour accepter le nom de fichier par défaut, qui est le fichier en cours de modification).

Vous pouvez également déplacer le point à la fin de sexp et appuyer sur C-xC-e d'exécuter juste ce sexp. Habituellement, il n'est pas nécessaire de recharger tout le fichier si vous ne modifiez qu'une ligne ou deux.

323
Bryan Oakley

Très étrange que le très pratique

M-x eval-buffer

n'est pas mentionné ici.

Il évalue immédiatement tout le code dans le tampon, sa méthode la plus rapide, si votre .emacs est idempotent.

142
Peter

Vous pouvez généralement simplement réévaluer la région modifiée. Marquez la région de ~/.emacs que vous avez modifiée, puis utilisez M-x eval-region RET. Cela est souvent plus sûr que de réévaluer l'intégralité du fichier car il est facile d'écrire un fichier .emacs qui ne fonctionne pas correctement après avoir été chargé deux fois.

42
Dale Hagglund

Si votre fichier .emacs est ouvert dans la mémoire tampon active:

M-x eval-buffer
37
Dominic Rodger
M-x load-file
~/.emacs
27
digitaldreamer

Ce qui suit devrait le faire ...

M-x load-file
13
Pace

D'autres ont déjà répondu à votre question comme indiqué, mais je trouve que je veux généralement exécuter les lignes que je viens d'écrire. pour ça, CtrlAltx dans le LISP fonctionne très bien.

11
Bahbar

solution

M-: _(load user-init-file)_


remarques

  • vous le tapez dans _Eval:_ Invite (y compris les parenthèses)
  • user-init-file est une variable contenant la valeur _~/.emacs_ (pointant vers le chemin du fichier de configuration) par défaut
  • (load) est une version plus courte, ancienne et non interactive de (load-file) ; ce n'est pas une commande emacs (à taper dans M-x) mais une simple fonction elisp

conclusion

_M-:_> _M-x_

9
user4104817

Raccourci clavier:

(defun reload-init-file ()
  (interactive)
  (load-file user-init-file))

(global-set-key (kbd "C-c C-l") 'reload-init-file)    ; Reload .emacs file
9
Matt Kneiser

Je suggère que vous ne le fassiez pas, au début. Au lieu de cela, démarrez une nouvelle session emacs et testez toutes les modifications que vous avez apportées pour voir si elles fonctionnent correctement. La raison pour ce faire est d'éviter de vous laisser dans un état où vous avez un fichier .emacs inutilisable, qui ne se charge pas ou ne se charge pas correctement. Si vous effectuez toutes vos modifications dans la session d'origine et tous vos tests dans une nouvelle session, vous aurez toujours quelque chose de fiable pour commenter le code fautif.

Lorsque vous êtes enfin satisfait de vos modifications, continuez et utilisez l'une des autres réponses pour recharger. Ma préférence personnelle est de eval uniquement la section que vous avez ajoutée/modifiée, et pour ce faire, mettez simplement en surbrillance la région du code ajouté/modifié et appelez M-x eval-region. Faire cela minimise le code évalué, minimisant ainsi les effets secondaires non intentionnels, comme le fait remarquer luapyad.

7
Joe Casadonte
C-x C-e ;; current line
M-x eval-region ;; region
M-x eval-buffer ;; whole buffer
M-x load-file ~/.emacs.d/init.el
6
WisdomFusion

Je suis actuellement sur Ubuntu 15.04; J'aime définir une clé pour cela.
[M-insert] traduit alt-insert sur mon clavier.
Mettez ceci dans votre fichier .emacs:

(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
4
AAAfarmclub

Définissez-le dans votre fichier init et appelez par M-x reload-user-init-file

(defun reload-user-init-file()
  (interactive)
  (load-file user-init-file))
3
jacekmigacz

Bien que M-x eval-buffer fonctionne, vous pouvez rencontrer des problèmes avec les bascules et autres choses similaires. Une meilleure approche pourrait être de "marquer" ou de mettre en surbrillance les nouveautés de votre .emacs (ou même du tampon de travail si vous vous contentez de déconner), puis de M-x eval-region. J'espère que cela t'aides.

2
user1026139

A côté de commandes telles que Mx eval-buffer ou Mx fichier de chargement , vous pouvez redémarrez un nouvel Emacs à partir de la ligne de commande:

emacs -q --load "init.el"

Exemple d'utilisation stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/

2
Picaud Vincent

Voici un moyen rapide et facile de tester rapidement votre configuration. Vous pouvez également utiliser C-x C-e à la fin d'un LISP spécifique pour exécuter certaines fonctions individuellement.

C-x C-e exécute la commande eval-last-sexp (trouvée dans global-map), qui est une fonction LISP compilée interactive.

Il est lié à C-x C-e.

(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)

Évaluer sexp avant le point; imprimer la valeur dans la zone d'écho. De manière interactive, avec l’argument préfixe, affiche le résultat dans le tampon courant.

Normalement, cette fonction tronque les sorties longues en fonction de la valeur des variables ‘eval-expression-print-length’ et ‘eval-expression-print-level’. Avec un argument de préfixe de zéro, cependant, il n'y a pas une telle troncature. Un tel argument de préfixe entraîne également l'impression des entiers dans plusieurs formats supplémentaires (octal, hexadécimal et caractère).

Si "eval-expression-debug-on-error" n’est pas nil (valeur par défaut), cette commande permet à toutes les erreurs d’entrer dans le débogueur.

2

Vous pouvez définir la liaison de clé pour emacs comme ceci

;; reload emacs configuration
(defun reload-init-file ()
  (interactive)
  (load-file "~/.emacs"))

(global-set-key (kbd "C-c r") 'reload-init-file) 

J'espère que cela aidera!

1
Vinh Trieu