aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-term/src/application.rs20
-rw-r--r--helix-term/src/commands.rs4
2 files changed, 20 insertions, 4 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index 9f0e751e..0d10c9b5 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -1,9 +1,16 @@
-use helix_core::syntax;
+use helix_core::{syntax, Selection};
use helix_dap::Payload;
use helix_lsp::{lsp, util::lsp_pos_to_pos, LspProgressMap};
use helix_view::{theme, Editor};
-use crate::{args::Args, compositor::Compositor, config::Config, job::Jobs, ui};
+use crate::{
+ args::Args,
+ commands::{align_view, Align},
+ compositor::Compositor,
+ config::Config,
+ job::Jobs,
+ ui,
+};
use log::error;
@@ -300,13 +307,22 @@ impl Application {
Some(helix_dap::Source {
path: Some(src), ..
}),
+ line,
+ column,
..
}) = &debugger.stack_pointer
{
let path = src.clone();
+ let line = *line;
+ let column = *column;
self.editor
.open(path, helix_view::editor::Action::Replace)
.unwrap();
+
+ let (view, doc) = current!(self.editor);
+ let pos = doc.text().line_to_char(line - 1) + column;
+ doc.set_selection(view.id, Selection::point(pos));
+ align_view(doc, view, Align::Center);
}
self.editor.set_status(status);
}
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index cc45f79a..d405de16 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -98,13 +98,13 @@ impl<'a> Context<'a> {
}
}
-enum Align {
+pub enum Align {
Top,
Center,
Bottom,
}
-fn align_view(doc: &Document, view: &mut View, align: Align) {
+pub fn align_view(doc: &Document, view: &mut View, align: Align) {
let pos = doc
.selection(view.id)
.primary()