]> git.eshelyaron.com Git - emacs.git/commitdiff
(savehist-save): Omit unreadable elements.
authorRichard M. Stallman <rms@gnu.org>
Wed, 24 Oct 2007 08:15:03 +0000 (08:15 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 24 Oct 2007 08:15:03 +0000 (08:15 +0000)
lisp/ChangeLog
lisp/savehist.el

index bcde6b0efc8d93408926e765cd65a488aa1840d3..b45014057b8c4e74af524d3256c9208c20059521 100644 (file)
@@ -1,3 +1,16 @@
+2007-10-24  Richard Stallman  <rms@gnu.org>
+
+       * savehist.el (savehist-save): Omit unreadable elements.
+
+       * loadhist.el (unload-function-defs-list): Renamed from
+       unload-function-features-list.
+       (unload-feature-special-hooks, unload-feature): Doc fixes.
+
+       * indent.el (indent-to-left-margin): If point's in the indentation,
+       move to the end of the indentation.
+
+       * cus-edit.el (customize-changed-options): Make arg optional.
+
 2007-10-24  Juanma Barranquero  <lekktu@gmail.com>
 
        * bs.el (bs-select, bs-select-other-window): Fix typos in docstrings.
index 83b46e5e04fd4b6fed441727b138d5c5ed4f8d58..b28bd4769334fe32cb2d38bae6835b4949a0eedf 100644 (file)
@@ -309,10 +309,40 @@ If AUTO-SAVE is non-nil, compare the saved contents to the one last saved,
        (insert ?\n)
        (dolist (symbol savehist-minibuffer-history-variables)
          (when (boundp symbol)
-           (let ((value (savehist-trim-history (symbol-value symbol))))
-             (when value               ; don't save empty histories
-               (prin1 `(setq ,symbol ',value) (current-buffer))
-               (insert ?\n))))))
+           (let ((value (savehist-trim-history (symbol-value symbol)))
+                 excess-space)
+             (when value               ; Don't save empty histories.
+               (insert "(setq ")
+               (prin1 symbol (current-buffer))
+               (insert " '(")
+               ;; We will print an extra space before the first element.
+               ;; Record where that is.
+               (setq excess-space (point))
+               ;; Print elements of VALUE one by one, carefully.
+               (dolist (elt value)
+                 (let ((start (point)))
+                   (insert " ")
+                   (prin1 elt (current-buffer))
+                   ;; Try to read the element we just printed.
+                   (condition-case nil
+                       (save-excursion
+                         (goto-char start)
+                         (read (current-buffer)))
+                     (error
+                      ;; If reading it gets an error, comment it out.
+                      (goto-char start)
+                      (insert "\n")
+                      (while (not (eobp))
+                        (insert ";;; ")
+                        (forward-line 1))
+                      (insert "\n")))
+                   (goto-char (point-max))))
+               ;; Delete the extra space before the first element.
+               (save-excursion
+                 (goto-char excess-space)
+                 (if (eq (following-char) ?\s)
+                     (delete-region (point) (1+ (point)))))
+               (insert "))\n"))))))
       ;; Save the additional variables.
       (dolist (symbol savehist-additional-variables)
        (when (boundp symbol)