diff options
author | Blaž Hrastnik | 2021-06-26 15:14:59 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-06-27 14:28:22 +0000 |
commit | f9cdb2afe29045723d2ad14eaea371eddf3107fe (patch) | |
tree | fc38eee0944ae9ad2ac42819579eeeaf1bfceae0 /helix-term/src | |
parent | 90d675fb158e4a14ae2bbd835c466d91343c193d (diff) |
Turn diagnostics rendering into span injection too
Diffstat (limited to 'helix-term/src')
-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, |