manateelazycat / lsp-bridge

A blazingly fast LSP client for Emacs
GNU General Public License v3.0
1.44k stars 209 forks source link

Completion menu showing before being fully created and sorted #1080

Open m-ar-c opened 5 days ago

m-ar-c commented 5 days ago

Tweaking acm-completion-backend-merge-order as suggested in #1078 worked perfectly to sort the menu, now the yasnippet completions are always at the top of the completion list.

But it didn't solve the real need I had, being :

so that I can type my key and hit tab right away and always have my beloved snippets expanded.

Because when I type a yasnippet key and hit tab right away, lsp-bridge being fast, the completion menu is shown almost instantly BUT the items in the completion menu are still being created and sorted. So, until the menu is fully populated, the yasnippet are not at the top. That means that 9 times out of 10 (because I am too quick to hit tab) the completion made is not what I want.

I see two ways to solve this :

1/ Show the completion menu only after a small delay (so that I have time to expand my yasnippet key before the menu shows up).

Or better (in my opinion) :

2/ Show the menu only when it is fully populated and sorted, so that the same actions always yields the same results (no matter the time you take to hit the keys).

I couldn't find any variables to tweak to achieve either 1/ or 2/.

(I am aware of lsp-bridge-complete-manually (as mentionned in #623) but I do want the menu to popup automatically.)

manateelazycat commented 14 hours ago

lsp-bridge is full async design, every backend (lsp or yas) have result will make acm menu redraw, we can't stop lsp candidate show to wait yas candidate.

It's will make lsp-bridge slow as lsp-mode or eglot, it's not lsp-bridge's target.

manateelazycat commented 14 hours ago

You can find other way to fit your need, but I won't accept any request that slow down the lsp-bridge's speed.