sdicをいれたので備忘録

Emacsで英文を入力しているとスペルミスがないか気になる。だもんで、flymake-modeで入力して単語のスペルミスを教えてくれるので満足していた。

でも今度はEmacsで単語の意味を調べたくなった。今まではネットにつないで検索サイトから検索をしたり、手元の英和辞典を置いて調べたりしていた。英文を書く機会が増えてきたことからsdicを入れてみようと決心した。
sdicはaptパッケージとして提供されているので持ってくる。必要なのはsdic,sdic-gene95,sdic-edictとそのまま検索すると遅いので、検索用にsaryをインストールする。

まず、saryに辞書のインデックスを作ってもらう。xubuntuでaptすると先ほどの辞書ファイルが/usr/share/dict/以下に入っていてそれを
mksary *.sdic
としてやる。拡張子が.sdic.aryというファイルができていればO.Kです。もし文字コードを指定する必要がある場合は、mksary -c EUC-JPのように指定することができます。メモリの少ないPCで行う場合は-bオプションをつけることで改善されるかもしれません。

次に、Emacsから検索する仕組みを作ってやりましょう。
それはここのにあるのを持ってきました。これを.emacsになりに書きます。
;; ----- sdicを呼び出すための設定(F9で実行)
(global-set-key [f9] 'sdic-describe-word)
(autoload 'sdic-describe-word "sdic" "search word" t nil)
;; ----- sdicが呼ばれたときの設定
(eval-after-load "sdic"
'(progn
;; saryのコマンドをセットする
(setq sdicf-array-command "/usr/bin/sary")
;; sdicファイルのある位置を設定し、arrayコマンドを使用するよう設定(現在のところ英和のみ)
(setq sdic-eiwa-dictionary-list
'((sdicf-client "/usr/hsare/gene.sdic" (strategy array))))
(setq sdic-waei-dictionary-list
'((sdicf-client "/usr/hsare/jedict.sdic" (strategy array))))

;; saryを直接使用できるように sdicf.el 内に定義されているarrayコマンド用関数を強制的に置換
(fset 'sdicf-array-init 'sdicf-common-init)
(fset 'sdicf-array-quit 'sdicf-common-quit)
(fset 'sdicf-array-search
(lambda (sdic pattern &optional case regexp)
(sdicf-array-init sdic)
(if regexp
(signal 'sdicf-invalid-method '(regexp))
(save-excursion
(set-buffer (sdicf-get-buffer sdic))
(delete-region (point-min) (point-max))
(apply 'sdicf-call-process
sdicf-array-command
(sdicf-get-coding-system sdic)
nil t nil
(if case
(list "-i" pattern (sdicf-get-filename sdic))
(list pattern (sdicf-get-filename sdic))))
(goto-char (point-min))
(let (entries)
(while (not (eobp)) (sdicf-search-internal))
(nreverse entries))))))
;; おまけ--辞書バッファ内で移動した時、常にバッファの一行目になるようにする
(defadvice sdic-forward-item (after sdic-forward-item-always-top activate)
(recenter 0))
(defadvice sdic-backward-item (after sdic-backward-item-always-top activate)
(recenter 0)))


これで検索ができるようになったと思います。しかも高速で実用的です。素晴らしい。
あとは辞書を英辞郎にするとかもう少し改善の予知がありますが、当面はこれで不満がありません。

コメント

このブログの人気の投稿

howmとorg-mode両方でタスク管理できるようにした

Fenrirを少し使いやすく

fenrirにmigemoを入れたのでメモ