editor: go to pos where stack pointer is located

This commit is contained in:
Dmitry Sharshakov 2021-08-22 11:56:22 +03:00
parent be9dc5802a
commit 132198323c
No known key found for this signature in database
GPG key ID: 471FD32E15FD8473
2 changed files with 20 additions and 4 deletions

View file

@ -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);
}

View file

@ -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()