Function: erc-subseq

erc-subseq is a byte-compiled function defined in erc-compat.el.gz.

This function is obsolete since 28.1; use cl-subseq instead.

Signature

(erc-subseq SEQ START &optional END)

Documentation

Return the subsequence of SEQ from START to END.

If END is omitted, it defaults to the length of the sequence. If START or END is negative, it counts from the end.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-compat.el.gz
;; Copied from cl-extra.el
(defun erc-subseq (seq start &optional end)
  "Return the subsequence of SEQ from START to END.
If END is omitted, it defaults to the length of the sequence.
If START or END is negative, it counts from the end."
  (declare (obsolete cl-subseq "28.1"))
  (if (stringp seq) (substring seq start end)
    (let (len)
      (and end (< end 0) (setq end (+ end (setq len (length seq)))))
      (if (< start 0) (setq start (+ start (or len (setq len (length seq))))))
      (cond ((listp seq)
	     (if (> start 0) (setq seq (nthcdr start seq)))
	     (if end
		 (let ((res nil))
		   (while (>= (setq end (1- end)) start)
		     (push (pop seq) res))
		   (nreverse res))
	       (copy-sequence seq)))
	    (t
	     (or end (setq end (or len (length seq))))
	     (let ((res (make-vector (max (- end start) 0) nil))
		   (i 0))
	       (while (< start end)
		 (aset res i (aref seq start))
		 (setq i (1+ i) start (1+ start)))
	       res))))))