mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
Turn diagnostics rendering into span injection too
This commit is contained in:
parent
90d675fb15
commit
f9cdb2afe2
@ -340,6 +340,20 @@ pub fn render_buffer(
|
||||
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 @@ pub fn render_buffer(
|
||||
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,
|
||||
|
@ -60,6 +60,8 @@
|
||||
|
||||
"ui.menu.selected" = { fg = "#281733", bg = "#ffffff" } # revolver
|
||||
|
||||
"diagnostic" = { modifiers = ["underlined"] }
|
||||
|
||||
"warning" = "#ffcd1c"
|
||||
"error" = "#f47868"
|
||||
"info" = "#6F44F0"
|
||||
|
Loading…
Reference in New Issue
Block a user