diff --git a/crates/agent_ui/src/completion_provider.rs b/crates/agent_ui/src/completion_provider.rs index b858db698cff07d0d488d92b09a604f65d63e58a..baa57368e50fb7a604138e6158b06349b65b75e6 100644 --- a/crates/agent_ui/src/completion_provider.rs +++ b/crates/agent_ui/src/completion_provider.rs @@ -2050,7 +2050,17 @@ fn selection_ranges( selections .into_iter() - .map(|s| snapshot.anchor_after(s.start)..snapshot.anchor_before(s.end)) + .map(|s| { + let (start, end) = if s.is_empty() { + let row = multi_buffer::MultiBufferRow(s.start.row); + let line_start = text::Point::new(s.start.row, 0); + let line_end = text::Point::new(s.start.row, snapshot.line_len(row)); + (line_start, line_end) + } else { + (s.start, s.end) + }; + snapshot.anchor_after(start)..snapshot.anchor_before(end) + }) .flat_map(|range| { let (start_buffer, start) = buffer.text_anchor_for_position(range.start, cx)?; let (end_buffer, end) = buffer.text_anchor_for_position(range.end, cx)?; diff --git a/crates/agent_ui/src/text_thread_editor.rs b/crates/agent_ui/src/text_thread_editor.rs index 1780e03b9fbfbc70b97ca445735b3ff3be03ec67..b878be82e3896733f1eef8d6442cac901366c4a2 100644 --- a/crates/agent_ui/src/text_thread_editor.rs +++ b/crates/agent_ui/src/text_thread_editor.rs @@ -1509,9 +1509,16 @@ impl TextThreadEditor { .selections .all_adjusted(&editor.display_snapshot(cx)) .into_iter() - .filter_map(|s| { - (!s.is_empty()) - .then(|| snapshot.anchor_after(s.start)..snapshot.anchor_before(s.end)) + .map(|s| { + let (start, end) = if s.is_empty() { + let row = multi_buffer::MultiBufferRow(s.start.row); + let line_start = text::Point::new(s.start.row, 0); + let line_end = text::Point::new(s.start.row, snapshot.line_len(row)); + (line_start, line_end) + } else { + (s.start, s.end) + }; + snapshot.anchor_after(start)..snapshot.anchor_before(end) }) .collect::>() });