branch: externals/fontaine commit fe78a2be64b09f55748fa0c6e62d59e787b761b4 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Update to Fontaine version 3.0.0 --- CHANGELOG.org | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.org | 18 ++++++------- fontaine.el | 2 +- 3 files changed, 96 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.org b/CHANGELOG.org index a7cca2d0c3..1b64834427 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -12,6 +12,92 @@ the manual: <https://protesilaos.com/emacs/fontaine>. #+toc: headlines 1 insert TOC here, with one headline level +* Version 3.0.0 on 2025-02-20 +:PROPERTIES: +:CUSTOM_ID: h:a8cd979f-851f-4e97-ae90-96022b4cfe7a +:END: + +This version changes the underlying implementation of Fontaine's font +configuration presets. In principle, this should not have any effect +on how users experience the package, though there are some important +details that are different. + +** Fontaine is now a "theme" +:PROPERTIES: +:CUSTOM_ID: h:6d051d64-2623-4877-935f-4792579888a3 +:END: + +Fontaine has always modified typography-related faces, such as +~default~, ~fixed-pitch~, and ~variable-pitch~, to apply the font +family, height, and weight specified by the user. In the past, this +was done in a way that could get overridden under certain conditions, +such as by loading a theme after setting a Fontaine preset configuration. + +By making Fontaine a theme, we guarantee that its settings are not +undone. In practice, this means that users do not have to re-apply the +current preset after loading a theme. The function ~fontaine-apply-current-preset~ +is thus obsolete. + +In Emacs, a "theme" is a bundle of configurations. Those typically +cover colours (such as with my ~modus-themes~), but a theme can focus +on other settings as well. For example, the popular ~use-package~ is +internally done as a theme (check the value of ~custom-known-themes~). + +Fontaine is a theme in the same way ~use-package~ is, meaning that it +will (i) persist its effects, (ii) not show up in the +~custom-enabled-themes~ and so not be affected by something like +~(mapc #'disable-theme custom-enabled-themes)~, +and (iii) not be an option among those presented by ~load-theme~. + +There are no known bugs, though please contact me if you encounter a +scenario where Fontaine does not do the right thing. Thanks, in this +regard, to Haruko and Emily Hyland for reporting a couple of bugs: + +- <https://github.com/protesilaos/fontaine/issues/14>. +- <https://github.com/protesilaos/fontaine/issues/15>. + +** Fontaine no longer has frame-specific effects +:PROPERTIES: +:CUSTOM_ID: h:01648e81-6499-41ef-b200-b6784cbf4c96 +:END: + +In the past, users could apply a Fontaine preset to the current frame +without affecting other frames. While this could be useful in certain +situations, it was ultimately making the code more complex for +marginal gains. As part of the transition to a theme, which is anyway +global, I am removing everything related to frame-specific functionality. + +** Quality-of-life refinements +:PROPERTIES: +:CUSTOM_ID: h:e4e3a4c0-aefd-4398-a46b-dbfa102b04fa +:END: + +- The ~fontaine-generic-face-families~ are used when necessary to + guard against ~nil~ values. Those font families are symbolic + references to whatever the operating system is configured to use + (e.g. on Linux this is handled by fontconfig). + +- If Fontaine is instructed to load an invalid preset, it displays a + warning and does nothing else. Before, it would produce an error, + which could prevent Emacs from starting up normally if this were to + happen at startup. A warning is enough to inform the user of what is + happening. + +- Same principle as above when Emacs is not ran in a graphical + interface. In text terminals, Fontaine cannot work because it is not + possible to have different font families, styles, and heights, than + those of the terminal (hence the backronym of FONTAINE "Fonts, + Ornaments, and Neat Typography Are Irrelevant in Non-graphical + Emacs"). Thanks to Jorge Gomez for the patch in pull request 13: + <https://github.com/protesilaos/fontaine/pull/13>. Further tweaks by + me. + +- The ~fontaine-toggle-preset~ command will produce an error if it + cannot find the preset it is supposed to switch to. The toggle is + between the last two loaded presets, as done by the command + ~fontaine-set-preset~ (the ~fontaine-mode~ takes care to persist the + relevant history). + * Version 2.1.0 on 2024-09-02 :PROPERTIES: :CUSTOM_ID: h:684117cb-76c6-4a74-97ef-a37852bd3612 diff --git a/README.org b/README.org index 54a2ee5fd5..ea8b54f046 100644 --- a/README.org +++ b/README.org @@ -4,9 +4,9 @@ #+language: en #+options: ':t toc:nil author:t email:t num:t #+startup: content -#+macro: stable-version 2.1.0 -#+macro: release-date 2024-09-02 -#+macro: development-version 3.0.0-dev +#+macro: stable-version 3.0.0 +#+macro: release-date 2025-02-20 +#+macro: development-version 3.1.0-dev #+export_file_name: fontaine.texi #+texinfo_filename: fontaine.info #+texinfo_dir_category: Emacs misc features @@ -682,8 +682,8 @@ Remember to read the relevant doc strings. [ Since version =2.0.0=, there exists the ~fontaine-mode~ which does this automatically. The =fontaine-apply-current-preset= is obsolete - as of {{{development-version}}} because Fontaine is now implemented - as a "theme" and thus does not get overwritten by other themes. ] + as of version =3.0.0= because Fontaine is now implemented as a + "theme" and thus does not get overwritten by other themes. ] #+findex: fontaine-apply-current-preset #+vindex: fontaine-current-preset @@ -708,8 +708,8 @@ a hook that is ran at the post ~load-theme~ phase. [ Since version =2.0.0=, there exists the ~fontaine-mode~ which does this automatically. The =fontaine-apply-current-preset= is obsolete - as of {{{development-version}}} because Fontaine is now implemented - as a "theme" and thus does not get overwritten by other themes. ] + as of version =3.0.0= because Fontaine is now implemented as a + "theme" and thus does not get overwritten by other themes. ] Emacs 29 provides the ~enable-theme-functions~, which we can use to persist or restore a font preset thus ([[#h:f1b48050-e8e1-4689-b92f-7776bbaa55a4][Persist font configurations on theme switch]]): @@ -725,8 +725,8 @@ persist or restore a font preset thus ([[#h:f1b48050-e8e1-4689-b92f-7776bbaa55a4 [ Since version =2.0.0=, there exists the ~fontaine-mode~ which does this automatically. The =fontaine-apply-current-preset= is obsolete - as of {{{development-version}}} because Fontaine is now implemented - as a "theme" and thus does not get overwritten by other themes. ] + as of version =3.0.0= because Fontaine is now implemented as a + "theme" and thus does not get overwritten by other themes. ] For versions of Emacs before 29, there is no built-in theme-agnostic solution to persisting or restoring a font preset ([[#h:8f76ca89-a20c-4d76-89e6-423f1d8691a4][Theme-agnostic hook for Emacs 29 or higher]]). diff --git a/fontaine.el b/fontaine.el index 93572c68cf..083c2965ed 100644 --- a/fontaine.el +++ b/fontaine.el @@ -5,7 +5,7 @@ ;; Author: Protesilaos Stavrou <i...@protesilaos.com> ;; Maintainer: Protesilaos Stavrou <i...@protesilaos.com> ;; URL: https://github.com/protesilaos/fontaine -;; Version: 2.1.0 +;; Version: 3.0.0 ;; Package-Requires: ((emacs "29.1")) ;; This file is NOT part of GNU Emacs.