Function: majutsu-selection-render

majutsu-selection-render is a natively compiled function defined in majutsu-selection.el.

Signature

(majutsu-selection-render &optional SESSION)

Documentation

Re-render selection overlays for the current buffer.

Source Code

;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-selection.el
(defun majutsu-selection-render (&optional session)
  "Re-render selection overlays for the current buffer."
  (let* ((session (or session (transient-scope)))
         (buf (and (majutsu-selection-session-p session)
                   (majutsu-selection-session-buffer session))))
    (when (and buf (buffer-live-p buf) (boundp 'transient--suffixes))
      (let ((overlays (majutsu-selection-session-overlays session))
            (active-ids (make-hash-table :test 'equal)))
        (dolist (obj transient--suffixes)
          (when (cl-typep obj 'majutsu-selection-option)
            (let ((vals (oref obj value))
                  (label (oref obj selection-label))
                  (face (oref obj selection-face)))
              (when vals
                (unless (listp vals) (setq vals (list vals)))
                (dolist (id vals)
                  (let ((existing (gethash id active-ids)))
                    (puthash id (cons (cons (propertize (or label "") 'face face)
                                            (car existing))
                                      obj)
                             active-ids)))))))
        (dolist (id (hash-table-keys overlays))
          (unless (gethash id active-ids)
            (delete-overlay (gethash id overlays))
            (remhash id overlays)))
        (maphash (lambda (id data)
                   (let* ((obj (cdr data))
                          (locate-fn (or (oref obj locate-fn)
                                         #'majutsu-selection--locate-default)))
                     (majutsu-selection--render-overlay
                      session id (car data) locate-fn)))
                 active-ids)))))