xyzzyで折り畳み(folding)について

より正確にはxyzzy Part13 >>766の件について

現在のバッファの内容を非表示バッファに保存
→非表示バッファを元に現在のバッファにアウトラインを生成
→現在のバッファを編集するたびに非表示バッファも変更
→保存は非表示バッファの内容をファイルに書き込む
こんな感じでできるかも。

と言う話について。
 undoについて、非表示バッファのほうで保持し、実際に見えてるbufferはあくまでUIで、実データは別に保持するスタイルの様子。
 色々思った事。行き成り折り畳み作る前に、まず、非表示bufferと現在のバッファをリンクさせて表示をControlする、何か(たとえばオーバレイ機能の様なもの)を先に作らないと、グチャグチャになってしまいそうに思った。

 個人的には、前にminibufferにpromptで表示だけ作って実際のデータは変数で保持し、中身だけ表示させて文字列を操作するUIのようなものを試してたので、そういう感じで層を分けて中身と外見をlisp上で分けてしまう手法も、できない事もないとは思ったけど。minibufferと違って量が多い事もありそうな普通のbufferでこれをやっても処理能力的に大丈夫なのか色々と思ったりした。あと変数なら非表示バッファの場所を汚さないとは思ったけど、これはバッファ操作の部分全部変数に適用できるように作らないといけないので大変そうだとか。