[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:
shimbun関
連いろいろについて確認
>>>>> In [emacs-w3m : No.07354] 長さん wrote:
>> [emacs-w3m:07336] sb-mailman.elについて
>> 特にcase-fold-searchは良くないような...
遅い対応ですみません。元記事が発信されたころ (1月3日午前1時13分)、
ぼくは初夢を見ていたかもしれません。^^;;
sb-mailman.el と sb-wikimedia.el の変更のうち、正規表現の改善だ
けを commit しました。どうもありがとうございます。
case-fold-search については後述します。
;; [emacs-w3m:07016] は後ほど。
>>>>> In [emacs-w3m : No.07336] 長さん wrote:
> 3.case-fold-searchについて
> さて、1の修正の時、frだけ小文字になっていたので、当初それが悪いのか
> と考えました。そこでcase-fold-searchを設定していないか確認したところ、
> sb-mailman.elのshimbun-mailman-headersの中で
> (setq case-fold-search t)
> としていました。
> なので最初はスルーしていたのですが、改めて見た時 letで束縛する変数に
> case-fold-searchが無く、この処理が走るとglobalなcase-fold-searchを書
> き換えているのではないかと思います。
普通 case-fold-search は permanent local なのですよ↓。
(let ((case-fold-search 'foo))
(with-temp-buffer
(setq case-fold-search 'bar))
case-fold-search)
=> foo
sb-mailman.el では " *temp*" バッファにおける値を
(setq case-fold-search t)
で設定しているのであって、長さんのやり方は Emacs 21 では有効なの
ですが、Emacs 20 や XEmacs ではまずいのです↓。
(let ((case-fold-search t))
(let ((case-fold-search nil))
(with-temp-buffer
case-fold-search)))
=> t
ちょっと、ゾっとしますよね。Emacs の NEWS には書いてないみたいだ
なあ。default-case-fold-search の docstring には "don't override
it" と書いてあるので、次のような使い方もおそらくだめです↓。
(let ((case-fold-search t))
(let ((default-case-fold-search nil))
(with-temp-buffer
case-fold-search)))
=> nil
Emacs 21 では default-case-fold-search の値は case-fold-search
と単に連動しているだけみたいですね (本当か?)。