From 132198323ca8af409ecac56e14f8029c9d252621 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Sun, 22 Aug 2021 11:56:22 +0300 Subject: [PATCH] editor: go to pos where stack pointer is located --- helix-term/src/application.rs | 20 ++++++++++++++++++-- helix-term/src/commands.rs | 4 ++-- 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()