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