¿Cuál es la forma más rápida de volver a cargar mi archivo .emacs cuando hago cambios para que todos mis búferes afectados recojan esos cambios?

27

Soy consciente de C-x C-ecuál es eval-last-sexpy M-x eval-buffer, pero estos no siempre son suficientes para recoger todos los cambios. A veces necesita cerrar realmente los búferes que están en los modos a los que se les ha cambiado su configuración, y otras veces necesita reiniciar completamente emacs. ¿Hay una forma más general de manejar este problema? Alternativamente, ¿hay alguna manera de reiniciar emacs sin perder los búferes abiertos existentes y el historial interactivo?

b4hand
fuente
Como @ b4hand declaró originalmente, esta es esencialmente una pregunta basada en una de las preguntas de la propuesta: area51.stackexchange.com/proposals/76571/emacs/76588#76588
tarsius

Respuestas:

16

No, no es posible volver a cargar la configuración modificada y hacer que Emacs se comporte como si esas modificaciones ya estuvieran en su lugar cuando se cargó Emacs. En resumen, los paquetes de Emacs tienen demasiada libertad para que esto sea factible.

Usted menciona que algunos modos principales no recogen los cambios de configuración. Una razón probable para esto es que habilitar el modo establece algunas variables locales de búfer basadas en los valores actuales de ciertas opciones. Sin volver a habilitar dicho modo en cada búfer que lo usa, no se recogerán todos los cambios. Y aun así, es muy posible que algunas cosas permanezcan sin cambios. Las probabilidades de que esto funcione son mayores cuando las opciones se personalizan mediante un custom-set-variablesformulario, pero esto debe implementarse explícitamente para todas y cada una de las opciones. Y hasta ahora solo hemos hablado sobre los modos principales y sus opciones ...

Podría intentar implementar un comando para volver a habilitar el modo principal de cada búfer. Pero es poco probable que habilite completamente todos los cambios y, lo que es peor, deshabilite todos los modos menores que haya habilitado manualmente y pierda todo tipo de otro estado.

Por esa razón, incluso recomendaría no eval-bufferutilizar su archivo de inicio para recoger tantos cambios como sea posible. Evalúe las configuraciones cambiadas individualmente usando eval-last-sexpy si eso no funciona, entonces debe reiniciar Emacs.

Cómo se puede preservar el estado cuando Emacs está cerrado es una pregunta diferente que debe hacerse por separado.

tarsius
fuente
He hecho la pregunta de reinicio aquí: emacs.stackexchange.com/questions/639/…
b4hand
3

A veces es necesario cerrar los buffers que están en los modos a los que se les ha cambiado la configuración.

Llamar normal-modees una forma útil de volver a activar todos los modos para un búfer dado, si ha realizado cambios en esos o sus ganchos asociados.

También puede usar revert-buffer(que llama normal-mode), que es como volver a cargar el archivo sin descartar el historial de deshacer.

(También puede volver a cargar un archivo con C-xC-v, pero que va a descartar su historial de deshacer.)

En M-x ibufferescribir en mayúsculas Vrevierte Todos los tampones marcados, mientras que en mayúsculas Ey Wque permitirá evaluar elisp arbitrario para todos los tampones marcados.

phils
fuente