aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/gnus/ChangeLog18
-rw-r--r--lisp/gnus/gnus-dired.el31
-rw-r--r--lisp/gnus/gnus-draft.el42
-rw-r--r--lisp/gnus/gnus-ml.el47
-rw-r--r--lisp/gnus/gnus-salt.el113
-rw-r--r--lisp/gnus/gnus-start.el3
-rw-r--r--lisp/gnus/gnus-sum.el40
-rw-r--r--lisp/gnus/gnus-topic.el1
-rw-r--r--lisp/gnus/gnus-undo.el35
-rw-r--r--lisp/gnus/mml.el18
10 files changed, 152 insertions, 196 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index ae4ede200aa..fbf1302d4f7 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,21 @@
12010-05-03 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 Use define-minor-mode in Gnus where applicable.
4 * mml.el (mml-mode): Use define-minor-mode.
5 * gnus-undo.el (gnus-undo-mode-map): Initialize in declaration.
6 (gnus-undo-mode): Use define-minor-mode.
7 * gnus-sum.el (gnus-dead-summary-mode-map): Initialize in declaration.
8 (gnus-dead-summary-mode): Use define-minor-mode.
9 * gnus-salt.el (gnus-pick-mode-map, gnus-binary-mode-map):
10 Initialize in declaration.
11 (gnus-pick-mode, gnus-binary-mode): Use define-minor-mode.
12 * gnus-ml.el (gnus-mailing-list-mode-map): Initialize in declaration.
13 (gnus-mailing-list-mode): Use define-minor-mode.
14 * gnus-draft.el (gnus-draft-mode-map): Initialize in declaration.
15 (gnus-draft-mode): Use define-minor-mode.
16 * gnus-dired.el (gnus-dired-mode-map): Initialize in declaration.
17 (gnus-dired-mode): Use define-minor-mode.
18
12010-04-27 Katsumi Yamaoka <yamaoka@jpl.org> 192010-04-27 Katsumi Yamaoka <yamaoka@jpl.org>
2 20
3 * gnus-util.el: Don't load tm and apel XEmacs packages when compiling. 21 * gnus-util.el: Don't load tm and apel XEmacs packages when compiling.
diff --git a/lisp/gnus/gnus-dired.el b/lisp/gnus/gnus-dired.el
index 595a9fe4ffd..67cb7ecfa08 100644
--- a/lisp/gnus/gnus-dired.el
+++ b/lisp/gnus/gnus-dired.el
@@ -55,17 +55,12 @@
55(autoload 'message-buffers "message") 55(autoload 'message-buffers "message")
56(autoload 'gnus-print-buffer "gnus-sum") 56(autoload 'gnus-print-buffer "gnus-sum")
57 57
58(defvar gnus-dired-mode nil 58(defvar gnus-dired-mode-map
59 "Minor mode for intersections of MIME mail composition and dired.") 59 (let ((map (make-sparse-keymap)))
60 60 (define-key map "\C-c\C-m\C-a" 'gnus-dired-attach)
61(defvar gnus-dired-mode-map nil) 61 (define-key map "\C-c\C-m\C-l" 'gnus-dired-find-file-mailcap)
62 62 (define-key map "\C-c\C-m\C-p" 'gnus-dired-print)
63(unless gnus-dired-mode-map 63 map))
64 (setq gnus-dired-mode-map (make-sparse-keymap))
65
66 (define-key gnus-dired-mode-map "\C-c\C-m\C-a" 'gnus-dired-attach)
67 (define-key gnus-dired-mode-map "\C-c\C-m\C-l" 'gnus-dired-find-file-mailcap)
68 (define-key gnus-dired-mode-map "\C-c\C-m\C-p" 'gnus-dired-print))
69 64
70;; FIXME: Make it customizable, change the default to `mail-user-agent' when 65;; FIXME: Make it customizable, change the default to `mail-user-agent' when
71;; this file is renamed (e.g. to `dired-mime.el'). 66;; this file is renamed (e.g. to `dired-mime.el').
@@ -89,19 +84,13 @@ See `mail-user-agent' for more information."
89 gnus-user-agent) 84 gnus-user-agent)
90 (function :tag "Other"))) 85 (function :tag "Other")))
91 86
92(defun gnus-dired-mode (&optional arg) 87(define-minor-mode gnus-dired-mode
93 "Minor mode for intersections of gnus and dired. 88 "Minor mode for intersections of gnus and dired.
94 89
95\\{gnus-dired-mode-map}" 90\\{gnus-dired-mode-map}"
96 (interactive "P") 91 :keymap gnus-dired-mode-map
97 (when (eq major-mode 'dired-mode) 92 (unless (derived-mode-p 'dired-mode)
98 (set (make-local-variable 'gnus-dired-mode) 93 (setq gnus-dired-mode nil)))
99 (if (null arg) (not gnus-dired-mode)
100 (> (prefix-numeric-value arg) 0)))
101 (when gnus-dired-mode
102 (add-minor-mode 'gnus-dired-mode "" gnus-dired-mode-map)
103 (save-current-buffer
104 (run-hooks 'gnus-dired-mode-hook)))))
105 94
106;;;###autoload 95;;;###autoload
107(defun turn-on-gnus-dired-mode () 96(defun turn-on-gnus-dired-mode ()
diff --git a/lisp/gnus/gnus-draft.el b/lisp/gnus/gnus-draft.el
index 1e6b7ee5dee..a4e1e1dd309 100644
--- a/lisp/gnus/gnus-draft.el
+++ b/lisp/gnus/gnus-draft.el
@@ -35,20 +35,15 @@
35 35
36;;; Draft minor mode 36;;; Draft minor mode
37 37
38(defvar gnus-draft-mode nil 38(defvar gnus-draft-mode-map
39 "Minor mode for providing a draft summary buffers.") 39 (let ((map (make-sparse-keymap)))
40 40 (gnus-define-keys map
41(defvar gnus-draft-mode-map nil) 41 "Dt" gnus-draft-toggle-sending
42 42 "e" gnus-draft-edit-message ;; Use `B w' for `gnus-summary-edit-article'
43(unless gnus-draft-mode-map 43 "De" gnus-draft-edit-message
44 (setq gnus-draft-mode-map (make-sparse-keymap)) 44 "Ds" gnus-draft-send-message
45 45 "DS" gnus-draft-send-all-messages)
46 (gnus-define-keys gnus-draft-mode-map 46 map))
47 "Dt" gnus-draft-toggle-sending
48 "e" gnus-draft-edit-message ;; Use `B w' for `gnus-summary-edit-article'
49 "De" gnus-draft-edit-message
50 "Ds" gnus-draft-send-message
51 "DS" gnus-draft-send-all-messages))
52 47
53(defun gnus-draft-make-menu-bar () 48(defun gnus-draft-make-menu-bar ()
54 (unless (boundp 'gnus-draft-menu) 49 (unless (boundp 'gnus-draft-menu)
@@ -61,20 +56,17 @@
61 ["Send all messages" gnus-draft-send-all-messages t] 56 ["Send all messages" gnus-draft-send-all-messages t]
62 ["Delete draft" gnus-summary-delete-article t])))) 57 ["Delete draft" gnus-summary-delete-article t]))))
63 58
64(defun gnus-draft-mode (&optional arg) 59(define-minor-mode gnus-draft-mode
65 "Minor mode for providing a draft summary buffers. 60 "Minor mode for providing a draft summary buffers.
66 61
67\\{gnus-draft-mode-map}" 62\\{gnus-draft-mode-map}"
68 (interactive "P") 63 :lighter " Draft" :keymap gnus-draft-mode-map
69 (when (eq major-mode 'gnus-summary-mode) 64 (cond
70 (when (set (make-local-variable 'gnus-draft-mode) 65 ((not (derived-mode-p 'gnus-summary-mode)) (setq gnus-draft-mode nil))
71 (if (null arg) (not gnus-draft-mode) 66 (gnus-draft-mode
72 (> (prefix-numeric-value arg) 0))) 67 ;; Set up the menu.
73 ;; Set up the menu. 68 (when (gnus-visual-p 'draft-menu 'menu)
74 (when (gnus-visual-p 'draft-menu 'menu) 69 (gnus-draft-make-menu-bar)))))
75 (gnus-draft-make-menu-bar))
76 (add-minor-mode 'gnus-draft-mode " Draft" gnus-draft-mode-map)
77 (gnus-run-hooks 'gnus-draft-mode-hook))))
78 70
79;;; Commands 71;;; Commands
80 72
diff --git a/lisp/gnus/gnus-ml.el b/lisp/gnus/gnus-ml.el
index 078a8cfa15c..a77de710769 100644
--- a/lisp/gnus/gnus-ml.el
+++ b/lisp/gnus/gnus-ml.el
@@ -33,24 +33,19 @@
33 33
34;;; Mailing list minor mode 34;;; Mailing list minor mode
35 35
36(defvar gnus-mailing-list-mode nil 36(defvar gnus-mailing-list-mode-map
37 "Minor mode for providing mailing-list commands.") 37 (let ((map (make-sparse-keymap)))
38 38 (gnus-define-keys map
39(defvar gnus-mailing-list-mode-map nil) 39 "\C-c\C-nh" gnus-mailing-list-help
40 "\C-c\C-ns" gnus-mailing-list-subscribe
41 "\C-c\C-nu" gnus-mailing-list-unsubscribe
42 "\C-c\C-np" gnus-mailing-list-post
43 "\C-c\C-no" gnus-mailing-list-owner
44 "\C-c\C-na" gnus-mailing-list-archive)
45 map))
40 46
41(defvar gnus-mailing-list-menu) 47(defvar gnus-mailing-list-menu)
42 48
43(unless gnus-mailing-list-mode-map
44 (setq gnus-mailing-list-mode-map (make-sparse-keymap))
45
46 (gnus-define-keys gnus-mailing-list-mode-map
47 "\C-c\C-nh" gnus-mailing-list-help
48 "\C-c\C-ns" gnus-mailing-list-subscribe
49 "\C-c\C-nu" gnus-mailing-list-unsubscribe
50 "\C-c\C-np" gnus-mailing-list-post
51 "\C-c\C-no" gnus-mailing-list-owner
52 "\C-c\C-na" gnus-mailing-list-archive))
53
54(defun gnus-mailing-list-make-menu-bar () 49(defun gnus-mailing-list-make-menu-bar ()
55 (unless (boundp 'gnus-mailing-list-menu) 50 (unless (boundp 'gnus-mailing-list-menu)
56 (easy-menu-define 51 (easy-menu-define
@@ -88,21 +83,19 @@ If FORCE is non-nil, replace the old ones."
88 (gnus-message 1 "no list-post in this message.")))) 83 (gnus-message 1 "no list-post in this message."))))
89 84
90;;;###autoload 85;;;###autoload
91(defun gnus-mailing-list-mode (&optional arg) 86(define-minor-mode gnus-mailing-list-mode
92 "Minor mode for providing mailing-list commands. 87 "Minor mode for providing mailing-list commands.
93 88
94\\{gnus-mailing-list-mode-map}" 89\\{gnus-mailing-list-mode-map}"
95 (interactive "P") 90 :lighter " Mailing-List"
96 (when (eq major-mode 'gnus-summary-mode) 91 :keymap gnus-mailing-list-mode-map
97 (when (set (make-local-variable 'gnus-mailing-list-mode) 92 (cond
98 (if (null arg) (not gnus-mailing-list-mode) 93 ((not (derived-mode-p 'gnus-summary-mode))
99 (> (prefix-numeric-value arg) 0))) 94 (setq gnus-mailing-list-mode nil))
100 ;; Set up the menu. 95 (gnus-mailing-list-mode
101 (when (gnus-visual-p 'mailing-list-menu 'menu) 96 ;; Set up the menu.
102 (gnus-mailing-list-make-menu-bar)) 97 (when (gnus-visual-p 'mailing-list-menu 'menu)
103 (add-minor-mode 'gnus-mailing-list-mode " Mailing-List" 98 (gnus-mailing-list-make-menu-bar)))))
104 gnus-mailing-list-mode-map)
105 (gnus-run-hooks 'gnus-mailing-list-mode-hook))))
106 99
107;;; Commands 100;;; Commands
108 101
diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el
index d729fada009..22e446629f2 100644
--- a/lisp/gnus/gnus-salt.el
+++ b/lisp/gnus/gnus-salt.el
@@ -35,10 +35,6 @@
35;;; gnus-pick-mode 35;;; gnus-pick-mode
36;;; 36;;;
37 37
38(defvar gnus-pick-mode nil
39 "Minor mode for providing a pick-and-read interface in Gnus
40summary buffers.")
41
42(defcustom gnus-pick-display-summary nil 38(defcustom gnus-pick-display-summary nil
43 "*Display summary while reading." 39 "*Display summary while reading."
44 :type 'boolean 40 :type 'boolean
@@ -72,17 +68,15 @@ It accepts the same format specs that `gnus-summary-line-format' does."
72 68
73;;; Internal variables. 69;;; Internal variables.
74 70
75(defvar gnus-pick-mode-map nil) 71(defvar gnus-pick-mode-map
76 72 (let ((map (make-sparse-keymap)))
77(unless gnus-pick-mode-map 73 (gnus-define-keys map
78 (setq gnus-pick-mode-map (make-sparse-keymap)) 74 " " gnus-pick-next-page
79 75 "u" gnus-pick-unmark-article-or-thread
80 (gnus-define-keys gnus-pick-mode-map 76 "." gnus-pick-article-or-thread
81 " " gnus-pick-next-page 77 gnus-down-mouse-2 gnus-pick-mouse-pick-region
82 "u" gnus-pick-unmark-article-or-thread 78 "\r" gnus-pick-start-reading)
83 "." gnus-pick-article-or-thread 79 map))
84 gnus-down-mouse-2 gnus-pick-mouse-pick-region
85 "\r" gnus-pick-start-reading))
86 80
87(defun gnus-pick-make-menu-bar () 81(defun gnus-pick-make-menu-bar ()
88 (unless (boundp 'gnus-pick-menu) 82 (unless (boundp 'gnus-pick-menu)
@@ -104,30 +98,30 @@ It accepts the same format specs that `gnus-summary-line-format' does."
104 ["Start reading" gnus-pick-start-reading t] 98 ["Start reading" gnus-pick-start-reading t]
105 ["Switch pick mode off" gnus-pick-mode gnus-pick-mode])))) 99 ["Switch pick mode off" gnus-pick-mode gnus-pick-mode]))))
106 100
107(defun gnus-pick-mode (&optional arg) 101(define-minor-mode gnus-pick-mode
108 "Minor mode for providing a pick-and-read interface in Gnus summary buffers. 102 "Minor mode for providing a pick-and-read interface in Gnus summary buffers.
109 103
110\\{gnus-pick-mode-map}" 104\\{gnus-pick-mode-map}"
111 (interactive "P") 105 :lighter " Pick" :keymap gnus-pick-mode-map
112 (when (eq major-mode 'gnus-summary-mode) 106 (cond
113 (if (not (set (make-local-variable 'gnus-pick-mode) 107 ((not (derived-mode-p 'gnus-summary-mode)) (setq gnus-pick-mode nil))
114 (if (null arg) (not gnus-pick-mode) 108 ((not gnus-pick-mode)
115 (> (prefix-numeric-value arg) 0)))) 109 ;; FIXME: a buffer-local minor mode removing globally from a hook??
116 (remove-hook 'gnus-message-setup-hook 'gnus-pick-setup-message) 110 (remove-hook 'gnus-message-setup-hook 'gnus-pick-setup-message))
117 ;; Make sure that we don't select any articles upon group entry. 111 (t
118 (set (make-local-variable 'gnus-auto-select-first) nil) 112 ;; Make sure that we don't select any articles upon group entry.
119 ;; Change line format. 113 (set (make-local-variable 'gnus-auto-select-first) nil)
120 (setq gnus-summary-line-format gnus-summary-pick-line-format) 114 ;; Change line format.
121 (setq gnus-summary-line-format-spec nil) 115 (setq gnus-summary-line-format gnus-summary-pick-line-format)
122 (gnus-update-format-specifications nil 'summary) 116 (setq gnus-summary-line-format-spec nil)
123 (gnus-update-summary-mark-positions) 117 (gnus-update-format-specifications nil 'summary)
124 (add-hook 'gnus-message-setup-hook 'gnus-pick-setup-message) 118 (gnus-update-summary-mark-positions)
125 (set (make-local-variable 'gnus-summary-goto-unread) 'never) 119 ;; FIXME: a buffer-local minor mode adding globally to a hook??
126 ;; Set up the menu. 120 (add-hook 'gnus-message-setup-hook 'gnus-pick-setup-message)
127 (when (gnus-visual-p 'pick-menu 'menu) 121 (set (make-local-variable 'gnus-summary-goto-unread) 'never)
128 (gnus-pick-make-menu-bar)) 122 ;; Set up the menu.
129 (add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map) 123 (when (gnus-visual-p 'pick-menu 'menu)
130 (gnus-run-hooks 'gnus-pick-mode-hook)))) 124 (gnus-pick-make-menu-bar)))))
131 125
132(defun gnus-pick-setup-message () 126(defun gnus-pick-setup-message ()
133 "Make Message do the right thing on exit." 127 "Make Message do the right thing on exit."
@@ -319,20 +313,14 @@ This must be bound to a button-down mouse event."
319;;; gnus-binary-mode 313;;; gnus-binary-mode
320;;; 314;;;
321 315
322(defvar gnus-binary-mode nil
323 "Minor mode for providing a binary group interface in Gnus summary buffers.")
324
325(defvar gnus-binary-mode-hook nil 316(defvar gnus-binary-mode-hook nil
326 "Hook run in summary binary mode buffers.") 317 "Hook run in summary binary mode buffers.")
327 318
328(defvar gnus-binary-mode-map nil) 319(defvar gnus-binary-mode-map
329 320 (let ((map (make-sparse-keymap)))
330(unless gnus-binary-mode-map 321 (gnus-define-keys map
331 (setq gnus-binary-mode-map (make-sparse-keymap)) 322 "g" gnus-binary-show-article)
332 323 map))
333 (gnus-define-keys
334 gnus-binary-mode-map
335 "g" gnus-binary-show-article))
336 324
337(defun gnus-binary-make-menu-bar () 325(defun gnus-binary-make-menu-bar ()
338 (unless (boundp 'gnus-binary-menu) 326 (unless (boundp 'gnus-binary-menu)
@@ -341,25 +329,20 @@ This must be bound to a button-down mouse event."
341 '("Pick" 329 '("Pick"
342 ["Switch binary mode off" gnus-binary-mode t])))) 330 ["Switch binary mode off" gnus-binary-mode t]))))
343 331
344(defun gnus-binary-mode (&optional arg) 332(define-minor-mode gnus-binary-mode
345 "Minor mode for providing a binary group interface in Gnus summary buffers." 333 "Minor mode for providing a binary group interface in Gnus summary buffers."
346 (interactive "P") 334 :lighter " Binary" :keymap gnus-binary-mode-map
347 (when (eq major-mode 'gnus-summary-mode) 335 (cond
348 (make-local-variable 'gnus-binary-mode) 336 ((not (derived-mode-p 'gnus-summary-mode)) (setq gnus-binary-mode nil))
349 (setq gnus-binary-mode 337 (gnus-binary-mode
350 (if (null arg) (not gnus-binary-mode) 338 ;; Make sure that we don't select any articles upon group entry.
351 (> (prefix-numeric-value arg) 0))) 339 (make-local-variable 'gnus-auto-select-first)
352 (when gnus-binary-mode 340 (setq gnus-auto-select-first nil)
353 ;; Make sure that we don't select any articles upon group entry. 341 (make-local-variable 'gnus-summary-display-article-function)
354 (make-local-variable 'gnus-auto-select-first) 342 (setq gnus-summary-display-article-function 'gnus-binary-display-article)
355 (setq gnus-auto-select-first nil) 343 ;; Set up the menu.
356 (make-local-variable 'gnus-summary-display-article-function) 344 (when (gnus-visual-p 'binary-menu 'menu)
357 (setq gnus-summary-display-article-function 'gnus-binary-display-article) 345 (gnus-binary-make-menu-bar)))))
358 ;; Set up the menu.
359 (when (gnus-visual-p 'binary-menu 'menu)
360 (gnus-binary-make-menu-bar))
361 (add-minor-mode 'gnus-binary-mode " Binary" gnus-binary-mode-map)
362 (gnus-run-hooks 'gnus-binary-mode-hook))))
363 346
364(defun gnus-binary-display-article (article &optional all-header) 347(defun gnus-binary-display-article (article &optional all-header)
365 "Run ARTICLE through the binary decode functions." 348 "Run ARTICLE through the binary decode functions."
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index bf08ba6f888..ff51530457f 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -2960,6 +2960,8 @@ If FORCE is non-nil, the .newsrc file is read."
2960 2960
2961(defun gnus-slave-mode () 2961(defun gnus-slave-mode ()
2962 "Minor mode for slave Gnusae." 2962 "Minor mode for slave Gnusae."
2963 ;; FIXME: gnus-slave-mode appears to never be set (i.e. it'll always be nil):
2964 ;; Remove, or fix and use define-minor-mode.
2963 (add-minor-mode 'gnus-slave-mode " Slave" (make-sparse-keymap)) 2965 (add-minor-mode 'gnus-slave-mode " Slave" (make-sparse-keymap))
2964 (gnus-run-hooks 'gnus-slave-mode-hook)) 2966 (gnus-run-hooks 'gnus-slave-mode-hook))
2965 2967
@@ -3058,6 +3060,7 @@ If FORCE is non-nil, the .newsrc file is read."
3058 nil) 3060 nil)
3059 (t 3061 (t
3060 (save-excursion 3062 (save-excursion
3063 ;; FIXME: Shouldn't save-restriction be done after set-buffer?
3061 (save-restriction 3064 (save-restriction
3062 (set-buffer nntp-server-buffer) 3065 (set-buffer nntp-server-buffer)
3063 (goto-char (point-min)) 3066 (goto-char (point-min))
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index d8a36dd77db..7c407476e20 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -7237,33 +7237,21 @@ The state which existed when entering the ephemeral is reset."
7237 7237
7238;;; Dead summaries. 7238;;; Dead summaries.
7239 7239
7240(defvar gnus-dead-summary-mode-map nil) 7240(defvar gnus-dead-summary-mode-map
7241 7241 (let ((map (make-keymap)))
7242(unless gnus-dead-summary-mode-map 7242 (suppress-keymap map)
7243 (setq gnus-dead-summary-mode-map (make-keymap)) 7243 (substitute-key-definition 'undefined 'gnus-summary-wake-up-the-dead map)
7244 (suppress-keymap gnus-dead-summary-mode-map) 7244 (dolist (key '("\C-d" "\r" "\177" [delete]))
7245 (substitute-key-definition 7245 (define-key map key 'gnus-summary-wake-up-the-dead))
7246 'undefined 'gnus-summary-wake-up-the-dead gnus-dead-summary-mode-map) 7246 (dolist (key '("q" "Q"))
7247 (dolist (key '("\C-d" "\r" "\177" [delete])) 7247 (define-key map key 'bury-buffer))
7248 (define-key gnus-dead-summary-mode-map 7248 map))
7249 key 'gnus-summary-wake-up-the-dead)) 7249
7250 (dolist (key '("q" "Q")) 7250(define-minor-mode gnus-dead-summary-mode
7251 (define-key gnus-dead-summary-mode-map key 'bury-buffer)))
7252
7253(defvar gnus-dead-summary-mode nil
7254 "Minor mode for Gnus summary buffers.")
7255
7256(defun gnus-dead-summary-mode (&optional arg)
7257 "Minor mode for Gnus summary buffers." 7251 "Minor mode for Gnus summary buffers."
7258 (interactive "P") 7252 :lighter " Dead" :keymap gnus-dead-summary-mode-map
7259 (when (eq major-mode 'gnus-summary-mode) 7253 (unless (derived-mode-p 'gnus-summary-mode)
7260 (make-local-variable 'gnus-dead-summary-mode) 7254 (setq gnus-dead-summary-mode nil)))
7261 (setq gnus-dead-summary-mode
7262 (if (null arg) (not gnus-dead-summary-mode)
7263 (> (prefix-numeric-value arg) 0)))
7264 (when gnus-dead-summary-mode
7265 (add-minor-mode
7266 'gnus-dead-summary-mode " Dead" gnus-dead-summary-mode-map))))
7267 7255
7268(defun gnus-deaden-summary () 7256(defun gnus-deaden-summary ()
7269 "Make the current summary buffer into a dead summary buffer." 7257 "Make the current summary buffer into a dead summary buffer."
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index 9d259881b09..b99f1772d5b 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -1140,6 +1140,7 @@ articles in the topic and its subtopics."
1140 1140
1141(defun gnus-topic-mode (&optional arg redisplay) 1141(defun gnus-topic-mode (&optional arg redisplay)
1142 "Minor mode for topicsifying Gnus group buffers." 1142 "Minor mode for topicsifying Gnus group buffers."
1143 ;; FIXME: Use define-minor-mode.
1143 (interactive (list current-prefix-arg t)) 1144 (interactive (list current-prefix-arg t))
1144 (when (eq major-mode 'gnus-group-mode) 1145 (when (eq major-mode 'gnus-group-mode)
1145 (make-local-variable 'gnus-topic-mode) 1146 (make-local-variable 'gnus-topic-mode)
diff --git a/lisp/gnus/gnus-undo.el b/lisp/gnus/gnus-undo.el
index 8030c084c39..433edef078f 100644
--- a/lisp/gnus/gnus-undo.el
+++ b/lisp/gnus/gnus-undo.el
@@ -59,6 +59,10 @@
59 :group 'gnus-undo) 59 :group 'gnus-undo)
60 60
61(defcustom gnus-undo-mode nil 61(defcustom gnus-undo-mode nil
62 ;; FIXME: This is a buffer-local minor mode which requires running
63 ;; code upon activation/deactivation, so defining it as a defcustom
64 ;; doesn't seem very useful: setting it to non-nil via Customize
65 ;; probably won't do the right thing.
62 "Minor mode for undoing in Gnus buffers." 66 "Minor mode for undoing in Gnus buffers."
63 :type 'boolean 67 :type 'boolean
64 :group 'gnus-undo) 68 :group 'gnus-undo)
@@ -77,17 +81,15 @@
77 81
78;;; Minor mode definition. 82;;; Minor mode definition.
79 83
80(defvar gnus-undo-mode-map nil) 84(defvar gnus-undo-mode-map
81 85 (let ((map (make-sparse-keymap)))
82(unless gnus-undo-mode-map 86 (gnus-define-keys map
83 (setq gnus-undo-mode-map (make-sparse-keymap)) 87 "\M-\C-_" gnus-undo
84 88 "\C-_" gnus-undo
85 (gnus-define-keys gnus-undo-mode-map 89 "\C-xu" gnus-undo
86 "\M-\C-_" gnus-undo 90 ;; many people are used to type `C-/' on X terminals and get `C-_'.
87 "\C-_" gnus-undo 91 [(control /)] gnus-undo)
88 "\C-xu" gnus-undo 92 map))
89 ;; many people are used to type `C-/' on X terminals and get `C-_'.
90 [(control /)] gnus-undo))
91 93
92(defun gnus-undo-make-menu-bar () 94(defun gnus-undo-make-menu-bar ()
93 ;; This is disabled for the time being. 95 ;; This is disabled for the time being.
@@ -96,24 +98,19 @@
96 (cons "Undo" 'gnus-undo-actions) 98 (cons "Undo" 'gnus-undo-actions)
97 [menu-bar file whatever]))) 99 [menu-bar file whatever])))
98 100
99(defun gnus-undo-mode (&optional arg) 101(define-minor-mode gnus-undo-mode
100 "Minor mode for providing `undo' in Gnus buffers. 102 "Minor mode for providing `undo' in Gnus buffers.
101 103
102\\{gnus-undo-mode-map}" 104\\{gnus-undo-mode-map}"
103 (interactive "P") 105 :keymap gnus-undo-mode-map
104 (set (make-local-variable 'gnus-undo-mode)
105 (if (null arg) (not gnus-undo-mode)
106 (> (prefix-numeric-value arg) 0)))
107 (set (make-local-variable 'gnus-undo-actions) nil) 106 (set (make-local-variable 'gnus-undo-actions) nil)
108 (set (make-local-variable 'gnus-undo-boundary) t) 107 (set (make-local-variable 'gnus-undo-boundary) t)
109 (when gnus-undo-mode 108 (when gnus-undo-mode
110 ;; Set up the menu. 109 ;; Set up the menu.
111 (when (gnus-visual-p 'undo-menu 'menu) 110 (when (gnus-visual-p 'undo-menu 'menu)
112 (gnus-undo-make-menu-bar)) 111 (gnus-undo-make-menu-bar))
113 (add-minor-mode 'gnus-undo-mode "" gnus-undo-mode-map)
114 (gnus-make-local-hook 'post-command-hook) 112 (gnus-make-local-hook 'post-command-hook)
115 (add-hook 'post-command-hook 'gnus-undo-boundary nil t) 113 (add-hook 'post-command-hook 'gnus-undo-boundary nil t)))
116 (gnus-run-hooks 'gnus-undo-mode-hook)))
117 114
118;;; Interface functions. 115;;; Interface functions.
119 116
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index f262dc6b3cb..a5670e3c8b6 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -898,8 +898,7 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
898 ;; Determine type and stuff. 898 ;; Determine type and stuff.
899 (unless (stringp (car handle)) 899 (unless (stringp (car handle))
900 (unless (setq textp (equal (mm-handle-media-supertype handle) "text")) 900 (unless (setq textp (equal (mm-handle-media-supertype handle) "text"))
901 (save-excursion 901 (with-current-buffer (setq buffer (mml-generate-new-buffer " *mml*"))
902 (set-buffer (setq buffer (mml-generate-new-buffer " *mml*")))
903 (if (eq (mail-content-type-get (mm-handle-type handle) 'charset) 902 (if (eq (mail-content-type-get (mm-handle-type handle) 'charset)
904 'gnus-decoded) 903 'gnus-decoded)
905 ;; A part that mm-uu dissected from a non-MIME message 904 ;; A part that mm-uu dissected from a non-MIME message
@@ -1126,25 +1125,18 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
1126 ,@(if (featurep 'xemacs) '(t) 1125 ,@(if (featurep 'xemacs) '(t)
1127 '(:help "Display the EasyPG manual"))])) 1126 '(:help "Display the EasyPG manual"))]))
1128 1127
1129(defvar mml-mode nil 1128(define-minor-mode mml-mode
1130 "Minor mode for editing MML.")
1131
1132(defun mml-mode (&optional arg)
1133 "Minor mode for editing MML. 1129 "Minor mode for editing MML.
1134MML is the MIME Meta Language, a minor mode for composing MIME articles. 1130MML is the MIME Meta Language, a minor mode for composing MIME articles.
1135See Info node `(emacs-mime)Composing'. 1131See Info node `(emacs-mime)Composing'.
1136 1132
1137\\{mml-mode-map}" 1133\\{mml-mode-map}"
1138 (interactive "P") 1134 :lighter " MML" :keymap mml-mode-map
1139 (when (set (make-local-variable 'mml-mode) 1135 (when mml-mode
1140 (if (null arg) (not mml-mode)
1141 (> (prefix-numeric-value arg) 0)))
1142 (add-minor-mode 'mml-mode " MML" mml-mode-map)
1143 (easy-menu-add mml-menu mml-mode-map) 1136 (easy-menu-add mml-menu mml-mode-map)
1144 (when (boundp 'dnd-protocol-alist) 1137 (when (boundp 'dnd-protocol-alist)
1145 (set (make-local-variable 'dnd-protocol-alist) 1138 (set (make-local-variable 'dnd-protocol-alist)
1146 (append mml-dnd-protocol-alist dnd-protocol-alist))) 1139 (append mml-dnd-protocol-alist dnd-protocol-alist)))))
1147 (run-hooks 'mml-mode-hook)))
1148 1140
1149;;; 1141;;;
1150;;; Helper functions for reading MIME stuff from the minibuffer and 1142;;; Helper functions for reading MIME stuff from the minibuffer and