emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master fcca1db: * lisp/tab-line.el: Add modified-buffer face


From: Juri Linkov
Subject: master fcca1db: * lisp/tab-line.el: Add modified-buffer face
Date: Sat, 25 Sep 2021 15:18:45 -0400 (EDT)

branch: master
commit fcca1db9fd1eb2930f29972e7def0936c3269f1b
Author: Adam Porter <adam@alphapapa.net>
Commit: Juri Linkov <juri@linkov.net>

    * lisp/tab-line.el: Add modified-buffer face
    
    (tab-line-tab-modified): New face.
    (tab-line-tab-face-modified): New function.
    (tab-line-tab-face-functions): Use new function.
    
    * etc/NEWS: Update.
---
 etc/NEWS         | 14 ++++++++------
 lisp/tab-line.el | 21 ++++++++++++++++++++-
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index ca167d6..d77d341 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -529,12 +529,14 @@ the mouse pointer is in the tab line by scrolling left or 
right.
 *** New tab-line faces and options.
 The face 'tab-line-tab-special' is used for tabs whose buffers are
 special, i.e. buffers that don't visit a file.  The face
-'tab-line-tab-inactive-alternate' is used to display inactive tabs
-with an alternating background color, making them easier to
-distinguish, especially if the face 'tab-line-tab' is configured to
-not display with a box; this alternate face is only applied when the
-option 'tab-line-tab-face-functions' is so configured.  That option
-may also be used to customize tab-line faces in other ways.
+'tab-line-tab-modified' is used to display modified, file-backed
+buffers.  The face 'tab-line-tab-inactive-alternate' is used to
+display inactive tabs with an alternating background color, making
+them easier to distinguish, especially if the face 'tab-line-tab' is
+configured to not display with a box; this alternate face is only
+applied when the option 'tab-line-tab-face-functions' is so
+configured.  That option may also be used to customize tab-line faces
+in other ways.
 
 ** Mouse wheel
 
diff --git a/lisp/tab-line.el b/lisp/tab-line.el
index 1f7af9e..4a751b3 100644
--- a/lisp/tab-line.el
+++ b/lisp/tab-line.el
@@ -36,13 +36,15 @@
   :group 'convenience
   :version "27.1")
 
-(defcustom tab-line-tab-face-functions '(tab-line-tab-face-special)
+(defcustom tab-line-tab-face-functions
+  '(tab-line-tab-face-modified tab-line-tab-face-special)
   "Functions called to modify tab faces.
 Each function is called with five arguments: the tab, a list of
 all tabs, the face returned by the previously called modifier,
 whether the tab is a buffer, and whether the tab is selected."
   :type '(repeat
           (choice (function-item tab-line-tab-face-special)
+                  (function-item tab-line-tab-face-modified)
                   (function-item tab-line-tab-face-inactive-alternating)
                   (function-item tab-line-tab-face-group)
                   (function :tag "Custom function")))
@@ -92,6 +94,14 @@ function `tab-line-tab-face-special'."
   :version "28.1"
   :group 'tab-line-faces)
 
+(defface tab-line-tab-modified
+  '((t :inherit font-lock-doc-face))
+  "Face for modified tabs.
+Applied when option `tab-line-tab-face-functions' includes
+function `tab-line-tab-face-modified'."
+  :version "28.1"
+  :group 'tab-line-faces)
+
 (defface tab-line-tab-group
   '((t :inherit tab-line :box nil))
   "Face for group tabs.
@@ -537,6 +547,15 @@ When TAB is a non-file-backed buffer, make FACE inherit 
from
     (setf face `(:inherit (tab-line-tab-special ,face))))
   face)
 
+(defun tab-line-tab-face-modified (tab _tabs face buffer-p _selected-p)
+  "Return FACE for TAB according to whether it's modified.
+When TAB is a modified, file-backed buffer, make FACE inherit
+from `tab-line-tab-modified'.  For use in
+`tab-line-tab-face-functions'."
+  (when (and buffer-p (buffer-file-name tab) (buffer-modified-p tab))
+    (setf face `(:inherit (tab-line-tab-modified ,face))))
+  face)
+
 (defun tab-line-tab-face-group (tab _tabs face _buffer-p _selected-p)
   "Return FACE for TAB according to whether it's a group tab.
 For use in `tab-line-tab-face-functions'."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]