Function: eca-chat--doctor-self-check
eca-chat--doctor-self-check is a natively compiled function defined in
eca-chat.el.
Signature
(eca-chat--doctor-self-check SRC-BUF)
Documentation
Probe loaded ECA chat code and SRC-BUF for fix-presence indicators.
Return a plist describing the state of mode-map bindings, the
cond ordering inside eca-chat--key-pressed-return, the first
expandable label's keymap, and whether the loaded .elc is stale
relative to the on-disk .el.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-chat.el
(defun eca-chat--doctor-self-check (src-buf)
"Probe loaded ECA chat code and SRC-BUF for fix-presence indicators.
Return a plist describing the state of mode-map bindings, the
cond ordering inside `eca-chat--key-pressed-return', the first
expandable label's keymap, and whether the loaded `.elc' is stale
relative to the on-disk `.el'."
(let* ((mode-map-ret (ignore-errors
(lookup-key eca-chat-mode-map (kbd "RET"))))
(mode-map-ret-ok (eq mode-map-ret 'eca-chat--key-pressed-return))
(kpr-body (ignore-errors
(prin1-to-string
(symbol-function 'eca-chat--key-pressed-return))))
(kpr-exp-pos (and kpr-body
(string-match-p "expandable-content-at-point"
kpr-body)))
(kpr-md-pos (and kpr-body
(string-match-p "markdown-link-face" kpr-body)))
(cond-ok (cond ((and kpr-exp-pos kpr-md-pos)
(< kpr-exp-pos kpr-md-pos))
(t 'unknown)))
(label-ov (with-current-buffer src-buf
(-first (lambda (o)
(overlay-get o 'eca-chat--expandable-content-id))
(overlays-in (point-min) (point-max)))))
(label-ret
(and label-ov
(with-current-buffer src-buf
(save-excursion
(goto-char (overlay-start label-ov))
(let ((line-end (line-end-position))
(km nil)
(pos (point)))
(while (and (< pos line-end) (not km))
(setq km (get-text-property pos 'keymap))
(unless km
(setq pos (or (next-single-property-change
pos 'keymap nil line-end)
line-end))))
(when km
(or (lookup-key km (kbd "RET"))
(lookup-key km (kbd "<return>")))))))))
(label-ret-ok (and label-ret (functionp label-ret)))
(loaded-file (ignore-errors
(symbol-file 'eca-chat--insert-expandable-block
'defun)))
(source-file (ignore-errors
(find-library-name "eca-chat-expandable")))
(stale-elc-p (and loaded-file source-file
(string-suffix-p ".elc" loaded-file)
(file-newer-than-file-p source-file
loaded-file))))
(list :mode-map-ret mode-map-ret
:mode-map-ret-ok mode-map-ret-ok
:cond-ok cond-ok
:has-label (not (null label-ov))
:label-ret label-ret
:label-ret-ok label-ret-ok
:loaded-file loaded-file
:source-file source-file
:stale-elc-p stale-elc-p)))