From 1c1c65de36652e5ea0dcec9f7b37d0dc7eeb035c Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 28 Dec 2000 12:15:44 +0000 Subject: [PATCH] (butlast, nbutlast): Moved from cl.el to here. --- lisp/subr.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lisp/subr.el b/lisp/subr.el index e2897481164..2dc159a3424 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -135,6 +135,20 @@ If N is bigger than the length of X, return X." (setq x (cdr x))) x)) +(defun butlast (x &optional n) + "Returns a copy of LIST with the last N elements removed." + (if (and n (<= n 0)) x + (nbutlast (copy-sequence x) n))) + +(defun nbutlast (x &optional n) + "Modifies LIST to remove the last N elements." + (let ((m (length x))) + (or n (setq n 1)) + (and (< n m) + (progn + (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil)) + x)))) + (defun remove (elt seq) "Return a copy of SEQ with all occurences of ELT removed. SEQ must be a list, vector, or string. The comparison is done with `equal'." -- 2.39.2