Comment puis-je recharger.emacs après modification?
Comment puis-je obtenir Emacs pour recharger toutes mes définitions que j'ai mises à jour dans .emacs
sans redémarrer Emacs?
18 réponses
vous pouvez utiliser la commande load-file ( M-x load-file
, puis appuyer deux fois sur return pour accepter le nom de fichier par défaut, qui est le fichier courant en cours d'édition).
vous pouvez également déplacer le point à la fin de n'importe quel sexp et appuyez sur C-x C-e pour exécuter juste que sexp. Habituellement, il n'est pas nécessaire de recharger le fichier en entier si vous changez juste une ligne ou deux.
très étrange que le très commode
M-x eval-buffer
n'est pas mentionné ici.
il évalue immédiatement tout le code dans le buffer, c'est la méthode la plus rapide, si votre .emacs
est idempotent.
vous pouvez simplement réévaluer la région modifiée. Marque de la région de ~/.emacs que vous avez changé, puis utilisez M-x eval-region RET
. C'est souvent plus sûr que de réévaluer l'ensemble du fichier car il est facile d'écrire un .emacs fichier qui ne fonctionne pas tout à fait bien après avoir été chargé deux fois.
Si vous avez votre .ouvrir le fichier emacs dans le tampon actuellement actif:
M-x eval-buffer
D'autres ont déjà répondu à votre question comme indiqué, mais je trouve que je veux habituellement exécuter les lignes que je viens d'écrire. pour cela, Ctrl Alt x dans le lisp fonctionne très bien.
je suggère que vous ne le fassiez pas, d'abord. Au lieu de cela, lancez une nouvelle session emacs et testez tous les changements que vous avez faits pour voir s'ils fonctionnent correctement. La raison de le faire de cette façon est d'éviter de vous laisser dans un état où vous avez un inopérable .emacs file, qui ne charge pas ou ne charge pas correctement. Si vous faites de votre édition dans la session d'origine, et tous vos tests dans une nouvelle session, vous aurez toujours quelque chose de fiable pour commenter code incriminé.
lorsque vous êtes enfin satisfait de vos changements, alors allez-y et utilisez l'une des autres réponses pour recharger. Ma préférence personnelle est de eval
juste la section que vous avez ajoutée/changé, et pour ce faire juste mettre en évidence la région de code ajouté/changé et appeler M-x eval-region
. Faire cela minimise le code qui est évalué, minimisant tous les effets secondaires involontaires, comme le souligne luapyad.
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
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] se traduit par alt-insert sur mon clavier.
Mets ça dans la tienne .fichier emacs:
(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
Définir dans votre fichier init et de les appeler par M-x recharger-utilisateur-init-file
(defun reload-user-init-file()
(interactive)
(load-file user-init-file))
solution
M-: (la charge de l'utilisateur-init-file)
notes
- tapez-le 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 plus court, plus âgés, et non interactif version de(load-file)
; ce n'est pas une commande emacs (à taper dans M-x ) mais une simple fonction elisp
conclusion
M-:
> M-x
bien que M-x eval-buffer
fonctionne, vous pouvez rencontrer des problèmes avec des toggles et d'autres choses similaires. Une meilleure approche pourrait être de "marquer" ou de mettre en évidence ce qui est nouveau dans votre .emacs (ou même scratch buffer si vous venez de déconner) et puis M-x eval-region
. Espérons que cette aide.
voici un moyen rapide et facile de tester rapidement votre configuration. Vous pouvez également utiliser C-x C-e
à la fin de spécifique lisp 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 interactive de Lisp compilée.
il est lié à C-x c-e.
(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)
evaluer sexp avant le point; valeur d'impression dans la zone d'écho. De façon interactive, avec l'argument de préfixe, imprimez la sortie dans le tampon courant.
normalement, cette fonction tronque la sortie longue selon la valeur les variables ‘eval-expression-print-longueur’ et ‘eval-expression-impression-niveau". Avec un argument de préfixe de zéro, cependant, il n'existe pas de troncature. Un tel argument de préfixe aussi fait que les entiers sont imprimés dans plusieurs formats supplémentaires (octal, hexadécimal, et le caractère).
Si " eval-expression-debug-sur-l'erreur est non-nul, ce qui est la valeur par défaut, cette commande arrange toutes les erreurs pour entrer dans le débogueur.
à côté de commandes comme m-x eval-buffer ou m-x load-file vous pouvez redémarrer un emacs frais à partir de la ligne de commande:
emacs -q --load "init.el"
exemple d'utilisation stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs /
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)
Espère que cela va vous aider!
si vous avez un shell ouvert dans Emacs, vous pouvez aussi faire:
. ~/.emacs
peut enregistrer quelques touches.