Mercurial > emacs
changeset 70415:72f273a616c1
(add-to-history): New function.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 05 May 2006 23:35:57 +0000 |
parents | b835c65a2dc0 |
children | 522ce5c1839a |
files | lisp/subr.el |
diffstat | 1 files changed, 26 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Fri May 05 23:19:52 2006 +0000 +++ b/lisp/subr.el Fri May 05 23:35:57 2006 +0000 @@ -1122,6 +1122,32 @@ (if (and oa ob) (< oa ob) oa))))))) + +(defun add-to-history (history-var newelt &optional maxelt keep-dups) + "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 +or KEEP-DUPS is non-nil." + (unless maxelt + (setq maxelt (or (get history-var 'history-length) + history-length))) + (let ((history (symbol-value history-var)) + tail) + (if (and history-delete-duplicates (not keep-dups)) + (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)))) + (set history-var history))) + ;;;; Mode hooks.