[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: make-variable-buffer-local



>>>>> at 05 Dec 2001 10:52:38 +0900
>>>>> 圭一 == Keiichi Suzuki <keiichi@xxxxxxxxx> said,
圭一> make-variable-buffer-local() した変数の default-value を
圭一> setq-default 以外の方法で変更することはできるのでしょうか?

圭一> ;; 何らかの副作用等で,意図せず変更してしまうとか。

とりあえずこれで再現できた (meadow -q で実験済み) 
current value = 1, default value = 0 だったものが
current value = 2, default value = 1 となり、現象を確認できます。

(let* ((buf-name "*test-buffer*")
       (buf (get-buffer buf-name)))
  (when buf 
    (kill-buffer buf)
    (setq buf (get-buffer buf-name)))
  (make-variable-buffer-local 'foo)
  (setq-default foo 0)
  (setq foo 1)
  (describe-variable 'foo)
  (sit-for 1)
  (save-excursion
    (let ((foo 2))
      (set-buffer (get-buffer-create "*test-buffer*"))
      ;;(setq foo 3)
      ;;(describe-variable 'foo)
      (sit-for 1)))
  (describe-variable 'foo))


圭一> 私の環境で,通常の運用をしていると,何かのタイミングで
圭一> `fill-prefix' の default-value が, "" に変更されてしまい,それ
圭一> がどこで起っているのかを調べています。

深くは考えてないけど...

save-excursion による副作用はdocument にもかかれているのでまぁ良いのです
が、ちょっと不思議な現象があります。例えば上の例のとおり(setq foo 3) や 
(describe-variable 'foo)を両方ともコメント合うとした例だと、先のような現
象再現をしてくれるのですが、コメント合うとされた部分を1つずつコメントを
外してみると結果が変わってきたりします。save-excursion の副作用は関連あ
りそう?

## これ以上の追求は時間の都合でパス。

--- Regards,
 Shun-ichi Goto  <gotoh@xxxxxxxxxxx>
   R&D Group, TAIYO Corp., Tokyo, JAPAN