sref in filename.el
Katsumi Yamaoka
yamaoka @ jpl.org
2005年 6月 6日 (月) 11:40:21 JST
>>>>> In [Wanderlust : No.13656] 村田さん wrote:
> 先ず前提として, ユーザに (defalias 'sref 'aref) させるのは, なしっ
> て事にしたいです.
[...]
> 古い Emacs では, sref と aref に互換性はないので, 単純に置き換えは
> 出来ないと言うのは理解しました. ただ, CVS head で sref の定義がな
> くなった以上,
> 1. このまま sref を使い, (defalias 'sref 'aref) も提供する
> 2. aref で置き換え, (aref と sref に互換性のない) 古い Emacs 用に
> aref を再定義する
> のどちらかが必要だと思います. (そもそも 2が可能かどうかと言う問題
> もありますが)
村田さんがおっしゃる 2. の意味がやっとわかりました。
> 1 の方が簡単で影響も少ないのでしょうが, これから書かれる APEL を使っ
> て互換性を維持しようとするプログラムで, 文字列から文字を取り出す目
> 的で sref を使えって言うのもどうかと言う気がします.
>>> 逆に, 古い emacs 用に aref を emulate する必要がありますか?
> (fset 'aref-original (symbol-function 'aref))
> (defun aref (array index)
> (if (stringp array)
> (sref array index)
> (aref-original array index)))
> この程度で済むのであれば, 上記の 2の方が良い様に思えます.
古い Emacs での (aref "非ascii文字" 0) は先頭の文字の一部ですら
ないし、次の文字が (aref "非ascii文字" 1) でもありません。後者は
filename-special-filter では以下のように実装されています。
(setq i (+ i (char-length chr)))
まあ、古い Emacs で非 ascii 文字に使える aref を定義することは、
できそうな気もしますが、それだけの労力を費やす価値があるとも思え
ません。
filename-special-filter は 20.3 未満と以上用で関数定義全体を切
り替えて、特に新しい Emacs における効率を改善する (古い Emacs
用には sref を使うということです)。
いまだに sref を使っているプログラムがあるのならば、作者に
Emacs 20.2 以下のサポートをやめるか、バージョンによる切り替
えの対策をお願いする。
ということでいかがでしょう?
つい先週 RMS から指摘を受けたのですが、Emacs には無い、あまりに
一般的または短い名前の関数をむやみに bind するのは混乱の元です。
More information about the APEL-ja
mailing list