(require 'gnus)
-(defvar gnus-use-full-window t
- "*If non-nil, use the entire Emacs screen.")
+(defgroup gnus-windows nil
+ "Window configuration."
+ :group 'gnus)
+
+(defcustom gnus-use-full-window t
+ "*If non-nil, use the entire Emacs screen."
+ :group 'gnus-windows
+ :type 'boolean)
(defvar gnus-window-configuration nil
"Obsolete variable. See `gnus-buffer-configuration'.")
-(defvar gnus-window-min-width 2
- "*Minimum width of Gnus buffers.")
+(defcustom gnus-window-min-width 2
+ "*Minimum width of Gnus buffers."
+ :group 'gnus-windows
+ :type 'integer)
-(defvar gnus-window-min-height 1
- "*Minimum height of Gnus buffers.")
+(defcustom gnus-window-min-height 1
+ "*Minimum height of Gnus buffers."
+ :group 'gnus-windows
+ :type 'integer)
-(defvar gnus-always-force-window-configuration nil
- "*If non-nil, always force the Gnus window configurations.")
+(defcustom gnus-always-force-window-configuration nil
+ "*If non-nil, always force the Gnus window configurations."
+ :group 'gnus-windows
+ :type 'boolean)
(defvar gnus-buffer-configuration
'((group
(article 0.5)
(message 1.0 point))))
"Window configuration for all possible Gnus buffers.
-This variable is a list of lists. Each of these lists has a NAME and
-a RULE. The NAMEs are commonsense names like `group', which names a
-rule used when displaying the group buffer; `summary', which names a
-rule for what happens when you enter a group and do not display an
-article buffer; and so on. See the value of this variable for a
-complete list of NAMEs.
-
-Each RULE is a list of vectors. The first element in this vector is
-the name of the buffer to be displayed; the second element is the
-percentage of the screen this buffer is to occupy (a number in the
-0.0-0.99 range); the optional third element is `point', which should
-be present to denote which buffer point is to go to after making this
-buffer configuration.")
+See the Gnus manual for an explanation of the syntax used.")
(defvar gnus-window-to-buffer
'((group . gnus-group-buffer)
(when (frame-live-p (car gnus-created-frames))
;; We slap a condition-case around this `delete-frame' to ensure
;; against errors if we try do delete the single frame that's left.
- (condition-case ()
- (delete-frame (car gnus-created-frames))
- (error nil)))
+ (ignore-errors
+ (delete-frame (car gnus-created-frames))))
(pop gnus-created-frames)))
(defun gnus-window-configuration-element (list)
(mapcar
(lambda (elem)
(if (symbolp (cdr elem))
- (get-buffer (symbol-value (cdr elem)))
- (get-buffer (cdr elem))))
+ (when (and (boundp (cdr elem))
+ (symbol-value (cdr elem)))
+ (get-buffer (symbol-value (cdr elem))))
+ (when (cdr elem)
+ (get-buffer (cdr elem)))))
gnus-window-to-buffer)))
(mapcar
(lambda (frame)