diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-11-30 00:51:26 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-11-30 00:51:26 +0000 |
commit | 65088196d9b6ebab8cc70f32e478e455b05d2121 (patch) | |
tree | 2a6ff9fb6daa4112e256893924af218ae4903841 | |
parent | 63e347a5d96c0a49bb31e9127cd368d2c96e65da (diff) | |
download | emacs-65088196d9b6ebab8cc70f32e478e455b05d2121.tar.gz |
(save-place-limit): New variable.
(load-save-place-alist-from-file): Obey it.
Fix "done" message.
(save-place-alist-to-file): Fix "done" message.
-rw-r--r-- | lisp/saveplace.el | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/lisp/saveplace.el b/lisp/saveplace.el index 65f1e18c678..dafe1a707d9 100644 --- a/lisp/saveplace.el +++ b/lisp/saveplace.el @@ -69,6 +69,9 @@ value of `version-control'.") (defvar save-place-loaded nil "Non-nil means that the `save-place-file' has been loaded.") +(defvar save-place-limit nil + "Maximum number of entries to retain in the list; nil means no limit.") + (defun toggle-save-place (&optional parg) "Toggle whether to save your place in this file between sessions. If this mode is enabled, point is recorded when you kill the buffer @@ -133,7 +136,7 @@ To save places automatically in all files, put this in your `.emacs' file: t)))) (write-file file) (kill-buffer (current-buffer)) - (message (format "Saving places to %s... done." file)))))) + (message (format "Saving places to %s...done" file)))))) (defun load-save-place-alist-from-file () (if (not save-place-loaded) @@ -155,8 +158,26 @@ To save places automatically in all files, put this in your `.emacs' file: (setq save-place-alist (car (read-from-string (buffer-substring (point-min) (point-max))))) + + ;; If there is a limit, and we're over it, then we'll + ;; have to truncate the end of the list: + (if save-place-limit + (if (<= save-place-limit 0) + ;; Zero gets special cased. I'm not thrilled + ;; with this, but the loop for >= 1 is tight. + (setq save-place-alist nil) + ;; Else the limit is >= 1, so enforce it by + ;; counting and then `setcdr'ing. + (let ((s save-place-alist) + (count 1)) + (while s + (if (>= count save-place-limit) + (setcdr s nil) + (setq count (1+ count))) + (setq s (cdr s)))))) + (kill-buffer (current-buffer)) - (message (format "Loading places from %s... done." file)) + (message (format "Loading places from %s...done" file)) t) t) nil)))) |