@@ -331,24 +331,36 @@ impl Application {
332 let (view, doc) = current!(self.editor);
332 let (view, doc) = current!(self.editor);
335+ doc: &helix_core::Rope,
338+ ) -> Option<usize> {
339+ // 1-indexing to 0 indexing
340+ let line = doc.try_line_to_char(line - 1).ok()?;
341+ let pos = line + column;
342+ // TODO: this is probably utf-16 offsets
334 let text_end = doc.text().len_chars().saturating_sub(1);
346 let text_end = doc.text().len_chars().saturating_sub(1);
335− let start = doc.text().try_line_to_char(line - 1).unwrap_or(0) + column;
347+ let start = dap_pos_to_pos(doc.text(), line, column).unwrap_or(0);
336− if let Some(end_line) = end_line {
349+ let selection = if let Some(end_line) = end_line {
337− let end = doc.text().try_line_to_char(end_line - 1).unwrap_or(0)
338− + end_column.unwrap_or(0);
350+ let end = dap_pos_to_pos(doc.text(), end_line, end_column.unwrap_or(0))
339− doc.set_selection(
351+ .unwrap_or(0);
341− Selection::new(
353+ Selection::new(
342− helix_core::SmallVec::from_vec(vec![Range::new(
354+ helix_core::SmallVec::from_vec(vec![Range::new(
343− start.min(text_end),
355+ start.min(text_end),
344− end.min(text_end),
356+ end.min(text_end),
350− doc.set_selection(view.id, Selection::point(start.min(text_end)));
361+ Selection::point(start.min(text_end))
363+ doc.set_selection(view.id, selection);
352 align_view(doc, view, Align::Center);
364 align_view(doc, view, Align::Center);
354 self.editor.set_status(status);
366 self.editor.set_status(status);