全角文字と半角文字の間に自動でスペースを開ける text-adjust.el を使ってみた

いわゆる全角文字と半角文字の間にスペースをあけると読みやすいのは言うまでもない。おまけに、 dabbrev するときも余計な日本語がくっつかない。今まで手でやってきたのだが、スペースをあけてたりあけてなかったりしてて統一されていなかった。自動的にできる方法を探していた。
以前は 404 Blog Not Found:perl - 半角スペースを自動で入れる の spacer.pl を使っていたが、 UTF-8 化されるので Emacs 内でできないかと思った。そしたら text-adjust.el を使えばいいことがわかった。

M-x install-elisp http://taiyaki.org/elisp/mell/src/mell.el
M-x install-elisp http://taiyaki.org/elisp/text-adjust/src/text-adjust.el

そして、 M-x text-adjust-space-buffer を実行すればバッファ全体を処理してくれる。ほかにも全角英字を半角にしたりとかいろいろなことをしてくれる M-x text-adjust-buffer などもある。日本語の説明なので詳しくはソースをどうぞ。

設定

どうせだったら保存前に自動でやってもらおうということで、特定のモードで保存するときに有効にしてみた。 mew の場合はメールを送る前に処理してくれる。

;; http://taiyaki.org/elisp/mell/src/mell.el
;; http://taiyaki.org/elisp/text-adjust/src/text-adjust.el
(require 'text-adjust)
(defun text-adjust-space-before-save-if-needed ()
  (when (memq major-mode
              '(org-mode text-mode mew-draft-mode myhatena-mode))
    (text-adjust-space-buffer)))
(defalias 'spacer 'text-adjust-space-buffer)
(add-hook 'before-save-hook 'text-adjust-space-before-save-if-needed)

追記

http://taiyaki.org/elisp/mell/src/mell.el
http://taiyaki.org/elisp/text-adjust/src/text-adjust.el

に修正。コメントありがとうございます。

<2012-06-24 日>追記

taiyaki.orgが落ちているので、こちらに置いておきます。GPL2です。

http://www.rubyist.net/~rubikitch/archive/mell.el
http://www.rubyist.net/~rubikitch/archive/text-adjust.el