backward-kill-word ignora espacios en blanco, ¿hay otra versión más amigable?


7

Emac backward-kill-wordtiende a eliminar más de lo que quiero.
Por ejemplo, cuando presiono eliminar varias veces en esto:

(key-chord "qf" 'helm-org-in-buffer-headings)   ;heading search. |

Yo obtengo:

1. (key-chord "qf" 'helm-org-in-buffer-headings)   ;heading|
2. (key-chord "qf" 'helm-org-in-buffer-headings)   ;|
3. (key-chord "qf" 'helm-org-in-buffer-|   <<< too much deletion. 

Esperaba esto en el tercer paso:

3. (key-chord "qf" 'helm-org-in-buffer-headings)|

Quiero saber: - ¿Existe una filosofía detrás de eliminar más de lo que se quiere?
- ¿Puedo hacer que la palabra emac-backward-delete-word sea más amigable? Es decir, eliminar espacios en blanco, pero no matar "demasiado"?

EDITAR Realmente no sé 'qué' quiero. Quizás lo haga más parecido a otras funciones de eliminación como en google-keep u otras aplicaciones de edición de texto.

edit2
Mientras tanto, lawlist arregló su función personalizada que funciona bastante bien: ingrese la descripción del enlace aquí


2
Esto corre el riesgo de ser cerrado como poco claro. No especifica qué comportamiento desea. Especificar. backward-kill-wordhace lo que se pretende hacer. Puede definir otro comando para hacer "lo que se quiere" y no "matar" demasiado ". Pero si desea ayuda con eso, entonces podría considerar especificar el comportamiento que está buscando.
— Dibujó el

1
Aquí hay un enlace a mi propia función de eliminar palabras, que puede interesarle modificar para que se adapte a sus necesidades: stackoverflow.com/a/20456861/2112489 No está diseñado para almacenar la eliminación en el anillo de cierre, así que lo llamo Eliminar en lugar de matar. No tiene nada que ver con el timón o el cable de la llave. El comportamiento (en mi opinión) se aproxima a lo que varios procesadores de texto han hecho a lo largo de los años.
— leyes

@lawlist yah, esto es más o menos lo que estaba buscando, excepto que encontré que la función allí no se ajusta y no comienza a eliminar cosas si hay espacios en blanco al final.
— Leo Ufimtsev

La filosofía de Emacs es estar siempre un paso por delante del usuario, por lo que todavía no lo sabe.
— politza

@LeoUfimtsev ¿Hay algo que no le guste de la solución que proporcioné?
— rekado

Respuestas:


4

El comportamiento de backward-kill-worddepende de la definición de una "palabra" en el modo actual. Puede cambiar esta definición y arriesgarse a romper cosas o puede modificarla kill-word.

backward-kill-wordes solo kill-wordcon un argumento negativo; kill-wordestá kill-regionsobre la región dividida por punto y la posición después de correr (forward-word arg). Reemplazar forward-wordtemporalmente debería hacer el truco.

Aquí estoy reemplazando temporalmente forward-wordcon forward-same-syntaxpara lograr el efecto deseado en backward-kill-word(y kill-wordporque me gusta que las cosas sean consistentes):

(defun my/kill-word-advice (orig-fun &rest args)
  "Replace forward-word with forward-same-syntax."
  (cl-letf (((symbol-function 'forward-word) #'forward-same-syntax))
    (apply orig-fun args)))
(advice-add 'kill-word :around #'my/kill-word-advice)

Ahora el comportamiento es este:

1. (key-chord "qf" 'helm-org-in-buffer-headings)   ;heading|
2. (key-chord "qf" 'helm-org-in-buffer-headings)   ;|
3. (key-chord "qf" 'helm-org-in-buffer-headings)   |
4. (key-chord "qf" 'helm-org-in-buffer-headings)|
5. (key-chord "qf" 'helm-org-in-buffer-headings|
5. (key-chord "qf" 'helm-org-in-buffer-|

1
Hola, probé lo anterior, pero cuando corro hacia atrás, mato la palabra, todavía obtengo el viejo comportamiento. Estoy en Emacs 25.4 con el nuevo modo org. ..
— Leo Ufimtsev

@LeoUfimtsev Te vi mencionar 25.4 en otro lugar también. ¿Te refieres a 24.5? O 24.4?
— Kaushal Modi

Hmm, creo que me confundí. Me refería a 25.0.50.4. Y quizás hace un mes usé 25.0.50.3, pero ahora actualicé.
— Leo Ufimtsev

@rekado No puedo hacer que esto funcione en 24.5.1. ¿Alguna idea? Ejecutando los advice-addretornos del sexp nil, ¿se espera eso?
— Lenar Hoyt

1
Es muy posible que primero tenga que evaluar la definición original de kill-wordantes de aplicar el consejo :( No sé por qué es así. Preguntará en la lista de correo.
— rekado
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.