From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Noam Postavsky Newsgroups: gmane.emacs.bugs Subject: bug#33263: 27.0.50; Tidying up Gnus modes, [PATCH] Provide new gnus-mode, derive all gnus major modes from this Date: Fri, 09 Nov 2018 23:01:46 -0500 Message-ID: <87o9axh979.fsf@gmail.com> References: <877ehs1bgq.fsf@ericabrahamsen.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1541822411 5205 195.159.176.226 (10 Nov 2018 04:00:11 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 10 Nov 2018 04:00:11 +0000 (UTC) Cc: Eric Abrahamsen , Lars Ingebrigtsen To: 33263@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Nov 10 05:00:07 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 1gLKRH-00019I-M6 for geb-bug-gnu-emacs@m.gmane.org; Sat, 10 Nov 2018 05:00:04 +0100 Original-Received: from localhost ([::1]:37014 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLKTN-0007Oo-SB for geb-bug-gnu-emacs@m.gmane.org; Fri, 09 Nov 2018 23:02:13 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56956) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLKTG-0007Oh-Al for bug-gnu-emacs@gnu.org; Fri, 09 Nov 2018 23:02:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gLKTD-0002gb-2z for bug-gnu-emacs@gnu.org; Fri, 09 Nov 2018 23:02:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:39817) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gLKTC-0002gM-PH for bug-gnu-emacs@gnu.org; Fri, 09 Nov 2018 23:02:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gLKTC-0006IP-JL for bug-gnu-emacs@gnu.org; Fri, 09 Nov 2018 23:02:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <877ehs1bgq.fsf@ericabrahamsen.net> Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 10 Nov 2018 04:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 33263-submit@debbugs.gnu.org id=B33263.154182251824192 (code B ref 33263); Sat, 10 Nov 2018 04:02:02 +0000 Original-Received: (at 33263) by debbugs.gnu.org; 10 Nov 2018 04:01:58 +0000 Original-Received: from localhost ([127.0.0.1]:44075 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gLKT7-0006I7-Nb for submit@debbugs.gnu.org; Fri, 09 Nov 2018 23:01:58 -0500 Original-Received: from mail-io1-f43.google.com ([209.85.166.43]:38955) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gLKT3-0006Hq-LO for 33263@debbugs.gnu.org; Fri, 09 Nov 2018 23:01:54 -0500 Original-Received: by mail-io1-f43.google.com with SMTP id b26-v6so2095390ioc.6 for <33263@debbugs.gnu.org>; Fri, 09 Nov 2018 20:01:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version; bh=Q0mpu0xdYbP4NW1wYZCX4XI+gb5Axe8tVr1F+5s0OyM=; b=WkflbW5w1PSrcalHDIiNaBD5+p2OIRrLx++KTbgA3e0kZVkskCPGSht9fpm6kOe0F7 7tCegkVLBR0jubpPeIRyW1TCS9p88uF8RinEpYL9jBc67Bsa7cTAZiBMXT+NhePIDxD4 dxRh+kjk7CtuPZ/eFX8K5rjcb9hxQn2r4EgxTCknH5NS/ZArtk5SOZTDl3hfx4OVdY+1 7+MWzYw7cKdG5arPjRMTBFa9tVcAp87Pud2i1dyhLSPk6Qb1/mhF6MtqwwFkAlvUVHzw 8ALJGhJhq5/46ECYQQtEAbl24YDqiuw0WxUcVVfSBDk70I7NovD3OXq5uJjaQToSBYvL sulg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version; bh=Q0mpu0xdYbP4NW1wYZCX4XI+gb5Axe8tVr1F+5s0OyM=; b=X2VsOUq12OXknb9Z3q/+jmq6OFvFX6s0Wfu7grl7ft5xwuxyYABF+R5P11cyP7Dbg5 SOcPdx4MT9WEItefIdsRjnKcmrYYIfmQbXLMiYWtY7CcK3XvopwG4aAuJzDdReqcosKM qQhOcxdd3h+N3M5gom1Zv0c8tqh+vVoS8in3S4YspSRTymiz70eWNjKRu3M1LFVzO1Ls 2AaKDXtWXBT30LGGNC3obx7zK0sOFn7lOat/KhGd7KmtrJi9JurNUFJNjVHgyOFUh2w/ U1sAkYcDcf/qQEE+ui4jQw0+yez+GiawKeGWy6KVpVLxB3f4p5KMBKj25D+DEGpIuRlh zZrg== X-Gm-Message-State: AGRZ1gIlGc4Qy/oH5a5St2+5F/wpuooFK9N0p21wFxxVediP+nryfC9I 13DRGTCuanRXu2k5nIkdYFU= X-Google-Smtp-Source: AJdET5clGaAJQpsfRpdvruhCkTDICCGGbZ8z5LhZ7isrNpVcy9dbMaUHTvf98Qlk2/D9cP/hwLnsFQ== X-Received: by 2002:a6b:1687:: with SMTP id 129-v6mr9696567iow.85.1541822508056; Fri, 09 Nov 2018 20:01:48 -0800 (PST) Original-Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id i199-v6sm3578264ioa.16.2018.11.09.20.01.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 09 Nov 2018 20:01:47 -0800 (PST) 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:152232 Archived-At: --=-=-= Content-Type: text/plain [forwarding to list] --=-=-= Content-Type: message/rfc822 Content-Disposition: inline From: Eric Abrahamsen To: Noam Postavsky Subject: Re: bug#33263: 27.0.50; Tidying up Gnus modes References: <875zxbipby.fsf@gmail.com> <87o9b3za3p.fsf@ericabrahamsen.net> <8736seibdv.fsf@gmail.com> <877ehs1bgq.fsf@ericabrahamsen.net> <87k1lqw510.fsf@ericabrahamsen.net> Date: Fri, 09 Nov 2018 12:54:53 -0800 In-Reply-To: (Noam Postavsky's message of "Tue, 6 Nov 2018 11:28:17 -0500") Message-ID: <87k1lmkm3m.fsf@ericabrahamsen.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="====-=-=" --====-=-= Content-Type: text/plain Content-Disposition: inline Here's a new version of the patch. I fixed the keymap thing, and looked carefully at the code called from `gnus-summary-mode'. `turn-on-mailing-list-mode' clearly belongs in `gnus-summary-setup-buffer', so I moved it up there. The format spec and mark position stuff doesn't vary depending on the group, but I have dreams of a day when it will, so I moved that up, too. I added more docs and comments making the separation of concerns clear: `gnus-summary-setup-buffer' handles group-dependent setup, `gnus-summary-mode' handles group-independent stuff. That's also the motivation for moving the three `make-local-variables', which would otherwise be a pointless change. I hope this is acceptable (I'm cc'ing Lars in case he has an opinion). I'll run it locally for a week or so, then push to master. Eric --====-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Provide-new-gnus-mode-derive-all-gnus-major-modes-fr.patch >From 777e86d060320f2341ae231ff48d453ae3f503d3 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 | 44 ++++++++--------------------------- lisp/gnus/gnus-sum.el | 51 +++++++++++++++++++++-------------------- lisp/gnus/gnus.el | 6 +++++ 8 files changed, 48 insertions(+), 93 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..400199083a 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) + (with-current-buffer (get-buffer-create 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,9 +695,7 @@ 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) (unless gnus-browse-mode-map (setq gnus-browse-mode-map (make-keymap)) @@ -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..6ba413eefa 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)) @@ -3100,14 +3088,13 @@ gnus-summary-mode (make-local-variable 'gnus-summary-dummy-line-format) (make-local-variable 'gnus-summary-dummy-line-format-spec) (make-local-variable 'gnus-summary-mark-positions) + (make-local-variable 'gnus-article-buffer) + (make-local-variable 'gnus-article-current) + (make-local-variable 'gnus-original-article-buffer) (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) - 'gnus-summary-bookmark-make-record) - (gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy) - (gnus-update-summary-mark-positions)) + 'gnus-summary-bookmark-make-record)) (defun gnus-summary-make-local-variables () "Make all the local summary buffer variables." @@ -3478,8 +3465,11 @@ gnus-summary-set-article-display-arrow (current-buffer)))))) (defun gnus-summary-setup-buffer (group) - "Initialize summary buffer. -If the setup was successful, non-nil is returned." + "Initialize summary buffer for GROUP. +This function does all setup work that relies on the specific +value of GROUP, and puts the buffer in `gnus-summary-mode'. + +Returns non-nil if the setup was successful." (let ((buffer (gnus-summary-buffer-name group)) (dead-name (concat "*Dead Summary " (gnus-group-decoded-name group) "*"))) @@ -3493,13 +3483,15 @@ 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) + (gnus-summary-mode) (when (gnus-group-quit-config group) (set (make-local-variable 'gnus-single-article-buffer) nil)) - (make-local-variable 'gnus-article-buffer) - (make-local-variable 'gnus-article-current) - (make-local-variable 'gnus-original-article-buffer) (setq gnus-newsgroup-name group) + (turn-on-gnus-mailing-list-mode) + ;; This function doesn't currently depend on GROUP, but might in + ;; the future. + (gnus-update-summary-mark-positions) + (gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy) ;; Set any local variables in the group parameters. (gnus-summary-set-local-parameters gnus-newsgroup-name) t))) @@ -3935,6 +3927,15 @@ gnus-summary-read-group (defun gnus-summary-read-group-1 (group show-all no-article kill-buffer no-display &optional select-articles) + "Display articles and threads in a Summary buffer for GROUP." + ;; This function calls `gnus-summary-setup-buffer' to create the + ;; buffer, put it in `gnus-summary-mode', and set local variables; + ;; `gnus-select-newsgroup' to update the group's active and marks + ;; from the server; and `gnus-summary-prepare' to actually insert + ;; lines for articles. The rest of the function is mostly concerned + ;; with limiting and positioning and windowing and other visual + ;; effects. + ;; Killed foreign groups can't be entered. ;; (when (and (not (gnus-group-native-p group)) ;; (not (gnus-gethash group gnus-newsrc-hashtb))) 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 --====-=-=-- --=-=-=--