Function: tab-line-tab-name-format-default

tab-line-tab-name-format-default is a byte-compiled function defined in tab-line.el.gz.

Signature

(tab-line-tab-name-format-default TAB TABS)

Documentation

Default function to use as tab-line-tab-name-format-function, which see.

Source Code

;; Defined in /usr/src/emacs/lisp/tab-line.el.gz
(defun tab-line-tab-name-format-default (tab tabs)
  "Default function to use as `tab-line-tab-name-format-function', which see."
  (let* ((buffer-p (bufferp tab))
         (selected-p (if buffer-p
                         (eq tab (window-buffer))
                       (cdr (assq 'selected tab))))
         (name (if buffer-p
                   (funcall tab-line-tab-name-function tab tabs)
                 (cdr (assq 'name tab))))
         (face (if selected-p
                   (if (mode-line-window-selected-p)
                       'tab-line-tab-current
                     'tab-line-tab)
                 'tab-line-tab-inactive)))
    (dolist (fn tab-line-tab-face-functions)
      (setf face (funcall fn tab tabs face buffer-p selected-p)))
    (apply 'propertize
           (concat (propertize (string-replace "%" "%%" name) ;; (bug#57848)
                               'face face
                               'keymap tab-line-tab-map
                               'help-echo (if selected-p "Current tab"
                                            "Click to select tab")
                               ;; Don't turn mouse-1 into mouse-2 (bug#49247)
                               'follow-link 'ignore)
                   (let ((close (or (and (or buffer-p (assq 'buffer tab)
                                             (assq 'close tab))
                                         tab-line-close-button-show
                                         (not (eq tab-line-close-button-show
                                                  (if selected-p 'non-selected
                                                    'selected)))
                                         (if (and tab-line-close-modified-button-show
                                                  (tab-line-tab-modified-p tab buffer-p))
                                             tab-line-close-modified-button
                                           tab-line-close-button))
                                    "")))
                     (setq close (copy-sequence close))
                     ;; Don't overwrite the icon face
                     (add-face-text-property 0 (length close) face t close)
                     close))
           `(
             tab ,tab
             ,@(if selected-p '(selected t))
             mouse-face tab-line-highlight))))