Commit Graph

56 Commits

Author SHA1 Message Date
dac6e05b87 refactor: deprecate appendq!, prependq!, & delq! macros
In the interest of slimming down Doom's core (as we near v3), I've
deprecated these macros. They doesn't really need to exist. Sure, the
alternatives aren't as ergonomic or elegant, but they're good enough
that we don't need these trivial wrappers. Their local uses have been
refactored out as well.
2025-03-25 14:16:56 -04:00
0a715cc3f2 refactor: (if|when)-let -> (if|when)-let*
With the former macros' future in the air (and likely to be targeted in
future, potentially breaking changes), I'll deal with this now than have
it bite me later.

Ref: https://lists.gnu.org/archive/html/emacs-devel/2024-10/msg00637.html
2025-01-08 19:33:37 -05:00
037b018cdd feat: add .doommodule files
These optional dotfiles indicate the root of a module or module
group (:lang), and will later contain module metadata. They will also
serve as an alternative to packages.el and doctor.el, and will aide the
parts of the v3.0 module API concerned with resolving the current module
from a path (`doom-module-from-path`), which currently rely too heavily
on parsing path strings.

For now, however, they're simply placeholders.
2024-09-14 20:47:39 -04:00
c82e7d9ea2 fix(ligatures): avoid invalid prettify-symbols-alist
Otherwise, `prettify-symbols-alist` will be set to a list whose first
element is the mode name, a symbol. That makes `prettify-symbols-alist`
an invalid alist, so when `prettify-symbols-mode` is enabled, there's a
type error in `prettify-symbols--make-keywords`.

Amend: c07f359d64
2024-09-14 13:01:54 -07:00
f452677c55 docs(ligatures): revise docstrings 2024-09-13 23:07:14 -04:00
c07f359d64 fix(ligatures): activate prettify-symbols-mode conditionally
With +extra enabled, this module would activate `prettify-symbols-mode`
in any buffer where `prettify-symbols-alist` is non-nil, whether or not
`+ligatures-extra-alist` has an entry for the current major mode (or a
parent thereof). This behavior is poor UX, since the user may be
expecting that a empty entry for some `X-mode` in
`+ligatures-extra-alist` should mean *no` prettify-symbols-mode` at all
in `X-mode`.

With this, `+ligatures-extra-alist` is now the authority. An empty entry
for `X-mode` will result in `prettify-symbols-mode` *not* being
activated there. If that entry *isn't* empty, it will be combined only
with the global default value of `prettify-symbols-alist`, not any
pre-existing buffer-local value, to make the end result deterministic,
because some modes have their own defaults for it (like
`lisp-prettify-symbols-alist`, `js--prettify-symbols-alist`, and
`rust-prettify-symbols-alist`).

Fix: #7440
2024-09-13 23:07:14 -04:00
bd14095516 fix(ligatures): lisp modes disobeying null +ligatures-extra-symbols
Fix: #7440
2024-09-11 19:46:16 -04:00
5ad99220b8 fix(ligatures): no prettify-symbols-mode w/o +extra
Also removes unused variables and functions, and obsoletes
`+ligatures-in-modes`, since it is no longer used.

Fix: #7440
2024-09-11 03:50:57 -04:00
affaa7ec9c docs(ligature): use correct obsoleted-in version
These should reflect the version of doomemacs/modules the symbols were
deprecated in, not the version of doomemacs/core.
2024-08-31 21:32:55 -04:00
6077b6f0d8 fix: correct version string in obsoletion calls 2024-08-26 18:07:47 -04:00
d941078e66 tweak(ligatures): +ligatures-extra-alist: affect derived modes
Close: #7808
Co-authored-by: Dev380 <Dev380@users.noreply.github.com>
2024-08-22 12:32:14 -04:00
bf330b405d refactor(ligatures): use (featurep 'harfbuzz)
Doom adds this feature in lisp/doom.el.
2024-08-20 00:09:55 -04:00
0ce403d069 refactor(ligatures): set-font-ligatures!: unsetting multiple modes
This changes set-font-ligature such that unsetting multiple modes will
properly manipulate multi-mode entries in ligature-composition-table.
2024-08-20 00:03:50 -04:00
ef142fc913 refactor(ligatures): defer ligature.el & combine variables
This combines `+ligatures-prog-mode-list` and `+ligatures-all-mode-list`
into `+ligatures-alist` (and deprecates the former).
2024-08-20 00:03:50 -04:00
dff6c36ab5 docs(ligatures): use set-font-ligatures! 2024-08-20 00:03:49 -04:00
874b536892 fix(ligatures): set-font-ligatures! reset on nil 2024-06-20 18:20:31 -04:00
45fd893074 refactor(ligatures): test for harfbuzz feature
A `harfbuzz` feature was introduced in 3e81655.

Ref: 3e81655b0e
2024-03-26 10:39:59 -04:00
7acfb0c77c nit: minor comment reformatting & revision 2024-03-26 10:39:24 -04:00
210a5d4162 bump: :ui
Alexander-Miller/treemacs@56691a530a -> Alexander-Miller/treemacs@df26b6ab9a
Bad-ptr/persp-mode.el@df95ea710e -> Bad-ptr/persp-mode.el@345baaa520
dgutov/diff-hl@b5651f1c57 -> dgutov/diff-hl@b8b2727a72
edkolev/evil-goggles@0070c9d844 -> edkolev/evil-goggles@34ca276a85
emacs-lsp/lsp-treemacs@e66ae21965 -> emacs-lsp/lsp-treemacs@e54e74deb8
emacsorphanage/anzu@5abb37455e -> emacsorphanage/anzu@26fb50b429
joostkremers/writeroom-mode@1fd52848eb -> joostkremers/writeroom-mode@f4d035e91d
mickeynp/ligature.el@0e5d0a8554 -> mickeynp/ligature.el@6ac1634612
rolandwalker/unicode-fonts@44d0a22420 -> rolandwalker/unicode-fonts@6245b97d8d
tarsius/hl-todo@70ce48470c -> tarsius/hl-todo@f1fef158f9
2024-02-04 18:58:53 -05:00
659f7bfc71 refactor!: deprecate IS-* OS constants
BREAKING CHANGE: This deprecates the IS-(MAC|WINDOWS|LINUX|BSD) family
of global constants in favor of a native `featurep` check:

  IS-MAC      ->  (featurep :system 'macos)
  IS-WINDOWS  ->  (featurep :system 'windows)
  IS-LINUX    ->  (featurep :system 'linux)
  IS-BSD      ->  (featurep :system 'bsd)

The constants will stick around until the v3 release so folks can still
use it -- and there are still some modules that use it, but I'll phase
those uses out gradually.

Fix: #7479
2024-02-04 17:54:29 -05:00
4499ce7b0a refactor: doom-unicode-font -> doom-symbol-font
No font supports all of Unicode or anywhere near it. It’s not even
really possible with current font formats. Therefore, rename
`doom-unicode-font` to `doom-symbol-font`. Only set it as a fallback for
characters in the `symbol` and `mathematical` scripts.
2023-10-07 02:33:45 +02:00
a60d8b3da4 fix(ligatures): proper resetting of font-ligatures
resetting font-ligatures means passing `nil` as the second argument
of `(set-font-ligatures!)`

Using `ligatures-ignored-major-modes` to cancel ligatures is too
brittle, because "resetting ligatures for `prog-mode`" would have bad
semantics with all its derived modes. The user probably just wants to
remove the default ligatures and then configure `foo-mode`, but pushing
`prog-mode` to `ignored-major-modes` might just disable ligatures across
all modes _derived from_ `prog-mode`.

This commit changes things in 2 ways:
- resetting ligatures now directly manipulates ligature.el internal
  state (the `ligature-composition-table` alist)
- in order to work, Doom must maintain an extra invariant on that alist,
  multi-modes keys (`'(foo-mode bar-mode)`), cannot be used, only single
  modes.

That mostly means that users should _not_ use
`ligature-set-ligatures` themselves in private config, but instead
always rely on `set-font-ligatures!` which does splicing behind
curtains. Failing to do so would be mostly harmless though (it would
just make "resetting ligatures" only partially remove set ligatures).

Fix: #7433
2023-09-19 23:32:07 +02:00
8230b78ad5 fix(ligatures): set-font-ligatures!
Old lexical variable reference caused an error.

Ref: #7433
Amend: #5082
Amend: 46d7404bef
2023-09-17 03:24:09 +02:00
88bb045388 docs(*): replace all-the-icons with nerd-icons
Also colorizes the leading icon in notices.
2023-09-16 20:19:11 +02:00
46d7404bef refactor!(ligatures): use ligature.el for Emacs28+
Include ligature.el in a new set-font-ligatures! function, so that
"normal" (read: "font-based") ligatures can
also be controlled on a per-major mode basis from a user function
in configuration.

This commit also drops support for Emacs 27 to reduce the maintenance
burden.

BREAKING CHANGE: font ligatures for Harfbuzz/Coretext composition
table-based ligations are no longer controlled with
`+ligatures-composition-alist`, but is handled with
`+ligatures-prog-mode-list` and `+ligatures-all-modes-list` for most
common cases. See the README for the mode-specific methods

BREAKING CHANGE: the `:ui ligatures` module will not work anymore
with Emacs 27 or older. Also, there is no need to keep patched fonts
(for Fira, Hasklig, Iosevka) if you use the module. Update Emacs if
you want to keep using ligatures, or disable the module (`doom doctor`
will tell you if your current version of Emacs stopped working with
the module)
2023-09-12 21:19:18 +02:00
TEC
5ac2a5258b docs: change link format 2022-10-05 01:01:19 +02:00
ad6a3d0f33 refactor: deprecate featurep! for modulep!
featurep! will be renamed modulep! in the future, so it's been
deprecated. They have identical interfaces, and can be replaced without
issue.

featurep! was never quite the right name for this macro. It implied that
it had some connection to featurep, which it doesn't (only that it was
similar in purpose; still, Doom modules are not features). To undo such
implications and be consistent with its namespace (and since we're
heading into a storm of breaking changes with the v3 release anyway),
now was the best opportunity to begin the transition.
2022-08-14 20:43:35 +02:00
0407621aff refactor: deprecate EMACS2[89]+, NATIVECOMP, MODULES
To reduce redundancy, remove the maintenance hassle that version
constants would impose later on, and rely on built-in
facilities (featurep) more over global variables or doomisms, these
global constants have been deprecated in favor of Emacs "features":

- EMACS28+   -- replace with (> emacs-major-version 27)
- EMACS29+   -- replace with (> emacs-major-version 28)
- NATIVECOMP -- replace with (featurep 'native-compile)
- MODULES    -- replace with (featurep 'dynamic-modules)

(These constants will be formally removed when v3 is released. The IS-*
constants are likely next, but I haven't decided on their substitutes
yet)

I also decided to follow native-compile's example and provide features
for Emacs' system features (since system-configuration-features' docs
outs itself as a poor method to detect features):

- dynamic-modules
- jansson
- native-compile -- this one already exists, but will instead be removed
  if it's non-functional; i.e. (native-comp-available-p) returns nil.

These are now detectable using featurep, which is fast and built-in.
2022-08-14 20:43:35 +02:00
057e6c531c refactor: replace doom-enlist with ensure-list
doom-enlist is now a deprecated alias for ensure-list, which is built
into Emacs 28.1+ and is its drop-in replacement. We've already
backported it for 27.x users in doom-lib (in 4bf4978).

Ref: 4bf49785fd
2022-08-07 19:43:13 +02:00
1abcf913aa revert: fix(docs): set mode in file-local vars
emacs-straight/org-mode@e22b4eb7aa introduced a breaking change that
made it impossible to rely on .dir-locals.el to change org-mode buffers
in $EMACSDIR to doom-docs-org-mode (without infinite recursion), so we
used file-local variables in 7e400ab.

emacs-straight/org-mode@215de6176b reverted that change, so we can use
.dir-locals.el again, and this is my preference, since it requires less
boilerplate across our hundreds of org files.

Ref: emacs-straight/org-mode@215de6176b
Ref: emacs-straight/org-mode@e22b4eb7aa
Revert: 7e400abdc0
2022-08-07 19:08:07 +02:00
1f8bf7accb merge: rewrite-docs
I've omitted docs/*.org from this merge, as there is still work left to
do there, but I am pushing the module docs early so folks can benefit
from the new docs sooner.
2022-08-03 03:27:50 +02:00
7e400abdc0 fix(docs): set mode in file-local vars
Due to emacs-straight/org-mode@e22b4eb, a replacement major mode (for
org-mode) can no longer be specified from .dir-locals.el, as it spirals
into infinite recursion. Therefore, a mode: line is needed in all Doom
docs.

Ref: emacs-straight/org-mode@e22b4eb7aa
2022-08-03 02:46:33 +02:00
1255315bfc refactor(docs): replace nav menus with virtual one
Now that the header is dynamically generated (when doom-docs-mode is
active), a literal header is unnecessary.
2022-08-02 19:37:07 +02:00
e77a45bc22 docs: use lowercase keywords
As per Org's new defaults, which we're adopting elsewhere, so may as
well adopt it here.
2022-08-02 16:23:43 +02:00
9744946a66 docs(ligatures): mention doom-unicode-font incompatibilities 2022-08-02 16:23:42 +02:00
71e07da578 feat(ligatures): include support for new ligatures
Includes support for =<= and =>= ligatures
2022-02-23 17:48:01 +01:00
7246db457c docs: replace doom-source with doom-repo links
I will later use "source" to refer to module sources, so better we avoid
the terminology for now.
2022-02-01 18:55:27 +01:00
88844e9cec docs: simplify internal docs links
Fewer links means less confusion.

- Merge doom-issue and doom-commit links into doom-ref (for auto-linking
  Issue/PR/commit references).
- Merge doom-module-source and doom-docs-source links into doom-source.
- Rename doom-report-issue to doom-report.
- Use '!' as the icon for module issues link.
- Remove doom-repo (replaced with "doom:*" in :lang org module).
- Add doomdir and emacsdir links to :lang org module.
2021-11-21 20:04:28 +01:00
b5a2aa48fe docs(:ui): update READMEs to new format 2021-11-21 20:04:28 +01:00
abd07c2793 fix(ligatures): update ligature table for pragmata 0.829 2021-10-03 12:47:12 +02:00
c44aacb319 fix(rss): disable ligatures in elfeed list buffers
Ligatures were interfering with font-lock in elfeed search/show buffers.

Fix #3391
2021-09-11 14:26:45 +02:00
50e71ce765 Revert 54067455e: fix ligatures
To fix ligatures, at least until I get around to merging #5082
2021-06-06 17:36:23 -04:00
54067455e7 Fix #5053: unwanted inline ligature composition 2021-05-22 22:59:55 -04:00
d6b0c019d9 Add Info-mode to list of ligature-excluded modes. 2021-04-30 21:01:59 -04:00
e4539bb56c ui/ligatures: fix over-eager activation
Users (or packages) may add entries directly to prettify-symbols-alist.
The module would mistaken that as a green light to activate
prettify-symbols-mode. Instead, only activate the mode if this module's
ligatures (or extra symbols) are specifically asked for.
2021-03-06 10:04:54 -05:00
002f5116a6 Fix #3948: unsetting ligatures w/ set-ligature! 2020-10-15 18:13:42 -04:00
89f709f4a4 Fix ligature documentation typo
Fixes 4061
2020-10-09 15:54:10 -04:00
97471f11db Fix #2807: fix void-variable errors in ui/ligatures 2020-08-23 18:15:17 -04:00
d49471a3b7 Merge pull request #3801 from jeetelongname/develop
Update docs for doom-quit, ligatures & hl-todo
2020-08-23 14:10:14 -04:00
b5227b3036 Fix #2807: wrong-number-of-args error on +ligatures/install-patched-font 2020-08-23 14:00:06 -04:00