다음은 DOuble CApitals를 단일 자본으로 변환하는 함수입니다. 원래에 추가하는 것이 post-self-insert-hook
좋았지 만 아래는 영광스러운 마이너 모드의 옵션이므로 원하는 경우에만 후크에 추가 할 수 있습니다.
(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)
그리고 부 모드 정의 :
(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)))
이 버전을 사용하여 가치있는 것을 위해 :
- 간단합니다 : 수동 또는 모드 훅에서 전원을 켜거나 끄는 것입니다.
- 키 바인딩을 변경할 필요가 없으므로 다른 기능을 잃지 않습니다.
에 추가해도 post-self-insert-hook
최소한 간단한 벤치마킹에 따르면 오버 헤드가 거의 존재하지 않습니다. 내 컴퓨터에는 다음과 같이 간단하고 간단한 형태와 dcaps-to-scaps
기능을 각각 10,000 회 반복하여 얻을 수 있습니다.
(benchmark-run-compiled 10000 (+ 1 1)) ; => .001 to .003 -ish
(benchmark-run-compiled 10000 (dcaps-to-scaps)) ; => .003 to .006 -ish
예, 1 + 1을 추가하는 것보다 느리지 만 절대적으로는 눈치 채지 못할 것입니다.
looking-at-p
(당신이 필요로하지 않기 때문에 괜찮아요 그 또는 여기에 사용) 모두에 일치하는 데이터를 설정하지 않는다.