emacs: org-modeで行の折り返し

僕はLinux上でも、Mac上でも、テキストエディタにはEmacsを使っている。Emacsにはorg-modeって言う便利なテキスト編集モードがあって、僕はいつもorg-modeで日々のTODOを書いたり、研究上のメモをまとめている。詳しい使い方はこのページを参照すればいいんだけど、見やすいアウトライン表示、ファイルやURLパスを書くと自動でリンクを作成してくれるところ、TODO項目のチェックマークのつけやすさが気に入って、ここ2年ほどずっと使っている。
だけど、1点だけ気になることがあった。文章が1行に収まらない場合、右端で折り返されるのではなく、ずっと右に続くこと。その行にカーソルを置いて、カーソルをずっと右の方に移動していかない限り、ウィンドウから溢れる分を見ることができない。Terminal上で実行したコマンドをメモに取る場合には見やすいし、便利だけど、長い文章を書くときには不便だった。特に、日本語でATOKを使って(ことえりでも?)文章を書く場合。長い文章を無変換で1行に書いていくと、当然ウィンドウ内に収まらなくなるんだけど、変換しようとしても、現在ウィンドウに表示されている文字の変換候補しか見られず、文章の最初のほうがどのように変換されているのか、確認できない。一時的に長い文章をメモとして取ることもあるので、これだとどうしても不便だった。
そこで、org-modeでもデフォルトではウィンドウの右端で折り返すように設定変更した。また、折り返したくない場合もあるので、現在の折り返しの状態に応じて、1)折り返す、2)折り返さない、を切り替える関数を実装した。そのメモ。
.emacsに追加したlispプログラムは次の7行だけ。

(setq org-startup-truncated nil)
(defun change-truncation()
  (interactive)
  (cond ((eq truncate-lines nil)
         (setq truncate-lines t))
        (t
         (setq truncate-lines nil))))

org-startup-truncatedはorg-mode開始時の折り返し状態を設定する変数。これにnil以外の値が入っていると折り返しになる。デフォルトでは「t」。デフォルト折り返さないことが目的なので、この変数の値をnilに変更。
org-startup-truncatedをセットするとtruncate-lines変数の値が書き換えられる(org-modeのソースより)。てことで,この変数の値を変更する関数として実装したのがchange-truncation。現在の変数の値に応じて、反対の値を割り当てている。ミニバッファ上で「M-x change-truncation」で呼び出せるようにしてある。
ちなみに、動作環境はCarbon Emacs 2009夏版。Carbon Emacsだと以下の場所にorg-modeのemacs lispが置かれている。

/Applications/Emacs.app/Contents/Resources/lisp/textmodes/org.el