summaryrefslogtreecommitdiff
path: root/lisp/gnus/gnus-undo.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/gnus/gnus-undo.el')
-rw-r--r--lisp/gnus/gnus-undo.el39
1 files changed, 19 insertions, 20 deletions
diff --git a/lisp/gnus/gnus-undo.el b/lisp/gnus/gnus-undo.el
index 6f814e52411..6b60fac5c9c 100644
--- a/lisp/gnus/gnus-undo.el
+++ b/lisp/gnus/gnus-undo.el
@@ -45,6 +45,9 @@
;;; Code:
(eval-when-compile (require 'cl))
+(eval-when-compile
+ (when (featurep 'xemacs)
+ (require 'easy-mmode))) ; for `define-minor-mode'
(require 'gnus-util)
(require 'gnus)
@@ -59,6 +62,10 @@
:group 'gnus-undo)
(defcustom gnus-undo-mode nil
+ ;; FIXME: This is a buffer-local minor mode which requires running
+ ;; code upon activation/deactivation, so defining it as a defcustom
+ ;; doesn't seem very useful: setting it to non-nil via Customize
+ ;; probably won't do the right thing.
"Minor mode for undoing in Gnus buffers."
:type 'boolean
:group 'gnus-undo)
@@ -77,17 +84,15 @@
;;; Minor mode definition.
-(defvar gnus-undo-mode-map nil)
-
-(unless gnus-undo-mode-map
- (setq gnus-undo-mode-map (make-sparse-keymap))
-
- (gnus-define-keys gnus-undo-mode-map
- "\M-\C-_" gnus-undo
- "\C-_" gnus-undo
- "\C-xu" gnus-undo
- ;; many people are used to type `C-/' on X terminals and get `C-_'.
- [(control /)] gnus-undo))
+(defvar gnus-undo-mode-map
+ (let ((map (make-sparse-keymap)))
+ (gnus-define-keys map
+ "\M-\C-_" gnus-undo
+ "\C-_" gnus-undo
+ "\C-xu" gnus-undo
+ ;; many people are used to type `C-/' on X terminals and get `C-_'.
+ [(control /)] gnus-undo)
+ map))
(defun gnus-undo-make-menu-bar ()
;; This is disabled for the time being.
@@ -96,24 +101,19 @@
(cons "Undo" 'gnus-undo-actions)
[menu-bar file whatever])))
-(defun gnus-undo-mode (&optional arg)
+(define-minor-mode gnus-undo-mode
"Minor mode for providing `undo' in Gnus buffers.
\\{gnus-undo-mode-map}"
- (interactive "P")
- (set (make-local-variable 'gnus-undo-mode)
- (if (null arg) (not gnus-undo-mode)
- (> (prefix-numeric-value arg) 0)))
+ :keymap gnus-undo-mode-map
(set (make-local-variable 'gnus-undo-actions) nil)
(set (make-local-variable 'gnus-undo-boundary) t)
(when gnus-undo-mode
;; Set up the menu.
(when (gnus-visual-p 'undo-menu 'menu)
(gnus-undo-make-menu-bar))
- (add-minor-mode 'gnus-undo-mode "" gnus-undo-mode-map)
(gnus-make-local-hook 'post-command-hook)
- (add-hook 'post-command-hook 'gnus-undo-boundary nil t)
- (gnus-run-hooks 'gnus-undo-mode-hook)))
+ (add-hook 'post-command-hook 'gnus-undo-boundary nil t)))
;;; Interface functions.
@@ -188,5 +188,4 @@ A numeric argument serves as a repeat count."
(provide 'gnus-undo)
-;; arch-tag: 0d787bc7-787d-499a-837f-211d2cb07f2e
;;; gnus-undo.el ends here