Skip to content

Commit

Permalink
lsp: Disable usage of follow-up completion invokes (#21755)
Browse files Browse the repository at this point in the history
Some of our users ran into a peculiar bug: autoimports with vtsls were
leaving behind an extra curly brace. I think we were slightly incorrect
in always requesting a follow-up completion without regard for last
result of completion request (whether it was incomplete or not).
Specifically, we're falling into this branch in current form:
https://github.com/yioneko/vtsls/blob/037c2b615bf4cfe9dd65d9affc7a155fbb2ca255/packages/service/src/service/completion.ts#L121
which then leads to incorrect edits being returned from vtsls.

Release Notes:

- Fixed an edge case with appliance of autocompletions in VTSLS that
could result in incorrect edits being applied.
  • Loading branch information
osiewicz committed Dec 9, 2024
1 parent f58bb04 commit 78b36a4
Showing 1 changed file with 2 additions and 11 deletions.
13 changes: 2 additions & 11 deletions crates/editor/src/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4452,19 +4452,10 @@ impl Editor {
};

let query = Self::completion_query(&self.buffer.read(cx).read(cx), position);
let is_followup_invoke = {
let context_menu_state = self.context_menu.read();
matches!(
context_menu_state.deref(),
Some(ContextMenu::Completions(_))
)
};
let trigger_kind = match (&options.trigger, is_followup_invoke) {
(_, true) => CompletionTriggerKind::TRIGGER_FOR_INCOMPLETE_COMPLETIONS,
(Some(trigger), _) if buffer.read(cx).completion_triggers().contains(trigger) => {
let trigger_kind = match &options.trigger {
Some(trigger) if buffer.read(cx).completion_triggers().contains(trigger) => {
CompletionTriggerKind::TRIGGER_CHARACTER
}

_ => CompletionTriggerKind::INVOKED,
};
let completion_context = CompletionContext {
Expand Down

0 comments on commit 78b36a4

Please sign in to comment.