hatena-diary-mode for xyzzy

cutxout2005-04-09


xyzzy上からhatena diaryを更新できればとても便利だが、半年前にインストールできなくて使用を諦めたことがある。再チャレンジなのです。

NetInstaller

最近のxyzzyマクロの流行にもれず、NetInstaller対応。偉大な発明だと思う一方、あまりうれしくない傾向なんですね。

  • 複数箇所で同一設定のxyzzyが必要なので、自鯖CVSでインストールしたlisp群の管理をしている
  • NetInstallerを使うと、CVSとの整合性がとれなくなる
  • 非ブロードバンド環境もあるので、手軽に"a"できない

というのが主な理由。よって、今回のhatena-diary-modeも、作者の意向に反してNetInstallerを使わずに設定する必要が有ります。無駄にハードル高くしている自分がなんともですが。

exlaとcrylib

exlaとcrylibをsite-lisp配下にコピーして、site-init.lに次の記述を書く。


(require 'elxa/elxa)
(require "crylib/crylib")

所定の方法でCAPICOMをインストールし、コマンドラインから


regsvr32 capicom

を実行する。ここまでは成功だ。次にcrylibの動作確認。


(require 'crylib/crylib)
(crylib::crylib-available-p)
t

ちゃんとインストールされているようだ。

hatena-diary-mode

ここからが問題。NetInstaller用の配布パッケージをダウンロードして、該当箇所と思われる部分をsite-init.lに追記。


;; パッケージだけ先に宣言する
(require "hatena/hatena-diary-def")
;; パッケージ使用宣言
(use-package "hatena-diary")
(autoload 'hd:hatena-diary-mode "hatena/hatena-diary-mode" t)
(autoload 'hd:hatena-diary-append "hatena/hatena-diary-mode" t)
(autoload 'hd:hatena-diary-replace "hatena/hatena-diary-mode" t)
(autoload 'hd:hatena-diary-set-cookie "hatena/hatena-diary-mode" t)
;; 拡張子連動
(pushnew '("\\.hd$" . hd:hatena-diary-mode) *auto-mode-alist* :test 'equal)
;; デフォルトのキーバインドを設定
(global-set-key '(#\C-c #\h #\a) 'hd:hatena-diary-append)
(global-set-key '(#\C-c #\h #\r) 'hd:hatena-diary-replace)
(global-set-key '(#\C-c #\h #\s) 'hd:hatena-diary-set-cookie)
(setf hd:*hatena-id* "XXXXXXX")

インストールできたはずなので、C-c h aをたたくと、「"crylib/db" can't exist or not write"」のダイアログが出現。orz さて、原因を切り分けが必要になりました。crylibの設定なのか、hatena-diary-modeの設定なのか...
多分、現時点で持っているperlに関する知識と同じ位のものがlispについてあれば、ソースコードを見て切り分け出来そうな気がするけど、、半年後かなあ。