[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 14:42:02 +0900
- Cancel-lock: sha1:zrT18kSPWvgCgkKulpCiUB8LX0U=
- 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>
- Reply-to: mule-ja@xxxxxxxx
- User-agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3.50 (gnu/linux)
>>>>> In [mule-ja : No.08774] 半田さん wrote:
> 一つ書き忘れましたが、Emacs 21 では
> (insert (string-to-multibyte "\200"))
> は
> (insert ?\200)
> と同じです。なぜなら multibyte buffer では 128 というコード
> の文字はないので eight-bit-control に属する raw byte として
> 取り扱われるからです。
> しかし、Emacs 22 では異ります。 128 というコードの文字は
> U+0080 として存在するので、これを挿入します。
半田さんが核心を突かれたので驚きました。実は Gnus が multibyte
のバッファに ?\200 などを挿入する形式は、最初に書いた
(insert (string-as-unibyte "\200"))
ではなくて、以下の 2種類であることが後になってわかったんです。
(insert ?\200)
(insert (format "%c" ?\200))
後者は (insert "\200") と同じです。
;; Gnus の summary バッファに表示する各行には、既読や返信済みな
;; どのマークが表示されるのですが、行のどのカラム位置に表示する
;; かはユーザがカスタマイズすることができます。それらの位置を毎
;; 回探す代わりに、summary mode に入ったときの一回だけ、ユーザ・
;; オプションの設定値に従ってダミー行を挿入してみて、あらかじめ
;; カラム位置を知っておきます。そのときにマークとして挿入するの
;; が \200, \201, \202, \203 の各文字です。
そういう文字を (search-forward STRING nil t) で探すために、以前
は STRING として "\200" を使っていました。その場合でも、ロシアな
どではちゃんと動作しない場合があったようです。最近になって、その
STRING を (string-as-multibyte "\200") で生成するようになったの
ですが、今度は Emacs 22 のユーザから苦情が出ました。
ぼくが使った手法は、STRING の生成を、その multibyte バッファに
(insert ?\200 "\200")
で挿入した二つの文字を buffer-substring で切り出して、
(or (search-forward STRING1 nil t)
(search-forward STRING2 nil t))
のように使うというものです。
必要だった情報をすべて提供して下さった半田さんに、お礼申し上げま
す。どうもありがとうございます。勝手ながら、半田さんからいただい
たメッセージを丸ごと英訳して、ding に投稿させていただきました。:)
http://article.gmane.org/gmane.emacs.gnus.general/58947