mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-04 14:40:54 -08:00
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)
This commit is contained in:
parent
efccd13c1f
commit
4ef9bcd0ff
8 changed files with 48 additions and 93 deletions
|
|
@ -2575,9 +2575,6 @@ modified) original contents, they are first saved to their own file."
|
|||
;;; 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 @@ General format specifiers can also be used. See Info node
|
|||
(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 @@ General format specifiers can also be used. See Info node
|
|||
|
||||
(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.
|
||||
\\<gnus-category-mode-map>
|
||||
For more in-depth information on this mode, read the manual
|
||||
|
|
@ -2672,8 +2667,7 @@ The following commands are available:
|
|||
(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)
|
||||
|
||||
|
|
|
|||
|
|
@ -4388,8 +4388,6 @@ If variable `gnus-use-long-file-name' is non-nil, it is
|
|||
;;; 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 @@ If variable `gnus-use-long-file-name' is non-nil, it is
|
|||
(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 @@ commands:
|
|||
(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 ()
|
||||
|
|
|
|||
|
|
@ -567,8 +567,6 @@ simple manner."
|
|||
;;; 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 @@ When FORCE, rebuild the 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.
|
||||
\\<gnus-group-mode-map>
|
||||
The group buffer lists (some of) the groups available. For instance,
|
||||
|
|
@ -1131,8 +1128,7 @@ The following commands are available:
|
|||
(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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -396,11 +396,6 @@ Two predefined functions are available:
|
|||
(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 @@ Two predefined functions are available:
|
|||
'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 @@ Two predefined functions are available:
|
|||
'("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)
|
||||
|
|
|
|||
|
|
@ -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 @@ If nil, a faster, but more primitive, buffer is used instead."
|
|||
(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 @@ If nil, a faster, but more primitive, buffer is used instead."
|
|||
|
||||
(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 @@ If nil, a faster, but more primitive, buffer is used instead."
|
|||
("(\\(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.
|
||||
\\<gnus-server-mode-map>
|
||||
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
|
|||
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 @@ The following commands are available:
|
|||
|
||||
(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 @@ claim them."
|
|||
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 @@ claim them."
|
|||
(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.
|
||||
|
||||
\\<gnus-browse-mode-map>
|
||||
|
|
@ -918,8 +893,7 @@ buffer.
|
|||
(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.
|
||||
|
|
|
|||
|
|
@ -1842,8 +1842,6 @@ increase the score of each group you read."
|
|||
;;; Gnus summary mode
|
||||
;;;
|
||||
|
||||
(put 'gnus-summary-mode 'mode-class 'special)
|
||||
|
||||
(defvar gnus-article-commands-menu)
|
||||
|
||||
;; Non-orthogonal keys
|
||||
|
|
@ -3052,10 +3050,8 @@ When FORCE, rebuild the tool bar."
|
|||
|
||||
(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.
|
||||
\\<gnus-summary-mode-map>
|
||||
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 @@ buffer; read the info pages for more information (`\\[gnus-info-find-node]').
|
|||
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 @@ The following commands are available:
|
|||
(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 @@ display only a single character."
|
|||
(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 @@ If the setup was successful, non-nil is returned."
|
|||
(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)
|
||||
;; These functions don't currently depend on GROUP, but might in
|
||||
;; the future.
|
||||
(gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy)
|
||||
(gnus-update-summary-mark-positions)
|
||||
;; Set any local variables in the group parameters.
|
||||
(gnus-summary-set-local-parameters gnus-newsgroup-name)
|
||||
t)))
|
||||
|
|
@ -3935,6 +3927,15 @@ If SELECT-ARTICLES, only select those articles from 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)))
|
||||
|
|
|
|||
|
|
@ -637,6 +637,12 @@ be set in `.emacs' instead."
|
|||
"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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue