Use fussy instead of orderless for filtering and scoring/ordering
completion candidates. This seems to overall order results in a much
better way than just orderless.
Technically orderless is still used to filter the candidate list, but
fzf-native is used to score/order the results.
I opted for accepting copilot completions using C-<tab> /
<backtab> (shift+tab) instead of regular tab, as it was often getting in
the way of yasnippet and lsp completion suggestions. This allows a more
explicit acceptance of Copilot suggestions.
Also replace undohist with undo-fu-session.
Overall this seems to yield a more reliable undo history, as undo-fu and
vundo supposedly operate with vanilla emacs undo history state, while
undo-tree supposedly does some custom tweaks to the undo state.
Move away from the whitespace-cleanup-mode package, and instead simply
define our own whitespace-cleanup-on-save-mode minor-mode that uses a
before-save-hook.
This applies especially in lsp-mode. Yasnippet snippets now show as
completion candidates if the word at point exactly matches a snippet
keyword, otherwise it'll fallback to normal lsp backed completion.
And it also supports completing file/directory names now too while
lsp-mode is active.
All this is done by modifying completion-at-point-functions after
lsp-mode has done it's trickery with it. Along with a dirty hack to
company-yasnippet to make it only activate on exact matches. Without
this hack, lsp backed completion rarely activates as snippets would have
higher priority if there's any partial matches.
Visually ctrlf is very nice, but it seems one of it's features is to
stay active in the mini-buffer until explicitly cancelled. This can
easily lead to annoyance if you mess up a C-x C-s keybind and then move
on to other buffers and such, as ctrlf will still be active.
Regular isearch however will dismiss itself as soon as you do anything
other than typing in a search query. Hence causing a lot less annoyance
for me.
With vertico, orderless and marginalia, I feel the regular projectile
find-file and switch-project commands offer just as good if not better
completion than helm-projectile commands do. Hence the switch.
I finally resolved the lsp-mode bug I had whenever I tried vertico in
the past. It was due to me setting resize-mini-windows instead of
vertico-resize.
This serves as a alternative to the code-review package. I'm adding it
mostly for testing purposes so I can compare the two and see the
pros/cons with each.
When lsp-mode is enabled, use consult-lsp-file-symbols instead of
consult-imenu, as it yields a more structured list and nicer formatted
symbol results. The result list is identical as lsp-mode updates imenu
with all file symbols, but via imenu they're just not rendered as
nicely.
Use the makefile-executor package instead of helm-make to execute make
targets. But we still rely on helm-make due to it's more efficient
available targets lookup function compared to that of makefile-executor.
Running make targets is bound to C-c C-m now which is nice and fast, and
completes via completing-read, which is currently giving a better
suggested candidates via selectrum+orderless than helm-make does.
And helm-make is still available via the old C-c h m keybinding.
First time lsp-mode is started for a project, it will pop up a prompt to
ask how you want lsp-mode to determine the project root. When using
vertico, this selection is not visible, while with selectrum it works
fine.
Personally I find orderless is giving me better results than prescient
when fuzzy/flex matching is enabled. Hence the switch to orderless.
I also split the modules apart to ensure, that selectrum, vertico,
prescient and orderless can be mixed and matched however and work
correctly.
And the switch from to vertico from selectrum is mostly cause I like
it's wraparound/cycle feature, where end/beginning of the candidate list
will wrap around.
This is a basic setup, as I'm not very familiar with what is doable with
embark. It also takes over the goto-chg keybindings, cause that package
rarely worked correctly, so I almost never used it.
This should offer a more reliable means of running `whitespace-cleanup`
on buffer save than whitespace-mode's whitespace-action setting. Also it
allows for easily toggling whitespace clean up off by disabling
whitespace-clean-mode.
Some commands which output to compilation buffers did not get their
output colorized correctly by default. This ensures that terminal based
escape sequences are correctly handled.
Instead of manually just setting faces after loading a doom-themes
theme, let's use a custom override theme which we apply right after
applying any doom-themes theme.
The override theme uses various doom-color helpers, so the colors it
uses will be based on the most recently applied doom-themes theme.