Function: eca-chat--context->str

eca-chat--context->str is a natively compiled function defined in eca-chat-context.el.

Signature

(eca-chat--context->str CONTEXT &optional STATIC?)

Documentation

Convert CONTEXT to a presentable str in buffer.

If STATIC? return strs with no dynamic values.

Source Code

;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-chat-context.el
(defun eca-chat--context->str (context &optional static?)
  "Convert CONTEXT to a presentable str in buffer.
If STATIC? return strs with no dynamic values."
  (-let* (((&plist :type type) context)
          (context-str
           (pcase type
             ("file" (let ((path (plist-get context :path))
                           (lines-range (plist-get context :linesRange)))
                       (propertize (concat eca-chat-context-prefix
                                           (eca-chat--context-presentable-path path)
                                           (-when-let ((&plist :start start :end end) lines-range)
                                             (format "(%d-%d)" start end)))
                                   'eca-chat-expanded-item-str (concat eca-chat-context-prefix path
                                                                       (-when-let ((&plist :start start :end end) lines-range)
                                                                         (format ":L%d-L%d" start end)))
                                   'font-lock-face 'eca-chat-context-file-face)))
             ("directory" (propertize (concat eca-chat-context-prefix (eca-chat--context-presentable-path (plist-get context :path)))
                                      'eca-chat-expanded-item-str (concat eca-chat-context-prefix (plist-get context :path))
                                      'font-lock-face 'eca-chat-context-file-face))
             ("repoMap" (propertize (concat eca-chat-context-prefix "repoMap")
                                    'eca-chat-expanded-item-str (concat eca-chat-context-prefix "repoMap")
                                    'font-lock-face 'eca-chat-context-repo-map-face))
             ("mcpResource" (propertize (concat eca-chat-context-prefix (plist-get context :server) ":" (plist-get context :name))
                                        'eca-chat-expanded-item-str (concat eca-chat-context-prefix (plist-get context :server) ":" (plist-get context :name))
                                        'font-lock-face 'eca-chat-context-mcp-resource-face))
             ("cursor" (propertize (cond
                                    (static? (concat eca-chat-context-prefix "cursor"))
                                    ((not eca-chat--cursor-context)
                                     (concat eca-chat-context-prefix "cursor" "(no file)"))
                                    (t (concat eca-chat-context-prefix "cursor"
                                               "("
                                               (-some-> (plist-get eca-chat--cursor-context :path)
                                                 (f-filename))
                                               " "
                                               (-some->>
                                                   (-> eca-chat--cursor-context
                                                       (plist-get :position)
                                                       (plist-get :start)
                                                       (plist-get :line))
                                                 (funcall #'number-to-string))
                                               ":"
                                               (-some->>
                                                   (-> eca-chat--cursor-context
                                                       (plist-get :position)
                                                       (plist-get :start)
                                                       (plist-get :character))
                                                 (funcall #'number-to-string))
                                               ")")))
                                   'eca-chat-expanded-item-str (concat eca-chat-context-prefix "cursor")
                                   'font-lock-face 'eca-chat-context-cursor-face))
             ("text" (let ((label (plist-get context :label))
                           (lines-range (plist-get context :linesRange)))
                       (propertize (concat eca-chat-context-prefix
                                           label
                                           (-when-let ((&plist :start start :end end) lines-range)
                                             (format "(%d-%d)" start end)))
                                   'eca-chat-expanded-item-str (concat eca-chat-context-prefix label
                                                                       (-when-let ((&plist :start start :end end) lines-range)
                                                                         (format ":L%d-L%d" start end)))
                                   'font-lock-face 'eca-chat-context-buffer-face)))
             (_ (concat eca-chat-context-prefix "unknown:" type)))))
    (eca-chat--propertize-image-mention
     (propertize context-str
                 'eca-chat-item-type 'context
                 'eca-chat-item-str-length (length context-str)
                 'eca-chat-context-item context)
     (and (equal type "file") (plist-get context :path)))))