[mew-dist 23093] Re: `mew-use-full-window'が無視される。

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2003年 2月 20日 (木) 21:16:22 JST


白井です。

From: Takashi Masuda (増田貴士) <masutaka at example.com> さん曰く
Subject: [mew-dist 23091] Re: `mew-use-full-window'が無視される。
Message-ID: <20030220.001027.98862277.masutaka at example.com>
Date: Thu, 20 Feb 2003 00:10:27 +0900 (JST)

> > # mew-use-full-window => t の人はやっぱりいらっしゃるのですね。
> 
> はい。Windowが小さくなっていくのは嫌ですからね。

# 複数の Window を一気に消すのは "C-x1" で簡単に出来るけど、気に
# いるように分割するのは面倒くさいです。けど、こういうのは人それ
# ぞれですね。

> 私の場合ですと、草稿を作ったけど他のメッセージを参照したくなって、
> summary-modeまで戻り、通常閲覧をする場合(草稿Windowが消えても構わない)に
> 戸惑って(^o^;います。

ということは、こういうことかしら?

(defvar mew-use-delete-draft-window t
  "mew-delete-other-window() のときドラフトのウインドウも消す")

(defun mew-delete-other-window ()
  (unless (one-window-p)
    (let ((owin (selected-window))
	  wins ret)
      (walk-windows
       (lambda (win)
	 (set-buffer (window-buffer win))
	 (unless (or (eq owin win)
		     (and (string-match "^mew-" (symbol-name major-mode))
			  (not (and mew-use-delete-draft-window
				    (eq major-mode 'mew-draft-mode)))))
	   (setq wins (cons win wins))))
       nil)
      (while wins
	(unless (one-window-p)
	  (setq ret t)
	  (delete-window (car wins)))
	(setq wins (cdr wins)))
      (select-window owin)
      ret)))

あと、mew-use-full-window => nil の環境でも

(define-key mew-summary-mode-map "k" (lambda ()
					(interactive) (mew-delete-other-window)))

と summary-mode と message-mode に割り当てておくと、結構便利です
よ。mew-use-full-window => nil, mew-use-delete-draft-window => t
の組合わせがぼくのお好みになりそう。

もう一つ window 制御関係だと、summary から C-cC-o で draft に戻
るときにこんなことをやっています。返信時の三分割状態にすぐ戻せる
ので、(ぼくにとっては)結構便利だと感じています。

(defadvice mew-summary-jump-to-draft-buffer (around jump-msgbuf activate)
  "C-cC-o したときの挙動変更"
  (let ((obuf (current-buffer))
	(owin (selected-window))
	(mwin (get-buffer-window (mew-buffer-message))))
    (when mwin
      (select-window mwin))
    ad-do-it
    (if (not (eq major-mode 'mew-draft-mode))
	(select-window owin)
      (let ((wh (window-height))
	    (fh (frame-height))
	    (other (delq (selected-window)
			 (get-buffer-window-list (current-buffer)))))
	(if other
	    (progn
	      (set-window-buffer (selected-window)
				 (or (and mwin (mew-buffer-message)) obuf))
	      (select-window (car other)))
	  (when (> (* wh 2) fh)
	    (shrink-window (- wh (/ fh 2)))))))))

P.S.

> でも、カレントウィンドウ幅とフレーム幅を比べれば、
> 
>   "C-x3"しているときは、delete-other-windows()しない。
>   "C-x3"していないときは、delete-other-windows()する。
> 
> なんてことができそうですね。

最初、そういうのやろうと思ったんですが、そこまでやる価値があるか?
と思ってやめてしまいました。^^;;;

P.P.S.

>> 3分割だとWindowが狭くなりすぎるので、返信やメッセージ表示の際には
>> Summary + 1 (DraftまたはMessage)の2分割構成にしたい、という気持ち
>> は理解できます。そのように簡単にカスタマイズできるといいのかもし
>> れません。

それも良いかもしれないですが、ぼくは使いそうもないのでモチベーショ
ン(及び暇)が足りないです。どなたかにおまかせです。

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内