From: Juri Linkov Date: Wed, 4 Dec 2019 23:08:24 +0000 (+0200) Subject: * lisp/tab-line.el: Cache the tab-line-format template. X-Git-Tag: emacs-27.0.90~436 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bd95d66ae97f3dcfe73b972de935e27e434e49be;p=emacs.git * 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. --- diff --git a/lisp/tab-line.el b/lisp/tab-line.el index c98b1cfce61..d080da1867d 100644 --- a/lisp/tab-line.el +++ b/lisp/tab-line.el @@ -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.