Skip to content

emacsattic/dic-lookup-w3m

Repository files navigation

dic-lookup-w3mはemacs-w3mを使ってインターネット上の辞書サイトの辞書を
引いたり、自動翻訳サイトで翻訳したりするためのemacs lispです。
emacs-w3mはwebブラウザなので、もちろんemacs-w3mだけでwebサイトにアクセ
スして辞書を引いたり翻訳することが出来ます。
dic-lookup-w3mは辞書を引く作業をより便利にしようと思って作ったアドオン
です。
emacsで辞書を引くツールにはeblook, lookup, sdicなどがあります。これら
はローカルの辞書を引きます。dic-lookup-w3mはインターネット上の辞書を
引きます。このため辞書を引く処理が相対的に遅くなります。
大量の文章を読むためにすばやく辞書を引きたい場合は、ローカルの辞書を引
くツールを使ったほうがよいかもしれません。
dic-lookup-w3mはemacs-w3mのアドオンなので、ここで説明する機能の多くは
emacs-w3mで実現されているものです。dic-lookup-w3mはそれを少し加工して
使っているに過ぎません。emacs-w3m, w3mに携わっている方々に感謝いたしま
す。


インストール:

dic-lookup-w3mを使うにはemacs, emacs-w3m, w3mが必要です。まずemacs-w3m
でwebブラウズが出来ることを確認してください。
http://emacs-w3m.namazu.org/index-ja.html
この他に、必須ではありませんがstem.elがあると便利です。
stem.elがある場合は検索語句から英語の活用語尾を取り除いて見出し語の候
補を表示します。過去形や複数形などを検索したとき、元の形を入力しなおさ
ずに候補をクリックするだけで再度辞書が引きなおせます。
stem.elはsdicに含まれています。またstem-english.elという名前でlookupに
含まれています。
http://www.namazu.org/~tsuchiya/sdic/index.html
http://openlab.ring.gr.jp/edict/lookup/

dic-lookup-w3mのelispファイル*.elとstem.elをemacsのロードパスが通って
いるところに置いてください。

.emacsに次のどちらかを追加してください。
(autoload 'dic-lookup-w3m "dic-lookup-w3m" "w3mで辞書を引く" t)
(require 'dic-lookup-w3m)


使い方:

M-x dic-lookup-w3mで起動します。
Which engine? (default ej-yahoo): と聞いてくるので、使いたい辞書サイト
を入力してください。tabで候補の表示と補完が出来ます。
次にsearch: と表示されるので、調べたい単語を入力してください。

M-x dic-lookup-w3m-search-engine-menuで辞書/翻訳サイトの一覧が表示され
ます。詳細は変数dic-lookup-w3m-search-engine-alistやソースを見てくださ
い。

翻訳するにはWhich engine?に翻訳サイトを指定し、search:の後に文章を入
力します。
dic-lookup-w3mに前置引数を与えることによってポイントの位置の単語、
line, sentence, region, paragraph, bufferを検索文字列に指定することが
出来ます。自動翻訳ではこの範囲指定が役立つかもしれません。これには
thing-at-point関数を使っているので、範囲の抽出の性能はthing-at-pointに
依存します。
前置引数とテキストの選択範囲の対応は変数
dic-lookup-w3m-read-query-prefix-arg-alistで変更できます。

自動翻訳サイトによっては改行を文の終わりとみなすものがあるので、翻訳し
たいソースの一文が複数行にわたっている場合は一行になるように編集してか
ら送信する必要があります。
リージョンを指定した状態でdic-lookup-w3mを起動すると、リージョンのテキ
ストがsearch:の後にコピーされるので、ミニバッファ上で編集できます。
前置引数をつけて起動した場合はsearch:表示されず、すぐに検索を行うので
編集は出来ません。

emacsから自動翻訳サイトを使うツールには他にtext-translatorや
trans-ej.elがあります。
自動翻訳が目的ならこちらのほうがよいかもしれません。
http://d.hatena.ne.jp/khiker/20110403/text_translator
http://www.emacswiki.org/emacs/TransEJ

キーバインド:

よく使う辞書をキーバインドしておくと便利です。
emacs-w3mでwebを見ているときにw3mバッファに表示されている語を辞書で調
べたいこともあるでしょうし、emacsで文書ファイルを読んだり編集したりし
ているときに辞書を引きたいと思うこともあるでしょうから、キーバインドは
w3mバッファローカルではなくグローバルにしたほうがよいでしょう。
以下の説明の中の例はemacs-w3mをInfo-likeキーバインドに設定している場合
の例です。Lynx-likeキーバインドでは衝突するものがあるかもしれません。
emacs-w3mのキーバインドの設定は (setq w3m-key-binding 'info) で変更で
きます。

例
(global-set-key "\C-cd" 'dic-lookup-w3m)
C-c dでdic-lookup-w3mを起動します。

(global-set-key "\C-cc" '(lambda () "excite 英和,和英" (interactive)
			   (dic-lookup-w3m "ej-excite")))
C-c cでexcite英和,和英辞典を指定してdic-lookup-w3mを起動します。

(global-set-key "\C-ct" '(lambda () "nifty 英和翻訳" (interactive)
			   (dic-lookup-w3m "tr-ej-nifty" 'sentence)))
C-c tでniftyの英和翻訳でポイントがある位置のセンテンスを翻訳します。

dic-lookup-w3mはロードされたときに、定義されている辞書のすべてに対して、
dic-lookup-w3m--je-babylonやdic-lookup-w3m--tr-ej-yahoo-sentenceのよう
な範囲指定おこなってdic-lookup-w3mを起動するようなコマンドを作成します。
この中には無意味なコマンドもあるかもしれません。
これをキーバインドすることも出来ます。
例
(global-set-key "\C-cT" 'dic-lookup-w3m--tr-ej-yahoo-paragraph)
C-c Tでyahoo.jpの英和翻訳でポイントがある位置のパラグラフを翻訳します。

このパターンのコマンドを使うにはautoloadではなくrequireで
dic-lookup-w3m.elを読み込んでおくか、最初にdic-lookup-w3mを呼び出して
dic-lookup-w3m.elをロードさせる必要があります。
すべての辞書にこのようなコマンドを生成するには時間がかかるので、不要な
ら変数dic-lookup-w3m-autodef-funcをnilにするととでこの処理をやめること
が出来ます。

w3mバッファでは次のキーバインドが追加されています。
z     dic-lookup-w3m-bury-buffer
      w3mバッファを隠して、w3mを起動する前のウインドウのレイアウトに戻
      す。
x     dic-lookup-w3m-select-last-window
      w3mを呼び出す前に表示していたウインドウを選択する。
      辞書が表示されたw3mバッファを残したまま元のバッファにカーソルを
      移動します。
f     dic-lookup-w3m-toggle-filter
      w3mのfilterの有効、無効を切り替える。
      dic-lookup-w3mはemacs-w3mのフィルタ機能を使って辞書の内容を見や
      すく表示します。このフィルタを無効にして、オリジナルのwebページ
      どおりに表示したいときに使います。
F     dic-lookup-w3m-toggle-phonetic-image
      発音記号のinline imageをフォントに変換して表示するかどうかを切り
      替える。
      サイトによっては発音記号をinline imageで表示するものがあります。
      emacs-w3mで画像を表示すると動作が遅くなるので、dic-lookup-w3mで
      は一部の辞書サイトに対して発音記号のinline imageを対応するフォン
      トに置き換えるフィルタがあります。このフィルタを無効にして、元の
      inline imageを表示するときに使います。フィルタが定義されていな
      いサイトでは何も起きません。
C-c l dic-lookup-w3m-filter-toggle-eword-anchor
      英単語らしい文字列に辞書検索用のアンカーを付けるフィルタをトグル
      する。
      w3mバッファ中の英単語のように見える文字列(アルファベットだけから
      なる文字列)のすべてから辞書へのリンクを張って、単語をクリックす
      るだけで辞書が引けるようにします。

デフォルトではバインドしていませんが次のようにすると目的のリンクへの移
動が少し速くなるかもしれません。
(define-key w3m-mode-map "j" 'dic-lookup-w3m-next-anchor-line)
(define-key w3m-mode-map "k" 'dic-lookup-w3m-previous-anchor-line)))


コマンド:

ほぼソースから抜き出しただけの文章です。

dic-lookup-w3m &optional SEARCH-ENGINE QUERY

w3mを使ってインターネット上の辞書を引く。または翻訳する。

search-engineがnon-nilならそのsearch-engineを使う。nilならミニバッ
ファから読み取る。search-engineは
`dic-lookup-w3m-search-engine-alist'に存在するもの。

queryが文字列ならその文字列をsearch-engineに送る。シンボルならカレ
ントバッファから文字列を選択してsearch-engineに送る。シンボルの値
によって選択範囲を指定する。指定できるシンボルはline, sentence,
region, paragraph, buffer。region以外は`thing-at-point'を使用して
文字列を選択する。queryがnilならミニバッファから読み取る。

前置引数を与えると、その値によって文字列の選択範囲を指定する。範囲
指定の種類はqueryに与えるシンボルと同じ。前置引数の値と範囲指定の
組み合わせは`dic-lookup-w3m-read-query-prefix-arg-alist'で指定する。
たとえばC-uでsentense、C-u C-uでregionなど。

前置引数はqueryの値に優先する。たとえばsentenceを指定した
dic-lookup-w3mの呼び出しをキーバインドしておき、場合によって前置引
数でregionやparagraphを指定するようにすると、キーバインドの数とキー
ストロークを節約できる。
queryへのシンボルの指定と前置引数の指定は翻訳サイトでの使用を想定
している。

前置引数とテキストの選択範囲の対応は変数
dic-lookup-w3m-read-query-prefix-arg-alistを参照。


dic-lookup-w3m-bury-buffer (z)

w3mバッファを隠して、`w3m'を起動する前のウインドウのレイアウトに戻す。


dic-lookup-w3m-filter-toggle-eword-anchor (C-c l)

英単語らしい文字列に辞書検索用のアンカーを付けるフィルタをトグルする。
引数なしで呼び出すとフィルタをトグルする。flagの値がturnoffならフィ
ルタを無効にする。turnoffでもnilでもなければフィルタを有効にする。
フィルタを有効にすると、ページ中にあるすべての英単語らしい文字列に
検索エンジン``dic-lookup-w3m-favorite-ej-engine''を検索するリンク
をつける。


dic-lookup-w3m-jtxt2w3m

日本語のテキストを、各単語に辞書へのリンクを付けたhtmlに変換してw3mで開く。
ミニバッファに入力したテキストまたはカレントバッファのテキストを簡
易なhtmlに変換してw3mで開く。日本語の各単語から辞書へリンクを張る。
辞書は国語辞典のほか和英や日中辞典など日本語が見出し語になっていれば使える。
`dic-lookup-w3m'と同じように、前置引数で変換するテキストの範囲を指
定できる。前置引数なしで、queryが空の場合はカレントバッファ全体を
変換する。
形態素解析エンジン(MeCab, ChaSen)の設定を
`dic-lookup-w3m-morpheme-cmd'、`dic-lookup-w3m-morpheme-args'、
`dic-lookup-w3m-morpheme-coding-system'、
`dic-lookup-w3m-morpheme-eos'でおこなう。
適切な形態素解析器があれば日本語以外の言語にも使えるはず。
http://sourceforge.jp/projects/mecab-chinese/
http://code.google.com/p/imdict-chinese-analyzer/
http://d.hatena.ne.jp/asanote/20090319/1237452770


dic-lookup-w3m-last-engine

最後にミニバッファから読み込んで使用したサイトを使用して検索する。
キーバインドから起動したサイトは、最後にミニバッファから読み込んで
使用したサイトにならない。


dic-lookup-w3m-next-anchor-line

ポイントのある行より後の行の最初のアンカーにポイントを移動する。
一行に複数のアンカーがあっても最初のひとつにしか移動しないので、遠くに
あるアンカーに早くたどり着ける。`dic-lookup-w3m-previous-anchor-line'も参照。


dic-lookup-w3m-previous-anchor-line

ポイントのある行より前の行の最後のアンカーにポイントを移動する。
一行に複数のアンカーがあっても最初のひとつにしか移動しないので、遠くに
あるアンカーに早くたどり着ける。`dic-lookup-w3m-next-anchor-line'も参照。


dic-lookup-w3m-search-engine-menu

search engineの一覧を表示する。
表示は``dic-lookup-w3m-search-engine-alist''に出現する順。
C-uで名前でソート、C-u C-uで説明でソート。


dic-lookup-w3m-select-last-window (x)

w3mを呼び出す前に表示していたウインドウを選択する。


dic-lookup-w3m-toggle-filter (f)

w3mのfilterのon/offを切り替える。


dic-lookup-w3m-toggle-phonetic-image (F)

発音記号のinline imageをフォントに変換して表示するかどうかを切り替える。
inline imageを表示すると時間がかかるためフォントに置き換える。
``w3m-filter''にフォントに変換するためのフィルターが定義されているサイ
トのみ有効。
フィルターは関数`dic-lookup-w3m-filter-convert-phonetic-symbol'を呼び
出すようになっていなければならない。


dic-lookup-w3m-txt2html

カレントバッファのテキストを簡易なhtmlに変換する。
バッファ内の各英単語らしい文字列から辞書へのリンクを張る。
変換結果はemacsの新規バッファに出力する。ファイルに保存して別のwebブラ
ウザで表示出来る。


dic-lookup-w3m-txt2w3m

カレントバッファのテキストを簡易なhtmlに変換してw3mで開く。
バッファ内の各英単語から辞書へのリンクを張る。




変数:

dic-lookup-w3m-buffer-name

辞書の検索結果を表示するためのw3mバッファの名前。
non-nilなら、w3mセッションのバッファ名。複数のw3mセッションがある
とき、常にこのバッファで検索を行う。もしバッファ名のセッションが存
在しないときは新しいw3mセッションを開始して、そのバッファ名をこの
変数に保持する。
nilなら`w3m-goto-url'が選択するセッションで検索を行う。(w3mのデフォ
ルトの動作。)
二つのw3mセッションの片方に読みたいwebサイトを表示して、もう一方に
辞書を表示するという使い方を想定。


dic-lookup-w3m-config-files

辞書サイトの定義を記述したファイルのリスト。
dic-lookup-w3m.elがロードされたとき、このリストにあるシンボルがrequireされる。
シンボルは辞書サイトの定義ファイルでprovideしておく必要がある。
たとえば母語ごとに辞書サイトのセットを定義することを想定。
リストを記述する順番に注意。ファイルをロードする順番によって
`w3m-filter-rules'で定義されるフィルタの実行順序が変わる。同一サイトに
対するルールが複数のファイルに書かれている場合、ロードする順番で結果が
変わる可能性がある。


dic-lookup-w3m-enable-search-engine-list

使用する検索エンジンのリスト。
`w3m-search-engine-alist' にある検索エンジンのうち、使用した
いエンジンの名前を正規表現で記述する。完全に一致させるにはパターン
の前後に`^', `$'が必要。パターンのどれかにマッチした検索エンジンだ
けが`w3m-search-engine-alist'に追加され、辞書選択の補完候補に現れる。
nilなら`w3m-search-engine-alist'にあるすべてのエンジンを使う。


dic-lookup-w3m-favorite-ej-engine

英単語からリンクを張るデフォルトのsearch engine.
`dic-lookup-w3m-filter-toggle-eword-anchor'参照。


dic-lookup-w3m-filter-convert-phonetic-symbol

発音記号のinline imageをフォントに変換して表示するかどうかのフラグ。
non-nilなら、可能な場合はフォントに変換する。
nilならinline imageのまま。
`dic-lookup-w3m-toggle-phonetic-image'で使用。


dic-lookup-w3m-filter-disable-translation-anchor

webページに翻訳ボタンをつけるかどうかのフラグ。
non-nilならページ翻訳ボタンを付けない。
nilなら`dic-lookup-w3m-filter-translation-anchor'を呼び出してwebページ
に翻訳ボタンをつける。


dic-lookup-w3m-filter-do-show-candidates-heading

単語の候補リストの前に表示する見出し。


dic-lookup-w3m-filter-excite-always-show-first-entry

excite辞書で最初の見出し語の内容を表示する。
exciteの辞書検索で複数の見出し語が見つかった場合でも、最初の見出し語の
内容を表示する。


dic-lookup-w3m-filter-related-links-heading

関連サイトのリストの前に表示する見出し。


dic-lookup-w3m-google-translator-langs

google翻訳で有効にする言語のリスト。
((LANGS1) (LANGS2))
LANGS1、LANGS2は言語名のリスト。LANGS1 X LANGS2の組み合わせで翻訳
ができるようにする。
nilの場合はすべての言語を対象にする。nil X nilは起動が遅くなる。


dic-lookup-w3m-inline-image-inherit

inline imageの表示/非表示切り替え規則。
inline imageの表示ルールが`dic-lookup-w3m-inline-image-rules'に定
義されていないサイトのデフォルトの動作の指定。
non-nilならinline imageの表示/非表示の状態を切り替えない。(その前
に表示したページと同じ。)
nilなら`w3m-default-display-inline-images'の値に従う。


dic-lookup-w3m-inline-image-rules
w3mでinline imageを表示するかどうかをサイトごとに指定するリスト。
 ((REGEXP . FLAG) ...)
FLAGが'turnoffなら正規表現にマッチしたサイトではinline imageを表示しない。
turnoff, nil以外なら表示する。
FLAGがnilであるか、またはサイトがどの正規表現にもマッチしなかった場合は
`dic-lookup-w3m-inline-image-inherit'の指定に従う。
`w3m-toggle-inline-images'参照。


dic-lookup-w3m-load-hook

dic-lookup-w3mをロードした後に呼ばれるフック。


dic-lookup-w3m-morpheme-args

形態素解析エンジンの引数。


dic-lookup-w3m-morpheme-cmd

形態素解析エンジンのコマンド。


dic-lookup-w3m-morpheme-eos
形態素解析エンジンの出力の文末表示文字列。

dic-lookup-w3m-read-query-prefix-arg-alist

dic-lookup-w3m'の前置引数とテキストの選択範囲の対応。
なし            point。regionを選択した状態ではregion
C-u 2           line
C-u             sentence
C-u 3           region
C-u C-u         region
C-u 5           paragraph
C-u C-u C-u     paragraph
C-u 6           buffer
C-u C-u C-u C-u buffer


dic-lookup-w3m-related-site-list

queryに関連した検索をしやすくするために表示するサイトのリスト。
`(category
  ((search-engine . display-name)..))
 ..
`dic-lookup-w3m-filter-related-links'参照。


dic-lookup-w3m-search-engine-aliases

search engineの別名のリスト。
search engineを別の覚えやすい名前で登録する。
`((ALIAS ENGINE-NAME)..)


dic-lookup-w3m-search-engine-alist

検索エンジンのリスト。
最初の4個のメンバーは`w3m-search-engine-alist'参照。

5番目はその検索エンジンの説明。
6番目は`dic-lookup-w3m-suitable-engine'に渡す情報。
値はlistまたはsymbol。listのときは(query-pattern engine-regexp replacement)。
queryがQUERY-REGEXPに一致したら辞書engineの名前のENGINE-REGEXPにマッチ
した部分をREPLACEMENTに置き換えたものを新しい辞書エンジンにする。
symbolのときは関数名とみなして`dic-lookup-w3m-suitable-engine'が受け取った
引数search-engine query search-engine-alistで呼び出す。
関数は検索に使う辞書エンジン名を返さなければならない。


dic-lookup-w3m-suitable-engine-pattern

検索文字列によって辞書を自動的に切り替えるための規則。
例えば英和辞典で日本語文字列を検索しようとした場合に和英辞典に切り替えて
検索する。`dic-lookup-w3m-suitable-engine'で使用。


dic-lookup-w3m-translator-site-list

webページを翻訳するtranslatorのリスト。
webページに翻訳ボタンをつけて、各translatorにリンクする。
`dic-lookup-w3m-filter-translation-anchor'で使用。


サイトの追加について:

dic-lookup-w3mはemacs-w3mのw3m-search.elを使って辞書サイトにqueryを送っ
て辞書を引いています。基本的にはgoogleで検索するのと辞書を引くのに違い
はありません。
w3m-search.elにはいくつかの検索エンジンのサイトが登録されています。
dic-lookup-w3mはw3m-searchのw3m-search-engine-alistに辞書サイトを追加
する形で検索を実現しています。ただし、直接追加するのではなく、
dic-lookup-w3m-search-engine-alistに定義して、それを加工して
w3m-search-engine-alistに追加しています。新しいサイトを追加する場合は
dic-lookup-w3m-search-engine-alistに追加してください。


辞書サイトについて:

登録されているサイトは2008年末頃のものです。今でもちゃんと使えるところ
もありますが、使えないところもあります。
特に、サイトのURLは変わっていなくてもサイトが出力するhtmlのパターンが変
わっているために、フィルタが正しくかからないサイトが多いと思います。


フィルタについて:

dic-lookup-w3mはemacs-w3mのw3m-filter.elを使って、辞書サイトの出力にフィ
ルタをかけて見やすくしています。その他、関連サイトの表示やstemによる単
語の候補の表示にもこのフィルタ機能を使っています。
ただし、w3m-filter.elいくつかの関数は欲しい機能が不足していたので
defadviceで機能を拡張して上書きしています。機能は上位互換になるように
したつもりですが、dic-lookup-w3mをロードすることでemacs-w3m本来の機能
がうまく動かなくなることがあるかもしれません。
新たに辞書サイトを追加するときは、フィルタルールも追加したほうがよいで
しょう。このときフィルタ関数の一部はdefadviceによってw3m-filter.elでは
なくdic-lookup-w3m.elのものが有効になっているので注意してください。


動作環境:

2011年6月現在 emacs-23.3, emacs-w3m-version 1.4.438, w3m version
w3m/0.5.3で動いています。
他の環境は試していないのでわかりません。
2008年末に作ってからあまり変わっていないので、2008年頃の環境なら動くと
思います。

dlw あっと users てん sourceforge どっと jp

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published