emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/fontaine 095524dc79 1/4: Add support for more faces: mo


From: ELPA Syncer
Subject: [elpa] externals/fontaine 095524dc79 1/4: Add support for more faces: mode lines, header line, line numbers
Date: Mon, 19 Feb 2024 03:57:58 -0500 (EST)

branch: externals/fontaine
commit 095524dc79740f0e2b61073c7af99c5da11e7cd6
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>

    Add support for more faces: mode lines, header line, line numbers
    
    Thanks to Ashlin Eldridge for suggesting the inclusion of mode line
    and line number faces. This was done in issue 4:
    <https://github.com/protesilaos/fontaine/issues/4>.
---
 README.org  |  94 ++++++++++++++++++++++++++++++++++++--------------
 fontaine.el | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 179 insertions(+), 27 deletions(-)

diff --git a/README.org b/README.org
index fdbbc61ee4..2aa87dd3bf 100644
--- a/README.org
+++ b/README.org
@@ -71,12 +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.
 
-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~, ~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):
+[ The support for the mode line, header line, and line number 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):
 
 #+begin_src emacs-lisp
 (regular
@@ -85,15 +90,35 @@ pieced together):
  :default-family "Monospace"
  :default-weight regular
  :default-height 100
+
  :fixed-pitch-family nil ; falls back to :default-family
  :fixed-pitch-weight nil ; falls back to :default-weight
  :fixed-pitch-height 1.0
+
  :fixed-pitch-serif-family nil ; falls back to :default-family
  :fixed-pitch-serif-weight nil ; falls back to :default-weight
  :fixed-pitch-serif-height 1.0
+
  :variable-pitch-family "Sans"
  :variable-pitch-weight nil
  :variable-pitch-height 1.0
+
+ :mode-line-active-family nil ; falls back to :default-family
+ :mode-line-active-weight nil ; falls back to :default-weight
+ :mode-line-active-height 1.0
+
+ :mode-line-inactive-family nil ; falls back to :default-family
+ :mode-line-inactive-weight nil ; falls back to :default-weight
+ :mode-line-inactive-height 1.0
+
+ :header-line-family nil ; falls back to :default-family
+ :header-line-weight nil ; falls back to :default-weight
+ :header-line-height 1.0
+
+ :line-number-family nil ; falls back to :default-family
+ :line-number-weight nil ; falls back to :default-weight
+ :line-number-height 1.0
+
  :bold-family nil ; use whatever the underlying face has
  :bold-weight bold
  :italic-family nil
@@ -187,6 +212,8 @@ The user option ~fontaine-presets~ may look like this 
(though check its
 default value before you make any edits):
 
 #+begin_src emacs-lisp
+;; NOTE this example does not include all the properties that
+;; `fontaine-presets' accepts.
 (setq fontaine-presets
       '((regular
          :default-family "Hack"
@@ -287,6 +314,9 @@ multiple presets, such as the =regular= and =large= we have 
illustrated
 thus far.  Here is how verbose presets can be expressed succinctly:
 
 #+begin_src emacs-lisp
+;; NOTE this example does not include all the properties that
+;; `fontaine-presets' accepts.
+
 ;; Notice the duplication of properties and how we will avoid it.
 (setq fontaine-presets
       '((regular
@@ -545,28 +575,20 @@ Remember to read the relevant doc strings.
 ;; Iosevka Comfy Wide       == like Iosevka Comfy, but wider
 ;; Iosevka Comfy Wide Fixed == like Iosevka Comfy Fixed, but wider
 (setq fontaine-presets
-      '((tiny
-         :default-family "Iosevka Comfy Wide Fixed"
-         :default-height 70)
-        (small
-         :default-family "Iosevka Comfy Fixed"
-         :default-height 90)
-        (regular
-         :default-height 100)
+      '((small
+         :default-family "Iosevka Comfy Motion"
+         :default-height 80
+         :variable-pitch-family "Iosevka Comfy Duo")
+        (regular) ; like this it uses all the fallback values and is named 
`regular'
         (medium
-         :default-height 110)
-        (large
          :default-weight semilight
-         :default-height 140
+         :default-height 115
          :bold-weight extrabold)
+        (large
+         :inherit medium
+         :default-height 150)
         (presentation
-         :default-weight semilight
-         :default-height 170
-         :bold-weight extrabold)
-        (jumbo
-         :default-weight semilight
-         :default-height 220
-         :bold-weight extrabold)
+         :default-height 180)
         (t
          ;; I keep all properties for didactic purposes, but most can be
          ;; omitted.  See the fontaine manual for the technicalities:
@@ -574,15 +596,35 @@ Remember to read the relevant doc strings.
          :default-family "Iosevka Comfy"
          :default-weight regular
          :default-height 100
+
          :fixed-pitch-family nil ; falls back to :default-family
          :fixed-pitch-weight nil ; falls back to :default-weight
          :fixed-pitch-height 1.0
+
          :fixed-pitch-serif-family nil ; falls back to :default-family
          :fixed-pitch-serif-weight nil ; falls back to :default-weight
          :fixed-pitch-serif-height 1.0
-         :variable-pitch-family "Iosevka Comfy Duo"
+
+         :variable-pitch-family "Iosevka Comfy Motion Duo"
          :variable-pitch-weight nil
          :variable-pitch-height 1.0
+
+         :mode-line-active-family nil ; falls back to :default-family
+         :mode-line-active-weight nil ; falls back to :default-weight
+         :mode-line-active-height 0.9
+
+         :mode-line-inactive-family nil ; falls back to :default-family
+         :mode-line-inactive-weight nil ; falls back to :default-weight
+         :mode-line-inactive-height 0.9
+
+         :header-line-family nil ; falls back to :default-family
+         :header-line-weight nil ; falls back to :default-weight
+         :header-line-height 0.9
+
+         :line-number-family nil ; falls back to :default-family
+         :line-number-weight nil ; falls back to :default-weight
+         :line-number-height 0.9
+
          :bold-family nil ; use whatever the underlying face has
          :bold-weight bold
          :italic-family nil
@@ -674,7 +716,7 @@ Fontaine is meant to be a collective effort.  Every bit of 
help matters.
 + Contributions to the code or manual :: Christopher League, Eli
   Zaretskii, Florent Teissier, Terry F. Torrey.
 
-+ Ideas and user feedback :: Joe Higton, Ted Reed.
++ Ideas and user feedback :: Ashlin Eldridge, Joe Higton, Ted Reed.
 
 * GNU Free Documentation License
 :PROPERTIES:
diff --git a/fontaine.el b/fontaine.el
index 06b28ff5ff..f20a4b9efd 100644
--- a/fontaine.el
+++ b/fontaine.el
@@ -150,15 +150,35 @@
      :default-family "Monospace"
      :default-weight regular
      :default-height 100
+
      :fixed-pitch-family nil ; falls back to :default-family
      :fixed-pitch-weight nil ; falls back to :default-weight
      :fixed-pitch-height 1.0
+
      :fixed-pitch-serif-family nil ; falls back to :default-family
      :fixed-pitch-serif-weight nil ; falls back to :default-weight
      :fixed-pitch-serif-height 1.0
+
      :variable-pitch-family "Sans"
      :variable-pitch-weight nil
      :variable-pitch-height 1.0
+
+     :mode-line-active-family nil ; falls back to :default-family
+     :mode-line-active-weight nil ; falls back to :default-weight
+     :mode-line-active-height 1.0
+
+     :mode-line-inactive-family nil ; falls back to :default-family
+     :mode-line-inactive-weight nil ; falls back to :default-weight
+     :mode-line-inactive-height 1.0
+
+     :header-line-family nil ; falls back to :default-family
+     :header-line-weight nil ; falls back to :default-weight
+     :header-line-height 1.0
+
+     :line-number-family nil ; falls back to :default-family
+     :line-number-weight nil ; falls back to :default-weight
+     :line-number-height 1.0
+
      :bold-family nil ; use whatever the underlying face has
      :bold-weight bold
      :italic-family nil
@@ -209,6 +229,26 @@ The properties in detail:
   They all fall back to the respective default values, as
   described above.
 
+- The `:mode-line-active-family', `:mode-line-active-weight', and
+  `:mode-line-active-height' apply to the `mode-line' and
+  `mode-line-active' faces.  They all fall back to the respective
+  default values, as described above.
+
+- The `:mode-line-inactive-family', `:mode-line-inactive-weight',
+  and `:mode-line-inactive-height' apply to the
+  `mode-line-inactive' face.  They all fall back to the
+  respective default values, as described above.
+
+- The `:header-line-family', `:header-line-weight', and
+  `:header-line-height' apply to the `header-line' face.  They
+  all fall back to the respective default values, as described
+  above.
+
+- The `:line-number-family', `:line-number-weight', and
+  `:line-number-height' apply to the `line-number' 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.
@@ -281,6 +321,22 @@ Caveats or further notes:
                   ((const :tag "Variable pitch regular weight" 
:variable-pitch-weight) ,fontaine--weights-widget)
                   ((const :tag "Variable pitch height" :variable-pitch-height) 
float)
 
+                  ((const :tag "Active mode line font family" 
:mode-line-active-family) string)
+                  ((const :tag "Active mode line regular weight" 
:mode-line-active-weight) ,fontaine--weights-widget)
+                  ((const :tag "Active mode line height" 
:mode-line-active-height) float)
+
+                  ((const :tag "Inactive mode line font family" 
:mode-line-inactive-family) string)
+                  ((const :tag "Inactive mode line regular weight" 
:mode-line-inactive-weight) ,fontaine--weights-widget)
+                  ((const :tag "Inactive mode line height" 
:mode-line-inactive-height) float)
+
+                  ((const :tag "Header line font family" :header-line-family) 
string)
+                  ((const :tag "Header line regular weight" 
:header-line-weight) ,fontaine--weights-widget)
+                  ((const :tag "Header line height" :header-line-height) float)
+
+                  ((const :tag "Line number font family" :line-number-family) 
string)
+                  ((const :tag "Line number regular weight" 
:line-number-weight) ,fontaine--weights-widget)
+                  ((const :tag "Line number height" :line-number-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)
 
@@ -300,7 +356,7 @@ Caveats or further notes:
                   ;; because it does not re-read `fontaine-presets'.
                   ((const :tag "Inherit another preset" :inherit) symbol)))
           :key-type symbol)
-  :package-version '(fontaine . "0.5.0")
+  :package-version '(fontaine . "1.1.0")
   :group 'fontaine
   :link '(info-link "(fontaine) Shared and implicit fallback values for 
presets"))
 
@@ -480,6 +536,56 @@ ARGS are its routines."
   (or (plist-get properties :variable-pitch-height) 1.0)
   frame))
 
+(fontaine--apply-preset
+ fontaine--apply-mode-line-preset
+ "Set `mode-line' face attributes based on PRESET for optional FRAME."
+ (fontaine--set-face-attributes
+  'mode-line
+  (or (plist-get properties :mode-line-family) (plist-get properties 
:default-family))
+  (or (plist-get properties :mode-line-weight) (plist-get properties 
:default-weight))
+  (or (plist-get properties :mode-line-height) 1.0)
+  frame))
+
+(fontaine--apply-preset
+ fontaine--apply-mode-line-active-preset
+ "Set `mode-line-active' face attributes based on PRESET for optional FRAME."
+ (fontaine--set-face-attributes
+  'mode-line-active
+  (or (plist-get properties :mode-line-active-family) (plist-get properties 
:default-family))
+  (or (plist-get properties :mode-line-active-weight) (plist-get properties 
:default-weight))
+  (or (plist-get properties :mode-line-active-height) 1.0)
+  frame))
+
+(fontaine--apply-preset
+ fontaine--apply-mode-line-inactive-preset
+ "Set `mode-line-inactive' face attributes based on PRESET for optional FRAME."
+ (fontaine--set-face-attributes
+  'mode-line-inactive
+  (or (plist-get properties :mode-line-inactive-family) (plist-get properties 
:default-family))
+  (or (plist-get properties :mode-line-inactive-weight) (plist-get properties 
:default-weight))
+  (or (plist-get properties :mode-line-inactive-height) 1.0)
+  frame))
+
+(fontaine--apply-preset
+ fontaine--apply-header-line-preset
+ "Set `header-line' face attributes based on PRESET for optional FRAME."
+ (fontaine--set-face-attributes
+  'header-line
+  (or (plist-get properties :header-line-family) (plist-get properties 
:default-family))
+  (or (plist-get properties :header-line-weight) (plist-get properties 
:default-weight))
+  (or (plist-get properties :header-line-height) 1.0)
+  frame))
+
+(fontaine--apply-preset
+ fontaine--apply-line-number-preset
+ "Set `line-number' face attributes based on PRESET for optional FRAME."
+ (fontaine--set-face-attributes
+  'line-number
+  (or (plist-get properties :line-number-family) (plist-get properties 
:default-family))
+  (or (plist-get properties :line-number-weight) (plist-get properties 
:default-weight))
+  (or (plist-get properties :line-number-height) 1.0)
+  frame))
+
 (fontaine--apply-preset
  fontaine--apply-bold-preset
  "Set `bold' face attributes based on PRESET for optional FRAME."
@@ -559,6 +665,10 @@ Call `fontaine-set-preset-hook' as a final step."
     (fontaine--apply-fixed-pitch-preset preset frame)
     (fontaine--apply-fixed-pitch-serif-preset preset frame)
     (fontaine--apply-variable-pitch-preset preset frame)
+    (fontaine--apply-mode-line-active-preset preset frame)
+    (fontaine--apply-mode-line-inactive-preset preset frame)
+    (fontaine--apply-header-line-preset preset frame)
+    (fontaine--apply-line-number-preset preset frame)
     (fontaine--apply-bold-preset preset frame)
     (fontaine--apply-italic-preset preset frame)
     (setq fontaine-current-preset preset)



reply via email to

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