[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

multi buffer under emacs-w3m



他力本願モード.

  current-buffer    操作
1.  *scratch*     M-x w3m RET
2.  *w3m*         M-x w3m-copy-buffer RET
3.  *w3m*<2>      q
4.  *scratch*     M-x w3m RET

という操作をすると,*w3m* バッファが表示されますが,最後に表示されてい
た *w3m*<2> に戻って欲しいのですが.特に,2つのバッファが別々のページ
を表示している場合で,通常のバッファと emacs-w3m のバッファを頻繁に切
り換えるような使い方をしていると,それが便利だと思います.

;; frame を使っている人は恩恵があまりないでしょうけれど.

超手抜きに実装するならば,末尾のパッチでできると思います.ただ,これは
あまりに手抜きな実装なので,最近の山岡さんが追求されている一貫性を壊し
ているだろうと思います.

と言うわけで,ちょっと検討して貰えませんか.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )

--- w3m.el	14 Nov 2003 00:22:52 -0000	1.487.2.85
+++ w3m.el	14 Nov 2003 06:14:25 -0000
@@ -5958,11 +5958,16 @@
       (w3m-cookie-shutdown))
     (w3m-kill-all-buffer)))
 
+(defvar w3m-last-visited-buffer nil)
+
 (defun w3m-close-window ()
   "Return to a restless life.  This command closes all emacs-w3m windows,
 but all the emacs-w3m buffers remain.  Frames created for emacs-w3m
 sessions will also be closed.  See also `w3m-quit'."
   (interactive)
+  (let ((buf (window-buffer (selected-window))))
+    (setq w3m-last-visited-buffer
+	  (and (memq buf (w3m-list-buffers t)) buf)))
   (w3m-delete-frames-and-windows)
   (let* ((buffers (w3m-list-buffers t))
 	 (bufs buffers)
@@ -7002,7 +7007,9 @@
       (not url)))) ;; interactive-p
   (let ((nofetch (eq url 'popup))
 	(buffer (unless new-session
-		  (w3m-alive-p t)))
+		  (if (memq w3m-last-visited-buffer (w3m-list-buffers t))
+		      w3m-last-visited-buffer
+		    (w3m-alive-p t))))
 	(popup-frame-p (and (not interactive-p) (w3m-popup-frame-p)))
 	(w3m-pop-up-frames (and interactive-p w3m-pop-up-frames))
 	(w3m-pop-up-windows (and interactive-p w3m-pop-up-windows)))