1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-22 07:09:54 +00:00

* lisp/tab-line.el: Cache the tab-line-format template.

(tab-line-format): Cache the result of tab-line-format-template in window.
(tab-line-format-template): New function that returns the value to cache.
This commit is contained in:
Juri Linkov 2019-12-05 01:08:24 +02:00
parent f336ae77cc
commit bd95d66ae9

View File

@ -415,11 +415,10 @@ variable `tab-line-tabs-function'."
next-buffers))))
(defun tab-line-format ()
(defun tab-line-format-template (tabs)
"Template for displaying tab line for selected window."
(let* ((window (selected-window))
(selected-buffer (window-buffer window))
(tabs (funcall tab-line-tabs-function))
(separator (or tab-line-separator (if window-system " " "|")))
(hscroll (window-parameter nil 'tab-line-hscroll))
(strings
@ -470,6 +469,14 @@ variable `tab-line-tabs-function'."
(list (concat separator (when tab-line-new-tab-choice
tab-line-new-button)))))))
(defun tab-line-format ()
"Template for displaying tab line for selected window."
(let ((tabs (funcall tab-line-tabs-function))
(cache (window-parameter nil 'tab-line-cache)))
(or (and cache (equal (car cache) tabs) (cdr cache))
(cdr (set-window-parameter nil 'tab-line-cache
(cons tabs (tab-line-format-template tabs)))))))
(defcustom tab-line-auto-hscroll t
"Allow or disallow automatic horizontal scrolling of the tab line.