[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: search and multibyteness
- To: mule-ja@xxxxxxxx
- Subject: Re: search and multibyteness
- From: Katsumi Yamaoka <yamaoka@xxxxxxx>
- Date: Wed, 20 Oct 2004 17:14:53 +0900
- Cancel-lock: sha1:4wzvA55RiKoaHkWGLezsC8a8G+k=
- List-help: <mailto:mule-ja-ctl@m17n.org?body=help>
- List-id: mule-ja.m17n.org
- List-owner: <mailto:mule-ja-admin@m17n.org>
- List-post: <mailto:mule-ja@m17n.org>
- List-software: fml [fml 4.0.3 release (20011202/4.0.3)]
- List-unsubscribe: <mailto:mule-ja-ctl@m17n.org?body=unsubscribe>
- Organization: Emacsen advocacy group
- References: <b9yfz4gfcto.fsf@jpl.org> <200410151257.VAA16634@etlken.m17n.org><yotlsm8g6q5a.fsf@jpl.org> <200410160045.JAA17921@etlken.m17n.org><b9yy8i20wut.fsf@jpl.org> <200410200729.QAA29385@etlken.m17n.org>
- Reply-to: mule-ja@xxxxxxxx
- User-agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3.50 (gnu/linux)
>> ぼくが使った手法は、STRING の生成を、その multibyte バッファに
>> (insert ?\200 "\200")
>> で挿入した二つの文字を buffer-substring で切り出して、
>> (or (search-forward STRING1 nil t)
>> (search-forward STRING2 nil t))
>> のように使うというものです。
>>>>> In [mule-ja : No.08777] 半田さん wrote:
> ??? STRING2 が (insert "\200") した結果を切り出したものだと
> すると、それは lang. env. によっては通常の文字になるので、ま
> ずくないでしょうか?
はい、例えば Russian lang. env. では通常の文字ですね。
この search を行なうときに挿入される summary 行は、通常メールや
ニュースを読んでいる本番のものとは別の、テスト専用のものです。こ
のことをちゃんと書いておかないと、意味が通じませんでしたね。すみ
ません。
あるいは、別の心配がありますか?
その、Russian lang. env. では罫線素片のように見える通常の文字は、
カラム位置を探すだけのために、次の二つのどちらかの方法で
multibyte バッファに挿入される (またはユーザの設定によっては挿入
されない) 文字のうち、後者にマッチします。
(insert ?\200)
(insert (format "%c" ?\200))
このテストのために作られる summary 行は、subject や送信者名など
が空文字になっていて、探す対象以外に \200 に相当する文字が無いこ
とが保証されるので、
(or (search-forward STRING1 nil t)
(search-forward STRING2 nil t))
このフォームは前記の二つのやり方のどちらかで挿入された (または、
されなかった) \200 に相当する文字を確実に探すことができます。
いったんバッファに書いてみて、それを切り出す手法を使ったもう一つ
の理由は、string-make-multibyte 関数などを使っても、XEmacs で
warning が出ないようにする対策をしないでも良いことでした。