Backward-Kill-Word ignoriert Leerzeichen. Gibt es eine andere freundlichere Version?

7

Emacs backward-kill-wordneigt dazu, mehr zu löschen, als ich will.
ZB wenn ich mehrmals auf Löschen drücke:

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

Ich bekomme:

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. 

Ich habe das im 3. Schritt erwartet:

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

Ich möchte wissen: - Gibt es eine Philosophie hinter dem Löschen von mehr als gewünscht?
- Kann ich das Rückwärtslöschwort von emac freundlicher gestalten? Dh weiße Leerzeichen entfernen, aber nicht zu viel abtöten?

BEARBEITEN Ich weiß nicht wirklich, was ich will. Vielleicht machen Sie es mehr wie andere Löschfunktionen wie in Google-Keep oder anderen Textbearbeitungsanwendungen.

edit2
In der Zwischenzeit hat Lawlist seine benutzerdefinierte Funktion korrigiert, die ziemlich gut funktioniert: Geben Sie hier die Linkbeschreibung ein

Leo Ufimtsev
quelle
2
Dies könnte als unklar geschlossen werden. Sie geben nicht an, welches Verhalten Sie möchten. Angeben. backward-kill-wordtut, was es tun soll. Sie können einen anderen Befehl definieren, um "was gewünscht wird" und nicht "zu viel" abzutöten ". Wenn Sie dabei Hilfe benötigen, können Sie das gewünschte Verhalten angeben.
Drew
1
Hier ist ein Link zu meiner eigenen Löschwortfunktion , die Sie möglicherweise an Ihre Bedürfnisse anpassen möchten : stackoverflow.com/a/20456861/2112489 Sie dient nicht zum Speichern der Löschung im Kill-Ring, daher nenne ich sie eher löschen als töten. Es hat nichts mit Helm oder Schlüsselschnur zu tun. Das Verhalten (meiner Meinung nach) entspricht in etwa dem, was verschiedene Textverarbeitungsprogramme im Laufe der Jahre getan haben.
Lawlist
@lawlist yah, das ist mehr oder weniger das, wonach ich gesucht habe, außer dass ich festgestellt habe, dass die Funktion dort nicht umgeht und nicht anfängt, Dinge zu löschen, wenn nachgestellte Leerzeichen vorhanden sind?
Leo Ufimtsev
Emacs Philosophie ist es, dem Benutzer immer einen Schritt voraus zu sein. Sie wissen es also noch nicht.
Politza
@LeoUfimtsev Gibt es etwas, das Sie an der von mir bereitgestellten Lösung nicht mögen?
rekado

Antworten:

4

Das Verhalten von backward-kill-wordhängt von der Definition eines "Wortes" im aktuellen Modus ab. Sie können diese Definition entweder ändern und riskieren, Dinge zu beschädigen, oder Sie können sie ändern kill-word.

backward-kill-wordist nur kill-wordmit einem negativen Argument; kill-wordliegt kill-regionüber dem Bereich, der von Punkt und Position nach dem Laufen überspannt wird (forward-word arg). Ein forward-wordvorübergehender Austausch sollte ausreichen.

Hier bin ich zu ersetzen vorübergehend forward-wordmit forward-same-syntaxdem gewünschten Effekt in zu erreichen backward-kill-word(und kill-wordweil ich wie die Dinge konsequent sein):

(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)

Nun ist das Verhalten wie folgt:

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-|
rekado
quelle
1
Hallo, ich habe das oben genannte versucht, aber wenn ich rückwärts töte, bekomme ich immer noch das alte Verhalten. Ich bin auf Emacs 25.4 mit dem neuesten Org-Modus.
Leo Ufimtsev
@LeoUfimtsev Ich habe gesehen, dass du 25.4 auch woanders erwähnt hast. Meinst du 24,5? Oder 24.4?
Kaushal Modi
Hmm, ich glaube ich bin durcheinander geraten. Ich meinte 25.0.50.4. Und vielleicht vor einem Monat habe ich 25.0.50.3 verwendet, aber jetzt habe ich aktualisiert.
Leo Ufimtsev
@rekado Ich kann das in 24.5.1 nicht zum Laufen bringen. Irgendeine Idee? advice-addWird die Ausführung der Sexp-Retouren nilerwartet?
Lenar Hoyt
1
Es kann sehr gut sein, dass Sie zuerst die ursprüngliche Definition von kill-word
überprüfen