[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

hscroll with Emacs-21.3



## ふみゃー、なんでこう忙しいときに限って不具合を見つけるんだろう。。。

久しぶりに Emacs-21.3 + 朝日新聞のページで hscroll 系のコマンド
使ったら、ぼくが前につくりこんだ w3m-auto-show と挙動が変わって
Emacs の auto-show が有効な *がちがちした* 動作になっていました。;_;

調べたところ、frame.el に

(defcustom auto-hscroll-mode t
  "*Allow or disallow automatic scrolling windows horizontally.
If non-nil, windows are automatically scrolled horizontally to make
point visible."
  :version "21.1"
  :type 'boolean
  :group 'scrolling)

(defvaralias 'automatic-hscrolling 'auto-hscroll-mode)

などと書いてあって defvaralias ってはじめてみたのでいろいろと試
したところ、

(let (t1 t2 t3 t4)
  (defvar t1-orig nil)
  (defvaralias 't1-alias 't1-orig)
  (setq t1 t1-orig t2 t1-alias)
  (with-temp-buffer
    (set (make-local-variable 't1-orig) t)
    (setq t3 t1-orig t4 t1-alias))
  (insert (format "initial: %s, %s\nlocal: %s, %s\nglobal: %s, %s\n"
		  t1 t2 t3 t4 t1-orig t1-alias)))
=>
initial: nil, nil
local: t, t
global: nil, nil <= 問題なし

↑こんな感じでオリジナルな変数を local にセットしたら問題ないけど、

(let (t1 t2 t3 t4)
  (defvar t2-orig nil)
  (defvaralias 't2-alias 't2-orig)
  (setq t1 t2-orig t2 t2-alias)
  (with-temp-buffer
    (set (make-local-variable 't2-alias) t)
    (setq t3 t2-orig t4 t2-alias))
  (insert (format "initial: %s, %s\nlocal: %s, %s\nglobal: %s, %s\n"
		  t1 t2 t3 t4 t2-orig t2-alias)))
=>
initial: nil, nil
local: t, t
global: t, t <= がーん

と、エイリアスしてある方の変数は local にしても効かないことがわ
かりました。

# で、Mew が automatic-hscrolling を local に t にしているので、
# w3m-mode か mew-summary-mode かあとから動いた方の値に Emacs 全
# 体がなっていました。

という対処をやっておきました。

-- 
白井秀行@次は Mew

P.S.
さすがにこれは大丈夫だった。

(insert (format "t1-orig: %s, t1-alias: %s" t1-orig t1-alias))
=> t1-orig: nil, t1-alias: nil

(let ((t1-orig t1-orig)
      (t1-alias t1-alias))
  (setq t1-alias t)
  (insert (format "t1-orig: %s, t1-alias: %s" t1-orig t1-alias)))
=> t1-orig: t, t1-alias: t

(insert (format "t1-orig: %s, t1-alias: %s" t1-orig t1-alias))
=> t1-orig: nil, t1-alias: nil