Improve detection of common prefix in text_for_active_completion
This commit is contained in:
parent
9d8d2bb8f4
commit
ce9774be53
1 changed files with 6 additions and 9 deletions
|
@ -1034,19 +1034,16 @@ impl CopilotState {
|
||||||
let completion = self.completions.get(self.active_completion_index)?;
|
let completion = self.completions.get(self.active_completion_index)?;
|
||||||
if self.position.excerpt_id == cursor.excerpt_id
|
if self.position.excerpt_id == cursor.excerpt_id
|
||||||
&& self.position.buffer_id == cursor.buffer_id
|
&& self.position.buffer_id == cursor.buffer_id
|
||||||
&& (cursor_offset == buffer.len() || buffer.contains_str_at(cursor_offset, "\n"))
|
|
||||||
{
|
{
|
||||||
let completion_offset = buffer.summary_for_anchor(&Anchor {
|
let completion_offset: usize = buffer.summary_for_anchor(&Anchor {
|
||||||
excerpt_id: self.position.excerpt_id,
|
excerpt_id: self.position.excerpt_id,
|
||||||
buffer_id: self.position.buffer_id,
|
buffer_id: self.position.buffer_id,
|
||||||
text_anchor: completion.position,
|
text_anchor: completion.position,
|
||||||
});
|
});
|
||||||
let common_prefix_len = cursor_offset.saturating_sub(completion_offset);
|
let prefix_len = cursor_offset.saturating_sub(completion_offset);
|
||||||
if common_prefix_len <= completion.text.len()
|
if completion_offset <= cursor_offset && prefix_len <= completion.text.len() {
|
||||||
&& buffer.contains_str_at(completion_offset, &completion.text[..common_prefix_len])
|
let (prefix, suffix) = completion.text.split_at(prefix_len);
|
||||||
{
|
if buffer.contains_str_at(completion_offset, prefix) && !suffix.is_empty() {
|
||||||
let suffix = &completion.text[common_prefix_len..];
|
|
||||||
if !suffix.is_empty() {
|
|
||||||
return Some(suffix);
|
return Some(suffix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2867,8 +2864,8 @@ impl Editor {
|
||||||
.text_for_active_completion(self.copilot_state.position, &snapshot)
|
.text_for_active_completion(self.copilot_state.position, &snapshot)
|
||||||
.map(|text| text.to_string())
|
.map(|text| text.to_string())
|
||||||
{
|
{
|
||||||
self.copilot_state = Default::default();
|
|
||||||
self.insert(&text, cx);
|
self.insert(&text, cx);
|
||||||
|
self.clear_copilot_suggestions(cx);
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
false
|
false
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue