Commit Graph

19652 Commits

Author SHA1 Message Date
cc98bdd14b fix(modeline): change macOS default EOL type to LF
It looks like CR was only the default line ending type for Mac in
Mac OS 9 and earlier, and it's now quite uncommon:
- https://retrocomputing.stackexchange.com/a/21906
- https://superuser.com/a/439443
2025-01-08 19:37:37 -05:00
ea098dcc1f fix(cc): replace opencl-mode with opencl-c-mode 2025-01-08 19:36:39 -05:00
9111d9b74c fix(emacs-lisp): only set mode-name in elisp buffers
And not emacs-lisp-mode derived modes.
2025-01-08 19:33:38 -05:00
d6037a24d4 refactor: load doom-compat.el from doom.el 2025-01-08 19:33:38 -05:00
d51fffeda5 fix(cli): appease byte-compiler sama 2025-01-08 19:33:38 -05:00
3f1a471127 refactor: replace point-at-{b,e}ol
These were deprecated in 29.1. We'll switch to pol-bol and pos-eol
if/when we drop 28.x support.
2025-01-08 19:33:38 -05:00
7de9723334 feat(cli): defcli-obsolete!: allow arbitrary obsolescence message
Ala `make-obsolete`.
2025-01-08 19:33:38 -05:00
254a8d38a7 feat(lib): prepend DOOMPROFILELOADPATH to doom-profile-load-path
Instead of replacing it.
2025-01-08 19:33:38 -05:00
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
b02564535e fix: "Invalid key: nil" errors in some eval contexts
Breaking `gr` (+eval:region) et co in files outside of Doom's
source (like in packages).

Fix: #8224
2025-01-08 19:33:37 -05:00
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
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
68edae421f refactor: doom-profile-generate: remove defunct build step
Since 87a024e, the profile init files are no longer byte-compiled, so
this block of code -- responsible for deleting byte-compiled init files
-- is no longer needed.

Amend: 87a024ee90
2025-01-08 19:33:37 -05: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
e3bc367ba2 nit: minor comment revision 2025-01-08 19:33:37 -05:00
8056650364 perf: gcmh-high-cons-threshold = 64mb
Up from a conservative 16mb. This is the temporary GC threshold while
the user is active, and should be set to a value that makes GC less
likely.
2025-01-08 19:33:37 -05:00
2f8b49ea7a fix: reset gc-cons-threshold if not already 2025-01-08 19:33:37 -05:00
ad4eee6f66 refactor: remove redundant backport
Was moved to doom-compat.el in 201321c.

Amend: 201321c929
2025-01-08 19:33:36 -05:00
cc18218889 refactor: nconc -> add-to-list
The doom-*.el files will soon be moved to separate core modules (whose
load order the user can dictate); when this happens, this block could be
re-evaluated anytime the user calls `doom/reload` or otherwise reloads
the active profile.
2025-01-08 19:33:36 -05:00
50b9afbb2d refactor: swap load-theme advice for enable-theme-functions
Instead of advising load-theme, which was more opinionated, and broke in
instances where users (relying on `custom-enabled-themes`s setter) or
packages (like auto-dark) were enabling themes with `enable-theme`
instead of `load-theme`.

This also adds support for enabling multiple themes with `doom-theme`.

Fix: #8119
2025-01-08 19:33:33 -05:00
ecd079f6da feat(lib): backport {enable,disable}-theme-functions
Backported so I don't have to write compatibility boilerplate for <29.
2024-12-11 15:18:00 -05:00
ba1dca322f revert: tweak(sh): auto-mode-alist: generalize /*rc rule
Cast too wide a net; there are likely too many *rc files that shouldn't
be treated as shell scripts.

Besides, there's already a fallback *rc rule for conf-mode in
lisp/doom-editor.el.

Revert: bdc35faff2
2024-12-05 16:39:23 -05:00
440b8be3aa fix(emacs-lisp): false positives from syntax checkers
For example, proper-list-p errors from uses of `use-package`, occuring
in Doom source files (or elisp in $DOOMDIR). This happened because
Doom's bootstrap process changed in 8cafbe4 without adapting this
module's elisp checker.

Amend: 8cafbe4408
2024-12-05 16:39:23 -05:00
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
ea616ebd5b fix(lib): cmd!: remove superfluous macro declarations
These don't apply to macros anyway.
2024-12-05 16:25:54 -05:00
82cfe98ccc fix(lib): doom-copy: copy first level of records
Regardless of DEEP?, a record's fields should be copied one level deep
at least, to ensure shallow changes to shallow copies don't affect the
original.

Amend: 169540ad3b
2024-12-05 16:25:54 -05:00
637f70f53b fix(emacs-lisp): duplicate entries in flycheck-disabled-checkers 2024-12-05 16:25:54 -05:00
4418c80c95 fix(syntax): disable checker in non-project elisp files
CVE-2024-53920 describes an arbitrary code execution vulnerability
during macro expansion, which occurs during byte-compilation or when
evaluating macro calls in uncompiled elisp files.

Flycheck and flymake use byte-compilation to lint elisp files, exposing
users to this vulnerability. This commit attempts to protect users from
this by disabling both in elisp files that aren't part of a
project (because, presumably, untrusted elisp won't live in a project).
What a "project" is depends on your projectile settings, but generally
means a file that lives in a version controlled directory and/or a
directory containing a recognizable project root marker (like a
packages.json or Cargo.toml file).

This heuristic won't catch cases of untrusted elisp living within
legitimate projects, or the case where the user's $HOME is a project and
*all* their elisp files live under it, but there are already too many
ways to shoot yourself in the foot with Emacs to begin with, and
disabling fly(check|make) altogether stands a higher chance of making
people blindly re-enable them to "work around" the fact it's not
"working as expected", bringing them back to square one.

Anyhow, long story short, don't open elisp files you don't trust in
Emacs, mkay?

Ref: CVE-2024-53920
2024-12-05 16:25:54 -05:00
ec645b8381 fix(lib): 'unknown specializer record' error on Emacs <30
Seems the 'record' specializer wasn't introduced until Emacs 30, so
users on earlier versions will see this error on startup.

Fix: #8186
2024-12-01 15:48:52 -05:00
8072d62b4f refactor(cli): remove redundant setq
Already set in early-init.el (since c05e615).

Amend: c05e61536e
2024-12-01 11:49:39 -05:00
fca69c9849 release(modules): 25.01.0-dev
Ref: 2b39e41368
2024-12-01 11:31:40 -05:00
4a8f3bf033 fix(python): +python-executable-find ipython
+python-executable-find cannot find ipython since /bin/python is
hardcoded instead of using the parameter
2024-12-01 11:30:27 -05:00
dmr
52d1c208d4 feat(file-templates): add apply method
Factor template application code into command file-templates-apply.
This allows it to be invoked by the user.
2024-12-01 11:23:51 -05:00
05e34351ea fix(eval): double prompt when region sent to repl
The +eval/send-region-to-repl command was adding an extra newline when
sending regions to REPLs, causing double prompts to appear. This removes
the extra newline for cleaner REPL interaction across all language modes.

* modules/tools/eval/autoload/repl.el (+eval/send-region-to-repl):
remove concatenation of newline after region
2024-12-01 11:21:28 -05:00
7dddbcf793 fix(lib): native-comp-deferred-compilation-deny-list in sandbox 2024-12-01 11:14:46 -05:00
b9e436663b fix(cli): defcli-obsolete!: don't rely on lexical-binding
Emacs requires '-*- lexical-binding: t -*-' to be prefixed with an elisp
line comment (two semicolons), but due to our shebang shenanigans (which
are, unfortunately, necessary) starting this line with a :;, Emacs
ignores the `lexical-binding: t` at the top, thereby executing bin/doom
without lexical binding.

Until a better workaround is found, our CLI framework will have to
adapt. Fortunately, this only affects bin/doom and not any arbitrary
doomscript.
2024-12-01 01:59:03 -05:00
abedb71f96 refactor(cli): restructure doom profile commands
- Replace 'doom profiles sync' with 'doom profile sync --all'.
- Move lisp/cli/profiles.el to lisp/cli/profile.el.
- Move obsolete alias to bin/doom.
2024-12-01 01:57:46 -05:00
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
be6fcece3a fix(cli): doom gc
cli/gc.el accidentally snuck into 5e84709, along with a particular
v3-isms that doesn't belong in Doom yet, such as autoloads in CLI libs
and them providing subfeatures of doom-cli, rather than doom-cli-*.
These have been reversed for now.

Amend: 5e84709577
2024-12-01 01:20:41 -05:00
ec65616284 refactor(cli): add stubs for v3 commands 2024-12-01 01:20:41 -05:00
9c8ea37a2d refactor(cli): remove cli/packages.el
This file is mostly redundant. There is much more trimming/culling of
Doom's package API pending, but I'll save that for v3.
2024-12-01 01:20:38 -05:00
9aaefbe4ae refactor: remove redundant straight hacks
These were moved to doom-straight and renamed in 8cafbe4.

Amend: 8cafbe4408
2024-11-30 22:50:27 -05:00
3401492c84 refactor: deprecate letenv!
`letenv!` is a layover from the days before
`with-environment-variables` (introduced in 28.x), and it remained
afterwards because I preferred the shorter name. From v3 and onward,
Doom's core will be put on a diet which, among other things, will
include culling redundant or superfluous functions/macros like this one.
2024-11-30 22:50:27 -05:00
a39dd36e97 refactor: move templates/ to static/
To better reflect what this directory is intended to store (i.e. not
just templates).
2024-11-30 22:50:27 -05:00
201321c929 feat(lib): backport safe-local-variable-directories
Necessary to silence safe-local-variable warnings/prompts for $EMACSDIR
and $DOOMDIR, later.
2024-11-30 22:50:27 -05:00
da08aa2d7d feat(lib): backport major-mode-remap{,-alist}
Will be necessary for treesit.el support coming to the :tools
tree-sitter module later.
2024-11-30 22:50:27 -05:00
3b6e46ef00 feat(lib): move backports to doom-compat.el
Moves backports to new doom-compat library.

Also rolls out defbackport! calls, because it's unnecessary boilerplate.
2024-11-30 22:49:35 -05:00
bdc35faff2 tweak(sh): auto-mode-alist: generalize /*rc rule 2024-11-26 16:38:26 -05:00
94d967490f fix(sh): don't set mode-name in sh-mode derivatives
Also capitalizes the name, as this is the convention for mode names in
most major modes.

Fix: #8178
2024-11-26 15:05:49 -05:00
bf9249d002 docs: don't recommend doom/reload
Many users seem to treat `doom/reload` like a 1-to-1 replacement for
`doom sync` + restart Emacs (which it is not), and are surprised when it
fails to properly "reload" their config. I'm considering removing
`doom/reload` altogether for this reason, or turning it into a light
wrapper around `restart-emacs`, but for now I'll settle for recommending
it less in documentation and comments. The references in docs/*.org will
be dealt with later.
2024-11-25 20:28:45 -05:00