diff lisp/gnus/gnus-win.el @ 31716:9968f55ad26e

Update to emacs-21-branch of the Gnus CVS repository.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 19 Sep 2000 13:37:09 +0000
parents 15fc6acbae7a
children dc1ebf25e048
line wrap: on
line diff
--- a/lisp/gnus/gnus-win.el	Tue Sep 19 13:28:27 2000 +0000
+++ b/lisp/gnus/gnus-win.el	Tue Sep 19 13:37:09 2000 +0000
@@ -1,5 +1,6 @@
 ;;; gnus-win.el --- window configuration functions for Gnus
-;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
@@ -27,8 +28,6 @@
 
 (eval-when-compile (require 'cl))
 
-(eval-when-compile (require 'cl))
-
 (require 'gnus)
 
 (defgroup gnus-windows nil
@@ -87,9 +86,9 @@
 		  (article 1.0)))
       (t
        '(vertical 1.0
-		 (summary 0.25 point)
-		 (if gnus-carpal '(summary-carpal 4))
-		 (article 1.0)))))
+		  (summary 0.25 point)
+		  (if gnus-carpal '(summary-carpal 4))
+		  (article 1.0)))))
     (server
      (vertical 1.0
 	       (server 1.0 point)
@@ -288,7 +287,7 @@
 (defun gnus-configure-frame (split &optional window)
   "Split WINDOW according to SPLIT."
   (unless window
-    (setq window (get-buffer-window (current-buffer))))
+    (setq window (or (get-buffer-window (current-buffer)) (selected-window))))
   (select-window window)
   ;; This might be an old-stylee buffer config.
   (when (vectorp split)
@@ -320,9 +319,11 @@
       (let ((buffer (cond ((stringp type) type)
 			  (t (cdr (assq type gnus-window-to-buffer))))))
 	(unless buffer
-	  (error "Illegal buffer type: %s" type))
-	(switch-to-buffer (gnus-get-buffer-create
-			   (gnus-window-to-buffer-helper buffer)))
+	  (error "Invalid buffer type: %s" type))
+	(let ((buf (gnus-get-buffer-create
+ 		    (gnus-window-to-buffer-helper buffer))))
+ 	  (if (eq buf (window-buffer (selected-window))) (set-buffer buf)
+ 	    (switch-to-buffer buf)))
 	(when (memq 'frame-focus split)
 	  (setq gnus-window-frame-focus window))
 	;; We return the window if it has the `point' spec.
@@ -375,7 +376,7 @@
 		  ((integerp size)
 		   (setq s size))
 		  (t
-		   (error "Illegal size: %s" size)))
+		   (error "Invalid size: %s" size)))
 	    ;; Try to make sure that we are inside the safe limits.
 	    (cond ((zerop s))
 		  ((eq type 'horizontal)
@@ -410,48 +411,50 @@
 (defvar gnus-frame-split-p nil)
 
 (defun gnus-configure-windows (setting &optional force)
-  (setq gnus-current-window-configuration setting)
-  (setq force (or force gnus-always-force-window-configuration))
-  (setq setting (gnus-windows-old-to-new setting))
-  (let ((split (if (symbolp setting)
-		   (cadr (assq setting gnus-buffer-configuration))
-		 setting))
-	all-visible)
-
-    (setq gnus-frame-split-p nil)
+  (if (window-configuration-p setting)
+      (set-window-configuration setting)
+    (setq gnus-current-window-configuration setting)
+    (setq force (or force gnus-always-force-window-configuration))
+    (setq setting (gnus-windows-old-to-new setting))
+    (let ((split (if (symbolp setting)
+		     (cadr (assq setting gnus-buffer-configuration))
+		   setting))
+	  all-visible)
 
-    (unless split
-      (error "No such setting: %s" setting))
+      (setq gnus-frame-split-p nil)
+
+      (unless split
+	(error "No such setting in `gnus-buffer-configuration': %s" setting))
 
-    (if (and (setq all-visible (gnus-all-windows-visible-p split))
-	     (not force))
-	;; All the windows mentioned are already visible, so we just
-	;; put point in the assigned buffer, and do not touch the
-	;; winconf.
-	(select-window all-visible)
+      (if (and (setq all-visible (gnus-all-windows-visible-p split))
+	       (not force))
+	  ;; All the windows mentioned are already visible, so we just
+	  ;; put point in the assigned buffer, and do not touch the
+	  ;; winconf.
+	  (select-window all-visible)
 
-      ;; Either remove all windows or just remove all Gnus windows.
-      (let ((frame (selected-frame)))
-	(unwind-protect
-	    (if gnus-use-full-window
-		;; We want to remove all other windows.
-		(if (not gnus-frame-split-p)
-		    ;; This is not a `frame' split, so we ignore the
-		    ;; other frames.
-		    (delete-other-windows)
-		  ;; This is a `frame' split, so we delete all windows
-		  ;; on all frames.
-		  (gnus-delete-windows-in-gnusey-frames))
-	      ;; Just remove some windows.
-	      (gnus-remove-some-windows)
-	      (switch-to-buffer nntp-server-buffer))
-	  (select-frame frame)))
+	;; Either remove all windows or just remove all Gnus windows.
+	(let ((frame (selected-frame)))
+	  (unwind-protect
+	      (if gnus-use-full-window
+		  ;; We want to remove all other windows.
+		  (if (not gnus-frame-split-p)
+		      ;; This is not a `frame' split, so we ignore the
+		      ;; other frames.
+		      (delete-other-windows)
+		    ;; This is a `frame' split, so we delete all windows
+		    ;; on all frames.
+		    (gnus-delete-windows-in-gnusey-frames))
+		;; Just remove some windows.
+		(gnus-remove-some-windows)
+		(switch-to-buffer nntp-server-buffer))
+	    (select-frame frame)))
 
-      (switch-to-buffer nntp-server-buffer)
-      (let (gnus-window-frame-focus)
-	(gnus-configure-frame split (get-buffer-window (current-buffer)))
-	(when gnus-window-frame-focus
-	  (select-frame (window-frame gnus-window-frame-focus)))))))
+	(let (gnus-window-frame-focus)
+	  (switch-to-buffer nntp-server-buffer)
+	  (gnus-configure-frame split)
+	  (when gnus-window-frame-focus
+	    (select-frame (window-frame gnus-window-frame-focus))))))))
 
 (defun gnus-delete-windows-in-gnusey-frames ()
   "Do a `delete-other-windows' in all frames that have Gnus windows."
@@ -502,11 +505,11 @@
 	(setq buffer (cond ((stringp type) type)
 			   (t (cdr (assq type gnus-window-to-buffer)))))
 	(unless buffer
-	  (error "Illegal buffer type: %s" type))
+	  (error "Invalid buffer type: %s" type))
 	(if (and (setq buf (get-buffer (gnus-window-to-buffer-helper buffer)))
 		 (setq win (get-buffer-window buf t)))
 	    (if (memq 'point split)
-	      (setq all-visible win))
+		(setq all-visible win))
 	  (setq all-visible nil)))
        (t
 	(when (eq type 'frame)