mirror of
https://github.com/helix-editor/helix.git
synced 2025-01-19 13:37:06 +04:00
Display highest severity diagnostic in gutter (#2835)
* Display highest severity diagnostic in gutter * Improve gutter diagnostic performance Very slight improvement (doesn't really make a difference), iterates over the diagnostics of the line once instead of twice. * Add comment justifying unwrap
This commit is contained in:
parent
009f8c4d3b
commit
43027d9104
@ -26,7 +26,18 @@ pub fn diagnostic<'doc>(
|
||||
Box::new(move |line: usize, _selected: bool, out: &mut String| {
|
||||
use helix_core::diagnostic::Severity;
|
||||
if let Ok(index) = diagnostics.binary_search_by_key(&line, |d| d.line) {
|
||||
let diagnostic = &diagnostics[index];
|
||||
let after = diagnostics[index..].iter().take_while(|d| d.line == line);
|
||||
|
||||
let before = diagnostics[..index]
|
||||
.iter()
|
||||
.rev()
|
||||
.take_while(|d| d.line == line);
|
||||
|
||||
let diagnostics_on_line = after.chain(before);
|
||||
|
||||
// This unwrap is safe because the iterator cannot be empty as it contains at least the item found by the binary search.
|
||||
let diagnostic = diagnostics_on_line.max_by_key(|d| d.severity).unwrap();
|
||||
|
||||
write!(out, "●").unwrap();
|
||||
return Some(match diagnostic.severity {
|
||||
Some(Severity::Error) => error,
|
||||
|
Loading…
Reference in New Issue
Block a user