Skip to content

Commit 48baf2a

Browse files
committed
diagnostics struct for all diagnostic options
1 parent da2a7fc commit 48baf2a

5 files changed

Lines changed: 36 additions & 17 deletions

File tree

helix-term/src/ui/editor.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,19 +185,19 @@ impl EditorView {
185185
}
186186
let config = doc.config.load();
187187

188-
if config.enable_diagnostics {
188+
if config.diagnostics.enable {
189189
let width = view.inner_width(doc);
190190
let enable_cursor_line = view
191191
.diagnostics_handler
192192
.show_cursorline_diagnostics(doc, view.id);
193193
let inline_diagnostic_config =
194-
config.inline_diagnostics.prepare(width, enable_cursor_line);
194+
config.diagnostics.inline.prepare(width, enable_cursor_line);
195195
decorations.add_decoration(InlineDiagnostics::new(
196196
doc,
197197
theme,
198198
primary_cursor,
199199
inline_diagnostic_config,
200-
config.end_of_line_diagnostics,
200+
config.diagnostics.end_of_line,
201201
));
202202
}
203203

@@ -225,9 +225,9 @@ impl EditorView {
225225
}
226226
}
227227

228-
if config.enable_diagnostics
229-
&& config.inline_diagnostics.disabled()
230-
&& config.end_of_line_diagnostics == DiagnosticFilter::Disable
228+
if config.diagnostics.enable
229+
&& config.diagnostics.inline.disabled()
230+
&& config.diagnostics.end_of_line == DiagnosticFilter::Disable
231231
{
232232
Self::render_diagnostics(doc, view, inner, surface, theme);
233233
}

helix-view/src/annotations/diagnostics.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,37 @@ use serde::{Deserialize, Serialize};
66

77
use crate::Document;
88

9+
#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
10+
#[serde(default, rename_all = "kebab-case", deny_unknown_fields)]
11+
pub struct DiagnosticsConfig {
12+
pub enable: bool,
13+
pub inline: InlineDiagnosticsConfig,
14+
pub end_of_line: DiagnosticFilter,
15+
}
16+
17+
impl Default for DiagnosticsConfig {
18+
fn default() -> Self {
19+
Self {
20+
enable: true,
21+
inline: InlineDiagnosticsConfig::default(),
22+
end_of_line: DiagnosticFilter::default(),
23+
}
24+
}
25+
}
26+
927
/// Describes the severity level of a [`Diagnostic`].
1028
#[derive(Debug, Clone, Copy, Eq, PartialEq, PartialOrd, Ord)]
1129
pub enum DiagnosticFilter {
1230
Disable,
1331
Enable(Severity),
1432
}
1533

34+
impl Default for DiagnosticFilter {
35+
fn default() -> Self {
36+
Self::Enable(Severity::Hint)
37+
}
38+
}
39+
1640
impl<'de> Deserialize<'de> for DiagnosticFilter {
1741
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1842
where

helix-view/src/editor.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::{
2-
annotations::diagnostics::{DiagnosticFilter, InlineDiagnosticsConfig},
2+
annotations::diagnostics::DiagnosticsConfig,
33
clipboard::ClipboardProvider,
44
document::{
55
DocumentOpenError, DocumentSavedEventFuture, DocumentSavedEventResult, Mode, SavePoint,
@@ -415,10 +415,7 @@ pub struct Config {
415415
deserialize_with = "deserialize_alphabet"
416416
)]
417417
pub jump_label_alphabet: Vec<char>,
418-
pub enable_diagnostics: bool,
419-
/// Display diagnostic below the line they occur.
420-
pub inline_diagnostics: InlineDiagnosticsConfig,
421-
pub end_of_line_diagnostics: DiagnosticFilter,
418+
pub diagnostics: DiagnosticsConfig,
422419
// Set to override the default clipboard provider
423420
pub clipboard_provider: ClipboardProvider,
424421
/// Whether to read settings from [EditorConfig](https://editorconfig.org) files. Defaults to
@@ -1140,9 +1137,7 @@ impl Default for Config {
11401137
popup_border: PopupBorderConfig::None,
11411138
indent_heuristic: IndentationHeuristic::default(),
11421139
jump_label_alphabet: ('a'..='z').collect(),
1143-
enable_diagnostics: true,
1144-
inline_diagnostics: InlineDiagnosticsConfig::default(),
1145-
end_of_line_diagnostics: DiagnosticFilter::Enable(Severity::Hint),
1140+
diagnostics: DiagnosticsConfig::default(),
11461141
clipboard_provider: ClipboardProvider::default(),
11471142
editor_config: true,
11481143
rainbow_brackets: false,

helix-view/src/handlers/diagnostics.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ impl DiagnosticsHandler {
105105
.store(self.generation.get(), atomic::Ordering::Relaxed);
106106
}
107107
pub fn show_cursorline_diagnostics(&self, doc: &Document, view: ViewId) -> bool {
108-
if !self.active || !doc.config.load().enable_diagnostics {
108+
if !self.active || !doc.config.load().diagnostics.enable {
109109
return false;
110110
}
111111
let cursor_line = doc

helix-view/src/view.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,9 +495,9 @@ impl View {
495495
let enable_cursor_line = self
496496
.diagnostics_handler
497497
.show_cursorline_diagnostics(doc, self.id);
498-
let enable_diagnostics = config.enable_diagnostics;
498+
let enable_diagnostics = config.diagnostics.enable;
499499
let inline_diagnotstics_config =
500-
config.inline_diagnostics.prepare(width, enable_cursor_line);
500+
config.diagnostics.inline.prepare(width, enable_cursor_line);
501501
if !inline_diagnotstics_config.disabled() && enable_diagnostics {
502502
let cursor = doc
503503
.selection(self.id)

0 commit comments

Comments
 (0)