diff options
author | Kenichi Handa <handa@m17n.org> | 2000-12-28 12:15:44 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2000-12-28 12:15:44 +0000 |
commit | 1c1c65de36652e5ea0dcec9f7b37d0dc7eeb035c (patch) | |
tree | 688c76c8c07ca4e54f51a610ae52678b970bd4c6 | |
parent | a816f1c545b1760064ace7c63df551d502de37d8 (diff) | |
download | emacs-1c1c65de36652e5ea0dcec9f7b37d0dc7eeb035c.tar.gz |
(butlast, nbutlast): Moved from cl.el to here.
-rw-r--r-- | lisp/subr.el | 14 |
1 files changed, 14 insertions, 0 deletions
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'." |