El save-some-bufferscomando solicita guardar o ignorar cada archivo modificado, y también proporciona una opción para diferenciar el archivo modificado con el archivo que está visitando.
Me gustaría el mismo comportamiento de kill-buffero kill-this-buffer. Si se modifica el búfer, ya hay un sí / no, pero también me gustaría la opción de ver los diferenciales.
¿Hay una forma integrada de hacer esto, o un punto de extensión apropiado? ¿O debería vincular mi propio comando kill-buffer?
buffers
kill-buffer
glucas
fuente
fuente

defadvice. Esto le permitirá ampliar fácilmente el incorporadokill-buffer.buffer-modified-py llamar al originalkill-bufferpara continuar matando sin otro aviso. Me pregunto si hay una mejor manera, pero podría intentarlo.save-some-buffersdurante varios años y nunca supe que tiene unadifffunción ... ¡Gracias!Respuestas:
La gran pregunta es si desea este comportamiento para
kill-buffersí mismo, lo que significa no solo cuando lo llama de forma interactiva sino para cada uso del mismo en el código Lisp existente, o si lo desea solo para uso interactivo.Asumiré lo último. En ese caso, déjelo
kill-buffersolo, defina su propio comando que haga lo que desee y vuelva a asignar las teclas que normalmente están vinculadaskill-buffera su comando:Para su
my-kill-buffercomando, simplemente verifique desde el principio si el búfer ha sido modificado, y si es así, inicieediffpara ello.Para verificar si se ha modificado, use
buffer-modified-p.Para
ediffque presumiblemente que desee tomar el archivo (es decir, el búfer como salvado) y comparación contra la corriente, tampón modificado. Es posible que necesite tocar un poco para hacer eso, no sé de unediffcomando existente que lo haga.Pero tal vez todo lo que realmente necesitas es algo así
highlight-changes-mode. Vea el manual de Emacs, nodoHighlight Interactively. En otras palabras, quizás todo lo que necesita es invocarhighlight-changes-modesi el búfer ha sido modificado.fuente
diff-buffer-with-filepara producir los diffs. También parece que necesito llamarset-buffer-modified-psi quiero continuar y matar sin que se lo solicite nuevamente desde la implementación nativa.En base a las otras respuestas y comentarios, aquí hay un comando de matar personalizado que brinda la opción de diferenciar un búfer modificado con el archivo que está visitando. He mapeado esto,
C-x C-kpero también podría reasignarkill-buffercomo se sugiere en la respuesta de @ Drew.Usando la misma implementación básica, también podría aconsejar
kill-buffer. Con este enfoque, tiene la opción de ver las diferencias en cualquier lugar quekill-bufferse llame, por ejemplo, al eliminar los búferes marcados de Ibuffer.fuente