Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: phrase search



Namazu でどういう実装が良いかはわかりませんが、
MULE (multilingual environment (Emacs20)) で採用している方法
の紹介です。

>>>>> In [namazu-devel-ja : No.00760] 
>>>>> Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx> wrote:
> >> byte数でいいんじゃないでしょうか。EUC-JP, Shift_JIS, UTF-8 
> >> は OK ですよね。ISO-2022-JPは行頭まで戻らないと状態がわから
> >> ないのが難点です。
> >
> >  御意。しかし、byte 数となると結構大変そうですね。無駄な SI/SO もあっ
> >たらきちんとカウントしないといけないし...

> たしかに。内部コード (UTF-8?) に変換すると、元のファイルでの
> 文字の位置と対応が取れなくなりそうです。さらに、わかち書きの
> 際にずれてしまう危険があります。何かいい方法は思いつきません?

Emacs(MULE) 内部では内部コード(emacs-mule)ですが、位置
(point)は byte 数ではなく文字数で管理しています。

例:  ESC 100 C-f で 100文字カーソルを進める

そして bookmark という、編集中のファイル名とカーソル位置を保
存するという機能があります。

C-x r m		bookmark-set
C-x r b		bookmark-jump

ファイル編集中に C-x r m でマークします。
C-x r b で bookmark 中のファイルを開いてカーソルも移動します。


bookmark は ~/.emacs.bmk というファイル名で保存されます。
その中は、

 ("memo.txt"
  ((filename . "/home/kose/Emacs/meadow-book/memo.txt")
   (front-context-string . "東武動物公園 ")
   (rear-context-string . " quail-help で。\n\n")
   (position . 200)))

こんな感じで、ファイル名と位置を保存しています。
位置は「何文字目か」です。


;; 多言語対応を考えると「論理的な文字数を位置」を保存して、
;; namazu 自体を Emacs Lisp で書くのもアリかなと思う。Emacs
;; server を使って 検索を Emacs にやらせるという....。
;; 妄想のしすぎですか?
-- 
こせき @ Emacs のページ作成中
http://www.NetLaputa.ne.jp/~kose/Emacs/
kose@xxxxxxxxxxxxxxxxxx