[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: minibuffer force sizechange
>>>>> In [emacs-w3m : No.07468] 土屋さん wrote:
> ふーむ.shrink-window() が先だったのには意味があったんですね….
偶然そうしただけですって。;-)
[...]
> -- User Option: window-min-height
> この変数の値は, ウィンドウが自動的に削除されるまでにどの程度まで
> ウィンドウが短くなりうるかを決定する. ウィンドウを
> `window-min-height'行未満に小さくすると自動的に削除され, これより
> 短いウィンドウは作成できない. 絶対的な最小の高さは2行(モード行
> に1行, バッファの表示に1行)である. ウィンドウサイズを変える処理
> では, この変数が2未満であると2に設定し直す. デフォルト値は4であ
> る.
この記述でちょっと疑問なのは modeline が無い frame (modeline も
枠もない画面いっぱいの幅の minibuffer だけの frame を画面の底に
置いて使っていたことがあります) での振る舞いなんですが、ま、それ
はいいとして、
[...]
> というわけで,window-min-height の束縛は効いていないのではないでしょ
> うか?
そうかもしれませんね。
[...]
> でまあ,簡単にこの問題を解決する方法はないのかなあ,とつらつら考えて
> みたのですが,
> (1) (save-window-excursion (enlarge-window 1))
> (2) (enlarge-window 0)
> という2つの案を思いつきました.後者の方が好みなんですが,この処理が必
> 要になった元々の事情をきちんと把握していないので,これでうまくいくのか
> 検証できません.どうでしょうか? > 山岡さん
実を言うと、window の高さを増減または減増させる動作そのものはど
うでもよくて、例えば w3m-update-tab-line() の以前の中身
(set-cursor-color (frame-parameter (selected-frame) 'cursor-color))
でも目的は達せられたときがあるのです[1]。しかし、これには問題が
ある[2] ことがわかって、現在の姿になっています。要は、modeline
や header-line の表示をプログラムで変更しても、実際に目に見える
変化が起きない問題への対策です。
[1] [emacs-w3m:03795] から始まる thread または
http://news.gmane.org/group/gmane.emacs.w3m/thread=1172
[2] [emacs-w3m:07242] から始まる thread または
http://news.gmane.org/group/gmane.emacs.w3m/thread=4605
これは、電化製品の調子が悪いときによくやる「たたいてみる」行為に
似ています。合理的な説明ができないけれど、とにかく効く、という。
一方ぼくは、合理的な解決を求めて emacs-devel に何度かねじこんで
もいます。その答えが先端の Emacs の force-mode-line-update の実
装や、w3m-force-window-update で使っている force-window-update
なんです。なんですが、どうも完全ではないような気がしないでもなく
はない...。
それから、Emacs 21.1 〜 21.3.50 のそれぞれで効果のほどが違ったり
もします。さらに、プラットフォームによっても違いがあるであろうこ
とが予想されます。そういうわけで、特に苦情が寄せられているわけで
はない現行のやり方を変えるには、長い検討時間を厭わない覚悟が必要
でしょう。
実は、きのうの変更で以下のようにしたことは、ちょっぴり不安ではあ
るのですよ。
> (let ((window-min-height 0))
> (enlarge-window 1)
> (unless (eq (next-window nil 'ignore-minibuf) (selected-window))
> (shrink-window 1)))
*w3m* の window と minibuffer だけがある frame で、*w3m* の
window で最初に行なう enlarge-window は視覚的な変化を生まず、そ
の次も同様です。つまり「たたいた」のに「びくともしない」わけです。
とは言え、先に書いたようにこれは window の高さを変更することは本
質ではなくて、そこで起きる副作用で modeline や header-line の表
示が書き代わってくれることを期待しての操作であって、少なくともぼ
くの環境ではうまくいっている気がするので、明らかな不具合を起こさ
ない限りそお〜っとしておきたいのが正直な気持ちです。あ、もちろん
度胸と霊感のあるボランティアの参加は歓迎しますよ。;-)