2020-03-31 00:59:14 -04:00
|
|
|
#+TITLE: ui/pretty-code
|
|
|
|
#+DATE: June 16, 2018
|
|
|
|
#+SINCE: v2.0.9
|
|
|
|
#+STARTUP: inlineimages nofold
|
|
|
|
|
|
|
|
* Table of Contents :TOC_3:noexport:
|
|
|
|
- [[#description][Description]]
|
|
|
|
- [[#maintainers][Maintainers]]
|
|
|
|
- [[#module-flags][Module Flags]]
|
2020-05-02 22:49:07 -04:00
|
|
|
- [[#font-ligatures-module-flags][Font ligatures module flags]]
|
2020-03-31 00:59:14 -04:00
|
|
|
- [[#plugins][Plugins]]
|
|
|
|
- [[#prerequisites][Prerequisites]]
|
2020-05-02 22:49:07 -04:00
|
|
|
- [[#ligatures][Ligatures]]
|
|
|
|
- [[#emacs-mac-port-or-emacs-28][Emacs-mac port or Emacs 28+]]
|
|
|
|
- [[#not-emacs-mac-and-emacs--27][Not Emacs-mac and Emacs <= 27]]
|
2020-03-31 00:59:14 -04:00
|
|
|
- [[#features][Features]]
|
2020-05-02 22:49:07 -04:00
|
|
|
- [[#mathematical-symbols-replacement][Mathematical symbols replacement]]
|
|
|
|
- [[#coding-ligatures][Coding ligatures]]
|
2020-03-31 00:59:14 -04:00
|
|
|
- [[#configuration][Configuration]]
|
|
|
|
- [[#set-pretty-symbols][~set-pretty-symbols!~]]
|
|
|
|
- [[#troubleshooting][Troubleshooting]]
|
|
|
|
|
|
|
|
* Description
|
|
|
|
This module enables ligatures and/or arbitrary symbol substitutions with
|
|
|
|
~prettify-symbols-mode~.
|
|
|
|
|
|
|
|
** Maintainers
|
|
|
|
This module has no dedicated maintainers.
|
|
|
|
|
|
|
|
** Module Flags
|
2020-04-27 13:22:15 +02:00
|
|
|
*** Font ligatures module flags
|
2020-05-02 22:49:07 -04:00
|
|
|
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.
|
|
|
|
|
2020-03-31 00:59:14 -04:00
|
|
|
+ =+fira= Enables =Fira Code= ligatures. This requires Fira Code Symbol and a
|
|
|
|
patched version of Fira Code (see below).
|
|
|
|
+ =+hasklig= Enable =Hasklig= ligatures. This requires a patched version of the
|
|
|
|
HaskLig font (see below).
|
|
|
|
+ =+iosevka= Enable =Iosevka= ligatures. This requires a patched version of the
|
|
|
|
Iosevka font (see below).
|
|
|
|
+ =+pragmata-pro= Enable =Pragmata Pro= ligatures. This requires the [[https://www.fsd.it/shop/fonts/pragmatapro/][Pragmata
|
|
|
|
Pro font]].
|
|
|
|
|
|
|
|
** Plugins
|
|
|
|
This module installs no packages.
|
|
|
|
|
|
|
|
* Prerequisites
|
2020-04-27 13:22:15 +02:00
|
|
|
** Ligatures
|
2020-05-02 22:49:07 -04:00
|
|
|
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.
|
2020-03-31 00:59:14 -04:00
|
|
|
|
2020-04-27 13:22:15 +02:00
|
|
|
*** Emacs-mac port or Emacs 28+
|
2020-05-02 22:49:07 -04:00
|
|
|
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.
|
2020-04-27 13:22:15 +02:00
|
|
|
|
|
|
|
*** Not Emacs-mac and Emacs <= 27
|
2020-03-31 00:59:14 -04:00
|
|
|
1. Enable one of the four ligature font flags: =+fira=, =+hasklig=, =+iosevka=
|
|
|
|
or =+pragmata-pro=.
|
|
|
|
2. 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.
|
|
|
|
|
|
|
|
* TODO Features
|
|
|
|
# An in-depth list of features, how to use them, and their dependencies.
|
2020-04-27 13:22:15 +02:00
|
|
|
** TODO Mathematical symbols replacement
|
|
|
|
** Coding ligatures
|
2020-05-02 22:49:07 -04:00
|
|
|
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.
|
2020-04-27 13:22:15 +02:00
|
|
|
|
2020-05-02 22:49:07 -04:00
|
|
|
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.
|
2020-04-27 13:22:15 +02:00
|
|
|
|
2020-05-02 22:49:07 -04:00
|
|
|
Even though harfbuzz has been included in emacs 27, there is currently a [[https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-04/msg01121.html][bug
|
|
|
|
(#40864)]] which prevents a safe usage of /composition-function-table/ method in
|
|
|
|
emacs 27.
|
2020-03-31 00:59:14 -04:00
|
|
|
|
|
|
|
* TODO Configuration
|
|
|
|
# How to configure this module, including common problems and how to address them.
|
|
|
|
|
|
|
|
** TODO ~set-pretty-symbols!~
|
|
|
|
|
|
|
|
* TODO Troubleshooting
|
|
|
|
# Common issues and their solution, or places to look for help.
|