Function: eshell-index-value
eshell-index-value is a byte-compiled function defined in
esh-var.el.gz.
Signature
(eshell-index-value VALUE INDEX)
Documentation
Reference VALUE using the given INDEX.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/esh-var.el.gz
(defun eshell-index-value (value index)
"Reference VALUE using the given INDEX."
(let ((parsed-index (eshell-parse-index index)))
(if (ring-p value)
(pcase parsed-index
((pred integerp)
(ring-ref value parsed-index))
((eshell-index-range start end)
(let* ((len (ring-length value))
(real-start (mod (or start 0) len))
(real-end (mod (or end len) len)))
(when (and (eq real-end 0)
(not (eq end 0)))
(setq real-end len))
(ring-convert-sequence-to-ring
(seq-subseq (ring-elements value) real-start real-end))))
(_
(error "Invalid index for ring: %s" index)))
(pcase parsed-index
((pred integerp)
(when (< parsed-index 0)
(setq parsed-index (+ parsed-index (length value))))
(seq-elt value parsed-index))
((eshell-index-range start end)
(seq-subseq value (or start 0) end))
(_
;; INDEX is some non-integer value, so treat VALUE as an alist.
(cdr (assoc parsed-index value)))))))