[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: popup windows or frames
山岡さんの指摘された問題点を,私なりに大雑把に要約すると,
text/html な記事に含まれているアンカーを辿って emacs-w3m を起動した
時,emacs-w3m の window/frame 操作によって,起動元となった MUA の
window 構成が破壊される(Gnus の場合は Summary buffer が隠されてしま
う)ことがある.
と言うことだと思います.
結論から言えば,ほどほどのところで妥協するしかないのではないでしょうか.
記事バッファから emacs-w3m に移動した直後はともかく,それ以後の様々な
操作まで,MUA の window 構成を破壊しないように振る舞うのは,殆んど不可
能ではないでしょうか.w3m-pop-up-frames / w3m-pop-up-windows /
w3m-use-tab で8通りもあるユーザー設定の全ての組み合わせと整合させるな
んて,考えただけでもぞっとします.
ついでに言うと,MUA の記事バッファから emacs-w3m を起動したからと言っ
て,常に MUA に戻りたい場合ばかりとも限らないと思うのですよ.私の場合,
そのまま別の用事を思いついて,emacs-w3m を使い続けることも結構あります.
で,妥協点なんですが,
(1) アンカーを辿っただけで summary buffer などの大事なバッファが隠さ
れてしまうことは防ぎましょう.
(2) それ以後のユーザーの任意の操作によって,window 構成が破壊されて
しまうのは,気にしないことにしましょう.
と言うのでどうでしょうか.
このような考えに基づき,とりあえず,
>> On Fri, 09 Jan 2004 12:37:59 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:
山> 最初に考えた対策は、w3m-safe-view-this-url が window や frame を
山> popup しないように w3m-pop-up-windows と w3m-pop-up-frames を nil
山> に束縛するというものでした。
w3m-pop-up-windows だけを束縛しておきました.w3m-pop-up-frames を t に
設定している人の場合,別の emacs-w3m な frame が立ち上がってくれること
が望ましいかも知れないと思ったので.
山> w3m-safe-view-this-url は記事バッファで使うコマンドなので、その
山> window に w3m のバッファが現れるのは不自然ではありません。しかし、
山> そこで前のページに戻るとどうなるか。それは元の記事バッファに戻るこ
山> とを意味せず、単にそのページの url を emacs-w3m で辿るだけです。
うーん,この希望は理解はできるのですが,とんでもなく難しいですよね.
ユーザーが本当に記事バッファに戻りたいと思っているのか,それとも
shimbun ライブラリによる加工前のオリジナルの記事を見たいと思っているの
か,簡単に見分ける方法がないので.
単なる思いつきなんですが,
(defun w3m-find-buffer (url)
(catch 'found-buffer
(save-current-buffer
(dolist (buffer (buffer-list))
(set-buffer buffer)
(when w3m-minor-mode
(and (stringp w3m-current-url)
(string= url w3m-current-url)
(throw 'found-buffer buffer)))))))
(switch-to-buffer (w3m-find-buffer (w3m-anchor)))
と,該当する URL を表示している w3m-minor-mode が active なバッファが
存在したら,そのバッファを表示するようにすれば,大抵の場合にうまくいっ
たりしますか?
なお,以下の件は
山> しかし、1個目、すなわち初めてw3m のバッファを開くときは、
山> w3m-pop-up-windows の値に応じて別の window を popup すべきです[4]。
宜しくお願いします.
;; window 管理周辺の最近の変更は全然理解できていないので….他力本願で
;; ごめんなさい.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )