Comment puis-je obliger Emacs à recharger toutes mes définitions que j'ai mises à jour dans .emacs
sans redémarrer Emacs?
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.
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.
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.
Si votre fichier .emacs est ouvert dans la mémoire tampon active:
M-x eval-buffer
M-x load-file
~/.emacs
Ce qui suit devrait le faire ...
M-x load-file
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.
M-: _(load user-init-file)
_
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_M-:
_> _M-x
_
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
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.
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
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")))
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))
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.
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/
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.
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!