Function: window-tool-bar--keymap-entry-to-string

window-tool-bar--keymap-entry-to-string is a byte-compiled function defined in window-tool-bar.el.gz.

Signature

(window-tool-bar--keymap-entry-to-string MENU-ITEM)

Documentation

Convert MENU-ITEM into a (propertized) string representation.

MENU-ITEM is a menu item to convert. See info node (elisp)Tool Bar.

Source Code

;; Defined in /usr/src/emacs/lisp/window-tool-bar.el.gz
(defun window-tool-bar--keymap-entry-to-string (menu-item)
  "Convert MENU-ITEM into a (propertized) string representation.

MENU-ITEM is a menu item to convert.  See info node `(elisp)Tool Bar'."
  (pcase-exhaustive menu-item
    ;; Separators
    ((or `(,_ "--")
         `(,_ menu-item ,(and (pred stringp)
                              (pred (string-prefix-p "--")))))
     (if (window-tool-bar--use-images)
         window-tool-bar--graphical-separator
       "|"))

    ;; Menu item, turn into propertized string button
    (`(,key menu-item ,name-expr ,binding . ,plist)
     (when binding      ; If no binding exists, then button is hidden.
       (let* ((name (eval name-expr))
              (str (upcase-initials (or (plist-get plist :label)
                                        (string-trim-right name "\\.+"))))
              (len (length str))
              (enable-form (plist-get plist :enable))
              (enabled (or (not enable-form)
                           (eval enable-form))))
         (if enabled
             (add-text-properties 0 len
                                  '(mouse-face window-tool-bar-button-hover
                                    keymap window-tool-bar--button-keymap
                                    face window-tool-bar-button)
                                  str)
           (put-text-property 0 len
                              'face
                              'window-tool-bar-button-disabled
                              str))
         (when-let ((spec (and (window-tool-bar--use-images)
                               (plist-get menu-item :image))))
           (put-text-property 0 len
                              'display
                              (append spec
                                      (if enabled '(:margin 2 :ascent center)
                                        '(:margin 2 :ascent center
                                          :conversion disabled)))
                              str))
         (put-text-property 0 len
                            'help-echo
                            (or (plist-get plist :help) name)
                            str)
         (put-text-property 0 len 'tool-bar-key key str)
         str)))))