Commit graph

1052 commits

Author SHA1 Message Date
86b6c312e2 dev: updating from latest 2024-02-16 14:47:38 -05:00
Luigi Sartor Piucco
0196f1e61a
bump: :completion corfu + evil-collection
The `evil-collection` upgrade is needed due to a recent breaking change
in Corfu's setup and teardown functions. `evil-collection`
`:after`-advised these with `#'evil-normalize-keymaps`, which accepts
only 1 optional argument. This was fine because the functions took no
arguments, but some have been introduced recently. Trying to initiate
completion would now throw a "too many arguments" error, and due to the
partial operation on the keymaps, make Emacs mostly unusable.

Related links:
- 9cebcfedca
- cf1a11912d
- 61a20a5036
- 2eb68ac588
2024-02-16 16:05:30 -03:00
Luigi Sartor Piucco
57edb204f3
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`, 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.
2024-02-16 16:02:53 -03:00
Henrik Lissner
fe776f8d84
fix(vertico): use remote fd in tramp buffers 2024-02-14 02:42:30 -05:00
Luigi Sartor Piucco
188e73b057
feat(corfu): impl smart confirm in minibuffer
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 immediatelly and S-RET to insert completion then conclude.
2024-02-09 18:42:51 -03:00
Luigi Sartor Piucco
628280040f
fix(corfu): move binds to :config default
Bindings were moved to the `:config default` module and some keys were
adjusted to match Company/other modules. Small formatting issues and
some apparently unintended nestings were corrected as well. The changes
were documented in the README.
2024-02-09 18:42:22 -03:00
Luigi Sartor Piucco
28ffdd016d
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-02-09 16:28:20 -03:00
StrawberryTea
a265414d6d
feat(corfu): more CAPFs and ergonomy changes
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.
2024-02-09 16:28:20 -03:00
Luigi Sartor Piucco
ac665e751e
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-02-09 16:28:20 -03:00
Luigi Sartor Piucco
f7314bebbb
module: add :completion corfu
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;
2024-02-09 16:28:15 -03:00
Henrik Lissner
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
Henrik Lissner
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
45mm
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
Itai Y. Efrat
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
Itai Y. Efrat
1584f8a61e fix(vertico): use consult-fd only with new enough fd 2024-01-27 23:34:56 +02:00
Itai Y. Efrat
190a37043c bump: :completion vertico
minad/consult@43380042da -> minad/consult@9c7dbbe4d6
minad/marginalia@f1734375a5 -> minad/marginalia@27ccfd2213
minad/vertico@03bfb71a2b -> minad/vertico@e8edac107d
oantolin/embark@7758a1ac64 -> oantolin/embark@b9f2b3b9a5
oantolin/orderless@d6b402a89e -> oantolin/orderless@b24748093b
tumashu/vertico-posframe@db9fbc95bb -> tumashu/vertico-posframe@15168c92ca
2024-01-27 23:34:56 +02:00
Liam Hupfer
76f309ceb5 tweak(vertico): show entire path for fd results
Currently, fd does not expose a way to match against only the path
components beneath the target path. When --full-path is specified, the
pattern matches against all components. For example, executing
consult-fd from /home/hlissner/.emacs.d with `home` as the query would
match every file (not excluded by other arguments) under .emacs.d.
Despite this --full-path behavior, fd still outputs relative paths, so
the user cannot even determine why some candidates are returned.

Until there is a method to match only against subdirectories, use
--absolute-path to at least to show the user why all matches are
occurring.

Ref: https://github.com/sharkdp/fd/issues/839
2024-01-27 23:34:56 +02:00
Liam Hupfer
25a89491a3 nit(vertico): remove default --regex option for fd
Ref: eac20a8132
2024-01-27 23:34:56 +02:00
Liam Hupfer
cb62ec0905 tweak(vertico): use fd’s smart case
If the user is going to the trouble of capitalizing input, that’s
probably all they want to match.

Ref: 6482f3ac09
2024-01-27 23:34:56 +02:00
Itai Y. Efrat
7803ea2e73 fix(vertico): consult-project(-root->)-function 2024-01-27 23:34:56 +02:00
Itai Y. Efrat
60e22fd2eb refactor(vertico): use consult-fd
Close: #7458
Co-authored-by: LemonBreezes <look@strawberrytea.xyz>
2024-01-27 23:34:56 +02:00
Itai Y. Efrat
9bfc0ee029 bump: :completion vertico
karthink/consult-dir@ed8f0874d2 -> karthink/consult-dir@3f5f4b71eb
minad/consult@fe49dedd71 -> minad/consult@43380042da
minad/marginalia@866e50aee4 -> minad/marginalia@f1734375a5
minad/vertico@a28370d07f -> minad/vertico@03bfb71a2b
oantolin/embark@9a44418c34 -> oantolin/embark@7758a1ac64
oantolin/orderless@e678402671 -> oantolin/orderless@d6b402a89e
tumashu/vertico-posframe@7da6d648ff -> tumashu/vertico-posframe@db9fbc95bb
2024-01-27 23:34:56 +02:00
45mm
acb5af177b fix(vertico): don't shell-quote consult-ripgrep-args
We were using `shell-quote-argument`, which is meant for passing file
names, strings and so on, not command-line arguments. For example,
`(shell-quote-argument "--foo=bar")` yields "--foo\\=bar", which is
obviiously invalid unless we're trying to pass an option named '--foo\'.

At any rate, there is no quoting/escaping for shells in the default
value of `consult-ripgrep-args`, so it doesn't look like this is
something we need to do.
2024-01-25 19:59:13 -05:00
45mm
ae451ff754 docs(vertico): mention :args option in docstring 2024-01-25 19:59:13 -05:00
Kalle Lindqvist
03d692f129 fix(vertico): embark open in new workspace action 2023-12-08 15:11:45 -05:00
Henrik Lissner
fde4289f5c
bump: :completion company helm ivy
Sodel-the-Vociferous/helm-company@6eb5c2d730 -> Sodel-the-Vociferous/helm-company@4622b82353
abo-abo/swiper@9d630d800e -> abo-abo/swiper@8c30f4cab5
bbatsov/helm-projectile@35a2111d00 -> bbatsov/helm-projectile@e2e38825c9
company-mode/company-mode@9b21604d19 -> company-mode/company-mode@ed46a616ab
emacs-helm/helm-org@d67186d3a6 -> emacs-helm/helm-org@c80e53315c
emacs-helm/helm@dfd6403947 -> emacs-helm/helm@96aad023cb
emacs-jp/helm-c-yasnippet@e214eec8b2 -> emacs-jp/helm-c-yasnippet@c5880e740d
radian-software/prescient.el@d7cc55dad4 -> radian-software/prescient.el@707c25c947
tumashu/helm-posframe@87461b52b6 -> tumashu/helm-posframe@0b6bb016f0
yyoncho/helm-icons@53349000b1 -> yyoncho/helm-icons@0d113719ee
2023-11-29 23:14:34 -05:00
Maoli
95e3491c3b bump: :completion company
sebastiencs/company-box@766546b266 -> sebastiencs/company-box@b6f53e26ad
company-mode/company-mode@2ca3e29abf -> company-mode/company-mode@9b21604d19

Fix: doomemacs/doomemacs#6710
2023-11-26 13:57:36 -05:00
Liam Hupfer
2497d58e9a fix(vertico): ensure recentf-mode for consult-buffer
`consult-buffer` uses `recentf` to populate file candidates. It is not
uncommon to use `consult-buffer` as a single entry point to buffers,
bookmarks and recent files, effectively replacing `recentf` and
`consult-recent-file`.

To improve startup performance, Doom enables `recentf-mode` after the
first file is opened (0e851ace9b). When executing `consult-buffer` at
startup, `recentf-mode` won’t be enabled yet. Add it to the
`consult-recent-file` advice to ensure that can’t happen.

Unlike `consult-recent-file`, `consult-buffer` does have significant
functionality without `recentf-mode`, but for the tiny fraction of Doom
users that disable `recentf-mode`, this is easy enough to
`advice-remove`.

Fix: https://github.com/doomemacs/doomemacs/issues/7461
2023-10-05 17:42:55 +02:00
Henrik Lissner
88bb045388
docs(*): replace all-the-icons with nerd-icons
Also colorizes the leading icon in notices.
2023-09-16 20:19:11 +02:00
Henrik Lissner
c5d4f818d1
fix(ivy): void-function nerd-icons-ivy-rich-mode error
Amend: 9787022b83
2023-09-14 01:11:05 +02:00
Henrik Lissner
aa49edc216
docs(helm,ivy,vertico,ido): add incompatibility checks
These modules tend to conflict if more than one of them are enabled at
once. More systematic compatibility tests are in the works, but for now
this will do.
2023-09-14 01:04:08 +02:00
Ellis Kenyő
9787022b83
refactor!: replace all-the-icons with nerd-icons
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: #7368
Close: #6675
Close: #7364
2023-09-14 01:03:55 +02:00
Henrik Lissner
f427c8a30e
tweak: scroll-conservatively = 10
Forces the window to recenter if the cursor moves >=10 lines off-screen.
This makes some of our manual recentering elsewhere unnecessary.
2023-09-11 23:53:36 +02:00
Ellis Kenyő
5be4517bca
refactor(vertico): consult-dir: drop dependence on docker-tramp
Removes the dependence on docker-tramp, can later be cleaned up with
`tramp-container--completion-function` when we drop support for <29.
2023-09-07 20:18:12 +02:00
Liam Hupfer
3d82e3d46d fix(vertico): gate which-key integration
This prevents an error for users disabling which-key.
2023-09-02 11:46:42 -05:00
Jeetaditya Chatterjee
4696f0d4ce
tweak(syntax): feat gate flycheck in all modules 2023-07-25 00:11:09 +01:00
Henrik Lissner
a82163cb99
bump: :completion ivy
DarwinAwardWinner/amx@37f9c7ae55 -> DarwinAwardWinner/amx@5b3aa1aae8
Yevgnen/ivy-rich@600b8183ed -> Yevgnen/ivy-rich@aff9b6bd53
abo-abo/swiper@b8be4913a6 -> abo-abo/swiper@9d630d800e
mhayashi1120/Emacs-wgrep@edf768732a -> mhayashi1120/Emacs-wgrep@3132abd375
radian-software/prescient.el@35cf5d3613 -> radian-software/prescient.el@d7cc55dad4

Close: #7173
Co-authored-by: notevenaperson <notevenaperson@users.noreply.github.com>
2023-07-22 17:57:25 +02:00
Itai Y. Efrat
0f843535be bump: :completion vertico
iyefrat/all-the-icons-completion@b08f053cee -> iyefrat/all-the-icons-completion@8eb3e410d6
minad/consult-flycheck@fda630411a -> minad/consult-flycheck@3f2a7c17cc
minad/consult@511d8c0b07 -> minad/consult@fe49dedd71
minad/marginalia@b900ec5457 -> minad/marginalia@866e50aee4
minad/vertico@926234ab3f -> minad/vertico@a28370d07f
oantolin/embark@9b17d9a63b -> oantolin/embark@9a44418c34
2023-07-22 16:29:54 +02:00
Itai Y. Efrat
07fca78615 bump: :completion vertico compat
emacs-compat/compat@7775c31857 -> emacs-compat/compat@be1d94d5e0
mhayashi1120/Emacs-wgrep@edf768732a -> mhayashi1120/Emacs-wgrep@3132abd375
minad/consult-flycheck@c371996c57 -> minad/consult-flycheck@fda630411a
minad/consult@052399ed05 -> minad/consult@511d8c0b07
minad/marginalia@2633b2dee2 -> minad/marginalia@b900ec5457
minad/vertico@b6b8420d29 -> minad/vertico@926234ab3f
oantolin/embark@3ffb27a833 -> oantolin/embark@9b17d9a63b
2023-05-30 19:39:04 -04:00
Henrik Lissner
4e105a95af
refactor(vertico): take evil keybinds from :config default 2023-03-22 18:29:38 -04:00
Benedikt Broich
890f200b41
feat(vertico): bind C-h/C-l to enter-or-preview/move up
Close: #7001
Ref: #6853
2023-03-22 17:57:38 -04:00
Itai Y. Efrat
e5dbd4e8b1 bump: :completion vertico compat
iyefrat/all-the-icons-completion@4da28584a1 -> iyefrat/all-the-icons-completion@b08f053cee
minad/consult@ffaaf6da90 -> minad/consult@052399ed05
minad/marginalia@ccf573e214 -> minad/marginalia@2633b2dee2
minad/vertico@6f22ff1298 -> minad/vertico@b6b8420d29
oantolin/embark@5497a19eef -> oantolin/embark@3ffb27a833
oantolin/orderless@d09aab3795 -> oantolin/orderless@e678402671
tumashu/vertico-posframe@f57b170b43 -> tumashu/vertico-posframe@7da6d648ff
emacs-compat/compat@38280a7b54 -> emacs-compat/compat@7775c31857

---

consult--grep added support for searching in multiple directories, so we
can drop the advice in `doom--help-search`. The other changes just adapt
to upstream API changes.
2023-03-22 16:35:07 -04:00
Anh T Nguyen
22097b5a75 fix(company): hook company-abort when +childframe enabled 2023-03-20 18:55:17 -04:00
Henrik Lissner
b4034a590b
docs(helm): revise and expand
- Added links to external documentation.
- Added commands for key bindings (especially useful for non-Evil users).
- Documented configuration for helm-mode and treemacs icons.

Close: #6676
Co-authored-by: johanwiden <johanwiden@users.noreply.github.com>
2023-02-23 22:54:02 -05:00
Henrik Lissner
4158e5124a
tweak(helm): helm-candidate-number-limit = 150
Ref: #6676
Co-authored-by: johanwiden <johanwiden@users.noreply.github.com>
2023-02-23 22:54:02 -05:00
Henrik Lissner
86d0478acf
fix(helm): all-the-icons support
Ref: #6676
Co-authored-by: johanwiden <johanwiden@users.noreply.github.com>
2023-02-23 22:54:02 -05:00
Henrik Lissner
1bfa90621b
tweak(helm): use emacs completion instead
This may fix +fuzzy, as well.

Ref: #6676
Co-authored-by: johanwiden <johanwiden@users.noreply.github.com>
2023-02-23 22:54:01 -05:00
Henrik Lissner
8789e2e5c6
refactor(helm): reformat and revise comments
Ref: #6676
Co-authored-by: johanwiden <johanwiden@users.noreply.github.com>
2023-02-23 22:54:01 -05:00
Henrik Lissner
928902213f
refactor(helm): use helm-posframe
The old, in-house implementation no longer works (and reportedly causes
crashes).

Ref: #6676
Co-authored-by: johanwiden <johanwiden@users.noreply.github.com>
2023-02-23 22:54:01 -05:00
Henrik Lissner
fcf587fbe8
tweak(helm): show mode-line by default
Let's not hide the minibuffer. It may be detrimental in cases where
certain helm commands actually display helpful information there. And
rather than design edge cases for a package I don't dogfood, and push
minimalism onto helm users, I'll lean onto the defaults more instead.

Ref: #6676
Co-authored-by: johanwiden <johanwiden@users.noreply.github.com>
2023-02-23 22:53:57 -05:00