@@ -1,4 +1,4 @@
1−use helix_core::{syntax, Selection};
1+use helix_core::{syntax, Range, Selection};
22use helix_dap::Payload;
33use helix_lsp::{lsp, util::lsp_pos_to_pos, LspProgressMap};
44use helix_view::{theme, Editor};
@@ -13,7 +13,7 @@ use crate::{
1313};
1414
1515use log::error;
16−
16+use smallvec::smallvec;
1717use std::{
1818 io::{stdout, Write},
1919 sync::Arc,
@@ -309,19 +309,32 @@ impl Application {
309309 }),
310310 line,
311311 column,
312+ end_line,
313+ end_column,
312314 ..
313315 }) = &debugger.stack_pointer
314316 {
315317 let path = src.clone();
316318 let line = *line;
317319 let column = *column;
320+ let end_line = *end_line;
321+ let end_column = *end_column;
318322 self.editor
319323 .open(path, helix_view::editor::Action::Replace)
320324 .unwrap();
321325
322326 let (view, doc) = current!(self.editor);
323− let pos = doc.text().line_to_char(line - 1) + column;
324− doc.set_selection(view.id, Selection::point(pos));
327+ let start = doc.text().line_to_char(line - 1) + column;
328+ if let Some(end_line) = end_line {
329+ let end =
330+ doc.text().line_to_char(end_line - 1) + end_column.unwrap_or(0);
331+ doc.set_selection(
332+ view.id,
333+ Selection::new(smallvec![Range::new(start, end)], 0),
334+ );
335+ } else {
336+ doc.set_selection(view.id, Selection::point(start));
337+ }
325338 align_view(doc, view, Align::Center);
326339 }
327340 self.editor.set_status(status);