summaryrefslogtreecommitdiff
path: root/lisp/gnus/gnus-undo.el
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <larsi@gnus.org>1999-02-20 14:05:57 +0000
committerLars Magne Ingebrigtsen <larsi@gnus.org>1999-02-20 14:05:57 +0000
commit6748645fc3dd1604ed57a883b7c346128af27d90 (patch)
treec4c528db7873d3ef96121c002b4d09209c305dca /lisp/gnus/gnus-undo.el
parent44a6ed57c9af413959fdebe38649c0df4a055fca (diff)
downloademacs-6748645fc3dd1604ed57a883b7c346128af27d90.tar.gz
Upgrading to Gnus 5.7; see ChangeLog
Diffstat (limited to 'lisp/gnus/gnus-undo.el')
-rw-r--r--lisp/gnus/gnus-undo.el37
1 files changed, 29 insertions, 8 deletions
diff --git a/lisp/gnus/gnus-undo.el b/lisp/gnus/gnus-undo.el
index b34070a3373..624b34a9916 100644
--- a/lisp/gnus/gnus-undo.el
+++ b/lisp/gnus/gnus-undo.el
@@ -1,7 +1,7 @@
;;; gnus-undo.el --- minor mode for undoing in Gnus
-;; Copyright (C) 1996,97 Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
;; This file is part of GNU Emacs.
@@ -25,7 +25,7 @@
;; This package allows arbitrary undoing in Gnus buffers. As all the
;; Gnus buffers aren't very text-oriented (what is in the buffers is
-;; just some random representation of the actual data), normal Emacs
+;; just some arbitrary representation of the actual data), normal Emacs
;; undoing doesn't work at all for Gnus.
;;
;; This package works by letting Gnus register functions for reversing
@@ -46,14 +46,30 @@
(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl))
+
(require 'gnus-util)
(require 'gnus)
+(require 'custom)
+
+(defgroup gnus-undo nil
+ "Undoing in Gnus buffers."
+ :group 'gnus)
+
+(defcustom gnus-undo-limit 2000
+ "The number of undoable actions recorded."
+ :type 'integer
+ :group 'gnus-undo)
-(defvar gnus-undo-mode nil
- "Minor mode for undoing in Gnus buffers.")
+(defcustom gnus-undo-mode nil
+ "Minor mode for undoing in Gnus buffers."
+ :type 'boolean
+ :group 'gnus-undo)
-(defvar gnus-undo-mode-hook nil
- "Hook called in all `gnus-undo-mode' buffers.")
+(defcustom gnus-undo-mode-hook nil
+ "Hook called in all `gnus-undo-mode' buffers."
+ :type 'hook
+ :group 'gnus-undo)
;;; Internal variables.
@@ -100,7 +116,7 @@
(gnus-add-minor-mode 'gnus-undo-mode "" gnus-undo-mode-map)
(make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'gnus-undo-boundary nil t)
- (run-hooks 'gnus-undo-mode-hook)))
+ (gnus-run-hooks 'gnus-undo-mode-hook)))
;;; Interface functions.
@@ -148,6 +164,11 @@ FORMS may use backtick quote syntax."
;; Initialize list.
(t
(setq gnus-undo-actions (list (list function)))))
+ ;; Limit the length of the undo list.
+ (let ((next (nthcdr gnus-undo-limit gnus-undo-actions)))
+ (when next
+ (setcdr next nil)))
+ ;; We are not at a boundary...
(setq gnus-undo-boundary-inhibit t)))
(defun gnus-undo (n)