Commit Graph

139 Commits

Author SHA1 Message Date
Henrik Lissner
6ce4ba3d18 release(modules): 25.07.0-dev
Ref: 2b39e41368
2025-06-02 14:19:26 +02:00
Henrik Lissner
9c2b2473be release(modules): 25.06.0-dev
Ref: 2b39e41368
2025-05-01 15:03:06 -04:00
Henrik Lissner
46647dada6 fix(lib): load doom-compat unconditionally
For users on builds of 31 that predate things Doom backports.

Fix: #8359
2025-04-15 04:18:25 -04:00
Henrik Lissner
5f6df26d5c fix(lib): load doom-compat in 30.x
So users on 30.x can enjoy the backports from 31.x.

Fix: #8359
2025-04-15 01:26:23 -04:00
Henrik Lissner
def4579a9f fix: silence 'missing lexical-binding cookie' warnings
As of recent commits of Emacs 31, elisp files missing a
"lexical-binding: t" cookie will emit this warning:

  Warning (files): Missing ‘lexical-binding’ cookie in "path/to/elisp/file".
  You can add one with ‘M-x elisp-enable-lexical-binding RET’.
  See ‘(elisp)Selecting Lisp Dialect’ and ‘(elisp)Converting to Lexical Binding’
  for more information.

You can look forward to many of these if you use any old and
unmaintained elisp packages, or if you have elisp shell scripts with
shebang lines (which make this warning unavoidable).

This commit silences these warnings because it's poorly implemented.
It's obnoxious to users and they aren't the ones that should be told
this. It ought to be emitted during byte-compilation or by linters (e.g.
`M-x checkdoc`) at the folks actually in a position to do something
about the warning (i.e. the developers).

Ref: https://lists.gnu.org/r/emacs-devel/2024-05/msg00283.html
2025-04-15 00:39:10 -04:00
Henrik Lissner
6a1ab50e02 release(modules): 25.05.0-dev
Ref: 2b39e41368
2025-04-01 03:44:01 -04:00
Henrik Lissner
5b103261f4 feat: add wsl detection
Can now be detected with (featurep :system 'wsl).
2025-03-26 07:55:16 -04:00
Henrik Lissner
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
Henrik Lissner
466490c252 release(modules): 25.04.0-dev
Ref: 2b39e41368
2025-03-15 00:39:36 -04:00
Henrik Lissner
6e6eaa1189 docs: bump latest supported Emacs version to 30.1
30.1 was released yesterday.

Fix: #8283
2025-02-24 23:40:00 -05:00
Henrik Lissner
b55d988491 release(modules): 25.03.0-dev
Ref: 2b39e41368
2025-02-21 18:35:36 -05:00
Henrik Lissner
2b4f762b1e release(modules): 25.02.0-dev
Ref: 2b39e41368
2025-01-09 01:07:20 -05:00
Henrik Lissner
eaf26b83ad fix: file-missing doom-compat error
Fix: #8232
Amend: d6037a24d4
2025-01-08 19:55:47 -05:00
Henrik Lissner
d6037a24d4 refactor: load doom-compat.el from doom.el 2025-01-08 19:33:38 -05:00
Henrik Lissner
ad3da32c5f refactor: comp: s/after!/with-eval-after-load
`after!`'s benefits aren't needed here, so use the simplest tool for the
job.
2025-01-08 19:33:37 -05:00
Henrik Lissner
881eea137f refactor: remove doom-bin-dir
Or rather, moves its into lib/config.el, which is the only place that
uses it.
2025-01-08 19:33:37 -05:00
Henrik Lissner
a06287cc23 fix: only check for major emacs version changes
Bytecode is typically forwards-incompatible across major releases, not
minor ones.
2025-01-08 19:33:37 -05:00
Henrik Lissner
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
Henrik Lissner
e3bc367ba2 nit: minor comment revision 2025-01-08 19:33:37 -05:00
Henrik Lissner
2f8b49ea7a fix: reset gc-cons-threshold if not already 2025-01-08 19:33:37 -05:00
Henrik Lissner
c788769469 refactor: move GPG defaults to :config default
Assuming GPG is present and set up by default can be surprising for
beginners, so this commit makes GPG integration opt-in, behind a new
+gnupg flag in the :config default module. There'll be more added to
this later.
2024-12-05 16:38:26 -05:00
Henrik Lissner
fca69c9849 release(modules): 25.01.0-dev
Ref: 2b39e41368
2024-12-01 11:31:40 -05:00
Henrik Lissner
87a0d9d2e1 fix: void-variable native-comp-deferred-compilation-deny-list
Error occurs on Emacs 30.0.92 or newer, because this variable (what it's
aliased to, at least) was moved to comp-run.el, upstream.

Ref: emacsmirror/emacs@e6a955d242
2024-12-01 01:20:45 -05:00
Henrik Lissner
caab7f9263 nit: move obsolete aliases
To group together everything I plan to delete in v3.
2024-11-15 04:08:23 -05:00
Henrik Lissner
7bc39f2c14 fix: restore noninteractive init settings
Accidentally removed in 8cafbe4, when it was supposed to be moved.

Amend: 8cafbe4408
2024-11-14 05:16:57 -05:00
Henrik Lissner
bcd399d1c3 fix: more void-variable doom-module-*-file errors
A stop-gap until the third follow-up to 8cafbe4 is complete.

Fix: #8153
Amend: 8cafbe4408
2024-11-06 18:23:47 -05:00
Henrik Lissner
1b826fa80f refactor: remove load suffix hacks
The lexical bindings for the load suffix variables in early-init.el does
this work already, so affecting the global state of these variables is
redundant and overkill.
2024-11-06 06:13:19 -05:00
Henrik Lissner
0f556345fd fix: remove custom-dont-initialize hack
It seems either Emacs' warning library and/or debugger relies on
custom.el functionality at load time to properly function. If
`custom-dont-initialize` is non-nil when a warning or error occurs,
Emacs fails to fully load the `warning` or `backtrace` libraries,
causing this error to obscure the true warning/error with:

  Error in delayed-warnings-hook (display-delayed-warnings): (void-variable
  warning-minimum-log-level)
2024-11-06 06:12:22 -05:00
Henrik Lissner
e1a2f94ec1 fix: void-variable doom-module-load-path error
`doom-module-load-path` will be removed in the next big refactor commit,
so as a stop gap, I simply move it to doom.el to resolve the reference
error.

This also removes the obsolete alias `doom-modules-dirs`, since it's
been deprecated long enough (and `doom-module-load-path` itself won't be
around much longer anyway).

Ref: #8147
Amend: 8cafbe4408
2024-11-04 18:23:25 -05:00
Henrik Lissner
f425f2ff3d fix: more void-variable errors
For `straight--build-cache` and `doom-modules`.

Fix: #8140
Amend: 8cafbe4408
2024-11-03 12:36:38 -05:00
Henrik Lissner
7c89699e3f fix: silence (if|when)-let deprecation warnings
Seems these two macros were marked obsolete very recently on Emacs 31.1
in favor of (if|when)-let*. Since the change seems premature (judging
from the mailing list discussion), and because I disagree with the
change (and will redefine (if|when)-let if they actually go through with
removing them), I simply silence the warnings altogether. They're not
helpful for the end user and end up only spamming them with unactionable
warnings.

I'll wait until upstream figures it out before I make any decisions.

Ref: https://lists.gnu.org/archive/html/emacs-devel/2024-10/msg00637.html
2024-11-03 01:52:45 -05:00
Henrik Lissner
8cafbe4408 refactor!: restructure Doom core
BREAKING CHANGE: This restructures Doom's core in an effort to slim it
down and partially mirror architectural changes coming in v3. This is
part 2 of 3 commits (part 1 being 1590434), done to facilitate a change
in part 3 that will introduce a new `doom!` syntax for pulling
third-party module libraries from remote sources (similar to `package!`
statements). I am backporting this from V3 so I can move our modules out
into separate repos sooner than later, so development on modules can
continue separately without interfering with v3's roll out.

Though this is labeled a breaking change, it shouldn't affect most users
except those few tinkering directly with Doom's internals.

Ref: 15904349cf
2024-11-03 01:52:28 -05:00
Henrik Lissner
8a7b20c43d release(modules): 24.12.0-dev
Ref: 2b39e41368
2024-10-31 21:54:21 -04:00
Henrik Lissner
db76813c26 refactor: rename doom-features to doom-system 2024-10-31 21:54:20 -04:00
Henrik Lissner
15904349cf refactor!: module API
BREAKING CHANGE: This backports some architectural choices from v3.0.
This changes Doom's module API, renaming some functions and removing
others, in order to facilitate some new features, prepare to move Doom's
modules into separate repos, and make way for two, much larger breaking
commits coming in the next few days.

This commit won't break anything for users unless they're tinkering with
Doom's internals/using its `doom-module-*` API directly. I am avoiding
broader backwards incompatibilities until the 3.0 release.

What's new:

- Negated flags. (modulep! :editor evil -everywhere) will return non-nil
  if :editor evil is active without its +everywhere flag.
- `modulep!` now takes multiple flags to simplify AND checks. E.g.

    (and (modulep! +foo)
         (modulep! +bar)
         (not (modulep! +baz)))

  Can now be expressed with:

    (modulep! +foo +bar -baz)
- Adds pcase matchers for `doom-module-context` and `doom-module`
  structs, making the following destructuring binds possible:

    (pcase-dolist ((doom-module group name flags features)
                   (hash-table-values doom-modules))
      ...)

  This will be used more in v3.0.
- Adds file cookie support to module init.el and config.el files.

Here's a summary of breaking changes made in this commit:

- `doom-module-context` was changed from a vector to a struct (record).
- `doom-modules` is now a table of `doom-module` structs, rather than
  free-form plists.
- The following macros have been renamed:
  - `doom-context-with` -> `with-doom-context`
  - `doom-module-context-with` -> `with-doom-module`
- The followings functions have been replaced/removed:
  - `doom-module-context`+`doom-module-context-get` -> `doom-module`
  - `doom-module-set` -> `doom-module--put`
  - `doom-module-p` -> `doom-module-active-p`
  - `doom-module-context-key` (is now a getter with the same name)
  - `doom-module-put` (removed)
  - `doom-module--context-field` (removed)
- The signatures for these functions have changed:
  - `doom-module-get CATEGORY &optional MODULE PROP` ->
    `doom-module-get (GROUP . MODULE) &optional PROP`
  - `doom-module-locate-path CATEGORY &optional MODULE FILE` ->
    `doom-module-locate-path (GROUP . MODULE) &optional FILE`
  - `doom-module-expand-path CATEGORY MODULE &optional FILE` ->
    `doom-module-expand-path (GROUP . MODULE) &optional FILE`
- Adds the following functions
  - `doom-module-exists-p`
  - `doom-module-key`
  - `doom-module->context`
  - `doom-module<-context`
- Removes the following variables
  - `doom-module--empty-context`

This commit results in a little redundancy, which I will address in
parts 2/3 and/or v3.0.
2024-10-20 02:41:42 -04:00
Henrik Lissner
8b9168de6e release(modules): 24.11.0-dev
Ref: 2b39e41368
2024-10-03 02:26:28 -04:00
Henrik Lissner
3256fc7fca fix: trigger defcustom setters in files opened from command-line 2024-09-11 19:46:15 -04:00
Henrik Lissner
771fccc52b nit: minor reformatting & revision
Also corrects the version string of obsolete variable `+mu4e-backend`.
2024-09-11 19:46:14 -04:00
Henrik Lissner
6d7a39c482 tweak: load site-lisp verbosely in debug mode 2024-09-11 19:46:14 -04:00
Henrik Lissner
546e56f1fa fix: suppress visual startup optimizations in debug mode
Also interferes with doom/sandbox's launch targets.
2024-09-11 19:46:14 -04:00
Henrik Lissner
871efdce08 refactor: windows: move doom dirs to %LOCALAPPDATA%
More appropriate location for these files on Windows than %APPDATA%.
2024-09-07 19:04:37 -04:00
Henrik Lissner
f644c4fa6c feat: add basic android support 2024-09-07 01:06:33 -04:00
Henrik Lissner
8475d29f3c refactor: remove redundant set-default-toplevel-value call 2024-09-01 14:45:52 -04:00
Henrik Lissner
515f61295b nit(cli): revise comments wrt site-run-file loading 2024-09-01 14:45:52 -04:00
Henrik Lissner
086aed32b2 release(modules): 24.10.0-dev
Ref: 2b39e41368
2024-08-31 22:08:56 -04:00
Henrik Lissner
a8ba8feecb refactor(lib): doom/{reload,upgrade}: customizable commands
Ref: #8024
2024-08-25 17:44:28 -04:00
Henrik Lissner
9913acbdc4 fix: opening tramp paths from command line args
Eventually, Emacs will process any files passed to it via the command
line, and will do so *really* early in the startup process. These might
contain special file paths like TRAMP paths (e.g.
/sudo://etc/ssh/ssh_config), so restore `file-name-handler-alist' just
for this small portion of startup.
2024-08-18 16:12:42 -04:00
Henrik Lissner
1912571c9c docs: minor revisions of docstrings across core+cli 2024-08-15 23:24:56 -04:00
Henrik Lissner
5e2e886b35 nit: comment revision & reformatting 2024-08-15 23:18:47 -04:00
Henrik Lissner
dc035a652f fix: reset inhibit-* vars a mote more aggressively
There are still a few edge cases where inhibit-redisplay is never
reset (usually involving errors at startup), leaving Emacs as a blank
screen until the user performs an action that forces it to redraw (e.g.
pressing M-x). This tries to address more of those.
2024-08-15 15:45:53 -04:00