Remove XEmacs compat code from savehist.el (reworked)

* lisp/savehist.el (savehist-coding-system, savehist-install)
(savehist-uninstall, savehist-save): Remove XEmacs compat code.
(savehist-trim-history): Made obsolete.
(savehist-minibuffer-hook): Update comment to reflect the t value
of HISTORY in `read-string'.
This commit is contained in:
Lars Ingebrigtsen 2019-06-22 11:36:43 +02:00
parent 248a82e31f
commit d7da7ec328

View file

@ -48,8 +48,6 @@
;;; Code:
(require 'custom)
(eval-when-compile
(if (featurep 'xemacs) (require 'cl)))
;; User variables
@ -120,12 +118,8 @@ to save."
;; This should be capable of representing characters used by Emacs.
;; We prefer UTF-8 over ISO 2022 because it is well-known outside
;; Mule. XEmacs prior to 21.5 had UTF-8 provided by an external
;; package which may not be loaded, which is why we check for version.
(defvar savehist-coding-system (if (and (featurep 'xemacs)
(<= emacs-major-version 21)
(< emacs-minor-version 5))
'iso-2022-8 'utf-8-unix)
;; Mule.
(defvar savehist-coding-system 'utf-8-unix
"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.")
@ -147,10 +141,6 @@ along with minibuffer history. You can change its value off
This prevents toggling Savehist mode from destroying existing
minibuffer history.")
(when (featurep 'xemacs)
;; Must declare this under XEmacs, which doesn't have built-in
;; minibuffer history truncation.
(defvar history-length 100))
;; Functions.
@ -217,12 +207,8 @@ To undo this, call `savehist-uninstall'."
(when (and savehist-autosave-interval
(null savehist-timer))
(setq savehist-timer
(if (featurep 'xemacs)
(start-itimer
"savehist" #'savehist-autosave savehist-autosave-interval
savehist-autosave-interval)
(run-with-timer savehist-autosave-interval
savehist-autosave-interval #'savehist-autosave)))))
(run-with-timer savehist-autosave-interval
savehist-autosave-interval #'savehist-autosave))))
(defun savehist-uninstall ()
"Undo installing savehist.
@ -230,15 +216,9 @@ Normally invoked by calling `savehist-mode' to unset the minor mode."
(remove-hook 'minibuffer-setup-hook #'savehist-minibuffer-hook)
(remove-hook 'kill-emacs-hook #'savehist-autosave)
(when savehist-timer
(if (featurep 'xemacs)
(delete-itimer savehist-timer)
(cancel-timer savehist-timer))
(cancel-timer savehist-timer)
(setq savehist-timer nil)))
;; From XEmacs?
(defvar print-readably)
(defvar print-string-length)
(defun savehist-save (&optional auto-save)
"Save the values of minibuffer history variables.
Unbound symbols referenced in `savehist-additional-variables' are ignored.
@ -255,9 +235,7 @@ If AUTO-SAVE is non-nil, compare the saved contents to the one last saved,
savehist-coding-system))
(run-hooks 'savehist-save-hook)
(let ((print-length nil)
(print-string-length nil)
(print-level nil)
(print-readably t)
(print-quoted t))
;; Save the minibuffer histories, along with the value of
;; savehist-minibuffer-history-variables itself.
@ -269,7 +247,7 @@ If AUTO-SAVE is non-nil, compare the saved contents to the one last saved,
(dolist (symbol savehist-minibuffer-history-variables)
(when (and (boundp symbol)
(not (memq symbol savehist-ignored-variables)))
(let ((value (savehist-trim-history (symbol-value symbol)))
(let ((value (symbol-value symbol))
excess-space)
(when value ; Don't save empty histories.
(insert "(setq ")
@ -334,17 +312,7 @@ Does nothing if Savehist mode is off."
(when savehist-mode
(savehist-save t)))
(defun savehist-trim-history (value)
"Retain only the first `history-length' items in VALUE.
Only used under XEmacs, which doesn't (yet) implement automatic
trimming of history lists to `history-length' items."
(if (and (featurep 'xemacs)
(natnump history-length)
(> (length value) history-length))
;; Equivalent to `(subseq value 0 history-length)', but doesn't
;; need cl-extra at run-time.
(loop repeat history-length collect (pop value))
value))
(define-obsolete-function-alias 'savehist-trim-history #'identity "27.1")
(defun savehist-printable (value)
"Return non-nil if VALUE is printable."
@ -359,20 +327,22 @@ trimming of history lists to `history-length' items."
;; For others, check explicitly.
(with-temp-buffer
(condition-case nil
(let ((print-readably t) (print-level nil))
;; Print the value into a buffer...
(prin1 value (current-buffer))
;; ...and attempt to read it.
(read (point-min-marker))
;; The attempt worked: the object is printable.
t)
(let ((print-level nil))
;; Print the value into a buffer...
(prin1 value (current-buffer))
;; ...and attempt to read it.
(read (point-min-marker))
;; The attempt worked: the object is printable.
t)
;; The attempt failed: the object is not printable.
(error nil))))))
(defun savehist-minibuffer-hook ()
(unless (or (eq minibuffer-history-variable t)
;; XEmacs sets minibuffer-history-variable to t to mean "no
;; history is being recorded".
;; If `read-string' is called with a t HISTORY argument
;; (which `read-password' does),
;; `minibuffer-history-variable' is bound to t to mean
;; "no history is being recorded".
(memq minibuffer-history-variable savehist-ignored-variables))
(add-to-list 'savehist-minibuffer-history-variables
minibuffer-history-variable)))