今更ながらorg-modeを勉強してみる
まとまった時間がとれるんだから、とりあえずEmacsのorg-modeでも始めてみようか。org-modeは何年も前から知っていたんだけどあまりに大規模でどこから手をつけていいのかわからず、試してすらいなかった。
Emacs22にも標準添付なのだが、バージョン4.67dなのでかなり古い。しかし日本語訳が4.60ベースなのでまずは標準添付バージョンから試してみる。古いとはいってもソースが2万行あるからめちゃくちゃ大規模だ。
アウトラインを中心としてTODO管理やら予定表やらGTDやらもうなんでもありらしい。ハイパーリンクとかも使えるし。初org-modeでアウトラインがめちゃくちゃ便利なのがわかったので、うまく活用していけば文章を書くスタイルも改善されていくだろう。大規模な文章であってもひとつのファイルで作業できるので、「前どんなの書いてたかな」とか「前書いたところの言い回しどうだったかな」なんて情報はisearchやらanything-moccurやらですぐに呼び出せるな。メモの大原則「ポケットひとつの法則」も遵守できるな。ファイルを分けるよりも管理が楽だし検索性が上がる。
「C-c /」でorg-occurが実行される。マッチした部分にハイライトがつき、アウトラインを適宜展開してくれる。これを知っただけでも嬉しい。
最新版はgitで得られる。分散バージョン管理システムだから改善とかはすぐできるな、よし。
git clone git://repo.or.cz/org-mode.git
とりあえずMakefileがあるのでmake一発でバイトコンパイルできるな。
ソースコードの分量を見てみると恐しいばかり。ファイルがいくつも増えている。行数は45000行かぁ…
$ wc lisp/*.el 5693 24389 221316 lisp/org-agenda.el 422 1812 15388 lisp/org-archive.el 350 1582 13320 lisp/org-attach.el 332 1495 12110 lisp/org-bbdb.el 204 1061 8280 lisp/org-bibtex.el 1191 4985 43692 lisp/org-clock.el 1571 6393 62331 lisp/org-colview-xemacs.el 1343 5533 52149 lisp/org-colview.el 294 1286 11151 lisp/org-compat.el 4829 18756 171639 lisp/org-exp.el 1537 5135 53267 lisp/org-export-latex.el 532 2587 22668 lisp/org-faces.el 195 824 7378 lisp/org-gnus.el 589 2786 20916 lisp/org-id.el 82 357 2785 lisp/org-info.el 1002 5598 39154 lisp/org-install.el 256 1119 9120 lisp/org-irc.el 208 1010 7925 lisp/org-jsinfo.el 1091 4203 36286 lisp/org-list.el 84 440 3181 lisp/org-mac-message.el 224 966 7764 lisp/org-macs.el 130 535 5084 lisp/org-mew.el 220 875 7949 lisp/org-mhe.el 1145 4043 39315 lisp/org-mouse.el 345 1502 12483 lisp/org-plot.el 755 3201 30029 lisp/org-publish.el 997 4313 39459 lisp/org-remember.el 109 426 3807 lisp/org-rmail.el 4072 18060 157160 lisp/org-table.el 181 846 6511 lisp/org-timer.el 131 560 4974 lisp/org-vm.el 168 753 6501 lisp/org-w3m.el 145 573 5489 lisp/org-wl.el 14831 64815 563158 lisp/org.el 45258 192819 1703739 合計
org.el自体は20klocから15klocに減少しているので、おそらくorg.elは中核部分にしぼって、付加機能は外に追い出しているようだ。
その中には俺が使っているモードとの連携がある。気になるものはorg-mew.el、org-w3m.elあたりだな。ともに100行ちょいだからすぐに読めそうだ。
最終的には文章を書くmodeをorg-modeに統一したいのだが、決められたフォーマットで書かないといけない文章があるのが問題だ。原稿執筆にはその出版社のフォーマットを、ブログははてな記法を、RubyによるプロジェクトのドキュメントはRDocを…って具合に。それに10年来RDで書いてきたから捨てるのも忍びない。う〜ん……org-exp.elやorg-publish.elが鍵を握っているのだろうか。こいつも750行しかないから解析に困ることはなさそう。新たなフォーマットへ対応させることを学ぶのが急務だろう。
Webフレームワークでいえばmerbというよりrailsっぽい印象だな、初見の印象だけど。全部与えられてるから規約に従えみたいな。どうなんだろうね。
キーバインドがおそろしいほど定義されているが、わからなくなったらdescbinds-anything.elで調べられるし、なんとかなりそうだ。describe-bindingsをkey-chord.elを使ってdfに割り当ててみた。id:buzztaiki++
(require 'key-chord) (key-chord-define-global "df" 'describe-bindings)
describe-bindings.elについては→descbinds-anything.elを使ってみた - http://rubikitch.com/に移転しました
key-chord.elについては→Ctrl+中指か薬指を使うキー操作が多いEmacsで指の負担を軽くする方法 - http://rubikitch.com/に移転しました