diff options
| author | Eric Abrahamsen | 2018-06-25 17:40:19 -0700 |
|---|---|---|
| committer | Eric Abrahamsen | 2018-11-23 09:44:35 -0800 |
| commit | 4ef9bcd0ff0eccb0c0810f43370eaa76aef2f4ec (patch) | |
| tree | 8c84e0978048b6a9e2738cfb056a0ce7f35de5c8 | |
| parent | efccd13c1fa451249886df696fd484c413c261ff (diff) | |
| download | emacs-4ef9bcd0ff0eccb0c0810f43370eaa76aef2f4ec.tar.gz emacs-4ef9bcd0ff0eccb0c0810f43370eaa76aef2f4ec.zip | |
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.
(Bug#33263)
| -rw-r--r-- | lisp/gnus/gnus-agent.el | 10 | ||||
| -rw-r--r-- | lisp/gnus/gnus-art.el | 8 | ||||
| -rw-r--r-- | lisp/gnus/gnus-group.el | 8 | ||||
| -rw-r--r-- | lisp/gnus/gnus-kill.el | 5 | ||||
| -rw-r--r-- | lisp/gnus/gnus-salt.el | 9 | ||||
| -rw-r--r-- | lisp/gnus/gnus-srvr.el | 44 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 51 | ||||
| -rw-r--r-- | 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 18e6174fa02..93a675584f5 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el | |||
| @@ -2575,9 +2575,6 @@ modified) original contents, they are first saved to their own file." | |||
| 2575 | ;;; Agent Category Mode | 2575 | ;;; Agent Category Mode |
| 2576 | ;;; | 2576 | ;;; |
| 2577 | 2577 | ||
| 2578 | (defvar gnus-category-mode-hook nil | ||
| 2579 | "Hook run in `gnus-category-mode' buffers.") | ||
| 2580 | |||
| 2581 | (defvar gnus-category-line-format " %(%20c%): %g\n" | 2578 | (defvar gnus-category-line-format " %(%20c%): %g\n" |
| 2582 | "Format of category lines. | 2579 | "Format of category lines. |
| 2583 | 2580 | ||
| @@ -2613,7 +2610,6 @@ General format specifiers can also be used. See Info node | |||
| 2613 | (defvar gnus-category-mode-line-format-spec nil) | 2610 | (defvar gnus-category-mode-line-format-spec nil) |
| 2614 | 2611 | ||
| 2615 | (defvar gnus-category-mode-map nil) | 2612 | (defvar gnus-category-mode-map nil) |
| 2616 | (put 'gnus-category-mode 'mode-class 'special) | ||
| 2617 | 2613 | ||
| 2618 | (unless gnus-category-mode-map | 2614 | (unless gnus-category-mode-map |
| 2619 | (setq gnus-category-mode-map (make-sparse-keymap)) | 2615 | (setq gnus-category-mode-map (make-sparse-keymap)) |
| @@ -2655,9 +2651,8 @@ General format specifiers can also be used. See Info node | |||
| 2655 | 2651 | ||
| 2656 | (gnus-run-hooks 'gnus-category-menu-hook))) | 2652 | (gnus-run-hooks 'gnus-category-menu-hook))) |
| 2657 | 2653 | ||
| 2658 | (define-derived-mode gnus-category-mode fundamental-mode "Category" | 2654 | (define-derived-mode gnus-category-mode gnus-mode "Category" |
| 2659 | "Major mode for listing and editing agent categories. | 2655 | "Major mode for listing and editing agent categories. |
| 2660 | |||
| 2661 | All normal editing commands are switched off. | 2656 | All normal editing commands are switched off. |
| 2662 | \\<gnus-category-mode-map> | 2657 | \\<gnus-category-mode-map> |
| 2663 | For more in-depth information on this mode, read the manual | 2658 | For more in-depth information on this mode, read the manual |
| @@ -2672,8 +2667,7 @@ The following commands are available: | |||
| 2672 | (gnus-set-default-directory) | 2667 | (gnus-set-default-directory) |
| 2673 | (setq mode-line-process nil) | 2668 | (setq mode-line-process nil) |
| 2674 | (buffer-disable-undo) | 2669 | (buffer-disable-undo) |
| 2675 | (setq truncate-lines t) | 2670 | (setq truncate-lines t)) |
| 2676 | (setq buffer-read-only t)) | ||
| 2677 | 2671 | ||
| 2678 | (defalias 'gnus-category-position-point 'gnus-goto-colon) | 2672 | (defalias 'gnus-category-position-point 'gnus-goto-colon) |
| 2679 | 2673 | ||
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index f28e6db3c7e..c78bb3325f0 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -4388,8 +4388,6 @@ If variable `gnus-use-long-file-name' is non-nil, it is | |||
| 4388 | ;;; Gnus article mode | 4388 | ;;; Gnus article mode |
| 4389 | ;;; | 4389 | ;;; |
| 4390 | 4390 | ||
| 4391 | (put 'gnus-article-mode 'mode-class 'special) | ||
| 4392 | |||
| 4393 | (set-keymap-parent gnus-article-mode-map widget-keymap) | 4391 | (set-keymap-parent gnus-article-mode-map widget-keymap) |
| 4394 | 4392 | ||
| 4395 | (gnus-define-keys gnus-article-mode-map | 4393 | (gnus-define-keys gnus-article-mode-map |
| @@ -4467,9 +4465,8 @@ If variable `gnus-use-long-file-name' is non-nil, it is | |||
| 4467 | (defvar bookmark-make-record-function) | 4465 | (defvar bookmark-make-record-function) |
| 4468 | (defvar shr-put-image-function) | 4466 | (defvar shr-put-image-function) |
| 4469 | 4467 | ||
| 4470 | (define-derived-mode gnus-article-mode fundamental-mode "Article" | 4468 | (define-derived-mode gnus-article-mode gnus-mode "Article" |
| 4471 | "Major mode for displaying an article. | 4469 | "Major mode for displaying an article. |
| 4472 | |||
| 4473 | All normal editing commands are switched off. | 4470 | All normal editing commands are switched off. |
| 4474 | 4471 | ||
| 4475 | The following commands are available in addition to all summary mode | 4472 | The following commands are available in addition to all summary mode |
| @@ -4510,8 +4507,7 @@ commands: | |||
| 4510 | (setq cursor-in-non-selected-windows nil)) | 4507 | (setq cursor-in-non-selected-windows nil)) |
| 4511 | (gnus-set-default-directory) | 4508 | (gnus-set-default-directory) |
| 4512 | (buffer-disable-undo) | 4509 | (buffer-disable-undo) |
| 4513 | (setq buffer-read-only t | 4510 | (setq show-trailing-whitespace nil) |
| 4514 | show-trailing-whitespace nil) | ||
| 4515 | (mm-enable-multibyte)) | 4511 | (mm-enable-multibyte)) |
| 4516 | 4512 | ||
| 4517 | (defun gnus-article-setup-buffer () | 4513 | (defun gnus-article-setup-buffer () |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 6af27afbfaa..d526894b3ac 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -567,8 +567,6 @@ simple manner." | |||
| 567 | ;;; Gnus group mode | 567 | ;;; Gnus group mode |
| 568 | ;;; | 568 | ;;; |
| 569 | 569 | ||
| 570 | (put 'gnus-group-mode 'mode-class 'special) | ||
| 571 | |||
| 572 | (gnus-define-keys gnus-group-mode-map | 570 | (gnus-define-keys gnus-group-mode-map |
| 573 | " " gnus-group-read-group | 571 | " " gnus-group-read-group |
| 574 | "=" gnus-group-select-group | 572 | "=" gnus-group-select-group |
| @@ -1106,9 +1104,8 @@ When FORCE, rebuild the tool bar." | |||
| 1106 | (set (make-local-variable 'tool-bar-map) map)))) | 1104 | (set (make-local-variable 'tool-bar-map) map)))) |
| 1107 | gnus-group-tool-bar-map) | 1105 | gnus-group-tool-bar-map) |
| 1108 | 1106 | ||
| 1109 | (define-derived-mode gnus-group-mode fundamental-mode "Group" | 1107 | (define-derived-mode gnus-group-mode gnus-mode "Group" |
| 1110 | "Major mode for reading news. | 1108 | "Major mode for reading news. |
| 1111 | |||
| 1112 | All normal editing commands are switched off. | 1109 | All normal editing commands are switched off. |
| 1113 | \\<gnus-group-mode-map> | 1110 | \\<gnus-group-mode-map> |
| 1114 | The group buffer lists (some of) the groups available. For instance, | 1111 | The group buffer lists (some of) the groups available. For instance, |
| @@ -1131,8 +1128,7 @@ The following commands are available: | |||
| 1131 | (setq mode-line-process nil) | 1128 | (setq mode-line-process nil) |
| 1132 | (buffer-disable-undo) | 1129 | (buffer-disable-undo) |
| 1133 | (setq truncate-lines t) | 1130 | (setq truncate-lines t) |
| 1134 | (setq buffer-read-only t | 1131 | (setq show-trailing-whitespace nil) |
| 1135 | show-trailing-whitespace nil) | ||
| 1136 | (gnus-set-default-directory) | 1132 | (gnus-set-default-directory) |
| 1137 | (gnus-update-format-specifications nil 'group 'group-mode) | 1133 | (gnus-update-format-specifications nil 'group 'group-mode) |
| 1138 | (gnus-update-group-mark-positions) | 1134 | (gnus-update-group-mark-positions) |
diff --git a/lisp/gnus/gnus-kill.el b/lisp/gnus/gnus-kill.el index 60732c11d54..e65ff51ce78 100644 --- a/lisp/gnus/gnus-kill.el +++ b/lisp/gnus/gnus-kill.el | |||
| @@ -29,11 +29,6 @@ | |||
| 29 | (require 'gnus-art) | 29 | (require 'gnus-art) |
| 30 | (require 'gnus-range) | 30 | (require 'gnus-range) |
| 31 | 31 | ||
| 32 | (defcustom gnus-kill-file-mode-hook nil | ||
| 33 | "Hook for Gnus kill file mode." | ||
| 34 | :group 'gnus-score-kill | ||
| 35 | :type 'hook) | ||
| 36 | |||
| 37 | (defcustom gnus-kill-expiry-days 7 | 32 | (defcustom gnus-kill-expiry-days 7 |
| 38 | "Number of days before expiring unused kill file entries." | 33 | "Number of days before expiring unused kill file entries." |
| 39 | :group 'gnus-score-kill | 34 | :group 'gnus-score-kill |
diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el index aff841760ae..0504465de3e 100644 --- a/lisp/gnus/gnus-salt.el +++ b/lisp/gnus/gnus-salt.el | |||
| @@ -396,11 +396,6 @@ Two predefined functions are available: | |||
| 396 | (function :tag "Other" nil)) | 396 | (function :tag "Other" nil)) |
| 397 | :group 'gnus-summary-tree) | 397 | :group 'gnus-summary-tree) |
| 398 | 398 | ||
| 399 | (defcustom gnus-tree-mode-hook nil | ||
| 400 | "Hook run in tree mode buffers." | ||
| 401 | :type 'hook | ||
| 402 | :group 'gnus-summary-tree) | ||
| 403 | |||
| 404 | ;;; Internal variables. | 399 | ;;; Internal variables. |
| 405 | 400 | ||
| 406 | (defvar gnus-tmp-name) | 401 | (defvar gnus-tmp-name) |
| @@ -445,8 +440,6 @@ Two predefined functions are available: | |||
| 445 | 'undefined 'gnus-tree-read-summary-keys map) | 440 | 'undefined 'gnus-tree-read-summary-keys map) |
| 446 | map)) | 441 | map)) |
| 447 | 442 | ||
| 448 | (put 'gnus-tree-mode 'mode-class 'special) | ||
| 449 | |||
| 450 | (defun gnus-tree-make-menu-bar () | 443 | (defun gnus-tree-make-menu-bar () |
| 451 | (unless (boundp 'gnus-tree-menu) | 444 | (unless (boundp 'gnus-tree-menu) |
| 452 | (easy-menu-define | 445 | (easy-menu-define |
| @@ -454,7 +447,7 @@ Two predefined functions are available: | |||
| 454 | '("Tree" | 447 | '("Tree" |
| 455 | ["Select article" gnus-tree-select-article t])))) | 448 | ["Select article" gnus-tree-select-article t])))) |
| 456 | 449 | ||
| 457 | (define-derived-mode gnus-tree-mode fundamental-mode "Tree" | 450 | (define-derived-mode gnus-tree-mode gnus-mode "Tree" |
| 458 | "Major mode for displaying thread trees." | 451 | "Major mode for displaying thread trees." |
| 459 | (gnus-set-format 'tree-mode) | 452 | (gnus-set-format 'tree-mode) |
| 460 | (gnus-set-format 'tree t) | 453 | (gnus-set-format 'tree t) |
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el index 34ebd00ef24..4d15f36ffc4 100644 --- a/lisp/gnus/gnus-srvr.el +++ b/lisp/gnus/gnus-srvr.el | |||
| @@ -36,11 +36,6 @@ | |||
| 36 | 36 | ||
| 37 | (autoload 'gnus-group-make-nnir-group "nnir") | 37 | (autoload 'gnus-group-make-nnir-group "nnir") |
| 38 | 38 | ||
| 39 | (defcustom gnus-server-mode-hook nil | ||
| 40 | "Hook run in `gnus-server-mode' buffers." | ||
| 41 | :group 'gnus-server | ||
| 42 | :type 'hook) | ||
| 43 | |||
| 44 | (defcustom gnus-server-exit-hook nil | 39 | (defcustom gnus-server-exit-hook nil |
| 45 | "Hook run when exiting the server buffer." | 40 | "Hook run when exiting the server buffer." |
| 46 | :group 'gnus-server | 41 | :group 'gnus-server |
| @@ -108,7 +103,7 @@ If nil, a faster, but more primitive, buffer is used instead." | |||
| 108 | (defvar gnus-server-mode-line-format-spec nil) | 103 | (defvar gnus-server-mode-line-format-spec nil) |
| 109 | (defvar gnus-server-killed-servers nil) | 104 | (defvar gnus-server-killed-servers nil) |
| 110 | 105 | ||
| 111 | (defvar gnus-server-mode-map) | 106 | (defvar gnus-server-mode-map nil) |
| 112 | 107 | ||
| 113 | (defcustom gnus-server-menu-hook nil | 108 | (defcustom gnus-server-menu-hook nil |
| 114 | "Hook run after the creation of the server mode menu." | 109 | "Hook run after the creation of the server mode menu." |
| @@ -150,11 +145,8 @@ If nil, a faster, but more primitive, buffer is used instead." | |||
| 150 | 145 | ||
| 151 | (gnus-run-hooks 'gnus-server-menu-hook))) | 146 | (gnus-run-hooks 'gnus-server-menu-hook))) |
| 152 | 147 | ||
| 153 | (defvar gnus-server-mode-map nil) | ||
| 154 | (put 'gnus-server-mode 'mode-class 'special) | ||
| 155 | |||
| 156 | (unless gnus-server-mode-map | 148 | (unless gnus-server-mode-map |
| 157 | (setq gnus-server-mode-map (make-sparse-keymap)) | 149 | (setq gnus-server-mode-map (make-keymap)) |
| 158 | (suppress-keymap gnus-server-mode-map) | 150 | (suppress-keymap gnus-server-mode-map) |
| 159 | 151 | ||
| 160 | (gnus-define-keys gnus-server-mode-map | 152 | (gnus-define-keys gnus-server-mode-map |
| @@ -253,9 +245,8 @@ If nil, a faster, but more primitive, buffer is used instead." | |||
| 253 | ("(\\(offline\\))" 1 'gnus-server-offline) | 245 | ("(\\(offline\\))" 1 'gnus-server-offline) |
| 254 | ("(\\(denied\\))" 1 'gnus-server-denied))) | 246 | ("(\\(denied\\))" 1 'gnus-server-denied))) |
| 255 | 247 | ||
| 256 | (defun gnus-server-mode () | 248 | (define-derived-mode gnus-server-mode gnus-mode "Server" |
| 257 | "Major mode for listing and editing servers. | 249 | "Major mode for listing and editing servers. |
| 258 | |||
| 259 | All normal editing commands are switched off. | 250 | All normal editing commands are switched off. |
| 260 | \\<gnus-server-mode-map> | 251 | \\<gnus-server-mode-map> |
| 261 | For more in-depth information on this mode, read the manual | 252 | For more in-depth information on this mode, read the manual |
| @@ -264,23 +255,16 @@ For more in-depth information on this mode, read the manual | |||
| 264 | The following commands are available: | 255 | The following commands are available: |
| 265 | 256 | ||
| 266 | \\{gnus-server-mode-map}" | 257 | \\{gnus-server-mode-map}" |
| 267 | ;; FIXME: Use define-derived-mode. | ||
| 268 | (interactive) | ||
| 269 | (when (gnus-visual-p 'server-menu 'menu) | 258 | (when (gnus-visual-p 'server-menu 'menu) |
| 270 | (gnus-server-make-menu-bar)) | 259 | (gnus-server-make-menu-bar)) |
| 271 | (kill-all-local-variables) | ||
| 272 | (gnus-simplify-mode-line) | 260 | (gnus-simplify-mode-line) |
| 273 | (setq major-mode 'gnus-server-mode) | ||
| 274 | (setq mode-name "Server") | ||
| 275 | (gnus-set-default-directory) | 261 | (gnus-set-default-directory) |
| 276 | (setq mode-line-process nil) | 262 | (setq mode-line-process nil) |
| 277 | (use-local-map gnus-server-mode-map) | ||
| 278 | (buffer-disable-undo) | 263 | (buffer-disable-undo) |
| 279 | (setq truncate-lines t) | 264 | (setq truncate-lines t) |
| 280 | (setq buffer-read-only t) | ||
| 281 | (set (make-local-variable 'font-lock-defaults) | 265 | (set (make-local-variable 'font-lock-defaults) |
| 282 | '(gnus-server-font-lock-keywords t)) | 266 | '(gnus-server-font-lock-keywords t))) |
| 283 | (gnus-run-mode-hooks 'gnus-server-mode-hook)) | 267 | |
| 284 | 268 | ||
| 285 | (defun gnus-server-insert-server-line (name method) | 269 | (defun gnus-server-insert-server-line (name method) |
| 286 | (let* ((gnus-tmp-name name) | 270 | (let* ((gnus-tmp-name name) |
| @@ -320,21 +304,15 @@ The following commands are available: | |||
| 320 | 304 | ||
| 321 | (defun gnus-enter-server-buffer () | 305 | (defun gnus-enter-server-buffer () |
| 322 | "Set up the server buffer." | 306 | "Set up the server buffer." |
| 323 | (gnus-server-setup-buffer) | ||
| 324 | (gnus-configure-windows 'server) | 307 | (gnus-configure-windows 'server) |
| 325 | ;; Usually `gnus-configure-windows' will finish with the | 308 | ;; Usually `gnus-configure-windows' will finish with the |
| 326 | ;; `gnus-server-buffer' selected as the current buffer, but not always (I | 309 | ;; `gnus-server-buffer' selected as the current buffer, but not always (I |
| 327 | ;; bumped into it when starting from a dedicated *Group* frame, and | 310 | ;; bumped into it when starting from a dedicated *Group* frame, and |
| 328 | ;; gnus-configure-windows opened *Server* into its own dedicated frame). | 311 | ;; gnus-configure-windows opened *Server* into its own dedicated frame). |
| 329 | (with-current-buffer (get-buffer gnus-server-buffer) | 312 | (with-current-buffer (get-buffer-create gnus-server-buffer) |
| 313 | (gnus-server-mode) | ||
| 330 | (gnus-server-prepare))) | 314 | (gnus-server-prepare))) |
| 331 | 315 | ||
| 332 | (defun gnus-server-setup-buffer () | ||
| 333 | "Initialize the server buffer." | ||
| 334 | (unless (get-buffer gnus-server-buffer) | ||
| 335 | (with-current-buffer (gnus-get-buffer-create gnus-server-buffer) | ||
| 336 | (gnus-server-mode)))) | ||
| 337 | |||
| 338 | (defun gnus-server-prepare () | 316 | (defun gnus-server-prepare () |
| 339 | (gnus-set-format 'server-mode) | 317 | (gnus-set-format 'server-mode) |
| 340 | (gnus-set-format 'server t) | 318 | (gnus-set-format 'server t) |
| @@ -717,9 +695,7 @@ claim them." | |||
| 717 | function | 695 | function |
| 718 | (repeat function))) | 696 | (repeat function))) |
| 719 | 697 | ||
| 720 | (defvar gnus-browse-mode-hook nil) | ||
| 721 | (defvar gnus-browse-mode-map nil) | 698 | (defvar gnus-browse-mode-map nil) |
| 722 | (put 'gnus-browse-mode 'mode-class 'special) | ||
| 723 | 699 | ||
| 724 | (unless gnus-browse-mode-map | 700 | (unless gnus-browse-mode-map |
| 725 | (setq gnus-browse-mode-map (make-keymap)) | 701 | (setq gnus-browse-mode-map (make-keymap)) |
| @@ -897,9 +873,8 @@ claim them." | |||
| 897 | (gnus-message 5 "Connecting to %s...done" (nth 1 method)) | 873 | (gnus-message 5 "Connecting to %s...done" (nth 1 method)) |
| 898 | t)))) | 874 | t)))) |
| 899 | 875 | ||
| 900 | (define-derived-mode gnus-browse-mode fundamental-mode "Browse Server" | 876 | (define-derived-mode gnus-browse-mode gnus-mode "Browse Server" |
| 901 | "Major mode for browsing a foreign server. | 877 | "Major mode for browsing a foreign server. |
| 902 | |||
| 903 | All normal editing commands are switched off. | 878 | All normal editing commands are switched off. |
| 904 | 879 | ||
| 905 | \\<gnus-browse-mode-map> | 880 | \\<gnus-browse-mode-map> |
| @@ -918,8 +893,7 @@ buffer. | |||
| 918 | (setq mode-line-process nil) | 893 | (setq mode-line-process nil) |
| 919 | (buffer-disable-undo) | 894 | (buffer-disable-undo) |
| 920 | (setq truncate-lines t) | 895 | (setq truncate-lines t) |
| 921 | (gnus-set-default-directory) | 896 | (gnus-set-default-directory)) |
| 922 | (setq buffer-read-only t)) | ||
| 923 | 897 | ||
| 924 | (defun gnus-browse-read-group (&optional no-article number) | 898 | (defun gnus-browse-read-group (&optional no-article number) |
| 925 | "Enter the group at the current line. | 899 | "Enter the group at the current line. |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index f9fae3792b1..1c4be09e2e9 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -1842,8 +1842,6 @@ increase the score of each group you read." | |||
| 1842 | ;;; Gnus summary mode | 1842 | ;;; Gnus summary mode |
| 1843 | ;;; | 1843 | ;;; |
| 1844 | 1844 | ||
| 1845 | (put 'gnus-summary-mode 'mode-class 'special) | ||
| 1846 | |||
| 1847 | (defvar gnus-article-commands-menu) | 1845 | (defvar gnus-article-commands-menu) |
| 1848 | 1846 | ||
| 1849 | ;; Non-orthogonal keys | 1847 | ;; Non-orthogonal keys |
| @@ -3052,10 +3050,8 @@ When FORCE, rebuild the tool bar." | |||
| 3052 | 3050 | ||
| 3053 | (defvar bidi-paragraph-direction) | 3051 | (defvar bidi-paragraph-direction) |
| 3054 | 3052 | ||
| 3055 | (defun gnus-summary-mode (&optional group) | 3053 | (define-derived-mode gnus-summary-mode gnus-mode "Summary" |
| 3056 | "Major mode for reading articles. | 3054 | "Major mode for reading articles. |
| 3057 | |||
| 3058 | All normal editing commands are switched off. | ||
| 3059 | \\<gnus-summary-mode-map> | 3055 | \\<gnus-summary-mode-map> |
| 3060 | Each line in this buffer represents one article. To read an | 3056 | Each line in this buffer represents one article. To read an |
| 3061 | article, you can, for instance, type `\\[gnus-summary-next-page]'. To move forwards | 3057 | article, you can, for instance, type `\\[gnus-summary-next-page]'. To move forwards |
| @@ -3072,24 +3068,16 @@ buffer; read the info pages for more information (`\\[gnus-info-find-node]'). | |||
| 3072 | The following commands are available: | 3068 | The following commands are available: |
| 3073 | 3069 | ||
| 3074 | \\{gnus-summary-mode-map}" | 3070 | \\{gnus-summary-mode-map}" |
| 3075 | ;; FIXME: Use define-derived-mode. | ||
| 3076 | (interactive) | ||
| 3077 | (kill-all-local-variables) | ||
| 3078 | (let ((gnus-summary-local-variables gnus-newsgroup-variables)) | 3071 | (let ((gnus-summary-local-variables gnus-newsgroup-variables)) |
| 3079 | (gnus-summary-make-local-variables)) | 3072 | (gnus-summary-make-local-variables)) |
| 3080 | (gnus-summary-make-local-variables) | 3073 | (gnus-summary-make-local-variables) |
| 3081 | (setq gnus-newsgroup-name group) | ||
| 3082 | (when (gnus-visual-p 'summary-menu 'menu) | 3074 | (when (gnus-visual-p 'summary-menu 'menu) |
| 3083 | (gnus-summary-make-menu-bar) | 3075 | (gnus-summary-make-menu-bar) |
| 3084 | (gnus-summary-make-tool-bar)) | 3076 | (gnus-summary-make-tool-bar)) |
| 3085 | (gnus-make-thread-indent-array) | 3077 | (gnus-make-thread-indent-array) |
| 3086 | (gnus-simplify-mode-line) | 3078 | (gnus-simplify-mode-line) |
| 3087 | (setq major-mode 'gnus-summary-mode) | ||
| 3088 | (setq mode-name "Summary") | ||
| 3089 | (use-local-map gnus-summary-mode-map) | ||
| 3090 | (buffer-disable-undo) | 3079 | (buffer-disable-undo) |
| 3091 | (setq buffer-read-only t | 3080 | (setq show-trailing-whitespace nil |
| 3092 | show-trailing-whitespace nil | ||
| 3093 | truncate-lines t | 3081 | truncate-lines t |
| 3094 | bidi-paragraph-direction 'left-to-right) | 3082 | bidi-paragraph-direction 'left-to-right) |
| 3095 | (add-to-invisibility-spec '(gnus-sum . t)) | 3083 | (add-to-invisibility-spec '(gnus-sum . t)) |
| @@ -3100,14 +3088,13 @@ The following commands are available: | |||
| 3100 | (make-local-variable 'gnus-summary-dummy-line-format) | 3088 | (make-local-variable 'gnus-summary-dummy-line-format) |
| 3101 | (make-local-variable 'gnus-summary-dummy-line-format-spec) | 3089 | (make-local-variable 'gnus-summary-dummy-line-format-spec) |
| 3102 | (make-local-variable 'gnus-summary-mark-positions) | 3090 | (make-local-variable 'gnus-summary-mark-positions) |
| 3091 | (make-local-variable 'gnus-article-buffer) | ||
| 3092 | (make-local-variable 'gnus-article-current) | ||
| 3093 | (make-local-variable 'gnus-original-article-buffer) | ||
| 3103 | (add-hook 'pre-command-hook 'gnus-set-global-variables nil t) | 3094 | (add-hook 'pre-command-hook 'gnus-set-global-variables nil t) |
| 3104 | (gnus-run-mode-hooks 'gnus-summary-mode-hook) | ||
| 3105 | (turn-on-gnus-mailing-list-mode) | ||
| 3106 | (mm-enable-multibyte) | 3095 | (mm-enable-multibyte) |
| 3107 | (set (make-local-variable 'bookmark-make-record-function) | 3096 | (set (make-local-variable 'bookmark-make-record-function) |
| 3108 | 'gnus-summary-bookmark-make-record) | 3097 | 'gnus-summary-bookmark-make-record)) |
| 3109 | (gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy) | ||
| 3110 | (gnus-update-summary-mark-positions)) | ||
| 3111 | 3098 | ||
| 3112 | (defun gnus-summary-make-local-variables () | 3099 | (defun gnus-summary-make-local-variables () |
| 3113 | "Make all the local summary buffer variables." | 3100 | "Make all the local summary buffer variables." |
| @@ -3478,8 +3465,11 @@ display only a single character." | |||
| 3478 | (current-buffer)))))) | 3465 | (current-buffer)))))) |
| 3479 | 3466 | ||
| 3480 | (defun gnus-summary-setup-buffer (group) | 3467 | (defun gnus-summary-setup-buffer (group) |
| 3481 | "Initialize summary buffer. | 3468 | "Initialize summary buffer for GROUP. |
| 3482 | If the setup was successful, non-nil is returned." | 3469 | This function does all setup work that relies on the specific |
| 3470 | value of GROUP, and puts the buffer in `gnus-summary-mode'. | ||
| 3471 | |||
| 3472 | Returns non-nil if the setup was successful." | ||
| 3483 | (let ((buffer (gnus-summary-buffer-name group)) | 3473 | (let ((buffer (gnus-summary-buffer-name group)) |
| 3484 | (dead-name (concat "*Dead Summary " | 3474 | (dead-name (concat "*Dead Summary " |
| 3485 | (gnus-group-decoded-name group) "*"))) | 3475 | (gnus-group-decoded-name group) "*"))) |
| @@ -3493,13 +3483,15 @@ If the setup was successful, non-nil is returned." | |||
| 3493 | (not gnus-newsgroup-prepared)) | 3483 | (not gnus-newsgroup-prepared)) |
| 3494 | (set-buffer (gnus-get-buffer-create buffer)) | 3484 | (set-buffer (gnus-get-buffer-create buffer)) |
| 3495 | (setq gnus-summary-buffer (current-buffer)) | 3485 | (setq gnus-summary-buffer (current-buffer)) |
| 3496 | (gnus-summary-mode group) | 3486 | (gnus-summary-mode) |
| 3497 | (when (gnus-group-quit-config group) | 3487 | (when (gnus-group-quit-config group) |
| 3498 | (set (make-local-variable 'gnus-single-article-buffer) nil)) | 3488 | (set (make-local-variable 'gnus-single-article-buffer) nil)) |
| 3499 | (make-local-variable 'gnus-article-buffer) | ||
| 3500 | (make-local-variable 'gnus-article-current) | ||
| 3501 | (make-local-variable 'gnus-original-article-buffer) | ||
| 3502 | (setq gnus-newsgroup-name group) | 3489 | (setq gnus-newsgroup-name group) |
| 3490 | (turn-on-gnus-mailing-list-mode) | ||
| 3491 | ;; These functions don't currently depend on GROUP, but might in | ||
| 3492 | ;; the future. | ||
| 3493 | (gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy) | ||
| 3494 | (gnus-update-summary-mark-positions) | ||
| 3503 | ;; Set any local variables in the group parameters. | 3495 | ;; Set any local variables in the group parameters. |
| 3504 | (gnus-summary-set-local-parameters gnus-newsgroup-name) | 3496 | (gnus-summary-set-local-parameters gnus-newsgroup-name) |
| 3505 | t))) | 3497 | t))) |
| @@ -3935,6 +3927,15 @@ If SELECT-ARTICLES, only select those articles from GROUP." | |||
| 3935 | (defun gnus-summary-read-group-1 (group show-all no-article | 3927 | (defun gnus-summary-read-group-1 (group show-all no-article |
| 3936 | kill-buffer no-display | 3928 | kill-buffer no-display |
| 3937 | &optional select-articles) | 3929 | &optional select-articles) |
| 3930 | "Display articles and threads in a Summary buffer for GROUP." | ||
| 3931 | ;; This function calls `gnus-summary-setup-buffer' to create the | ||
| 3932 | ;; buffer, put it in `gnus-summary-mode', and set local variables; | ||
| 3933 | ;; `gnus-select-newsgroup' to update the group's active and marks | ||
| 3934 | ;; from the server; and `gnus-summary-prepare' to actually insert | ||
| 3935 | ;; lines for articles. The rest of the function is mostly concerned | ||
| 3936 | ;; with limiting and positioning and windowing and other visual | ||
| 3937 | ;; effects. | ||
| 3938 | |||
| 3938 | ;; Killed foreign groups can't be entered. | 3939 | ;; Killed foreign groups can't be entered. |
| 3939 | ;; (when (and (not (gnus-group-native-p group)) | 3940 | ;; (when (and (not (gnus-group-native-p group)) |
| 3940 | ;; (not (gnus-gethash group gnus-newsrc-hashtb))) | 3941 | ;; (not (gnus-gethash group gnus-newsrc-hashtb))) |
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index 2786323f671..6c59b135742 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el | |||
| @@ -637,6 +637,12 @@ be set in `.emacs' instead." | |||
| 637 | "Face used for low interest read articles." | 637 | "Face used for low interest read articles." |
| 638 | :group 'gnus-summary) | 638 | :group 'gnus-summary) |
| 639 | 639 | ||
| 640 | ;;; Base gnus-mode | ||
| 641 | |||
| 642 | (define-derived-mode gnus-mode special-mode nil | ||
| 643 | "Base mode from which all other gnus modes derive. | ||
| 644 | This does nothing but derive from `special-mode', and should not | ||
| 645 | be used directly.") | ||
| 640 | 646 | ||
| 641 | ;;; | 647 | ;;; |
| 642 | ;;; Gnus buffers | 648 | ;;; Gnus buffers |