Emacs 29 introduced a `restart-emacs` command that is more reliable, but
it cannot restart Emacs with arbitrary arguments, which the old
`restart-emacs` library could. Without this capability,
`doom/restart-and-restore` is not trivially (or elegantly) possible, and
I can't justify a whole extra dependency just to support that,
especially in my pursuit to slim down Doom's core.
This commit also removes the doom/upgrade command, which is an awkward
and fickle command to support across platforms (too many edge cases).
If a popup's rule contains :quit nil or :quit 'other, +popup/close will
do nothing, which isn't an appropriate substitute for quit-window, so
force it.
Amend: 29bc91bca5Fix: #8650
tuareg sets comment-continue to " * ", causing comment-indent-new-line
to insert ** on new lines inside comments. OCaml convention is to not
prefix continuation lines with *. Set comment-continue to nil instead.
The custom +ocaml/comment-indent-new-line wrapper is no longer needed.
Fix: #5194
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The :k(ill) ex command referenced `doom/kill-current-buffer`, which
doesn't exist. Replace with `kill-current-buffer`, matching every other
kill-buffer binding in the codebase (zx, SPC b k, q, etc.).
Fix: #6341
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
`+python-executable-find` hardcodes `bin/` as the virtualenv
executable directory, but Windows virtualenvs use `Scripts/`.
Ref: #5826
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
When `electric-quote-mode' is enabled with smartparens, the
`electric-quote-inhibit-functions' check (e.g. `org-in-src-block-p')
fails because smartparens' post-self-insert handler runs first and
interferes with buffer state. Re-add the electric-quote handler at
depth -50 so it runs before smartparens (depth 0).
Fix: #5051
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
And removes redundant rule (now covered by the `doom-temp-buffer-p`
check).
Also fixes an issue where org-agenda loses fontification due to
indent-bars-mode (#8681).
Fix: #8681
The `defadvice!' overriding `undo-tree-visualizer-show-diff' was placed
inside `(use-package! undo-fu ...)' which has `:unless (modulep! +tree)'
— so it only loads when undo-tree is NOT active. The fix never runs.
Move it to `(use-package! undo-tree ...)' where it belongs. Also add an
override for `undo-tree-visualizer-update-diff' that removes the
`balance-windows' call which conflicts with Doom's popup system.
Fix: #8521
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
`evil-ex-search' (used by `n'/`N') calls `isearch-range-invisible'
which temporarily opens fold overlays to check visibility, but never
calls `isearch-clean-overlays' to restore them. This corrupts org-fold
overlay state, making subtrees permanently unfoldable with TAB.
The initial `/` search properly cleans up via
`evil-ex-search-stop-session', but repeated `n'/`N' navigation skips
this step. Add `:after' advice to call `isearch-clean-overlays'.
Ref: emacs-evil/evil#1630
Fix: #8625
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
If editorconfig changed the indent settings after
`+whitespace-highlight-incorrect-indentation-h` fired, whitespace-mode
does not update its highlights, so it must be triggered manually.
Fix: #8573Close: #8655
The `line-spacing` variable can be set to a cons cell of the form
`(ABOVE . BELOW)`. The old logic did not account for this.
This is corrected by summing the `car` and `cdr` of `line-spacing` when
it is a cons cell to get the total vertical spacing. This logic is
adopted from `total-line-spacing` introduced with the added support of
[cons line-spacing in emacs 31][1]
[1]: e8f26d554b
There's little reason for users to use these macros in their private
configs over plain ol' `with-eval-after-load` and `use-package`, unless
they're writing their own modules.
It's my fault for signal boosting them in documentation and whenever I'm
asked for help, because beginners now believe they are somehow
required for Doom to work correctly (there are guides out there
telling beginners that migrating to Doom involves replacing all
instances of `with-eval-after-load` and `use-package` in their
pre-existing configs with `after!` and `use-package!` -- which was never
true).
What's more, I plan to replace `use-package`, internally, so the
`use-package!` macro won't exist for much longer.
Way back, I added these three pseudo-features:
(featurep 'dynamic-modules)
(featurep 'harfbuzz)
(featurep 'jansson)
Why? Because some build features have pseudo features (like
`tty-child-frames`, `pgtk`, and `threads`), but others don't, and I
wanted more consistency around build feature detection. Years later, I
realized it wasn't used much internally and only ended up confusing
readers who didn't realize these were Doom's additions and not built
into Emacs. Emacs' idiosyncrasies may not be nice or elegant, but
they're less surprising to elisp beginners and veterans alike.
Newer versions of MacOS seem to struggle with the async processes
diff-hl frequently spawns when `diff-hl-flydiff-mode` is active, so the
mode will be disabled by default in MacOS environments.
Fix: #8554