]> code.delx.au - gnu-emacs/commitdiff
Fix cl-subseq and cl-concatenate
authorNicolas Petton <nicolas@petton.fr>
Mon, 24 Aug 2015 08:12:31 +0000 (10:12 +0200)
committerNicolas Petton <nicolas@petton.fr>
Mon, 24 Aug 2015 08:25:19 +0000 (10:25 +0200)
* 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
lisp/emacs-lisp/seq.el

index 90ca531ae7ab14808d6cbfe34bbd2825865e5a1c..7a7712ac0d3092b66bfc7198a75c7f2e078dfbbb 100644 (file)
@@ -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.
 
index 5ce4d91ec3e11bbac70b80729943facd30c1adf7..6a386bdceffa1a3abbbe2e08af86d85227288db6 100644 (file)
@@ -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.