hnf-mode.el の README (日本語版) * WHAT IS THIS? 1. hnf を編集時に TAB であらゆる補完ができます。 2. font-lock を使って hnf をカラー表示します。 3. M-x hnf で ~/diary/1999/d19990107.hnf 等、その日の hnf を開きます。 C-u numeric M-x hnf で、numeric 日前の hnf を開きます。 4. namazu, calendar, speedbar などと連携ができます。 * INSTALL 1. APEL をインストールします。(GNU Emacs 20以降などでは不要かもしれません。) 2. hnf-mode.el を load-path の通ったところに置きます。 お好みで byte-compile してください。 * SETTING 必須の設定は 1〜2 だけです。それ以外はお好みでどうぞ。 1. 拡張子が .hnf なファイルを開いた時に hnf-mode となるように ~/.emacs 等で 設定します。 (autoload 'hnf "hnf-mode" nil t) (autoload 'hnf-mode "hnf-mode" nil t) (setq auto-mode-alist (cons '("\\.hnf$" . hnf-mode) auto-mode-alist)) 2. hnf-diary-dir, hnf-html-dir, hnf-diary-year-directory-flag を必要に応じて 設定します。設定すべき値は変数のコメントを参照してください。 例) (setq hnf-diary-dir "~/diary") (setq hnf-html-dir "~/public_html/diary") (setq hnf-diary-year-directory-flag t) 3. 変数やマークなどの補完したい場合は、それぞれ以下の設定をします。 変数 hnf-variable RLINK hnf-rlink CAT hnf-cat GRP hnf-group クラス hnf-class MARK hnf-mark ALIAS hnf-alias 例) (setq hnf-variable '(("TENKI") ("BASHO") ("TAIJU") ("TAION"))) (setq hnf-rlink '(("h14m") ("ari"))) (setq hnf-cat '(("Linux") ("Nikki"))) (setq hnf-group '(("myself") ("friend"))) (setq hnf-class '(("emphasis") ("hidden")) (setq hnf-marks '(("(^^)") ("(-_-)") ("(^^;") ("(;_;)") ("(T_T)")) (setq hnf-alias '(("Be") ("hns"))) 4. 新規 hnf を開いた時に、実行したい関数を hnf-initial-function に設定します。"OK"を自動挿入したければ以下のようにします。 例) (setq hnf-initial-function (function (lambda () (insert "OK\n\n")))) 5. 一日が28:00まである生活をしている場合は、以下の設定をしてみてください。 詳細は hnf-hour-not-today の説明を参照してください。 例) (setq hnf-hour-not-today 4) 6. NEW や SUB の行で、リンクの name を表示したいならば hnf-get-link(C-c=) を、 リンク先のファイルをオープンしたいならば hnf-link-find-file(C-cC-f) を 使います。また、C-uC-c= でリンクの name が kill-ring に挿入されます。 (注1) hns-1.03pl0 以前ではデフォルトのリンクの name が異なります。 その形式で表示したい時は以下の設定を行ってください。 (setq hnf-new-link-name-format "?%Y%m%h#%Y%m%d%N" hnf-sub-link-name-format "?%Y%m%h#%Y%m%d%NS%S") (注2) hns-2.10 以降ではデフォルトのリンクの名前が異なります。 その形式で表示したい時は以下の設定を行ってください。 (setq hnf-new-link-name-format "?%Y%m%a&to=%Y%m%d%N#%Y%m%d%N" hnf-sub-link-name-format "?%Y%m%a&to=%Y%m%d%NS%S#%Y%m%d%NS%S") (注3) 静的生成では以下のように設定を行ってください。 (setq hnf-new-link-name-format "%Y%m.html#%Y%m%d%N" hnf-sub-link-name-format "%Y%m.html#%Y%m%d%NS%S") 7. 時間を挿入したいならば hnf-insert-time(C-cC-t) を使います。 フォーマットは hnf-time-format で変更できます。 C-uC-cC-t でカーソル以降に既に挿入されている時間を現在の時間に 変更します。 また hnf-write-file-insert-time(C-cC-s) を実行すると、ファイルの末尾に 時間を挿入しファイルを保存します。 8. hnf-newline(C-cC-m) で、改行と同時に閉じるタグの挿入などが行われます。 \C-m にバインドしても問題無いと思います。 例) (add-hook 'hnf-mode-load-hook (function (lambda () (define-key hnf-mode-map "\C-m" 'hnf-newline))) 9. namazu.el にて namazu_for_hns の検索結果からファイルを開きたいならば、 hnf-namazu-find-file を namazu-mode-map に適宜設定することをすすめます。 例) (setq namazu-command (expand-file-name "~/diary/namazu/bin/namazu")) (add-hook 'namazu-mode-hook (function (lambda () (define-key namazu-mode-map "f" 'hnf-namazu-find-file)))) (autoload 'hnf-namazu-find-file "hnf-mode" nil t) また、hnf-mode から C-cC-n で namazu.el を実行できます。 10. M-x calendar と連携したいならば、hnf-insert-diary-entry を適宜バインド しましょう。 例) (autoload 'hnf-insert-diary-entry "hnf-mode" nil t) (add-hook 'calendar-load-hook (function (lambda () (define-key calendar-mode-map "iD" 'hnf-insert-diary-entry)))) また、hnf-mark-diary-entries を実行すると、日記を入力してある日は マークが付きます。 例) (autoload 'hnf-mark-diary-entries "hnf-mode" nil t) (add-hook 'today-visible-calendar-hook 'hnf-mark-diary-entries) (add-hook 'today-invisible-calendar-hook 'hnf-mark-diary-entries) 11. Web Browser と連携したい場合は、hnf-diary-url に日記のURLを設定して 下さい。 hnf-browse-recent-diary(C-cC-b) または hnf-browse-diary で Web Browser が起動します。 例) (setq hnf-diary-url "http://www.nijino.com/ari/diary/") また、hnf-preview-diary(C-cC-p) では、httpd を経由せずに表示できます。 12. M-x hnf-check で予約語のチェックができます。 `local-write-file-hooks' に設定すると、保存時に実行できます。 例) (add-hook 'hnf-mode-hook (function (lambda () (add-hook 'local-write-file-hooks 'hnf-check)))) 一部は custom を使って設定もできるはずです。(動作未確認(^^;) * Emacsen 動作確認は主に Emacs-21 で行っています。 Emacs-20 や XEmacs-20/21 も多分問題無いでしょう。 mule-2.3@emacs-19.34 では custom-1.9962 をインストールすることをお薦めします。 mule-2.3@emacs-19.28 でも動きますが、色は着きません。 NEmacs では動きません。 なお、mule-2.3@19.34 で custom-1.9962 を使う場合は、 http://www.jpl.org/elips/ から取得できるパッチを当てる必要があります。 * Note 1. tamago-4.0.6 は outline-minor-mode で問題があるようです。 4.0.6 より新しいバージョンにアップグレードするか、`hnf-outline-mode' を nil に変更してください。 * TODO 1. calendar からも browse-url を呼べるようにしようかな。 2. 全般的にエラー処理が甘いのを直すべきだろうな。 * THANKS ハイパー日記システムプロジェクトの方々に感謝します。 ハイパー日記システム無くしては hnf-mode は生まれなかったでしょう:-)。 友人の福居君に感謝します。補完の下位関数は彼の toalias.el から奪っています(^^; また、hnf-mode に協力していただいた以下の皆さんに感謝します。 橋本賢一さん http://club.h14m.org/Ken/diary/ やまぐちさん http://symphony.sone.riec.tohoku.ac.jp/~yamaya/diary/ 宮崎さん http://zak.interwave.or.jp/diary/ JUNさん http://jun.misao.gr.jp/diary/ sawさん http://www.be-in.org/~mas/diary/ ysjjさん http://www.unixuser.org/~ysjj/diary/ kaoruさん http://triaez.kaisei.org/~kaoru/diary/ 後藤さん http://www.taiyo.co.jp/~gotoh/diary/ 高林さん http://namazu.org/~satoru/diary/ 小関さん http://cgi.netlaputa.ne.jp/~kose/diary/ おおつかさん http://clotho.ku3g.org/diary/ MAKOPiさん http://homepage2.nifty.com/MAKOPi/diary/recent.html 中山さん http://yoichi.geiin.org/d/ 中治さん http://www.heimat.gr.jp/~nakaji/diary/