Je suis conscient de C-x C-e
ce qui est eval-last-sexp
et M-x eval-buffer
, mais ceux-ci ne sont pas toujours suffisants pour détecter tous les changements. Parfois, vous devez fermer les tampons qui sont dans les modes dont la configuration a été modifiée, et d'autres fois, vous devez redémarrer complètement emacs. Existe-t-il un moyen plus général de gérer ce problème? Sinon, existe-t-il un moyen de redémarrer emacs sans perdre les tampons ouverts existants et l'historique interactif?
27
Réponses:
Non, il n'est pas possible de recharger la configuration modifiée et de faire en sorte qu'Emacs se comporte comme si ces modifications étaient déjà en place lors du chargement d'Emacs. En bref, les packages Emacs ont trop de liberté pour que cela soit possible.
Vous mentionnez que certains modes majeurs ne détectent pas les modifications de configuration. Une raison probable à cela est que l'activation du mode définit certaines variables locales du tampon en fonction des valeurs actuelles de certaines options. Sans réactiver un tel mode dans chaque tampon qui l'utilise, toutes les modifications ne seront pas prises en compte. Et même alors, il est tout à fait possible que certaines choses restent inchangées. Les chances de ce fonctionnement sont plus élevées lorsque les options sont personnalisées à l'aide d'un
custom-set-variables
formulaire, mais cela doit être implémenté explicitement pour chaque option. Et jusqu'à présent, nous n'avons parlé que des principaux modes et de leurs options ...Vous pouvez essayer d'implémenter une commande pour réactiver le mode principal de chaque tampon. Mais il est peu probable que tous les changements soient activés, et pire encore, cela désactiverait tous les modes mineurs que vous avez activés manuellement et perdrait toutes sortes d'autres états.
Pour cette raison, je recommanderais même de ne pas utiliser
eval-buffer
votre fichier init pour récupérer autant de modifications que possible. Évaluez les paramètres modifiés individuellement à l'aideeval-last-sexp
et si cela ne fonctionne pas, vous devez redémarrer Emacs.Comment l'état peut être préservé lorsque Emacs est fermé est une question différente qui doit être posée séparément.
la source
L'appel
normal-mode
est un moyen utile de relancer tous les modes pour un tampon donné, si vous avez apporté des modifications à ceux-ci ou à leurs hooks associés.Vous pouvez également utiliser
revert-buffer
(qui appellenormal-mode
), ce qui revient à recharger le fichier sans supprimer l'historique d'annulation.(Vous pouvez également recharger un fichier C-xC-v, mais que vous jetez votre histoire undo).
En M-x
ibuffer
tapant les majuscules Vrétablit tous les tampons marqués, tandis que les majuscules Eet Wvous permettent d'évaluer l'élisp arbitraire pour tous les tampons marqués.la source