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))
          ((pred eshell-range-p)
           (let* ((len (ring-length value))
                  (begin (eshell-range-begin parsed-index))
                  (end (eshell-range-end parsed-index))
                  (real-begin (mod (or begin 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-begin 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))
        ((pred eshell-range-p)
         (seq-subseq value (or (eshell-range-begin parsed-index) 0)
                     (eshell-range-end parsed-index)))
        (_
         ;; INDEX is some non-integer value, so treat VALUE as an alist.
         (cdr (assoc parsed-index value)))))))