1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

(last): Accept optional second argument.

This commit is contained in:
Richard M. Stallman 1997-08-27 22:34:30 +00:00
parent 59966fb622
commit 369fba5fb7

View file

@ -79,12 +79,20 @@ BODY should be a list of lisp expressions."
"Return the cdr of the cdr of X."
(cdr (cdr x)))
(defun last (x)
"Return the last element of the list X.
If X is nil, return nil."
(while (cdr x)
(setq x (cdr x)))
x)
(defun last (x &optional n)
"Return the last link of the list X. Its car is the last element.
If X is nil, return nil.
If N is non-nil, return the Nth-to-last link of X.
If N is bigger than the length of X, return X."
(if n
(let ((m 0) (p x))
(while (consp p)
(setq m (1+ m) p (cdr p)))
(if (<= n 0) p
(if (< n m) (nthcdr (- m n) x) x)))
(while (cdr x)
(setq x (cdr x)))
x))
;;;; Keymap support.