hnf-mode.el

HyperNikkiSystem(以下HNS)ではHyperNikkiFile(以下hnf)で日記を記述するだけで HTMLが生成されますが、そのhnfをEmacsで書く時に便利なモードがhnf-modeです。


特徴


インストール

まずはhnf-mode.elをload-pathの通ったところに置きます。次は、、、 あ、以上です。


設定

最低限の設定

とりあえず~/.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))

環境に応じた設定

デフォルトの設定 (日記ディレクトリが~/diary/、ウェブ日記ディレクトリが ~/public_html/diary/) で、hnfを年毎にディレクトリを分けていている場合は変更は不要です。 デフォルトと異なる場合はhnf:diary-dir, hnf:html-dir, hnf:diary-year-directorypを設定する必要があります。

(setq hnf:diary-dir "~/foo/diary")
(setq hnf:html-dir "~/public_html/foo/diary")
(setq hnf:diary-year-directoryp nil)

補完候補の設定

変数・マーク・RLINK・CAT・ALIASの補完候補を設定します。 使っていない場合はデフォルトのままとします。

(setq hnf:variable '(("TENKI") ("BASHO") ("TAIJU") ("TAION")))
(setq hnf:marks '(("(^^)") ("(-_-)") ("(^^;") ("(;_;)") ("(T_T)"))
(setq hnf:rlink '(("h14m") ("ari")))
(setq hnf:cat '(("Linux") ("Nikki")))
(setq hnf:alias '(("Be") ("hns")))

キーバインド

各種コマンドを使いたい場合はキーバインドを追加しましょう。

(add-hook 'hnf-mode-load-hook
	  '(lambda () (progn
		       (define-key hnf-mode-map "\C-c=" 'hnf:get-link)
		       (define-key hnf-mode-map "\C-cf" 'hnf:link-find-file)
		       (define-key hnf-mode-map "\C-ct" 'hnf:insert-time))))

namazu.el

namazu.el本体の設定の詳細は省略しますが、namazu.elからnamazu for hnsを 検索結果からhnfを開けるようにします。また、hnf-modeでnamazu.elを呼べるように しておくと何かと便利です。

(autoload 'namazu "namazu" nil t)
(setq namazu-command (expand-file-name "~/diary/namazu/bin/namazu"))
(add-hook 'namazu-mode-hook
	  '(lambda ()
		(define-key namazu-mode-map "f" 'hnf:namazu-find-file)))
(autoload 'hnf:namazu-edit "hnf-mode" nil t)
(add-hook 'hnf-mode-load-hook
	  '(lambda ()
		(define-key hnf-mode-map "\C-cn" 'namazu)))

使い方

Emacsを起動したらM-x hnfとタイプしましょう。 (以下、Under Construction)

SAQ

Q1. SAQって何ですか?
Supposed Asked Questionsの略です。 「こんな質問がくるかな?」と作者が想定した質問(と答え)です。
Q2. mule-2.3@emacs-19.34で 動かないのですが。
hnf-mode.elはcustomを要しますが、emacs-19.34標準のcustomは 古くてだめです。custom-1.9962をインストールしてください。 なお、customのインストールには http://www.jpl.org/elisp/ から取得できるパッチを当てる必要があります。
Q3. mule-2.3@emacs-19.28や mule for win32で動かないのですが。
emacs-19.28ではcustom-1.9962は動かないようですが、apelに tinycustomというカスタムもどきがあります。それを使うとcustomの 問題は解消されますが、それ以外の問題もいくつかあります。 hnf-mode.el-19.28.patchを あてることによりとりあえず動くようにはなりますが、font-lockによる 色付けはされません。(また、このpatchはメンテナンスされていませんので 最新のhnf-mode.elではあたらないかもしれません。)
ということで、mule-2.3@19.34またはMeadowにて使うことをお薦めします。
ちなみに、apel-9.15(4/7現在のリリース版)はemacs-19.28でそのままでは インストールできません。tm-mlにすでに報告が挙がっているので そのうち修正されるでしょう。
Q4. `/'の後の補完で誤ったものが 補完されてしまうのですが。
手抜き高速化のため、コマンドのネストには 対応していません。
Q5. その他、 おかしな動作をするのですが。
bugの可能性が高いです。作者に連絡すると直るかもしれません。
Q6. メールで更新する時にも hnf-modeを使いたいのですが。
mail2nikki.elというのがあります。

戻る