Quel est le moyen le plus rapide de recharger mon fichier .emacs lorsque j'apporte des modifications afin que tous mes tampons concernés récupèrent ces modifications?

27

Je suis conscient de C-x C-ece qui est eval-last-sexpet 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?

b4hand
la source
Comme @ b4hand a déclaré à l'origine, il s'agit essentiellement d'une question basée sur l'une des questions de la proposition: area51.stackexchange.com/proposals/76571/emacs/76588#76588
tarsius

Réponses:

16

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-variablesformulaire, 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-buffervotre fichier init pour récupérer autant de modifications que possible. Évaluez les paramètres modifiés individuellement à l'aide eval-last-sexpet 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.

tarse
la source
J'ai posé la question de redémarrage ici: emacs.stackexchange.com/questions/639/…
b4hand
3

Parfois, vous devez réellement fermer les tampons qui sont dans les modes dont la configuration a été modifiée

L'appel normal-modeest 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 appelle normal-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 ibuffertapant 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.

phils
la source