Commit graph

20631 commits

Author SHA1 Message Date
Andrew Peck
15d5525915 tweak(tree-sitter): use maintained systemverilog grammar
tree-sitter-verilog has unfortunately not been maintained for years.

Gonzalo maintains tree-sitter-systemverilog which boasts

- Full implementation of the latest SystemVerilog standard (IEEE 1800-2023)
- Robust and reliable: sv-tests results
- Actively maintained
- Implements node fields
- Supports parsing of code snippets (e.g., always block outside of a module)
- Basic preprocessing capabilities
- Thoroughly tested (~3000 tests) including:

verilog is strictly a subset of systemverilog so the systemverilog
grammar is backwards compatible with verilog features.

tree-sitter-verilog has significant issues and fails parsing many basic
verilog files.

I use tree-sitter-systemverilog daily and have had no issues since switching.
2026-03-06 02:46:23 -05:00
Henrik Lissner
85f6952dd1
fix(eval): +eval/send-region-to-repl: premature truncation
Fix: #8703
2026-03-06 02:39:13 -05:00
Henrik Lissner
08ab5d53b4
docs: update doomemacs repo urls
Close: #8695
Co-authored-by: kovan <kovan@users.noreply.github.com>
2026-03-05 22:48:55 -05:00
Henrik Lissner
a5552a701b
docs: doctor: do ripgrep check after loading $DOOMDIR
Now takes `doom-ripgrep-executable` into account.
2026-03-05 16:33:56 -05:00
Henrik Lissner
b87034c95d
docs: doctor: do non-POSIX shell check after loading $DOOMDIR
This allows user config to affect the result of the test (hiding it if
they've already addressed the issue).

Fix: #8136
2026-03-05 16:27:51 -05:00
Henrik Lissner
974e45dfd3
fix(javascript): use nodejs-repl-send-* commands
Now, +eval/send-region-to-repl or +eval:region/+eval:buffer will
communicate with the REPL via nodejs-repl's API, instead of feeding the
selection to the REPL line-by-line (the fallback method).
2026-03-04 21:39:18 -05:00
Henrik Lissner
d23abed66d
perf(magit): use /usr/bin/git on macos
Inexplicably, the built-in git on MacOS is many orders of magnitude
faster than the external builds provided by Homebrew/Macports, so use
that there. Emacs on MacOS needs all the (performance) help it can get
and, fortunately, the bundled git is 2.23 or newer on (at least) MacOS
10.15 (Catalina) and newer, so this should be a relatively safe bet
without the need for version checks.
2026-03-04 21:36:10 -05:00
Henrik Lissner
d23bbe8772
fix(evil): +evil--use-evil-registers-a: recursive advice
Prevent `get-register`s advice from affecting the `get-register` call in
`evil-get-register` in `+evil--use-evil-registers-a`.

Ref: #8698
Fix: #8699
Amend: 88e2a0d5de
2026-03-04 04:06:58 -05:00
Henrik Lissner
fd4a8d99ea
fix(use-package): use-package-ensure-function (part 2)
It's too easy for `package--initialized` to be set accidentally (if the
user loads straight or uses Doom's package API, which inevitably calls
doom-initialize-packages). Instead, package--activated is a better
heuristic because users who *want* package.el will call package-install
without suppressing activation.

Amend: eccde78741
2026-03-04 02:21:29 -05:00
Henrik Lissner
e11816e711
fix: doom-initialize-packages: don't activate package.el
This function should not be used as a substitute for
`package-initialize`, to activate packages installed via package.el,
this is solely for metadata for Doom's package manager.
2026-03-04 02:21:19 -05:00
Henrik Lissner
c95dcfee43
perf(magit): minor optimizations
- Resolves `magit-git-executable` ahead of time. We used to do this, but
  back then, magit used `magit-git-executable` in TRAMP sessions too.
  Now, magit has a separate `magit-remote-git-executable` variable.
- Only invalidate projectile cache if the magit status buffer's contents
  has changed. This will prevent excessive (and potentially expensive)
  `projectile-invalidate-cache` calls for trivial changes, l
- Avoid changing the active buffer when fetching a specific variable
  from a buffer is enough (more cpu/mem efficient).
- Don't adjust the fringe if the fringes are already the requested size.
2026-03-03 23:40:35 -05:00
Marien Zwart
dc7c43b6d3 refactor: use supported recentf-auto-cleanup value
We were setting recentf-auto-cleanup to nil, which is not one of the
supported values in its defcustom type.

Set it to `'never` instead. This has exactly the same effect (recentf
only references `recentf-auto-cleanup` from a `cond` statement, which
does nothing for both values), but we might as well future-proof.

Clean up a duplicate assignment while I'm there.

Noticed because I had copied this into my personal config at some
point (to disable Doom's periodic save in daemon sessions) and recently
converted that config to use `setopt`, which complained.
2026-03-03 18:26:05 -05:00
Marien Zwart
a6c57fd4fd fix: save after recentf-cleanup on exit
Doom adds `recentf-cleanup` to `kill-emacs-hook`, but that function only
cleans up `recentf-list` without saving it to disk: saving is handled by
`recentf-save-list`. `recentf-mode` adds `recentf-save-list` to
`kill-emacs-hook` as well... but it only adds that hook when
`recentf-mode` is enabled, which means `recentf-save-list` ends up
before `recentf-cleanup` on `kill-emacs-hook`, rendering the cleanup
ineffective.

This is normally barely noticable, but with many paths on (slow) network
filesystems on `recentf-list` the cleanup can get slow enough to be
annoying.

Fix it by passing a priority to `add-hook`.

This leaves an ineffective cleanup call if we exit Emacs with
recentf-mode disabled, but that should normally only happen if we exit
Emacs without opening a file (`doom-first-file-hook` enables
recentf-mode). If that's an issue, we could add a function to
`recentf-mode-hook` which in turn adds to `emacs-term-hook`, but that
seems too complicated for little gain.
2026-03-03 18:26:05 -05:00
Henrik Lissner
dc0fc9d4f4
tweak(syntax): configure flymake even without +flymake
Some major modes may only have a flymake checker (like beancount-mode),
and since flymake is built into Emacs, it's possible the user may
encounter `flymake-mode` even when they haven't enabled +flymake for
this module, so at least load its flymake config.
2026-03-03 18:22:13 -05:00
Henrik Lissner
6556a79abc
revert: polymode
polymode/polymode@4604f55cc0 -> polymode/polymode@14b1fd8d2a

polymode/polymode@4604f55cc0 introduced breakage. Reverting until
polymode/polymode#367 is merged.

Fix: #8702
Ref: polymode/polymode@4604f55cc0
Ref: polymode/polymode#367
Amend: 680d135062
2026-03-03 18:19:26 -05:00
Henrik Lissner
c174b25d57
fix(syntax): {next,previous}-error
- Makes {next,previous}-error search the current-buffer before looking
  for others (#1908, #2497).
- Makes {next,previous}-error recognize flymake errors.

Fix: #2497
Fix: #1908
2026-03-03 18:11:42 -05:00
Henrik Lissner
eccde78741
fix(use-package): use-package-ensure-function
Doom is configured to ignore :ensure in `use-package`, unless the user
has manually called `(package-initialize)` -- in which case, we assume
the user genuinely *wants* to use package.el, or some reason.
2026-03-03 06:57:35 -05:00
Henrik Lissner
7f17dcf09a
fix(cli): doom emacs: use --init-directory if available
Emulating --init-directory has issues (e.g. isn't exposed to the *exact*
same $HOME environment), so if it's available (i.e. if Emacs 29+ is
being used or Doom lives in ~/.emacs.d or ~/.config/emacs), then use it.
This makes the 'doom emacs' command faster and more reliable as a launch
pad for Doom.
2026-03-03 06:34:45 -05:00
Henrik Lissner
013c5f5a28
revert: bump: package-lint
purcell/package-lint@1c37329703 -> purcell/package-lint@HEAD

The upstream issue was resolved.

Ref: #8286
Ref: purcell/package-lint#285
Ref: purcell/package-lint#287
Revert: 04cd16a5cd
2026-03-03 03:32:43 -05:00
Henrik Lissner
d2d805a42b
fix(org): C-c TAB not bound to org-ctrl-c-ctrl-c
This is because Emacs can't differentiate between C-i and TAB. Doom
creates a special input event for <C-i> to distinguish them (which only
works in GUI Emacs), so I moved this keybind there.

Fix: doomemacs/community#79
2026-03-03 00:30:27 -05:00
Henrik Lissner
51fe3798b2
docs: doctor: improve $HOME project root check
The check will now list the exact project root files that it finds and
better explain the solution.
2026-03-03 00:11:19 -05:00
Henrik Lissner
a2e0e9c8cf
docs: doctor: revise emacs versions checks
- Simplifies development build check explanation.
- Removes the 27 check, because Doom core will continue to support 27+
  for the foreseeable future, but Doom's modules will be dropping 27 and
  28 support soon, but that check will be done elsewhere.
2026-03-03 00:06:51 -05:00
Henrik Lissner
dc20cc7901
refactor: minor revisions
To appease the byte-compiler or simplify.

Getting these small edits out of the way to simplify v3 merge conflicts.
2026-03-02 19:51:19 -05:00
Henrik Lissner
2105bf59c3
nit: minor reformatting & revise comments
Getting these small edits out of the way to simplify v3 merge conflicts.
2026-03-02 19:50:51 -05:00
Henrik Lissner
68ed966569
refactor(vc): remove +vc--compat-31-a
This was addressed upstream.

Ref: rmuslimov/browse-at-remote@0aec68dc0e
Amend: 70dfafdd57
2026-03-02 19:47:35 -05:00
Henrik Lissner
6c0881c684
nit: revise TODO/FIXME/HACK/REVIEW/etc in comments
Some were outdated, some were incorrectly labeled, others were already
completed, some were missing... Gotta fix them all.

Also, in :ui hl-todo, there are comments that describe how Doom uses
each of these annotations; those have been updated.
2026-03-02 19:45:09 -05:00
Henrik Lissner
680d135062
bump: :lang
50ways2sayhard/dart-ts-mode@ab87873f25 -> 50ways2sayhard/dart-ts-mode@0e42336bf7
JuliaEditorSupport/julia-emacs@aadf29523a -> JuliaEditorSupport/julia-emacs@1478898ea0
agda/agda@5cf984c3d2 -> agda/agda@6310545817
bricka/emacs-kotlin-ts-mode@051c9ef534 -> bricka/emacs-kotlin-ts-mode@b318a64a7f
clojure-emacs/cider@ae247d8845 -> clojure-emacs/cider@75dc57aebe
clojure-emacs/clojure-mode@bddba12e96 -> clojure-emacs/clojure-mode@f44ea50308
clojure-emacs/clojure-ts-mode@96fdffcbe9 -> clojure-emacs/clojure-ts-mode@f47fefb5d7
cpitclaudel/company-coq@78ed04ce39 -> cpitclaudel/company-coq@1fc1d8f2d5
davazp/graphql-mode@ef757c6ce2 -> davazp/graphql-mode@d7f105a4bf
emacs-jupyter/jupyter@de89cbeca8 -> emacs-jupyter/jupyter@242fdc709c
emacs-lsp/lsp-dart@fd82395180 -> emacs-lsp/lsp-dart@166e4f2ba1
emacs-rustic/rustic@cb013cd217 -> emacs-rustic/rustic@eea94386bf
emacs-straight/auctex@1939acb54b -> emacs-straight/auctex@f0c4b1dcc9
erlang/otp@f80e9c1c4a -> erlang/otp@ea2bfd02be
hvesalai/emacs-sbt-mode@cc68728a6e -> hvesalai/emacs-sbt-mode@c353df6aa1
jrblevin/markdown-mode@9de2df5a9f -> jrblevin/markdown-mode@f8d1be7cd5
mekeor/nael@3ee1cf286d -> mekeor/nael@fbfb675736
nix-community/nix-emacs@053a2d5110 -> nix-community/nix-emacs@e241b58c9e
nix-community/nix-ts-mode@625306cf9c -> nix-community/nix-ts-mode@3198317121
ocaml/dune@7a7d49206f -> ocaml/dune@141393af40
ocaml/merlin@1c4148af05 -> ocaml/merlin@fad4a2785c
org-roam/org-roam@b4857fd7a1 -> org-roam/org-roam@7cd906b6f8
polymode/polymode@14b1fd8d2a -> polymode/polymode@4604f55cc0
rust-lang/rust-mode@f68ddca5c2 -> rust-lang/rust-mode@668069ad8b
2026-03-02 19:45:08 -05:00
Henrik Lissner
04701547b1
bump: :completion :ui :tools
company-mode/company-mode@fad9f207e0 -> company-mode/company-mode@42d3897308
dgutov/diff-hl@3eefe68941 -> dgutov/diff-hl@bb9af85441
dimitri/switch-window@8f771b571a -> dimitri/switch-window@a72cf11d21
jacktasia/dumb-jump@215e2ed9ab -> jacktasia/dumb-jump@8c97b2afc2
karthink/gptel@d221329ee3 -> karthink/gptel@63795dee75
magit/ghub@278d9fb5f3 (5.0.3) -> magit/ghub@c22858596c (5.0.4)
magit/orgit@24c8fe48c4 (v2.1.1) -> magit/orgit@4fb91faff3 (v2.1.2)
minad/marginalia@0d08fbea0f -> minad/marginalia@142e4da1bd
oantolin/embark@7b3b2fa239 -> oantolin/embark@e0238889b1
seagle0128/doom-modeline@0c91e47a0c -> seagle0128/doom-modeline@8806358185
2026-03-02 19:45:08 -05:00
Henrik Lissner
a3b1be0121
refactor(org,magit): move orgit{,-forge} to :tools magit 2026-03-02 19:45:08 -05:00
Henrik Lissner
b01e8c9572
refactor(org,pdf): move org-pdftools to :tools pdf 2026-03-02 19:45:08 -05:00
Henrik Lissner
470e653f08
bump: :app :config :editor :emacs :email :input
emacs-straight/use-package@039b721a4d -> emacs-straight/use-package@4090d3267f
emacsmirror/undo-fu-session@34ae31308d -> emacsmirror/undo-fu-session@92d733a5b1
https://git.notmuchmail.org/git/notmuch@5c921b6c0b2d -> https://git.notmuchmail.org/git/notmuch@73746c0eb3a0
https://git.savannah.gnu.org/git/emms.git@1d48a1133db2 -> https://git.savannah.gnu.org/git/emms.git@002a8db0913c
https://github.com/emacs-tree-sitter/treesit-fold@c5f0a95550d1 -> https://github.com/emacs-tree-sitter/treesit-fold@d70c5f7240a8
jeremy-compostella/org-msg@327768e2c3 -> jeremy-compostella/org-msg@aa608b3995
juliapath/evil-numbers@e7adac70a0 -> juliapath/evil-numbers@616aff9e5c
kidd/org-gcal.el@36cbdb453d -> kidd/org-gcal.el@0f46c08f60
radian-software/apheleia@143c1dffed -> radian-software/apheleia@2bc2bb4cc2
skeeto/elfeed@66cfe43dfc -> skeeto/elfeed@bbb3cac27b
tumashu/posframe@4fc893c3c9 -> tumashu/posframe@3a80911b2f
2026-03-02 01:44:27 -05:00
Henrik Lissner
a55d6ad958
bump: :doom
bbatsov/projectile@7cb1f64c1d -> bbatsov/projectile@4469d33f49
emacs-straight/project@ff700457fe -> emacs-straight/project@11a821c652
2026-03-02 01:39:49 -05:00
Henrik Lissner
9f00e2e816
release(modules): 26.04.0-dev
Ref: 2b39e41368
2026-03-02 01:39:49 -05:00
Henrik Lissner
c21b80d7ff
fix(debugger): remove dap-mode packages
dap-mode and posframe were removed from this module in e0729fa, but not
their `package!` statements. Oops.

Amend: e0729fa7d7
2026-03-02 01:39:48 -05:00
Henrik Lissner
f4d970fdf8
fix(lib,workspaces): arity error on persp-after-load-state-functions
`persp-after-load-state-functions` functions must take arguments, but
`doom-kill-childframes-h` didn't take any, causing errors when loading
persp-mode sessions.

Fix: #8700
Amend: e5bbae8144
2026-03-02 01:18:14 -05:00
Henrik Lissner
994b7be3df
refactor(direnv): remove +direnv--load-info-a
This hack is no longer needed because the issue was resolved upstream.

Amend: 9de72537be
Ref: purcell/envrc#117
2026-03-02 01:18:14 -05:00
Henrik Lissner
605437b8b8
fix(direnv): restart lsp/eglot clients on reload/allow/deny
Makes `envrc-reload`, `envrc-reload-all`, `envrc-allow`, or `envrc-deny`
restart any running lsp/eglot clients within the current direnv, so that
they reflect the new environment.
2026-03-02 01:18:11 -05:00
Henrik Lissner
da36f15296
fix(llm): don't clone gptel recursively
Otherwise, gptel will have a dirty worktree every time you update it.
2026-03-01 18:15:38 -05:00
Henrik Lissner
10d0b60f5d
refactor(lib): deprecate pushnew!
In the spirit of 6f40ad5, I'm deprecating this macro because it doesn't
provide enough value to exist and serves only to complicate a casual
reader's understanding of Doom's modules.

Ref: 6f40ad55f5
2026-03-01 18:10:43 -05:00
Henrik Lissner
2c42e47a30
nit(evil): reformat & revise comments
Tidy up in preparation for bigger changes post-v3.
2026-03-01 18:10:43 -05:00
Henrik Lissner
3d61a7b487
refactor(vertico): rename +vertico-highlight-* functions
To conform to Doom's naming conventions for strategy functions.
2026-03-01 18:10:43 -05:00
Henrik Lissner
c3ff78ff53
nit(vertico): reformat & revise comments
Tidy up in preparation for bigger changes post-v3.
2026-03-01 18:10:43 -05:00
Henrik Lissner
88e2a0d5de
feat(evil,vertico): merge evil's into emacs' registers
Makes Emacs more broadly aware of Evil's registers (when Evil is
active), and fixes an issue where our advice integrating
`consult-register` with Evil registers would properly list Evil
registers, but not fetch/insert them correctly (#8698).

Fix: #8698
Close: #8699
Co-authored-by: liaowang11 <liaowang11@users.noreply.github.com>
2026-03-01 18:10:43 -05:00
Henrik Lissner
a9af7810fe
refactor(vertico): rename +vertico/embark-doom-package-map
To conform with naming conventions. "/" is meant for names of
interactive functions, which this is not.
2026-03-01 18:10:43 -05:00
Henrik Lissner
f859850130
nit: fix indent for hl-line config 2026-03-01 18:10:43 -05:00
Henrik Lissner
e5bbae8144
feat(lib): introduce doom-kill-childframes-h
And use it to replace the various `posframe-delete-all` hooks littered
about to clean up child/posframes in contexts where they may linger
after destructive operations (like changing the active workspace or
executing `doom/reload`).
2026-03-01 18:10:42 -05:00
Henrik Lissner
4425bd898f
perf(vertico): cache doom-project-root w/ marginalia
`doom-project-root` call `projectile-project-root`, which can be an
expensive operation. Overriding `marginalia--project-root` (which could
get called many hundreds of times each time marginalia renders its
annotations) with `doom-project-root` directly could grind marginalia to
a crawl (particularly in file/directory browsing workflows), so I take a
page out of `marginalia--project-root`s original implementation and
cache the root.
2026-03-01 18:10:42 -05:00
Henrik Lissner
e2bdb43bf6
fix(cli): doom emacs: forward $HOME using environment
Rather than hardcoding the envvar assignment into the shell command,
whose syntax isn't portable (see #8697).

Fix: #8697
2026-03-01 18:10:42 -05:00
Henrik Lissner
d9014ec4c5
fix: copy initial-value for load-path, exec-path, process-environment 2026-03-01 18:10:42 -05:00
Henrik Lissner
2428689f3b
fix(evil): appease byte-compiler (unused var) 2026-03-01 18:10:42 -05:00