From 291593a0571dd62ae809ed337aca8b9e62a5fddc Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Mon, 24 Aug 2015 10:12:31 +0200 Subject: [PATCH] Fix cl-subseq and cl-concatenate * lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-concatenate): Do not use seq functions. * lisp/emacs-lisp/seq.el (seq-concatenate): Call cl-concatenate in seq-concatenate. --- lisp/emacs-lisp/cl-extra.el | 16 ++++++++++------ lisp/emacs-lisp/seq.el | 6 +----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index 90ca531ae7a..7a7712ac0d3 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -529,8 +529,8 @@ too large if positive or too small if negative)." ((listp seq) (let (len (errtext (format "Bad bounding indices: %s, %s" start end))) - (and end (< end 0) (setq end (+ end (setq len (seq-length seq))))) - (if (< start 0) (setq start (+ start (or len (setq len (seq-length seq)))))) + (and end (< end 0) (setq end (+ end (setq len (length seq))))) + (if (< start 0) (setq start (+ start (or len (setq len (length seq)))))) (unless (>= start 0) (error "%s" errtext)) (when (> start 0) @@ -543,14 +543,18 @@ too large if positive or too small if negative)." (push (pop seq) res)) (or (= (1+ end) start) (error "%s" errtext)) (nreverse res)) - (seq-copy seq)))) + (copy-sequence seq)))) (t (error "Unsupported sequence: %s" seq)))) ;;;###autoload -(defalias 'cl-concatenate #'seq-concatenate +(defun cl-concatenate (type &rest sequences) "Concatenate, into a sequence of type TYPE, the argument SEQUENCEs. -\n(fn TYPE SEQUENCE...)") - +\n(fn TYPE SEQUENCE...)" + (pcase type + (`vector (apply #'vconcat sequences)) + (`string (apply #'concat sequences)) + (`list (apply #'append (append sequences '(nil)))) + (_ (error "Not a sequence type name: %S" type)))) ;;; List functions. diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el index 5ce4d91ec3e..6a386bdceff 100644 --- a/lisp/emacs-lisp/seq.el +++ b/lisp/emacs-lisp/seq.el @@ -200,11 +200,7 @@ The result is a sequence of the same type as SEQ." TYPE must be one of following symbols: vector, string or list. \n(fn TYPE SEQUENCE...)" - (pcase type - (`vector (apply #'vconcat seqs)) - (`string (apply #'concat seqs)) - (`list (apply #'append (append seqs '(nil)))) - (_ (error "Not a sequence type name: %S" type)))) + (apply #'cl-concatenate type seqs)) (cl-defgeneric seq-into (seq type) "Convert the sequence SEQ into a sequence of type TYPE. -- 2.39.5