@@ -71,6 +71,7 @@ impl EditorView {
71 is_focused: bool,
71 is_focused: bool,
72 loader: &syntax::Loader,
72 loader: &syntax::Loader,
73 config: &helix_view::editor::Config,
73 config: &helix_view::editor::Config,
74+ debugger: Option<&helix_dap::Client>,
75 let inner = view.inner_area();
76 let inner = view.inner_area();
76 let area = view.area;
77 let area = view.area;
@@ -87,7 +88,9 @@ impl EditorView {
89 Self::render_text_highlights(doc, view.offset, inner, surface, theme, highlights);
90 Self::render_text_highlights(doc, view.offset, inner, surface, theme, highlights);
90− Self::render_gutter(doc, view, view.area, surface, theme, is_focused, config);
92+ doc, view, view.area, surface, theme, is_focused, config, debugger,
92 if is_focused {
95 if is_focused {
93 Self::render_focused_view_elements(view, doc, inner, theme, surface);
96 Self::render_focused_view_elements(view, doc, inner, theme, surface);
@@ -409,6 +412,7 @@ impl EditorView {
409 theme: &Theme,
412 theme: &Theme,
410 is_focused: bool,
413 is_focused: bool,
411 config: &helix_view::editor::Config,
414 config: &helix_view::editor::Config,
415+ debugger: Option<&helix_dap::Client>,
413 let text = doc.text().slice(..);
417 let text = doc.text().slice(..);
414 let last_line = view.last_line(doc);
418 let last_line = view.last_line(doc);
@@ -438,6 +442,10 @@ impl EditorView {
438 .map(|range| range.cursor_line(text))
442 .map(|range| range.cursor_line(text))
439 .collect();
443 .collect();
445+ let breakpoints = doc
447+ .and_then(|path| debugger.and_then(|debugger| debugger.breakpoints.get(path)));
441 for (i, line) in (view.offset.row..(last_line + 1)).enumerate() {
449 for (i, line) in (view.offset.row..(last_line + 1)).enumerate() {
442 use helix_core::diagnostic::Severity;
450 use helix_core::diagnostic::Severity;
443 if let Some(diagnostic) = doc.diagnostics().iter().find(|d| d.line == line) {
451 if let Some(diagnostic) = doc.diagnostics().iter().find(|d| d.line == line) {
@@ -457,6 +465,14 @@ impl EditorView {
458 let selected = cursors.contains(&line);
466 let selected = cursors.contains(&line);
468+ if let Some(breakpoint) = breakpoints.and_then(|breakpoints| {
471+ .find(|breakpoint| breakpoint.line == line)
473+ surface.set_stringn(viewport.x, viewport.y + i as u16, "▲", 1, warning);
460 let text = if line == last_line && !draw_last {
476 let text = if line == last_line && !draw_last {
461 " ~".into()
477 " ~".into()
@@ -1007,6 +1023,7 @@ impl Component for EditorView {
1007 for (view, is_focused) in cx.editor.tree.views() {
1023 for (view, is_focused) in cx.editor.tree.views() {
1008 let doc = cx.editor.document(view.doc).unwrap();
1024 let doc = cx.editor.document(view.doc).unwrap();
1009 let loader = &cx.editor.syn_loader;
1025 let loader = &cx.editor.syn_loader;
1026+ let debugger = cx.editor.debugger.as_ref();
1010 self.render_view(
1027 self.render_view(
@@ -1016,6 +1033,7 @@ impl Component for EditorView {
1016 is_focused,
1033 is_focused,
1018 &cx.editor.config,
1035 &cx.editor.config,