読者です 読者をやめる 読者になる 読者になる

Emacsでカーソル前の単語を連続的に大文字化する

emacs

プログラムを書いているとグローバル変数やマクロなどは大文字で入力することが多いですが、長ったらしい名前にすることも多いので打つのが苦痛になることがあります。解決法としては小文字で打ってしまって M--3 M-u のように負の prefix argument をつけて大文字化(M-u)するというのがありますがこれも面倒くさいです。

(defvar *upcase-word-backward-counter* 1)

(defun upcase-word-backward (arg)
  (interactive "p")
    (if (equal last-command 'upcase-word-backward)
      (progn
        (upcase-word (- *upcase-word-backward-counter*))
        (incf *upcase-word-backward-counter*))
      (setq *upcase-word-backward-counter* arg)
      (upcase-word (- arg))
      (incf *upcase-word-backward-counter*)))

(global-set-key (kbd "C-t") 'upcase-word-backward)

C-t を連打すると後ろ向きに1単語ずつ大文字化していきます。 prefix argument も受付けるので例えば C-u C-t とすると4単語大文字化します。

注意点
C-t でなくても何か適当なキーにバインドして使うこと。関数の中で last-command をチェックしているためです。