Outline-tree2の「階層付きテキスト」の見出し記号変更

Twitter でも書いたのだが、NTEmacs の org-mode が便利そうだ。いま使っている outline-mode から乗り換えたい。しかし、ひとつ悩み所がある。

org-mode では、階層を示す見出し記号として "*"(星印、star)を使う。私は howm や xyzzy の outline-tree2 で "."(ドット)を使ってきた。よって、上記の星印をドットに変更したいのだが、メーリングリストにおける作者の記事を読む限り無理そうである。

よって、org-mode に移行するためには、他のアプリと既存のファイルを変更するしかない。

howm の場合、見出し(メモのタイトル)を変更するのは簡単である*1。問題は、xyzzy の outline-tree の方。ぱっと見てデフォルトの "." を変更する方法はないようだ。それを何とかしましたというのが、今回の話。

outline-tree2 の「階層付きテキスト」の設定は、%XYZZYHOME%/site-lisp/outline-tree/cr-hierarchy-inheritance.l に記されている。このファイルをコピーして、cr-hierarchy-inheritance-star.l などと改名する。次にファイルの内容を、以下のように書き換える。


(provide "outline-tree/cr-hierarchy-inheritance-star")

(require "outline-tree/outline-tree")
(require "outline-tree/cr-hierarchy-internal")

(in-package "outline-tree2")

;; 階層付きテキストフォーマット
(defun outline-tree-create-outline-hierarchy-star (root-node)
(outline-tree-create-outline-hierarchy-internal
:root-node root-node
:char #*
:sub-type :heading-node))
(outline-tree-add-create-outline-function
'outline-tree-create-outline-hierarchy-star "階層付きテキスト" '(:format :line-oriented :sequential)
"階層付きテキストを階層表示します。
階層レベルは行頭の * (スター)の数で指定します。"
)

黄色の文字列が変更した箇所である。そして、outline-tree.l に以下を書き加える。


(require "outline-tree/cr-hierarchy-inheritance-star")

これで「階層付きテキスト」に "*" 見出しが加わる(バイトコンパイルをお忘れなく)。該当するテキストファイルの先頭に


-*- outline-tree: hierarchy-star -*-

と記しておけば、自動的に階層テキストとして認識する。



さて、問題は "." で階層化した膨大なテキストファイルをどうするかだな…。

*1:具体的には setq howm-view-title-header を指定すればよい。