We previously implemented only consult/vertico as a target for export,
now we have all of them. It was necessary to use case-by-case
conditions, unfortunately, because other UIs have subtle quirks that
prevent a single generalized approach to work.
Ivy is almost compliant, but it needs beg and end to not be markers.
Helm doesn't replace `completion-in-region-function`, it expects to go
around the default `completion--in-region`, so a small addition was made
to its module, because we weren't doing that. This was likely an
oversight due to the non-standard usage. This was fixed here because we
need it working for this feature.
Ido doesn't implement `completion-in-region` and its `completing-read`
is retricted to a list of strings as table, so it's treated the same as
absence of a framework, because it lacks the needed features.
An issue when using corfu in the minibuffer was the need for pressing
RET twice, since the first only inserts the completion. This commit
aliviates that by providing C-RET to ignore completion and conclude the
minibuffer imediately and S-RET to insert completion then conclude.
Bindings were moved to the `:config default` module and some keys were
adjusted to match Company/other modules. The changes were documented in
the README.
This removes the old `&` separator for Vertico (does anyone use that
instead of just space?) in favor of escapable space and unifies
orderless config with Corfu. Also implements smart separator
insert/escape/reset on `C-SPC`
Co-authored-by: Liam Hupfer <liam@hpfr.net>
Add various CAPFs from cape:
- `cape-dabbrev`;
- `cape-emoji`;
- `cape-dict`;
Fixed some CAPFs via cape:
- Make non-exclusive, purified and silent `pcomplete-completions-at-point`;
- Make non-exclusive and non-interruptable `lsp-completion-at-point`;
- Make non-exclusive `eglot-completion-at-point`;
- Make non-exclusive `comint-completion-at-point`;
Fix and improve keybindings:
- Smart `DEL`/`backspace` for `+tng`;
- Smart `RET`;
Add depth to CAPFs, allowing ordering to be adjustable.
Enable in minibuffer.
Yasnippet is now properly integrated! A previosly-unset default has now
been given to `corfu-on-exact-match`. With snippets, it causes immediate
expansion upon single match by default, so we set it to nil and
recommend against changing it in the README.
This commit's primary goal is allowing use of
[minad/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
[minad/cape](https://github.com/minad/cape) capfs for certain modes.
Other optional or miscellaneous features include:
- Support for displaying the completion's documentation on a secondary
popup;
- Support for terminal display if :os tty;
- Support for icons if +icons;
- Support for tab-and-go completion if +tng;
mu4e-quit now takes an optional argument, BURY, which is a boolean that
determines whether to bury the buffer or kill it. This commit updates
the advice to reflect this change.
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
I will slowly phase out projectile in favor of project.el, starting with
projectile-find-other-file, which -- as of Emacs 29 -- has a native
alternative: `find-sibling-file`.
Ref: doomemacs/community#1
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>
* feat(vertico): completion highlights a la ivy
Adds completion highlighting that works similarly to ivy/counsel's
one (which is enabled by default). It'll highlight enabled major/minor
modes and directories in a different face. On by default.
Ref: https://github.com/minad/vertico/wiki#candidate-display-transformations-custom-candidate-highlighting
* fix(vertico): major mode not being highlighted
The major mode was not being highlighted correctly;
it should work now that the buffer is set correctly in
`+vertico-highlight-enabled-mode`.
* fix(vertico): make font lock prioritize match over type
The mode and directory highlights were [overriding the match
font-lock](https://github.com/doomemacs/doomemacs/pull/7706#issuecomment-1977722188).
This should resolve that by prioritizing the match font lock using
`'append` on `add-face-text-property` instead of `propertize`.
We should always bind to both "TAB" and "<tab>" - if they have been
mapped to different commands anywhere, Emacs will no longer treat them
as equivalent.
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.
Recently, org-mode made a non-standard tab-width an error state.
Unfortunately, it's way too easy for users to accidentally change
it (e.g. with editorconfig, indiscriminate setter hooks, or other
packages), and since there is zero reason to ever want a non-standard
tab-width in org-mode, I not only exclude it from dtrt-indent as a
global default (i.e. not only as part of :lang org), but I add a late
org-mode-hook hook to reset tab-width, just in case.
rust-lang/rust-mode@HEAD -> rust-lang/rust-mode@f74dd1cd87
- rust-lang/rust-mode@08cea61 introduced some clumsy autoloads that will
cause treesit and rust-ts-mode (and more in later commits) to be
eagerly loaded at startup. This causes other problems, but the primary
issue is that it causes errors at startup or when installing
rust-mode (#7698), which this bump addresses. Eager-loading will have
to be addressed upstream.
Ref: rust-lang/rust-mode@08cea61390Fix: #7698
Since we've remove all-the-icons, doom-themes-neotree-config will no
longer work properly, so I disable it for now (not a complete solution
though; we still need proper nerd-icons support for neotree).
Fix: #7634
Ref: #7664
A subtle change in the way org-toggle-checkbox handles its prefix
argument changed how RET (+org/dwim-at-point) handled list
checkboxes (incorrectlying swapping [ ] with [-], but not back, unless
the cursor was directly on top of the checkbox).