Function: sesman-browser--insert-session
sesman-browser--insert-session is a byte-compiled function defined in
sesman-browser.el.
Signature
(sesman-browser--insert-session SYSTEM SES I)
Source Code
;; Defined in ~/.emacs.d/elpa/sesman-20240417.1723/sesman-browser.el
(defun sesman-browser--insert-session (system ses i)
(let ((ses-name (car ses))
(head-template "%17s")
beg end)
(setq beg (point))
;; session header
(insert (format "%3d: " i))
(insert (propertize (car ses)
:sesman-stop ses-name
:sesman-vertical-stop t
:sesman-session-stop t
'face 'bold
'cursor-sensor-functions (list #'sesman-browser--sensor-function)
'mouse-face 'highlight)
"\n")
;; links
(insert (format head-template "linked-to: "))
(let ((link-groups (sesman-grouped-links system ses))
(vert-stop))
(dolist (grp link-groups)
(let* ((type (car grp)))
(dolist (link (cdr grp))
(when (> (current-column) fill-column)
(insert "\n" (format head-template " "))
(setq vert-stop nil))
(let ((val (sesman--abbrev-path-maybe (sesman--lnk-value link))))
(insert (propertize (sesman--format-context type val 'sesman-browser-button-face)
:sesman-stop (car link)
:sesman-vertical-stop (unless vert-stop (setq vert-stop t))
:sesman-link link
'cursor-sensor-functions (list #'sesman-browser--sensor-function)
'mouse-face 'highlight)))
(insert " ")))))
(insert "\n")
;; objects
(insert (format head-template "objects: "))
(let* ((info (sesman-session-info system ses))
(map (plist-get info :map))
(objects (plist-get info :objects))
(strings (or (plist-get info :strings)
(mapcar (lambda (x) (format "%s" x)) objects)))
(kvals (seq-mapn #'cons objects strings))
(kvals (seq-sort (lambda (a b) (string-lessp (cdr a) (cdr b)))
kvals))
(vert-stop))
(dolist (kv kvals)
(when (> (current-column) fill-column)
(insert "\n" (format head-template " "))
(setq vert-stop nil))
(let ((str (replace-regexp-in-string ses-name "%s" (cdr kv) nil t)))
(insert (propertize str
:sesman-stop str
:sesman-vertical-stop (unless vert-stop (setq vert-stop t))
:sesman-object (car kv)
'cursor-sensor-functions (list #'sesman-browser--sensor-function)
'face 'sesman-browser-button-face
'mouse-face 'highlight
'help-echo "mouse-2: visit in other window"
'keymap map)
" "))))
;; session properties
(setq end (point))
(put-text-property beg end :sesman-session ses)
(put-text-property beg end :sesman-session-name ses-name)
(put-text-property beg end :sesman-fragment-beg beg)
(put-text-property beg end :sesman-fragment-end end)
(insert "\n\n")))