Hier ist eine Funktion, die doppelte Großbuchstaben in einfache Großbuchstaben konvertiert. Ich hatte ursprünglich vorgeschlagen, es hinzuzufügen post-self-insert-hook
, aber unten ist eine Option für einen verherrlichten Nebenmodus, so dass Sie diesen Haken nur dann hinzufügen, wenn Sie es wirklich wollen:
(defun dcaps-to-scaps ()
"Convert word in DOuble CApitals to Single Capitals."
(interactive)
(and (= ?w (char-syntax (char-before)))
(save-excursion
(and (if (called-interactively-p)
(skip-syntax-backward "w")
(= -3 (skip-syntax-backward "w")))
(let (case-fold-search)
(looking-at "\\b[[:upper:]]\\{2\\}[[:lower:]]"))
(capitalize-word 1)))))
(add-hook 'post-self-insert-hook #'dcaps-to-scaps nil 'local)
Und die Definition des Nebenmodus:
(define-minor-mode dubcaps-mode
"Toggle `dubcaps-mode'. Converts words in DOuble CApitals to
Single Capitals as you type."
:init-value nil
:lighter (" DC")
(if dubcaps-mode
(add-hook 'post-self-insert-hook #'dcaps-to-scaps nil 'local)
(remove-hook 'post-self-insert-hook #'dcaps-to-scaps 'local)))
Für was es sich lohnt, mit dieser Version:
- Es ist ganz einfach: Schalten Sie es einfach manuell oder in einem Modus-Hook ein / aus.
- erfordert keine Änderungen an den Tastenkombinationen, sodass Sie keine andere Funktionalität verlieren.
Selbst wenn Sie es hinzufügen, post-self-insert-hook
ist der Overhead fast nicht vorhanden, zumindest nach einem einfachen Benchmarking. Auf meiner Maschine erhalte ich mit 10.000 Wiederholungen jeweils eine lächerlich einfache Form und die dcaps-to-scaps
Funktion:
(benchmark-run-compiled 10000 (+ 1 1)) ; => .001 to .003 -ish
(benchmark-run-compiled 10000 (dcaps-to-scaps)) ; => .003 to .006 -ish
Also, ja, es ist langsamer als das Hinzufügen von 1 + 1, aber in absoluten Zahlen werden Sie es nie bemerken.
looking-at-p
könntest verwenden , was die Match-Daten überhaupt nicht setzt (das ist in Ordnung, da du sie hier nicht brauchst oder verwendest).