Some fixes to follow coding conventions in files maintained by FSF.
[bpt/emacs.git] / lisp / saveplace.el
index d3ad772..c808853 100644 (file)
@@ -1,8 +1,8 @@
-;;; saveplace.el --- automatically save place in files.
+;;; saveplace.el --- automatically save place in files
 
 ;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
 
-;; Author: Karl Fogel <kfogel@cs.oberlin.edu>
+;; Author: Karl Fogel <kfogel@red-bean.com>
 ;; Maintainer: FSF
 ;; Created: July, 1993
 ;; Keywords: bookmarks, placeholders
@@ -72,7 +72,7 @@ simply put this in your `~/.emacs' file:
   :type 'file
   :group 'save-place)
 
-(defcustom save-place-version-control 'nospecial
+(defcustom save-place-version-control nil
   "*Controls whether to make numbered backups of master save-place file.
 It can have four values: t, nil, `never', and `nospecial'.  The first
 three have the same meaning that they do for the variable
@@ -81,7 +81,7 @@ value of `version-control'."
   :type '(radio (const :tag "Unconditionally" t)
                (const :tag "For VC Files" nil)
                (const never)
-               (const :tag "Use value of version-control" nospecial))
+               (const :tag "Use value of `version-control'" nospecial))
   :group 'save-place)
 
 (defvar save-place-loaded nil
@@ -125,16 +125,17 @@ To save places automatically in all files, put this in your `.emacs' file:
   (or save-place-loaded (load-save-place-alist-from-file))
   (if buffer-file-name
       (progn
-        (let ((cell (assoc buffer-file-name save-place-alist)))
+        (let ((cell (assoc buffer-file-name save-place-alist))
+             (position (if (not (eq major-mode 'hexl-mode))
+                           (point)
+                         (1+ (hexl-current-address)))))
           (if cell
-              (setq save-place-alist (delq cell save-place-alist))))
-        (if save-place
-            (setq save-place-alist
-                 (cons (cons buffer-file-name
-                             (if (not (eq major-mode 'hexl-mode))
-                                 (point)
-                               (1+ (hexl-current-address))))
-                        save-place-alist))))))
+              (setq save-place-alist (delq cell save-place-alist)))
+         (if (and save-place
+                  (not (= position 1)))  ;; Optimize out the degenerate case.
+             (setq save-place-alist
+                   (cons (cons buffer-file-name position)
+                         save-place-alist)))))))
 
 (defun save-place-alist-to-file ()
   (let ((file (expand-file-name save-place-file)))
@@ -142,10 +143,6 @@ To save places automatically in all files, put this in your `.emacs' file:
       (message "Saving places to %s..." file)
       (set-buffer (get-buffer-create " *Saved Places*"))
       (delete-region (point-min) (point-max))
-      (if (file-readable-p file)
-          (insert-file-contents file))
-      (delete-region (point-min) (point-max))
-      (goto-char (point-min))
       (print save-place-alist (current-buffer))
       (let ((version-control
              (cond
@@ -241,4 +238,3 @@ To save places automatically in all files, put this in your `.emacs' file:
 (provide 'saveplace) ; why not...
 
 ;;; saveplace.el ends here
-