Commit Graph

1087 Commits

Author SHA1 Message Date
b3ef202451 refactor(corfu): conform to naming conventions 2024-07-13 19:38:20 -04:00
ce84690dc5 feat(evil): vim completion keybinds on C-x
Vim has a set of completion commands bound to the C-x prefix. We had
this for company, but with this commit, we now have them for the corfu
module.
2024-07-13 19:38:20 -04:00
234cc27b77 fix(ivy): +counsel-rg-suppress-error-code-a
Corrects the signature of process-exit-status.

Amend: 6ef86098cb
2024-07-10 04:02:21 -04:00
6ef86098cb fix(ivy): counsel-rg dying on non-zero exit code
Monkey-patches counsel-rg to ignore non-zero exit codes. This may have
other side effects, but despite it still producing workable resutls, the
command will discard all its results if there are any errors while
scanning a directory.

Ref: abo-abo/swiper#2339
Fix: #3038
2024-07-10 03:55:03 -04:00
481753bd5e refactor!: remove pcre2el package
BREAKING CHANGE: This removes the pcre2el package, which Doom was using
solely for one function to escape PCREs. In the interest of thinning out
Doom's core, I've hoisted a simpler version of the function into Doom's
stdlib so I can remove the dependency.
2024-07-01 18:11:34 -04:00
3cb9f17132 merge: pull request #7739 from LemonBreezes/corfu-update-smart-tab
feat(corfu): update smart tab completion
2024-06-30 15:24:52 -04:00
cffb3838ec bump: :completion
abo-abo/swiper@1f88e54990 -> abo-abo/swiper@2a25a6fb5b
company-mode/company-mode@b0a522ac5b -> company-mode/company-mode@1a0fc12a9c
elken/yasnippet-capf@9043f82751 -> elken/yasnippet-capf@744dedb783
emacs-helm/helm@28f62344fe -> emacs-helm/helm@f8949afd9b
karthink/consult-dir@3f5f4b71eb -> karthink/consult-dir@15891383f3
minad/cape@e01e443023 -> minad/cape@f61da109a9
minad/consult@c87b0bf06d -> minad/consult@fe48522800
minad/corfu@35cd5a0f3c -> minad/corfu@cdc3e13ad3
minad/marginalia@3275d1f85c -> minad/marginalia@da72da4622
minad/vertico@68e51fda55 -> minad/vertico@ba650a7ab9
oantolin/embark@d3c9d1b4c8 -> oantolin/embark@9c166c4b96
oantolin/orderless@ac4aeb66f3 -> oantolin/orderless@53f5204ad3
radian-software/prescient.el@c39bf07c56 -> radian-software/prescient.el@0765418e43
seagle0128/nerd-icons-ivy-rich@7197614b27 -> seagle0128/nerd-icons-ivy-rich@86a896bb48

Close: #7862
Fix: #7863
2024-06-20 18:28:12 -04:00
390f5920a2 Merge branch 'master' into corfu-update-smart-tab 2024-04-12 13:45:44 -05:00
cfb860f71a doc(corfu): update troubleshooting section 2024-04-12 13:24:58 -05:00
96e3255c33 nit: reformat+revise comments
Includes minor refactors to appease the byte-compiler or use more
succinct (but equivalent) syntax.
2024-04-09 12:39:51 -04:00
42de6282f4 tweak(helm): helm-always-two-windows = t
Don't comandeer the entire frame for helm commands.
2024-04-08 21:20:08 -04:00
a4b7aa1c56 fix(helm): helm-descbinds-disable-which-key = nil
Otherwise, helm-descbind throws errors if which-key is enabled. Setting
prefix-help-command seems to resolve the incompatibility (more testing
is needed).

Ref: emacs-helm/helm-descbinds@ca03f02da4
Ref: emacs-helm/helm-descbinds@14d1929d54
Amend: 52599ab536
2024-04-08 19:53:46 -04:00
a8d612385f tweak(corfu): update dabbrev-ignore-buffer-modes
The Corfu documentation has been updated to suggest more modes to ignore
with `dabbrev-ignore-buffer-modes`. This commit updates the list of
modes to ignore in `cape-dabbrev` to match the documentation.
2024-04-08 18:59:49 -04:00
4f07e83b6e fix(vertico): missing command error in consult
Although it is rare for a user to not enable the :config default module,
enabling/disabling modules one-by-one is common practice for debugging
Doom Emacs. This PR fixes an error that occurs when you have :completion
vertico enabled without enabling :config default.
2024-04-06 00:14:47 -04:00
f79bb46c9b fix(corfu): prevent void-variable error
Although this error will not be triggered by most people, since
auth-source is loaded by a lot of packages, it can still happen if you
are debugging your configuration (e.g. enabling/disabling modules
one-by-one).
2024-04-06 00:14:09 -04:00
fb96c8df5a refactor(corfu): use hook symbols in add-hook! calls
A common challenge for beginners is distinguishing packages, modes, and
hooks, and since Doom's source code is meant to second as another layer
of documentation, I prefer to be explicit with hook symbols in
`add-hook!` calls (at least, for internal/module use).
2024-04-05 12:06:02 -04:00
52599ab536 bump: :completion
abo-abo/swiper@8c30f4cab5 -> abo-abo/swiper@1f88e54990
company-mode/company-mode@02903bd708 -> company-mode/company-mode@b0a522ac5b
emacs-helm/helm-descbinds@b725159823 -> emacs-helm/helm-descbinds@ca03f02da4
emacs-helm/helm@f34ea6b702 -> emacs-helm/helm@28f62344fe
minad/cape@a397a0c92d -> minad/cape@e01e443023
minad/consult@b48ff6bf05 -> minad/consult@c87b0bf06d
minad/corfu@c1e7b6190b -> minad/corfu@35cd5a0f3c
minad/marginalia@f6fe86b989 -> minad/marginalia@3275d1f85c
minad/vertico@68cbd47589 -> minad/vertico@68e51fda55
oantolin/embark@c93abadc82 -> oantolin/embark@d3c9d1b4c8
oantolin/orderless@dc7a781acf -> oantolin/orderless@ac4aeb66f3
radian-software/prescient.el@4b875be52e -> radian-software/prescient.el@c39bf07c56
sebastiencs/company-box@b6f53e26ad -> sebastiencs/company-box@c4f2e243fb
2024-04-03 17:21:16 -04:00
22fa4ccac7 tweak(vertico): consult-dir: use projectile 2024-04-01 13:44:25 -04:00
1598444bd9 docs(corfu): disabling auto-completion
Close: #7749
Co-authored-by: 45mg <45mg@users.noreply.github.com>
2024-04-01 13:34:37 -04:00
cfdae2365c feat(corfu): update smart tab completion
This commit updates the smart tab functionality so that:
1. The only functionality checked is for the modules that are enabled.
2. The priority of the TAB behavior is tunable by the user.

This also updates the TAB behavior for the Corfu module to be
`indent-for-tab-command` instead of `completion-at-point` so that users
can use the TAB key to indent their code and navigating Org tables.

We also address #7372 by checking overriding-terminal-local-map, as that
is used by Embark.
2024-04-01 07:55:13 -05:00
b533f5496c tweak(corfu): corfu-auto-delay: 0.1 -> 0.18
At 0.1, Corfu pops up too aggressively and too often, even for fast
typists. This is especially disruptive with slow backends that might
block Emacs. I think 0.18-0.24 is the goldilocks zone, so I'll start
with 0.18, and maybe increase it later.
2024-03-28 16:58:28 -04:00
18c88621a4 refactor(vertico): don't use bind-key
This is the only internal usage of :bind, which I want to avoid, because
it pulls in bind-key, which offers no real benefit over just about any
other key binding function or macro, so I'd rather use what is already
available (like map!).
2024-03-24 18:03:12 -04:00
a83091469b docs(corfu): debugging cape-dabbrev 2024-03-21 11:29:50 -04:00
2bdeabb0cf refactor(corfu): consolidate +orderless logic without vertico
This tidy ups the corfu module to use the logic when a user enables
corfu +orderless without enabling vertico. Since that's probably a niche
situation, we only specify commit to pin to orderless in the vertico
module so that contributors aren't tripped up with trying to remember to
update orderless in two different code locations. Of course, if this
turns out to be a more popular use-case we can re-evaluate this logic.
2024-03-21 11:29:32 -04:00
d3a00ba6af nit(vertico): fix spelling in some docstrings 2024-03-21 11:29:19 -04:00
222dc47060 feat(vertico): add orderless annotation filtering
Ref: oantolin/orderless#162
2024-03-21 11:29:19 -04:00
d22fa5a670 fix(vertico): consult-dir: don't guess user from containers
The tramp string used to connect to the container uses the first
`container-runtime ps` argument as a username, but the first argument
returned is the container ID, not a username.

Close: #7674
Co-authored-by: bergmannf <bergmannf@users.noreply.github.com>
Co-authored-by: elken <elken@users.noreply.github.com>
2024-03-20 03:09:05 -04:00
0ea84d1c3b feat(vertico): add consult-yasnippet
Close: #7471
Co-authored-by: LemonBreezes <LemonBreezes@users.noreply.github.com>
2024-03-20 00:16:29 -04:00
7547cdac6d refactor(corfu): remove redundant setting
Upstream, corfu-preview-current is already 'insert by default.
2024-03-19 21:49:23 -04:00
c9c221ca59 fix(corfu): wrong-type-argument characterp error
Corfu doesn't support a nil corfu-separator in general, but
+corfu-smart-sep-toggle-escape, specifically, will throw a characterp
type error if the user hasn't enabled +orderless.
2024-03-19 21:46:31 -04:00
b52d2b2dd0 fix(corfu): ispell: only complain once per session 2024-03-19 21:43:15 -04:00
875cd1aef9 fix(corfu): gate corfu-terminal config
If :completion corfu users don't have :os tty enabled, loading
corfu-terminal will throw an error in TTY Emacs.
2024-03-19 21:42:37 -04:00
9447e82074 bump: :completion vertico
minad/consult-flycheck@d83f87581a -> minad/consult-flycheck@754f5497d8
minad/consult@9463146ba7 -> minad/consult@b48ff6bf05
minad/marginalia@ea356ebb1d -> minad/marginalia@f6fe86b989
minad/vertico@4a7da56b02 -> minad/vertico@68cbd47589
oantolin/embark@60139db879 -> oantolin/embark@c93abadc82
oantolin/orderless@b24748093b -> oantolin/orderless@dc7a781acf
2024-03-19 21:10:45 -04:00
f9c0243211 docs(corfu): add @LemonBreezes as co-maintainer
Co-authored-by: StrawberryTea <look@strawberrytea.xyz>
2024-03-19 20:41:50 -03:00
bfb9aabe27 feat(corfu): update minibuffer hints manually
We need this advice to ensure that visual hints are updated before
exiting.
2024-03-19 20:41:50 -03:00
4192c81113 feat(corfu): make minibuffer completion optional 2024-03-19 20:41:50 -03:00
763464afdb feat(corfu): general move-to-minibuffer impl
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`. It's supposed to add the
advice by itself, but it's very unreliable, so we do the wrapping
manually.

Ido doesn't implement `completion-in-region` and its `completing-read`
is retricted to a list of strings as table, so we use default
`completion--in-region` with no bells or whistles.
2024-03-19 20:41:50 -03:00
0588b42b46 feat(corfu,vertico): use equal orderless config
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>
2024-03-19 20:41:50 -03:00
365a95de76 feat(corfu): more CAPFs and ergonomy changes
Add CAPFs from cape:
- `cape-dabbrev`;
- `cape-elisp-block`;
- `cape-file`;
Fix 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`;
Add depth to CAPFs, allowing ordering to be adjustable.
2024-03-19 20:41:50 -03:00
968a897530 feat(corfu): add snippets
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.
2024-03-19 20:41:50 -03:00
6949451b00 module: add :completion corfu
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;
2024-03-19 20:41:36 -03:00
7018cb45fb fix(vertico): disable minor mode highlight duly
Minor mode highlights did not disable as long
as the mode was enabled.

Amend: #7706
2024-03-10 00:54:06 -05:00
d657be1744 feat(vertico): completion highlights a la ivy
* 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`.
2024-03-08 20:21:36 -05:00
78b85b8a72 fix(vertico): mapping for embark open in workspace
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.
2024-03-05 01:13:39 -05:00
fe776f8d84 fix(vertico): use remote fd in tramp buffers 2024-02-14 02:42:30 -05:00
4cb06578fc bump: :completion
DarwinAwardWinner/ido-completing-read-plus@49e7967ea8 -> DarwinAwardWinner/ido-completing-read-plus@5995b4605b
company-mode/company-mode@ed46a616ab -> company-mode/company-mode@02903bd708
emacs-helm/helm@96aad023cb -> emacs-helm/helm@f34ea6b702
lewang/flx@7b44a5abb2 -> lewang/flx@4b1346eb9a
mhayashi1120/Emacs-wgrep@3132abd375 -> mhayashi1120/Emacs-wgrep@208b9d01cf
minad/consult@e4d3712356 -> minad/consult@9463146ba7
minad/vertico@cf8b2abf52 -> minad/vertico@4a7da56b02
oantolin/embark@33c392cf3c -> oantolin/embark@60139db879
radian-software/prescient.el@707c25c947 -> radian-software/prescient.el@4b875be52e
tumashu/vertico-posframe@bc0e67cbbb -> tumashu/vertico-posframe@2e0e09e5bb
2024-02-05 17:21:21 -05:00
659f7bfc71 refactor!: deprecate IS-* OS constants
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
2024-02-04 17:54:29 -05:00
82b6bd3159 docs(ivy): mention lowered ivy-sort-max-size
Depending on the system, this can cause sorting to be disabled long
before the performance hit would be felt, and it's not obvious that this
is the reason.
2024-02-02 03:25:25 -05:00
828445dbfb bump: :completion vertico
mhayashi1120/Emacs-wgrep@3132abd375 -> mhayashi1120/Emacs-wgrep@208b9d01cf
minad/consult-flycheck@0662839aa5 -> minad/consult-flycheck@d83f87581a
minad/consult@9c7dbbe4d6 -> minad/consult@e4d3712356
minad/marginalia@27ccfd2213 -> minad/marginalia@ea356ebb1d
minad/vertico@e8edac107d -> minad/vertico@cf8b2abf52
oantolin/embark@b9f2b3b9a5 -> oantolin/embark@33c392cf3c
tumashu/vertico-posframe@15168c92ca -> tumashu/vertico-posframe@bc0e67cbbb
2024-01-27 23:59:34 +02:00
1584f8a61e fix(vertico): use consult-fd only with new enough fd 2024-01-27 23:34:56 +02:00