changeset 66121:b1015e4158db

Don't require CL at runtime. (savehist-xemacs): Remove. (savehist-coding-system): Use utf-8 if available, regardless of religion. (savehist-no-conversion): Use (featurep 'xemacs). (savehist-load): Check existence of start-itimer rather than XEmacs. Use an idle timer. (savehist-process-for-saving): Replace use of CL funs `subseq' and `delete-if-not'.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 16 Oct 2005 15:22:37 +0000
parents 87310076f109
children d61c5c1cd4c6
files lisp/savehist.el
diffstat 1 files changed, 11 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/savehist.el	Sun Oct 16 15:02:39 2005 +0000
+++ b/lisp/savehist.el	Sun Oct 16 15:22:37 2005 +0000
@@ -45,7 +45,6 @@
 ;;; Code:
 
 (require 'custom)
-(require 'cl)
 
 ;; User variables
 
@@ -139,9 +138,7 @@
   :type 'integer
   :group 'savehist)
 
-(defconst savehist-xemacs (string-match "XEmacs" emacs-version))
-
-(defvar savehist-coding-system (if savehist-xemacs 'iso-2022-8 'utf-8)
+(defvar savehist-coding-system (if (coding-system-p 'utf-8) 'utf-8 'iso-2022-8)
   "The coding system savehist uses for saving the minibuffer history.
 Changing this value while Emacs is running is supported, but considered
 unwise, unless you know what you are doing.")
@@ -152,9 +149,9 @@
 
 (defvar savehist-last-checksum nil)
 
-;; Coding system without conversion, only used for calculating and
-;; comparing checksums.
-(defconst savehist-no-conversion (if savehist-xemacs 'binary 'no-conversion))
+(defconst savehist-no-conversion (if (featurep 'xemacs) 'binary 'no-conversion)
+  ;; FIXME: Why not use savehist-coding-system?
+  "Coding system without conversion, only used for calculating checksums.")
 
 ;; Functions
 
@@ -176,12 +173,12 @@
     ;; executes in under 5 ms on my system.
     (unless savehist-timer
       (setq savehist-timer
-	    (if savehist-xemacs
+	    (if (fboundp 'start-itimer)
 		(start-itimer
 		 "savehist" 'savehist-autosave savehist-autosave-interval
 		 savehist-autosave-interval)
-	      (run-with-timer savehist-autosave-interval savehist-autosave-interval
-			      'savehist-autosave)))))
+	      (run-with-idle-timer savehist-autosave-interval savehist-autosave-interval
+                                   'savehist-autosave)))))
   ;; Don't set coding-system-for-read here.  We rely on autodetection
   ;; and the coding cookie to convey that information.  That way, if
   ;; the user changes the value of savehist-coding-system, we can
@@ -237,13 +234,14 @@
   (cond
    ((listp value)
     (when (and savehist-length (> (length value) savehist-length))
-      (setq value (subseq value 0 savehist-length)))
-    (delete-if-not #'savehist-printable value))
+      (setq value (copy-sequence value))
+      (setcdr (nthcdr savehist-length value) nil))
+    (delq nil (mapcar (lambda (x) (if (savehist-printable x) x)) value)))
    ((savehist-printable value) value)
    (t nil)))
 
 (defun savehist-printable (value)
-  "Returns non-nil if VALUE is printable."
+  "Return non-nil if VALUE is printable."
   ;; Quick response for oft-encountered types known to be printable.
   (cond
    ((stringp value))