From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.bugs Subject: bug#33263: 27.0.50; Tidying up Gnus modes Date: Sun, 04 Nov 2018 18:53:41 -0800 Message-ID: <877ehs1bgq.fsf@ericabrahamsen.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1541386397 3600 195.159.176.226 (5 Nov 2018 02:53:17 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 5 Nov 2018 02:53:17 +0000 (UTC) To: 33263@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Nov 05 03:53:13 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gJV0p-0000hW-RH for geb-bug-gnu-emacs@m.gmane.org; Mon, 05 Nov 2018 03:53:12 +0100 Original-Received: from localhost ([::1]:32916 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJV2r-0006w0-2W for geb-bug-gnu-emacs@m.gmane.org; Sun, 04 Nov 2018 21:55:17 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:37972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJV2g-0006sE-4x for bug-gnu-emacs@gnu.org; Sun, 04 Nov 2018 21:55:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gJV2c-00011w-Mp for bug-gnu-emacs@gnu.org; Sun, 04 Nov 2018 21:55:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:58442) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gJV2c-00010p-Gi for bug-gnu-emacs@gnu.org; Sun, 04 Nov 2018 21:55:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gJV2c-000074-As for bug-gnu-emacs@gnu.org; Sun, 04 Nov 2018 21:55:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eric Abrahamsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 05 Nov 2018 02:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 33263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.1541386448348 (code B ref -1); Mon, 05 Nov 2018 02:55:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 5 Nov 2018 02:54:08 +0000 Original-Received: from localhost ([127.0.0.1]:34467 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gJV1j-00005Y-Og for submit@debbugs.gnu.org; Sun, 04 Nov 2018 21:54:08 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:56247) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gJV1h-00004t-Ad for submit@debbugs.gnu.org; Sun, 04 Nov 2018 21:54:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gJV1Z-0007av-W3 for submit@debbugs.gnu.org; Sun, 04 Nov 2018 21:53:59 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:34573) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gJV1Z-0007ZG-Qj for submit@debbugs.gnu.org; Sun, 04 Nov 2018 21:53:57 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:37613) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJV1X-0006os-TP for bug-gnu-emacs@gnu.org; Sun, 04 Nov 2018 21:53:57 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gJV1U-0007My-E4 for bug-gnu-emacs@gnu.org; Sun, 04 Nov 2018 21:53:55 -0500 Original-Received: from mail.ericabrahamsen.net ([50.56.99.223]:51399) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gJV1U-000776-4J for bug-gnu-emacs@gnu.org; Sun, 04 Nov 2018 21:53:52 -0500 Original-Received: from localhost (97-113-224-119.tukw.qwest.net [97.113.224.119]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: eric@ericabrahamsen.net) by mail.ericabrahamsen.net (Postfix) with ESMTPSA id A62C63F072 for ; Mon, 5 Nov 2018 02:53:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ericabrahamsen.net; s=mail; t=1541386424; bh=ARH7bqenrVTBwsWLJ0ATRMtewwwl35cLu02P1jUZ9Q8=; h=From:To:Subject:Date:From; b=MGwZnL7V9/preu7op3c4a7EaAtH07BS8i7YHWJOi4b37+GTv4P/GECYJ+gNPq0Qyo E5tVMVqf155zNSEENaqyo5hqQdBLHVQtIdndmS8dVBsyG9q4e7d2mDt+iTelMnPfKY FFCNI2knRndKtpor90Qwrm8zI0Cnb5elP035vKb4= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:152039 Archived-At: --=-=-= Content-Type: text/plain The attached patch does a couple of things to clean up Gnus's various major modes: - Creates a do-nothing `gnus-mode', derived from `special-mode', to serve as parent mode for all the other major modes. This isn't so important, but sometimes it would be nice to do (derived-mode-p 'gnus-mode). - Derives everything from `gnus-mode', and turns a couple of modes from functions that manually set up modes into proper calls to `define-derived-mode'. - Removes code like "(setq buffer-read-only t)", as that's automatically done by `special-mode'. - Where appropriate, deletes custom definitions for gnus-*-mode-hook, as these hooks are already automatically created by the define-mode calls. (Maybe this removal isn't worth doing?) This patch probably needs more testing, but I'm floating it first for any comments. Eric In GNU Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.1) of 2018-10-31 built on slip --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Provide-new-gnus-mode-derive-all-gnus-major-modes-fr.patch >From 395babb983e466d21928433c18faddedf3d88e8f Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Mon, 25 Jun 2018 17:40:19 -0700 Subject: [PATCH] Provide new gnus-mode, derive all gnus major modes from this * lisp/gnus/gnus.el (gnus-mode): New do-nothing major mode, derived from special mode. * lisp/gnus/gnus-sum.el (gnus-summary-mode): Change from a function to a major mode, derive from gnus-mode. (gnus-summary-setup-buffer): Change call a bit -- can no longer pass an argument to the mode function. * lisp/gnus/gnus-srvr.el (gnus-browse-mode): Derive from gnus-mode. (gnus-server-setup-buffer): Remove unnecessary function. (gnus-enter-server-buffer): Call gnus-server-mode here, and call it whether the server buffer already existed or not. (gnus-server-mode): Change from a function to a major mode. (gnus-server-mode-hook): Delete custom option, this is automatically created. * lisp/gnus/gnus-salt.el (gnus-tree-mode): Derive from gnus-mode. (gnus-tree-mode-hook): Delete custom option, this is automatically created. * lisp/gnus/gnus-kill.el (gnus-kill-file-mode-hook): Delete custom option. * lisp/gnus/gnus-group.el (gnus-group-mode): * lisp/gnus/gnus-art.el (gnus-article-mode): * lisp/gnus/gnus-agent.el (gnus-category-mode): Derive from gnus-mode. (gnus-category-mode-hook): Delete custom option. --- lisp/gnus/gnus-agent.el | 10 ++------- lisp/gnus/gnus-art.el | 8 ++----- lisp/gnus/gnus-group.el | 8 ++----- lisp/gnus/gnus-kill.el | 5 ----- lisp/gnus/gnus-salt.el | 9 +------- lisp/gnus/gnus-srvr.el | 46 +++++++++-------------------------------- lisp/gnus/gnus-sum.el | 20 ++++-------------- lisp/gnus/gnus.el | 6 ++++++ 8 files changed, 27 insertions(+), 85 deletions(-) diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index 18e6174fa0..93a675584f 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el @@ -2575,9 +2575,6 @@ gnus-agent-fetch-group-1 ;;; Agent Category Mode ;;; -(defvar gnus-category-mode-hook nil - "Hook run in `gnus-category-mode' buffers.") - (defvar gnus-category-line-format " %(%20c%): %g\n" "Format of category lines. @@ -2613,7 +2610,6 @@ gnus-category-line-format-spec (defvar gnus-category-mode-line-format-spec nil) (defvar gnus-category-mode-map nil) -(put 'gnus-category-mode 'mode-class 'special) (unless gnus-category-mode-map (setq gnus-category-mode-map (make-sparse-keymap)) @@ -2655,9 +2651,8 @@ gnus-category-make-menu-bar (gnus-run-hooks 'gnus-category-menu-hook))) -(define-derived-mode gnus-category-mode fundamental-mode "Category" +(define-derived-mode gnus-category-mode gnus-mode "Category" "Major mode for listing and editing agent categories. - All normal editing commands are switched off. \\ For more in-depth information on this mode, read the manual @@ -2672,8 +2667,7 @@ gnus-category-mode (gnus-set-default-directory) (setq mode-line-process nil) (buffer-disable-undo) - (setq truncate-lines t) - (setq buffer-read-only t)) + (setq truncate-lines t)) (defalias 'gnus-category-position-point 'gnus-goto-colon) diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index f28e6db3c7..c78bb3325f 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -4388,8 +4388,6 @@ article-verify-cancel-lock ;;; Gnus article mode ;;; -(put 'gnus-article-mode 'mode-class 'special) - (set-keymap-parent gnus-article-mode-map widget-keymap) (gnus-define-keys gnus-article-mode-map @@ -4467,9 +4465,8 @@ gnus-article-make-menu-bar (defvar bookmark-make-record-function) (defvar shr-put-image-function) -(define-derived-mode gnus-article-mode fundamental-mode "Article" +(define-derived-mode gnus-article-mode gnus-mode "Article" "Major mode for displaying an article. - All normal editing commands are switched off. The following commands are available in addition to all summary mode @@ -4510,8 +4507,7 @@ gnus-article-mode (setq cursor-in-non-selected-windows nil)) (gnus-set-default-directory) (buffer-disable-undo) - (setq buffer-read-only t - show-trailing-whitespace nil) + (setq show-trailing-whitespace nil) (mm-enable-multibyte)) (defun gnus-article-setup-buffer () diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 6af27afbfa..d526894b3a 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -567,8 +567,6 @@ gnus-group-list-option ;;; Gnus group mode ;;; -(put 'gnus-group-mode 'mode-class 'special) - (gnus-define-keys gnus-group-mode-map " " gnus-group-read-group "=" gnus-group-select-group @@ -1106,9 +1104,8 @@ gnus-group-make-tool-bar (set (make-local-variable 'tool-bar-map) map)))) gnus-group-tool-bar-map) -(define-derived-mode gnus-group-mode fundamental-mode "Group" +(define-derived-mode gnus-group-mode gnus-mode "Group" "Major mode for reading news. - All normal editing commands are switched off. \\ The group buffer lists (some of) the groups available. For instance, @@ -1131,8 +1128,7 @@ gnus-group-mode (setq mode-line-process nil) (buffer-disable-undo) (setq truncate-lines t) - (setq buffer-read-only t - show-trailing-whitespace nil) + (setq show-trailing-whitespace nil) (gnus-set-default-directory) (gnus-update-format-specifications nil 'group 'group-mode) (gnus-update-group-mark-positions) diff --git a/lisp/gnus/gnus-kill.el b/lisp/gnus/gnus-kill.el index 60732c11d5..e65ff51ce7 100644 --- a/lisp/gnus/gnus-kill.el +++ b/lisp/gnus/gnus-kill.el @@ -29,11 +29,6 @@ (require 'gnus-art) (require 'gnus-range) -(defcustom gnus-kill-file-mode-hook nil - "Hook for Gnus kill file mode." - :group 'gnus-score-kill - :type 'hook) - (defcustom gnus-kill-expiry-days 7 "Number of days before expiring unused kill file entries." :group 'gnus-score-kill diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el index aff841760a..0504465de3 100644 --- a/lisp/gnus/gnus-salt.el +++ b/lisp/gnus/gnus-salt.el @@ -396,11 +396,6 @@ gnus-generate-tree-function (function :tag "Other" nil)) :group 'gnus-summary-tree) -(defcustom gnus-tree-mode-hook nil - "Hook run in tree mode buffers." - :type 'hook - :group 'gnus-summary-tree) - ;;; Internal variables. (defvar gnus-tmp-name) @@ -445,8 +440,6 @@ gnus-tree-mode-map 'undefined 'gnus-tree-read-summary-keys map) map)) -(put 'gnus-tree-mode 'mode-class 'special) - (defun gnus-tree-make-menu-bar () (unless (boundp 'gnus-tree-menu) (easy-menu-define @@ -454,7 +447,7 @@ gnus-tree-make-menu-bar '("Tree" ["Select article" gnus-tree-select-article t])))) -(define-derived-mode gnus-tree-mode fundamental-mode "Tree" +(define-derived-mode gnus-tree-mode gnus-mode "Tree" "Major mode for displaying thread trees." (gnus-set-format 'tree-mode) (gnus-set-format 'tree t) diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el index dfca5e9d2c..03718fd104 100644 --- a/lisp/gnus/gnus-srvr.el +++ b/lisp/gnus/gnus-srvr.el @@ -36,11 +36,6 @@ (autoload 'gnus-group-make-nnir-group "nnir") -(defcustom gnus-server-mode-hook nil - "Hook run in `gnus-server-mode' buffers." - :group 'gnus-server - :type 'hook) - (defcustom gnus-server-exit-hook nil "Hook run when exiting the server buffer." :group 'gnus-server @@ -108,7 +103,7 @@ gnus-server-line-format-spec (defvar gnus-server-mode-line-format-spec nil) (defvar gnus-server-killed-servers nil) -(defvar gnus-server-mode-map) +(defvar gnus-server-mode-map nil) (defcustom gnus-server-menu-hook nil "Hook run after the creation of the server mode menu." @@ -150,11 +145,8 @@ gnus-server-make-menu-bar (gnus-run-hooks 'gnus-server-menu-hook))) -(defvar gnus-server-mode-map nil) -(put 'gnus-server-mode 'mode-class 'special) - (unless gnus-server-mode-map - (setq gnus-server-mode-map (make-sparse-keymap)) + (setq gnus-server-mode-map (make-keymap)) (suppress-keymap gnus-server-mode-map) (gnus-define-keys gnus-server-mode-map @@ -253,9 +245,8 @@ gnus-server-font-lock-keywords ("(\\(offline\\))" 1 'gnus-server-offline) ("(\\(denied\\))" 1 'gnus-server-denied))) -(defun gnus-server-mode () +(define-derived-mode gnus-server-mode gnus-mode "Server" "Major mode for listing and editing servers. - All normal editing commands are switched off. \\ For more in-depth information on this mode, read the manual @@ -264,23 +255,16 @@ gnus-server-mode The following commands are available: \\{gnus-server-mode-map}" - ;; FIXME: Use define-derived-mode. - (interactive) (when (gnus-visual-p 'server-menu 'menu) (gnus-server-make-menu-bar)) - (kill-all-local-variables) (gnus-simplify-mode-line) - (setq major-mode 'gnus-server-mode) - (setq mode-name "Server") (gnus-set-default-directory) (setq mode-line-process nil) - (use-local-map gnus-server-mode-map) (buffer-disable-undo) (setq truncate-lines t) - (setq buffer-read-only t) (set (make-local-variable 'font-lock-defaults) - '(gnus-server-font-lock-keywords t)) - (gnus-run-mode-hooks 'gnus-server-mode-hook)) + '(gnus-server-font-lock-keywords t))) + (defun gnus-server-insert-server-line (name method) (let* ((gnus-tmp-name name) @@ -320,21 +304,15 @@ gnus-server-insert-server-line (defun gnus-enter-server-buffer () "Set up the server buffer." - (gnus-server-setup-buffer) (gnus-configure-windows 'server) ;; Usually `gnus-configure-windows' will finish with the ;; `gnus-server-buffer' selected as the current buffer, but not always (I ;; bumped into it when starting from a dedicated *Group* frame, and ;; gnus-configure-windows opened *Server* into its own dedicated frame). (with-current-buffer (get-buffer gnus-server-buffer) + (gnus-server-mode) (gnus-server-prepare))) -(defun gnus-server-setup-buffer () - "Initialize the server buffer." - (unless (get-buffer gnus-server-buffer) - (with-current-buffer (gnus-get-buffer-create gnus-server-buffer) - (gnus-server-mode)))) - (defun gnus-server-prepare () (gnus-set-format 'server-mode) (gnus-set-format 'server t) @@ -717,12 +695,10 @@ gnus-browse-subscribe-newsgroup-method function (repeat function))) -(defvar gnus-browse-mode-hook nil) -(defvar gnus-browse-mode-map nil) -(put 'gnus-browse-mode 'mode-class 'special) +(defvar gnus-browse-mode-map (make-keymap)) (unless gnus-browse-mode-map - (setq gnus-browse-mode-map (make-keymap)) + (defvar gnus-browse-mode-map (make-keymap)) (suppress-keymap gnus-browse-mode-map) (gnus-define-keys @@ -897,9 +873,8 @@ gnus-browse-foreign-server (gnus-message 5 "Connecting to %s...done" (nth 1 method)) t)))) -(define-derived-mode gnus-browse-mode fundamental-mode "Browse Server" +(define-derived-mode gnus-browse-mode gnus-mode "Browse Server" "Major mode for browsing a foreign server. - All normal editing commands are switched off. \\ @@ -918,8 +893,7 @@ gnus-browse-mode (setq mode-line-process nil) (buffer-disable-undo) (setq truncate-lines t) - (gnus-set-default-directory) - (setq buffer-read-only t)) + (gnus-set-default-directory)) (defun gnus-browse-read-group (&optional no-article number) "Enter the group at the current line. diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index f9fae3792b..67abf6d640 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -1842,8 +1842,6 @@ gnus-summary-bubble-group ;;; Gnus summary mode ;;; -(put 'gnus-summary-mode 'mode-class 'special) - (defvar gnus-article-commands-menu) ;; Non-orthogonal keys @@ -3052,10 +3050,8 @@ bookmark-make-record-function (defvar bidi-paragraph-direction) -(defun gnus-summary-mode (&optional group) +(define-derived-mode gnus-summary-mode gnus-mode "Summary" "Major mode for reading articles. - -All normal editing commands are switched off. \\ Each line in this buffer represents one article. To read an article, you can, for instance, type `\\[gnus-summary-next-page]'. To move forwards @@ -3072,24 +3068,16 @@ gnus-summary-mode The following commands are available: \\{gnus-summary-mode-map}" - ;; FIXME: Use define-derived-mode. - (interactive) - (kill-all-local-variables) (let ((gnus-summary-local-variables gnus-newsgroup-variables)) (gnus-summary-make-local-variables)) (gnus-summary-make-local-variables) - (setq gnus-newsgroup-name group) (when (gnus-visual-p 'summary-menu 'menu) (gnus-summary-make-menu-bar) (gnus-summary-make-tool-bar)) (gnus-make-thread-indent-array) (gnus-simplify-mode-line) - (setq major-mode 'gnus-summary-mode) - (setq mode-name "Summary") - (use-local-map gnus-summary-mode-map) (buffer-disable-undo) - (setq buffer-read-only t - show-trailing-whitespace nil + (setq show-trailing-whitespace nil truncate-lines t bidi-paragraph-direction 'left-to-right) (add-to-invisibility-spec '(gnus-sum . t)) @@ -3101,7 +3089,6 @@ gnus-summary-mode (make-local-variable 'gnus-summary-dummy-line-format-spec) (make-local-variable 'gnus-summary-mark-positions) (add-hook 'pre-command-hook 'gnus-set-global-variables nil t) - (gnus-run-mode-hooks 'gnus-summary-mode-hook) (turn-on-gnus-mailing-list-mode) (mm-enable-multibyte) (set (make-local-variable 'bookmark-make-record-function) @@ -3493,7 +3480,8 @@ gnus-summary-setup-buffer (not gnus-newsgroup-prepared)) (set-buffer (gnus-get-buffer-create buffer)) (setq gnus-summary-buffer (current-buffer)) - (gnus-summary-mode group) + (setq gnus-newsgroup-name group) + (gnus-summary-mode) (when (gnus-group-quit-config group) (set (make-local-variable 'gnus-single-article-buffer) nil)) (make-local-variable 'gnus-article-buffer) diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index 2786323f67..6c59b13574 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el @@ -637,6 +637,12 @@ gnus-summary-low-read "Face used for low interest read articles." :group 'gnus-summary) +;;; Base gnus-mode + +(define-derived-mode gnus-mode special-mode nil + "Base mode from which all other gnus modes derive. +This does nothing but derive from `special-mode', and should not +be used directly.") ;;; ;;; Gnus buffers -- 2.19.1 --=-=-=--