2009-03-20 23 views
52

A menudo, cuando cambio de ramas en git, si los archivos están abiertos en emacs, entonces emacs pregunta si deseo revertirlos (ya que cree que han cambiado en el disco) aunque el contenido sea idéntico.¿Cómo puedo hacer para que Emacs revierte todos los búferes sin cambios cuando se cambian las ramas en git?

En primer lugar, me gustaría encontrar la manera de que emacs no me pregunte si los contenidos del disco son idénticos a los del buffer.

En segundo lugar, me gustaría un comando que revierte (sin consulta) todos mis búferes abiertos que no tienen cambios no guardados, y me preguntó sobre aquellos que tienen cambios no guardados.

Como alternativa, estaría abierto a sugerencias sobre otras soluciones, formas de trabajar, etc. Podría intentarlo. Estoy bastante feliz escribiendo emacs-lisp si la gente puede darme consejos sobre dónde empezar.

PD Estoy usando Aquamacs en OSX si eso es importante.

Editar:

Bueno, he encontrado el paquete revbuffs a ser más o menos lo que necesito. Sin duda lo suficiente como para evitar que intente escribir y escribir algo nuevo. (Mapeé revbuffs a Cmd-R que funciona muy bien. Algo similar a Cmd-R en otras aplicaciones de Mac).

El modo de reversión automática global habría sido una solución perfectamente perfecta, y desearía poder elegir dos respuestas. Prefiero los revffffs simplemente por un sentimiento posiblemente irracional de querer controlar lo que sucede.

Supuse que si accedía a git desde dentro de emacs, probablemente podría manejarse más fácilmente, pero actualmente prefiero acceder a git a través de la línea de comandos. (No he estado usando emacs el tiempo suficiente para convertirlo en mi sistema operativo). Voy a investigar la magia un poco más a fondo sin embargo.

Edit2:

He estado usando Magit desde hace un año y lo recomiendo encarecidamente para tratar con git desde Emacs. Sin embargo, sigo usando revffffs cada vez que hago una rebase fuera de emacs.

+1

sé que esto es antiguo, pero me gusta el razonamiento de Singletoned, y tener un poco de tenedor revbufs en github https://github.com/capitaomorte/revbufs –

Respuesta

17

Prueba el revbufs package:

revbufs.el es un pequeño paquete de Emacs que revierte de forma segura sus memorias intermedias cuando haya archivos que está siendo editado tanto en Emacs y a través de herramientas externas (por ejemplo, generadores de código como Jomtool) ...

+0

alguna manera de hacer esto automático? Como Singletoned menciona en su edición, debe vincular esto a una clave. – toolbear

11

El paquete de Magit lo hace automáticamente, cuando activa magit-ionotify-mode (inotify necesita emacs 24.4 en Linux). Su descripción puede encontrar here.

40

Quizás le gustaría tener el modo de reversión automática global. Intente ejecutar global-auto-revert-mode y, si lo desea, puede agregar (global-auto-revert-mode) a su archivo ~/.emacs.

Cuestiones relacionadas