¿Hay alguna manera fácil de vaciar toda la salida en el shellbúfer? Desde hace poco (creo que Emacs 24.4 ya tiene esto) los *shell*buffers no son editables, se comportan de manera similar a cómo se comportaría un terminal típico, es decir, solo le permite agregar texto al final o vaciar la última salida, pero no puede agregue texto en cualquier lugar o elimine parte de él arbitrariamente. Parece que me falta algo importante sobre esta mejora (?). Realmente lo hace más molesto. Busqué en los documentos los buffers *shell*y *Messages*, pero no pude encontrar una mención de la pregunta.
Además de la pregunta original: ¿cuál es el punto de este cambio? Para mí, esto no parece una mejora en absoluto, por lo tanto, a menos que haya "una trampa", me gustaría configurarlo como lectura-escritura como predeterminado.
Estoy hablando de Emacs 24.4 , 25.0.50.1, por supuesto.
fuente

Messagesser de solo lectura ahora, pero no veo cómo eso se relaciona con los buffers de shell.shellbúfer @Malabarba también solía ser completamente editable. Es decir, puede eliminar o agregar texto en cualquier momento que desee, mientras que ahora solo puede agregar texto al final, y no puede eliminarlo en ningún otro lugar también.*Messages*se comporta de la misma manera.Respuestas:
(erase-buffer)no funcionará en las memorias intermedias de impresión y shell si son de solo lectura.Aquí está el defun que uso con bastante frecuencia para eliminar los búferes cascarones:
Quizás pueda vincular esto
s-ken sus modos relevantes para imitar el comportamiento de borrado de Terminal.app de OSX.Actualización 11/2016
En algún lugar del desarrollo de Emacs 25 (y también en mi última compilación que es "26.0.50.1"),
(comint-clear-buffer)se agregó acomint-mode, que es una versión más concisa de mi defun personalizado. Aquí está la fuente de referencia:Esta solución integrada también funciona si tiene
(setq comint-prompt-read-only t).fuente
M-x shellentonces: SM-x erase-bufferfunciona perfectamente en un búfer de modo Shell en el tronco de Emacs, y no veo ninguna razón por la que no debería funcionar también en 24.4.(erase-buffer)no me funciona personalmente. Tengo(setq comint-prompt-read-only t)en mi configuración, que me parece útil para no golpear el mensaje y, por lo tanto,(erase-buffer)me ladra.Puede limpiar el
*Messages*búfer de la misma manera que siempre, con elkill-buffercomando. La próxima vez que se señale un mensaje, el búfer se volverá a crear.La razón por la que este búfer es de solo lectura ahora, es porque se le ha otorgado su propio modo mayor , que hereda de
special-mode, que es de solo lectura. Las ventajas detrás de eso son varias.special-modeestá diseñado para leer, por lo que tiene varias combinaciones de teclas que son muy convenientes para los buffers que no están destinados a ser editados.No estoy seguro de qué
*shell*tiene que ver con nada. Pero si quieres borrarlo,M-xerase-bufferdeberías hacerlo.fuente