Recientemente agregué la función Emacs (delete-trailing-whitespace)
a mi 'before-save-hook
para algunos modos de programación, pero me resulta bastante frustrante que elimine los espacios en blanco de la línea que estoy editando actualmente. ¿Alguna sugerencia sobre cómo solucionar este problema?emacs delete-trailing-whitespace excepto la línea actual
Respuesta
Desde delete-trailing-whitespace
aspectos estrechamiento, una solución es reducir la memoria intermedia a la parte antes de la línea actual y llamarlo, entonces estrecha a la parte después de la línea actual y llamar de nuevo:
(defun delete-trailing-whitespace-except-current-line()
(interactive)
(let ((begin (line-beginning-position))
(end (line-end-position)))
(save-excursion
(when (< (point-min) begin)
(save-restriction
(narrow-to-region (point-min) (1- begin))
(delete-trailing-whitespace)))
(when (> (point-max) end)
(save-restriction
(narrow-to-region (1+ end) (point-max))
(delete-trailing-whitespace))))))
Ponga esta función en su before-save-hook
en lugar de delete-trailing-whitespace
.
Funciona perfectamente, gracias! – pariser
Esta envoltura para delete-trailing-whitespace
se puede utilizar para hacer lo que quiera:
(defun delete-trailing-whitespace-except-current-line()
"do delete-trailing-whitespace, except preserve whitespace of current line"
(interactive)
(let ((current-line (buffer-substring (line-beginning-position) (line-end-position)))
(backward (- (line-end-position) (point))))
(delete-trailing-whitespace)
(when (not (string-equal (buffer-substring (line-beginning-position) (line-end-position))
current-line))
(delete-region (line-beginning-position) (line-end-position))
(insert current-line)
(backward-char backward))))
me encontré con el mismo problema, y descubrí que ws-butler resuelve perfectamente ella. No es un simple código de ejemplo de configuración:
;; autoload ws-butler on file open
(add-hook 'find-file-hook #'ws-butler-global-mode)
(setq require-final-newline t)
Simplemente tengo un envoltorio para hacer dos llamadas a `delete-trailing-white-space ':
(defun modi/delete-trailing-whitespace-buffer()
"Delete trailing whitespace in the whole buffer, except on the current line.
The current line exception is because we do want to remove any whitespace
on the current line on saving the file (`before-save-hook') while we are
in-between typing something.
Do not do anything if `do-not-delete-trailing-whitespace' is non-nil."
(interactive)
(when (not (bound-and-true-p do-not-delete-trailing-whitespace))
(delete-trailing-whitespace (point-min) (line-beginning-position))
(delete-trailing-whitespace (line-end-position) (point-max))))
(add-hook 'before-save-hook #'modi/delete-trailing-whitespace-buffer)
- 1. emacs: resalte la línea actual subrayándolo
- 2. ¿Cómo puedo eliminar la línea actual en Emacs?
- 3. scp recursivo, excepto el directorio actual
- 4. emacs cambia la línea predeterminada que termina
- 5. Cerrar todos los buffers además del actual en Emacs
- 6. Resaltar la línea actual en TextMate 2
- 7. SQL Management Studio - Ejecute la línea actual
- 8. VIM Resalte toda la línea actual
- 9. eliminar línea hacia atrás (Emacs)
- 10. Emacs: sistema de codificación del búfer actual
- 11. Rails ActiveRecord: Buscar todos los usuarios excepto el usuario actual
- 12. Eliminar la expresión-s actual (no atómica) en Emacs
- 13. números de línea relativa en Emacs
- 14. Resalte línea actual de RichTextBox
- 15. Borrar la línea de la consola actual impresa
- 16. Actualización de la línea actual en la consola VB
- 17. Emacs: línea de modo hl conflictos con iluminación Frase
- 18. ¿Cómo imponer la longitud máxima de línea en Emacs?
- 19. Emacs: agregar nombre de host a la línea de modo?
- 20. Ajuste de línea dentro de la compilación * de emacs * buffer
- 21. Emacs: alinea el texto, pero no toda la línea?
- 22. ¿Cómo puedo ocultar la línea de estado de emacs?
- 23. SELECCIONAR * EXCEPTO
- 24. Intellij Nueva línea en el atajo de línea actual
- 25. Expertos de Emacs: ¿es posible conectar la herramienta de línea de comandos f # intellisense con emacs?
- 26. seleccione una línea para moverlo con emacs
- 27. Establecer el número de línea a una variable en Emacs
- 28. número de línea actual en Lua
- 29. ¿Cómo obtener la línea actual de archivos abiertos en python?
- 30. Obteniendo la línea de código actual en Ruby
hay que decir que no entiendo por qué desea conservar espacios en blanco al final de la línea actual. – offby1
La justificación: cuando estoy en el medio de editar un archivo, guardo mi documento de forma compulsiva. Si empiezo a escribir "print" y luego guardo mi buffer, la línea se contrae para "imprimir" y el cursor retrocede, ¡forzándome a escribir otro espacio! – pariser