mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-16 00:47:39 +03:00
lsp: Use CompletionTriggerKind::TRIGGER_CHARACTER only for characters allowlisted by the server (#14734)
Fixes #13823 Release Notes: - N/A
This commit is contained in:
parent
76ce1a8f50
commit
3fb3148995
@ -129,7 +129,7 @@ pub struct ExpandExcerptsDown {
|
|||||||
#[derive(PartialEq, Clone, Deserialize, Default)]
|
#[derive(PartialEq, Clone, Deserialize, Default)]
|
||||||
pub struct ShowCompletions {
|
pub struct ShowCompletions {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub(super) trigger: Option<char>,
|
pub(super) trigger: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_actions!(
|
impl_actions!(
|
||||||
|
@ -3638,7 +3638,7 @@ impl Editor {
|
|||||||
if self.is_completion_trigger(text, trigger_in_words, cx) {
|
if self.is_completion_trigger(text, trigger_in_words, cx) {
|
||||||
self.show_completions(
|
self.show_completions(
|
||||||
&ShowCompletions {
|
&ShowCompletions {
|
||||||
trigger: text.chars().last(),
|
trigger: Some(text.to_owned()).filter(|x| !x.is_empty()),
|
||||||
},
|
},
|
||||||
cx,
|
cx,
|
||||||
);
|
);
|
||||||
@ -4062,15 +4062,18 @@ impl Editor {
|
|||||||
Some(ContextMenu::Completions(_))
|
Some(ContextMenu::Completions(_))
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
let trigger_kind = match (options.trigger, is_followup_invoke) {
|
let trigger_kind = match (&options.trigger, is_followup_invoke) {
|
||||||
(_, true) => CompletionTriggerKind::TRIGGER_FOR_INCOMPLETE_COMPLETIONS,
|
(_, true) => CompletionTriggerKind::TRIGGER_FOR_INCOMPLETE_COMPLETIONS,
|
||||||
(Some(_), _) => CompletionTriggerKind::TRIGGER_CHARACTER,
|
(Some(trigger), _) if buffer.read(cx).completion_triggers().contains(&trigger) => {
|
||||||
|
CompletionTriggerKind::TRIGGER_CHARACTER
|
||||||
|
}
|
||||||
|
|
||||||
_ => CompletionTriggerKind::INVOKED,
|
_ => CompletionTriggerKind::INVOKED,
|
||||||
};
|
};
|
||||||
let completion_context = CompletionContext {
|
let completion_context = CompletionContext {
|
||||||
trigger_character: options.trigger.and_then(|c| {
|
trigger_character: options.trigger.as_ref().and_then(|trigger| {
|
||||||
if trigger_kind == CompletionTriggerKind::TRIGGER_CHARACTER {
|
if trigger_kind == CompletionTriggerKind::TRIGGER_CHARACTER {
|
||||||
Some(String::from(c))
|
Some(String::from(trigger))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user