This module enables ligatures and/or arbitrary symbol substitutions with
prettify-symbols-mode
.
This module has no dedicated maintainers.
Those flags are ignored on emacs-mac and on other platforms if running emacs 28+ with harfbuzz feature. In those cases, ligatures are handled without needing the extra configuration provided by those flags.
+fira
EnablesFira Code
ligatures. This requires Fira Code Symbol and a patched version of Fira Code (see below).+hasklig
EnableHasklig
ligatures. This requires a patched version of the HaskLig font (see below).+iosevka
EnableIosevka
ligatures. This requires a patched version of the Iosevka font (see below).+pragmata-pro
EnablePragmata Pro
ligatures. This requires the Pragmata Pro font.
This module installs no packages.
For ligatures to work, you must either:
- Have a recent enough version of Emacs which will compose ligatures automatically, or
- Use one of our font-specific configurations.
Ligatures are handled without needing additional configuration. If this doesn’t work, report a bug with your current version of emacs and the ligatures which aren’t working.
- Enable one of the four ligature font flags:
+fira
,+hasklig
,+iosevka
or+pragmata-pro
. - Install the patched version of the associated font with
M-x +pretty-code/install-patched-font
. Note: Pragmata Pro cannot be installed this way because it isn’t a non-free font and must be purchased and installed manually.
This module includes configuration to compose combinations like ->
or ::
into prettier glyphs (called a ligature). Depending on the current version of
emacs, this is implemented in two different ways :
- prettify-symbols-mode method
- this is the “legacy” method. It uses a font
which haves the ligatures as separate unicode symbols, and using
prettify-symbols-mode,
->
-like combinations are manually listed and replaced with the correct symbol. The mapping between->
-like sequences and unicode values in the font are font-specific ; therefore+fira
,+iosevka
… files and specific fonts are necessary for it to work. - composition-function-table method
- regexes are used to match all the usual sequences which are composed into ligatures. These regexes are passed to emacs directly, which asks Harfbuzz to shape it. Ligatures are obtained automatically depending on the capabilities of the font, and no font-specific configuration is necessary.
Emacs-mac port implements the composition-function-table method in its code, nothing is necessary on Doom side; otherwise, Doom implements the composition-function-table for emacs 28+ built with Harfbuzz support, and the prettify-symbols-mode method otherwise.
Even though harfbuzz has been included in emacs 27, there is currently a bug (#40864) which prevents a safe usage of composition-function-table method in emacs 27.