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

[xyzzy:00583] Re: info



須田さん、こんにちは。

        Tue, 13 Oct 1998 20:42:16 +0900 の
        [xyzzy:00582] Re: info
        への返事です.

| その文字列がファイルの中になくてもですか?

えーと、ここのサーチは文字列を探しているのではありません。

たとえば mule-jp の場合、mule-jp にこんなのがありますよね?

mule-jp> 
mule-jp> 
mule-jp> Indirect:
mule-jp> mule-jp-1: 151
mule-jp> mule-jp-2: 50180
mule-jp> 

で、ここら辺のコードで "Indirect:" の直後から "" の直前まで 
narrow しているので、

info> (scan-buffer "\n\nIndirect:" :tail t)
info> (save-restriction
info>   (narrow-to-region (point)
info>                     (progn (scan-buffer "\n" :tail t)
info>                       (1- (point))))

サーチ対象は以下の範囲になります。

mule-jp> <改行>
mule-jp> mule-jp-1: 151<改行>
mule-jp> mule-jp-2: 50180<改行>
mule-jp> <EOB>

osubfile は、現在読み込んでいるファイル名なので mule-jp-1 か 
mule-jp-2 のどちらかです。ですから、この scan-buffer は必ずマッ
チするはずです。

info>   (goto-char (point-min))
info>   (scan-buffer (concat "\n" osubfile ": ") :tail t)
info>   (beginning-of-line)
info>   (while (not (eobp))

ほんで、^.*: [0-9]+$ をサーチして、マッチした位置+1 に移動して
いるので EOB 以外ではこの scan-buffer も常にマッチするはずです。

info>     (scan-buffer "\\(^.*\\): [0-9]+$" :regexp t)
info>     (goto-char (+ (match-end 1) 2))
info>     (setq list (cons (cons (with-input-from-selected-buffer (read))
info>                            (buffer-substring (match-beginning 1)
info>                                              (match-end 1)))
info>                      list))
info>     (goto-char (1+ (match-end 0))))

つまり、マッチしないのであれば mule-jp の形式が変なのではないか
という想像なのですが、余計なスペースとか入ってません?

# 書いてて分からなくなってきた(^^;

--
亀井哲弥(Tetsuya Kamei)
kamei@xxxxxxxxxxxx/JCA00343@xxxxxxxxxxx

Index Home