From: Richard M. Stallman Date: Wed, 24 Oct 2007 08:15:03 +0000 (+0000) Subject: (savehist-save): Omit unreadable elements. X-Git-Tag: emacs-pretest-22.1.90~527 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=648db50deae4ed3add8a5665a749858dd7753f64;p=emacs.git (savehist-save): Omit unreadable elements. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bcde6b0efc8..b45014057b8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,16 @@ +2007-10-24 Richard Stallman + + * 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 * bs.el (bs-select, bs-select-other-window): Fix typos in docstrings. diff --git a/lisp/savehist.el b/lisp/savehist.el index 83b46e5e04f..b28bd476933 100644 --- a/lisp/savehist.el +++ b/lisp/savehist.el @@ -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)