[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 メーリングリストの案内