mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-01 11:14:55 +00:00
(add-to-history): Add KEEP-ALL arg and align functionality
with read-from-minibuffer.
This commit is contained in:
parent
fb6341e7fd
commit
d749491187
30
lisp/subr.el
30
lisp/subr.el
@ -1123,28 +1123,36 @@ The return value is the new value of LIST-VAR."
|
||||
(< oa ob)
|
||||
oa)))))))
|
||||
|
||||
(defun add-to-history (history-var newelt &optional maxelt)
|
||||
(defun add-to-history (history-var newelt &optional maxelt keep-all)
|
||||
"Add NEWELT to the history list stored in the variable HISTORY-VAR.
|
||||
Return the new history list.
|
||||
If MAXELT is non-nil, it specifies the maximum length of the history.
|
||||
Otherwise, the maximum history length is the value of the `history-length'
|
||||
property on symbol HISTORY-VAR, if set, or the value of the `history-length'
|
||||
variable.
|
||||
Remove duplicates of NEWELT unless `history-delete-duplicates' is nil."
|
||||
Remove duplicates of NEWELT if `history-delete-duplicates' is non-nil.
|
||||
If optional fourth arg KEEP-ALL is non-nil, add NEWELT to history even
|
||||
if it is empty or a duplicate."
|
||||
(unless maxelt
|
||||
(setq maxelt (or (get history-var 'history-length)
|
||||
history-length)))
|
||||
(let ((history (symbol-value history-var))
|
||||
tail)
|
||||
(if history-delete-duplicates
|
||||
(setq history (delete newelt history)))
|
||||
(setq history (cons newelt history))
|
||||
(when (integerp maxelt)
|
||||
(if (= 0 maxelt)
|
||||
(setq history nil)
|
||||
(setq tail (nthcdr (1- maxelt) history))
|
||||
(when (consp tail)
|
||||
(setcdr tail nil))))
|
||||
(when (and (listp history)
|
||||
(or keep-all
|
||||
(not (stringp newelt))
|
||||
(> (length newelt) 0))
|
||||
(or keep-all
|
||||
(not (equal (car history) newelt))))
|
||||
(if history-delete-duplicates
|
||||
(delete newelt history))
|
||||
(setq history (cons newelt history))
|
||||
(when (integerp maxelt)
|
||||
(if (= 0 maxelt)
|
||||
(setq history nil)
|
||||
(setq tail (nthcdr (1- maxelt) history))
|
||||
(when (consp tail)
|
||||
(setcdr tail nil)))))
|
||||
(set history-var history)))
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user