From: Kenichi Handa Date: Thu, 28 Dec 2000 12:15:44 +0000 (+0000) Subject: (butlast, nbutlast): Moved from cl.el to here. X-Git-Tag: emacs-pretest-21.0.95~254 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1c1c65de36652e5ea0dcec9f7b37d0dc7eeb035c;p=emacs.git (butlast, nbutlast): Moved from cl.el to here. --- 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'."