This commit's primary goal is allowing use of
[Corfu](https://github.com/minad/corfu) as an alternative to
[Company](https://github.com/company-mode/company-mode). It introduces a
module under `:completion` for this purpose, plus some conditionals on
other relevant modules to toggle functionality like lsp back-ends and
[Cape](https://github.com/minad/cape) capfs for certain modes.
Other optional or miscellaneous features include:
- Corfu is enabled in the minibuffer if `completion-at-point` is bound;
- Support for displaying the completion's documentation on a secondary
popup;
- Support for terminal display if :os tty;
- Support for icons if +icons;
editorconfig-call-editorconfig-exec was renamed+redesigned upstream. The
advice can no longer be trivially repurposed, so I'm removing it.
Ref: editorconfig/editorconfig-emacs@f8f1a899df
- Add another measure for preventing changes to tab-width in org-mode.
The hook introduced in 2757a97 runs too early and could be overwritten
by editorconfig.
- Fix the hook in 2757a97 to run much later, ensuring (as a last resort)
no other packages can overwrite tab-width either.
Amend: 2757a97a30
Ref: #7670
This makes load-order more predictable for users wanting to modify the
side-effects of citar-org-roam-mode or citar-embark-mode. I.e.
(after! citar-org-roam ...)
(after! citar-embark ...)
Instead of:
(after! (citar org-roam) ...)
(after! (citar embark) ...)
Ref: #7712
Co-authored-by: hpfr <hpfr@users.noreply.github.com>
Relevant portion of the dependency graph:
'oc-csl → 'citeproc → 'citeproc-itemgetters → 'org → 'org-keys → 'oc
The :after linked 'oc to 'oc-csl so 'org-keys could load 'org.
`+org-init-keybinds-h' could then execute before the body of 'org-keys,
so Org default bindings could clobber Doom bindings.
If the top-level 'org started the load sequence, `org-load-hook'
functions would execute last and key bindings would be correct, but
Doom’s deferred incremental loading of Org could lead to this scenario:
1. deferred incremental loader: (require 'org-src)
2. org-src.el: (require 'org-keys)
3. org-keys.el: (require 'oc)
4. oc.el: (provide 'oc): (require 'oc-csl) [via the :after this patch
removes]
5. oc-csl.el: (require 'citeproc)
6. citeproc.el: (require 'citeproc-itemgetters)
7. citeproc-itemgetters.el: (require 'org)
8. org.el: (require 'org-keys)
9. 'org-keys from step 8 finishes loading. Keys are bound.
10. 'org finishes loading. `org-load-hook' functions are run. Doom’s
keys are bound.
11. 'oc-csl finishes loading
12. 'org-keys from step 3 finishes loading. Keys are bound again,
overwriting any keys Doom bound in step 10.
13. 'org-src finishes loading
At some point, the deferred incremental loader will (require 'org), but
it is a feature as of step 10, so it does not load and its hooks do not
run again.
This was resolved upstream some time ago and is now a source of
errors (void-variable emacsql-sqlite-executable errors) if forge were
ever bumped (which it was, yesterday, in 1a05e2f).
Ref: magit/forge@398ca3a17a
Amend: 1a05e2fa64
This module had been deprecated for some years, because it's central
package (gist.el) has been non-functional and unmaintained for years.
This will later be replaced with a more general module (powered by
webpaste.el or similar) for interacting with pastebin
services (including gist).
BREAKING CHANGE: This deprecates the IS-(MAC|WINDOWS|LINUX|BSD) family
of global constants in favor of a native `featurep` check:
IS-MAC -> (featurep :system 'macos)
IS-WINDOWS -> (featurep :system 'windows)
IS-LINUX -> (featurep :system 'linux)
IS-BSD -> (featurep :system 'bsd)
The constants will stick around until the v3 release so folks can still
use it -- and there are still some modules that use it, but I'll phase
those uses out gradually.
Fix: #7479
#7513 changed the expected value of `ssh-deploy-on-explicit-save` to be
#an integer, but the default value was still `t`. This commit changes it
#to be `1`.
Amend: #7513
Suffix ssh-deploy-root-local's path with a trailing slash (to be
consistent with upstream documentation and the example value for
ssh-deploy-root-remote right below it).
Co-authored-by: visika <visika@users.noreply.github.com>
Ref: #7513
According to upstream package emacs-ssh-deploy, the value 0 should
disable the auto-save behavior. As the ssh-deploy-on-explicit-save is
considered true if its value is 0, it triggers the after-save-hook
anyway. This commit fixes the hook so it conforms to upstream
definition:
ssh-deploy-on-explicit-save Enabled automatic uploads on save (integer)
Co-authored-by: visika <visika@users.noreply.github.com>
Close: #7513Fix: #7512
The `eglot-events-buffer-size` setting disables the `eglot-events-buffer`
when 0, enabling more consistent performance on long running emacs
instance.
Default is 2000000 lines. After each new event the events buffer
is pretty printed as a whole, which causes steady performance decrease
over time.
Quite a bit of CPU is spent on pretty priting and Emacs GC is put under
high pressure.
BREAKING CHANGE: This commit replaces all-the-icons with nerd-fonts. Any
all-the-icons-* function calls or variable references in your private
config will break and should be replaced with their nerd-icons-*
equivalent. That said, Doom will continue to install all-the-icons for
a while, so feel free to load it if you don't want to fully commit to
the change yet.
This change is happening because nerd-icon has wider support for GUI and
TUI Emacs; has a larger, more consistent selection of symbols; plus unicode
coverage.
Fix: #7368Close: #6675Close: #7364