branch: externals/fontaine commit fa76f238b5b039ad3a6f507c11a3934dd55016cb Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Add support for the tab-bar and tab-line faces --- README.org | 30 ++++++++++++++++++++++++------ fontaine.el | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/README.org b/README.org index dbb8c3b6ce..3272a563bf 100644 --- a/README.org +++ b/README.org @@ -71,17 +71,17 @@ Fontaine lets the user specify presets of font configurations and set them on demand on graphical Emacs frames. The user option ~fontaine-presets~ holds all such presets. -[ The support for the mode line, header line, and line number faces is - part of {{{development-version}}}. ] +[ The support for the mode line, header line, line number, tab bar, + and tab line faces is part of {{{development-version}}}. ] Presets consist of a list of properties that govern the family, weight, and height of the faces ~default~, ~fixed-pitch~, ~fixed-pitch-serif~, ~variable-pitch~, ~mode-line-active~ (and ~mode-line~ for older Emacs version), ~mode-line-inactive~, -~header-line~, ~line-number~, ~bold~, and ~italic~. Each preset is -identified by a user-defined symbol as the car of a property list. It -looks like this (check the default value of ~fontaine-presets~ for how -everything is pieced together): +~header-line~, ~line-number~, ~tab-bar~, ~tab-line~, ~bold~, and +~italic~. Each preset is identified by a user-defined symbol as the +car of a property list. It looks like this (check the default value of +~fontaine-presets~ for how everything is pieced together): #+begin_src emacs-lisp (regular @@ -119,6 +119,14 @@ everything is pieced together): :line-number-weight nil ; falls back to :default-weight :line-number-height 1.0 + :tab-bar-family nil ; falls back to :default-family + :tab-bar-weight nil ; falls back to :default-weight + :tab-bar-height 1.0 + + :tab-line-family nil ; falls back to :default-family + :tab-line-weight nil ; falls back to :default-weight + :tab-line-height 1.0 + :bold-family nil ; use whatever the underlying face has :bold-weight bold :italic-family nil @@ -619,10 +627,20 @@ Remember to read the relevant doc strings. :line-number-weight nil ; falls back to :default-weight :line-number-height 0.9 + :tab-bar-family nil ; falls back to :default-family + :tab-bar-weight nil ; falls back to :default-weight + :tab-bar-height 1.0 + + :tab-line-family nil ; falls back to :default-family + :tab-line-weight nil ; falls back to :default-weight + :tab-line-height 1.0 + :bold-family nil ; use whatever the underlying face has :bold-weight bold + :italic-family nil :italic-slant italic + :line-spacing nil))) ;; Recover last preset or fall back to desired style from diff --git a/fontaine.el b/fontaine.el index e43b45cfea..b2806372f5 100644 --- a/fontaine.el +++ b/fontaine.el @@ -99,6 +99,14 @@ :line-number-weight nil ; falls back to :default-weight :line-number-height 1.0 + :tab-bar-family nil ; falls back to :default-family + :tab-bar-weight nil ; falls back to :default-weight + :tab-bar-height 1.0 + + :tab-line-family nil ; falls back to :default-family + :tab-line-weight nil ; falls back to :default-weight + :tab-line-height 1.0 + :bold-family nil ; use whatever the underlying face has :bold-weight bold :italic-family nil @@ -169,6 +177,14 @@ The properties in detail: all fall back to the respective default values, as described above. +- The `:tab-bar-family', `:tab-bar-weight', and `:tab-bar-height' + apply to the `tab-bar' face. They all fall back to the + respective default values, as described above. + +- The `:tab-line-family', `:tab-line-weight', and + `:tab-line-height' apply to the `tab-line' face. They all fall + back to the respective default values, as described above. + - The `:bold-family' and `:italic-family' are the font families of the `bold' and `italic' faces, respectively. Only set them if you want to override that of the underlying face. @@ -257,6 +273,14 @@ Caveats or further notes: ((const :tag "Line number regular weight" :line-number-weight) ,fontaine--weights-widget) ((const :tag "Line number height" :line-number-height) float) + ((const :tag "Tab bar font family" :tab-bar-family) string) + ((const :tag "Tab bar regular weight" :tab-bar-weight) ,fontaine--weights-widget) + ((const :tag "Tab bar height" :tab-bar-height) float) + + ((const :tag "Tab line font family" :tab-line-family) string) + ((const :tag "Tab line regular weight" :tab-line-weight) ,fontaine--weights-widget) + ((const :tag "Tab line height" :tab-line-height) float) + ((const :tag "Font family of the `bold' face" :bold-family) string) ((const :tag "Weight for the `bold' face" :bold-weight) ,fontaine--weights-widget) @@ -506,6 +530,26 @@ ARGS are its routines." (or (plist-get properties :line-number-height) 1.0) frame)) +(fontaine--apply-preset + fontaine--apply-tab-bar-preset + "Set `tab-bar' face attributes based on PRESET for optional FRAME." + (fontaine--set-face-attributes + 'tab-bar + (or (plist-get properties :tab-bar-family) (plist-get properties :default-family)) + (or (plist-get properties :tab-bar-weight) (plist-get properties :default-weight)) + (or (plist-get properties :tab-bar-height) 1.0) + frame)) + +(fontaine--apply-preset + fontaine--apply-tab-line-preset + "Set `tab-line' face attributes based on PRESET for optional FRAME." + (fontaine--set-face-attributes + 'tab-line + (or (plist-get properties :tab-line-family) (plist-get properties :default-family)) + (or (plist-get properties :tab-line-weight) (plist-get properties :default-weight)) + (or (plist-get properties :tab-line-height) 1.0) + frame)) + (fontaine--apply-preset fontaine--apply-bold-preset "Set `bold' face attributes based on PRESET for optional FRAME." @@ -589,6 +633,8 @@ Call `fontaine-set-preset-hook' as a final step." (fontaine--apply-mode-line-inactive-preset preset frame) (fontaine--apply-header-line-preset preset frame) (fontaine--apply-line-number-preset preset frame) + (fontaine--apply-tab-bar-preset preset frame) + (fontaine--apply-tab-line-preset preset frame) (fontaine--apply-bold-preset preset frame) (fontaine--apply-italic-preset preset frame) (setq fontaine-current-preset preset)