[mew-dist 23033] hscroll with Emacs-21.3
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
2003年 2月 4日 (火) 17:59:11 JST
Emacs-21.3 で Mew を使っていて、mew-summary-mode で
mew-hscroll() が有効になった後、他の buffer で
(set (make-local-variable 'automatic-hscrolling) nil)
と auto-hscroll をはずしていた buffer も automatic-hscrolling => t
となってしまうことを発見しました。
調べたところ、Emacs-21.3 では 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)
と書いてあり、automatic-hscrolling は auto-hscroll-mode の
defvaralias になったようです。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 <= OK
このようにオリジナルな変数をローカルにバインドして設定する分には
問題ないのですが、
(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: t, t
local: t, t
global: t, t <= だめ
と defvaralias した方の変数をローカルに設定してもグローバルに反
映されてしまいました。
# 結局、mew-summary-mode と w3m-mode とあとから動いた方の値になっ
# ていました。はぁ〜〜…
他に defvaralias してある変数を調べてみましたけど、今のところは
こいつだけの模様です。
--
白井秀行 (mailto:shirai at example.com)
*** mew-env.el.orig Tue Jan 21 13:12:38 2003
--- mew-env.el Tue Feb 4 17:00:42 2003
***************
*** 133,142 ****
(defalias 'mew-mouse-region-p 'mouse-region-match)
(defsubst mew-mouse-region-p () nil))
! (if (boundp 'automatic-hscrolling)
! (defsubst mew-hscroll ()
! (set (make-local-variable 'automatic-hscrolling) t))
! (defsubst mew-hscroll () (auto-show-mode 1)))
(if (fboundp 'minibuffer-prompt-end)
(defalias 'mew-minibuf-point-min 'minibuffer-prompt-end)
--- 133,147 ----
(defalias 'mew-mouse-region-p 'mouse-region-match)
(defsubst mew-mouse-region-p () nil))
! (cond
! ((boundp 'auto-hscroll-mode)
! (defsubst mew-hscroll ()
! (set (make-local-variable 'auto-hscroll-mode) t)))
! ((boundp 'automatic-hscrolling)
! (defsubst mew-hscroll ()
! (set (make-local-variable 'automatic-hscrolling) t)))
! (t
! (defsubst mew-hscroll () (auto-show-mode 1))))
(if (fboundp 'minibuffer-prompt-end)
(defalias 'mew-minibuf-point-min 'minibuffer-prompt-end)
Mew-dist メーリングリストの案内