odoc おれおれドキュメント Publisher テキストを html に置き換える xyzzy lisp です。 日付でメモを取っていくと日記ツールにもなるかと思います。
site-lisp に odoc 以下を放り込む。 .xyzzy siteinit.l に
(require "odoc")
[foo] RET で新しく foo.od を作成します。 [index] RET で編集中のディレクトリの ~.od を集めてきて表示
| keybind | function |
| C-c p | publish |
| C-c i | index |
| RET | action |
書式は以下
^=.. h ^-.. ol (space2 つで入れ子) ^*.. ul (space2 つで入れ子) ^|..| table ^ .. pre ^.. p (閉じる時は空行にする) ^---- hr ^:. :. dl ^>.. blockquote http:// absolute link [http://..|name] absolute link [name] relative link [img|x,y|path|alt] img link \[fug] \http:// はエスケープ
ol,ul,table,pre,p,dl,blockquote の書式に従って書いた始めの行に $...$ , %...% を指定しておくと要素を <div> で囲み、 囲まれた文字は class と id 名になります。
class は $foo$ => <div class="foo"> 二行目 ..</div>
id は %bar% => <div id="bar"> 二行目 ..</div>
(注) 囲まれた文字以降は無視されます。エスケープは \%~% ,\$~$ です。
入れ子にすることはできますが、階層をとばすとタグをきちっと閉じられない バグがあるので気をつけて下さい。
publish 用設定ファイル odoc/.odocrc に好みの設定を書く、もしくは編集して いるディレクトリに .odocrc を作ればそれを読み込みます。
が設定できます。
publish 後に html+-mode でインデントしてもらう場合 .xyzzy 等に
(add-hook '*odoc-publish-hook*
#'(lambda()
(indent-region(point-min)(point-max))))
~/odoc/.odoc-mode の始めに(in-package :odoc-mode)を追加して lisp を書いていく必要があります。 add-toggle-switch,add-action,add-action-list
任意の文字列二文字以上で {*} => {-} => { } 等を RET で変更する。 追加したい場合の例
(add-toggle-switch
'(("}?""}+""}*")
("[+ ]""[++ ]""[+++ ]""[++++ ]" "[+++++]")))
任意の正規表現上で RET すると関数を呼び出して実行します。
;; 一つずつ追加する場合
(add-action regex function &optional delete goto)
;; まとめて追加する場合
(add-action-list '((regex func)
(regex2 func2 1 1)))
日記風につけたい場合は、.xyzzy 等に
(defun diary()
(interactive)
(find-file(merge-pathnames
(concat (format-date-string "%Y-%m-%d") "." *odoc-extension*)
"~/oDiary")))
M-x diary