diff options
Diffstat (limited to 'helix-term')
-rw-r--r-- | helix-term/src/ui/editor.rs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index c737b3ce..4c2ec440 100644 --- a/helix-term/src/ui/editor.rs +++ b/helix-term/src/ui/editor.rs @@ -340,6 +340,20 @@ impl EditorView { Box::new(highlights) }; + // diagnostic injection + let diagnostic_scope = theme.find_scope_index("diagnostic").unwrap_or(cursor_scope); + let spans_ = doc + .diagnostics() + .iter() + .map(|diagnostic| { + ( + diagnostic_scope, + diagnostic.range.start..diagnostic.range.end, + ) + }) + .collect(); + let highlights = Box::new(merge(highlights, spans_)); + 'outer: for event in highlights { match event { HighlightEvent::HighlightStart(span) => { @@ -412,18 +426,6 @@ impl EditorView { continue; } - // ugh,interleave highlight spans with diagnostic spans - let is_diagnostic = doc.diagnostics().iter().any(|diagnostic| { - diagnostic.range.start <= char_index - && diagnostic.range.end > char_index - }); - - let style = if is_diagnostic { - style.add_modifier(Modifier::UNDERLINED) - } else { - style - }; - surface.set_string( viewport.x + visual_x - view.first_col as u16, viewport.y + line, |