Emacs: バッファ内の予約語をすべて大文字にする

ひさしぶりに Emacs Lisp 書きました。ググりながら10分くらいで書いた適当なもの。

たとえば、全部小文字で書いたSQLを後から予約語だけ大文字にしたい、みたいなときに使う想定です。

フェイスが font-lock-keyword-face になっている箇所を大文字にしているので、SQL の場合は sql-mode になっている状態で実行します。

(progn
  (goto-char (point-min))
  (while (not (eobp))
    (let ((faces-at-point (get-char-property (point) 'face)))
      (when (eq 'font-lock-keyword-face faces-at-point)
        (upcase-word 1))
      (forward-char 1))))