Function: eglot--call-with-ranged
eglot--call-with-ranged is a byte-compiled function defined in
eglot.el.gz.
Signature
(eglot--call-with-ranged OBJS KEY FN)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/eglot.el.gz
(cl-defun eglot--call-with-ranged (objs key fn &aux (curline 0))
(unless key
(setq key (lambda (o) (plist-get o :range))))
(cl-flet ((moveit (line col)
(forward-line (- line curline))
(setq curline line)
(unless (eobp)
(unless (wholenump col) (setq col 0))
(funcall eglot-move-to-linepos-function col))
(point)))
(eglot--widening
(goto-char (point-min))
(cl-loop
with pairs = (if key
(mapcar (lambda (obj) (cons obj (funcall key obj)))
objs)
(mapcar (lambda (range) (cons range range))
objs))
with sorted =
(sort pairs
(lambda (p1 p2)
(< (plist-get (plist-get (cdr p1) :start) :line)
(plist-get (plist-get (cdr p2) :start) :line))))
for (object . range) in sorted
for spos = (plist-get range :start)
for epos = (plist-get range :end)
for sline = (plist-get spos :line)
for scol = (plist-get spos :character)
for eline = (plist-get epos :line)
for ecol = (plist-get epos :character)
collect (funcall fn object (cons (moveit sline scol)
(moveit eline ecol)))))))