BREAKING CHANGE: This moves smartparens out of core and formally
deprecates it. The package has been a performance liability and is only
being used for pair management, so the rest of its functionality was
overkill for what we needed it for.
Instead, I'm waiting for electric.el's support for N-character pairs in
Emacs 31. In the meantime, I delegate to yasnippet (later, tempel)
snippets to handle more complex pairs like /* ... */ or <?php ... ?>.
- To restore auto-pairing functionality (which is all Doom was using
smartparens for, really), enable :emacs (electric +pair). This is not
a perfect replacement for all of smartparens' capabilities. More
complex pairing is being relegated to snippets (for example, /* ... */
and <?php ... ?> comment blocks will soon have snippets for them).
- To restore the old smartparens functionality, enable :config (default
+smartparens). Keep in mind that this is temporary! In v3, smartparens
will be removed entirely OR moved to its own module; this hasn't been
decided yet.
Fix: #5759Fix: #5894Fix: #6223Fix: #8093Fix: #8620
BREAKING CHANGE: (Some) LSP clients and python code formatters (like
ruff-isort) handle organization of imports better, so I'd rather lean on
them than on niche, unmaintained third party dependencies.
For dictating what buffers are considered real based on their major
modes.
Also makes most terminal emulator or comint-mode buffers real by
default.
Fix: doomemacs/community#73
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