Skip to content

Commit 44c5453

Browse files
committed
Diagnostics for open document as blocking event
1 parent 5a13b17 commit 44c5453

File tree

4 files changed

+16
-67
lines changed

4 files changed

+16
-67
lines changed

helix-term/src/handlers.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ use crate::handlers::signature_help::SignatureHelpHandler;
1414
pub use completion::trigger_auto_completion;
1515
pub use helix_view::handlers::Handlers;
1616

17-
use self::diagnostics::PullDiagnosticsForDocumentsHandler;
18-
1917
mod auto_save;
2018
pub mod completion;
2119
mod diagnostics;
@@ -29,14 +27,12 @@ pub fn setup(config: Arc<ArcSwap<Config>>) -> Handlers {
2927
let auto_save = AutoSaveHandler::new().spawn();
3028
let pull_diagnostics_for_language_servers =
3129
PullDiagnosticsForLanguageServersHandler::new().spawn();
32-
let pull_diagnostics_for_documents = PullDiagnosticsForDocumentsHandler::new().spawn();
3330

3431
let handlers = Handlers {
3532
completions,
3633
signature_hints,
3734
auto_save,
3835
pull_diagnostics_for_language_servers,
39-
pull_diagnostics_for_documents,
4036
};
4137

4238
completion::register_hooks(&handlers);

helix-term/src/handlers/diagnostics.rs

Lines changed: 16 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ use helix_lsp::LanguageServerId;
99
use helix_view::document::Mode;
1010
use helix_view::events::{DiagnosticsDidChange, DocumentDidChange, DocumentDidOpen};
1111
use helix_view::handlers::diagnostics::DiagnosticEvent;
12-
use helix_view::handlers::lsp::{
13-
PullDiagnosticsForDocumentsEvent, PullDiagnosticsForLanguageServersEvent,
14-
};
12+
use helix_view::handlers::lsp::PullDiagnosticsForLanguageServersEvent;
1513
use helix_view::handlers::Handlers;
1614
use helix_view::{DocumentId, Editor};
1715
use tokio::time::Instant;
@@ -54,18 +52,24 @@ pub(super) fn register_hooks(handlers: &Handlers) {
5452
Ok(())
5553
});
5654

57-
let tx = handlers.pull_diagnostics_for_documents.clone();
5855
register_hook!(move |event: &mut DocumentDidOpen<'_>| {
5956
if event
6057
.doc
6158
.has_language_server_with_feature(LanguageServerFeature::PullDiagnostics)
6259
{
63-
send_blocking(
64-
&tx,
65-
PullDiagnosticsForDocumentsEvent {
66-
document_id: event.doc.id(),
67-
},
68-
);
60+
let document_id = event.doc.id();
61+
job::dispatch_blocking(move |editor, _| {
62+
let Some(doc) = editor.document_mut(document_id) else {
63+
return;
64+
};
65+
66+
let language_servers =
67+
doc.language_servers_with_feature(LanguageServerFeature::PullDiagnostics);
68+
69+
for language_server in language_servers {
70+
pull_diagnostics_for_document(doc, language_server);
71+
}
72+
})
6973
}
7074

7175
Ok(())
@@ -84,17 +88,6 @@ impl PullDiagnosticsForLanguageServersHandler {
8488
}
8589
}
8690
}
87-
pub(super) struct PullDiagnosticsForDocumentsHandler {
88-
document_ids: HashSet<DocumentId>,
89-
}
90-
91-
impl PullDiagnosticsForDocumentsHandler {
92-
pub fn new() -> PullDiagnosticsForDocumentsHandler {
93-
PullDiagnosticsForDocumentsHandler {
94-
document_ids: [].into(),
95-
}
96-
}
97-
}
9891

9992
impl helix_event::AsyncHook for PullDiagnosticsForLanguageServersHandler {
10093
type Event = PullDiagnosticsForLanguageServersEvent;
@@ -116,41 +109,6 @@ impl helix_event::AsyncHook for PullDiagnosticsForLanguageServersHandler {
116109
}
117110
}
118111

119-
impl helix_event::AsyncHook for PullDiagnosticsForDocumentsHandler {
120-
type Event = PullDiagnosticsForDocumentsEvent;
121-
122-
fn handle_event(
123-
&mut self,
124-
event: Self::Event,
125-
_: Option<tokio::time::Instant>,
126-
) -> Option<tokio::time::Instant> {
127-
self.document_ids.insert(event.document_id);
128-
Some(Instant::now() + Duration::from_millis(50))
129-
}
130-
131-
fn finish_debounce(&mut self) {
132-
let document_ids = self.document_ids.clone();
133-
job::dispatch_blocking(move |editor, _| {
134-
pull_diagnostics_for_documents(editor, document_ids)
135-
})
136-
}
137-
}
138-
139-
fn pull_diagnostics_for_documents(editor: &mut Editor, document_ids: HashSet<DocumentId>) {
140-
for document_id in document_ids {
141-
let Some(doc) = editor.document_mut(document_id) else {
142-
return;
143-
};
144-
145-
let language_servers =
146-
doc.language_servers_with_feature(LanguageServerFeature::PullDiagnostics);
147-
148-
for language_server in language_servers {
149-
pull_diagnostics_for_document(doc, language_server);
150-
}
151-
}
152-
}
153-
154112
fn pull_diagnostic_for_language_servers(
155113
editor: &mut Editor,
156114
language_server_ids: HashSet<LanguageServerId>,
@@ -209,7 +167,7 @@ fn handle_pull_diagnostics_response(
209167
response: lsp::DocumentDiagnosticReport,
210168
server_id: LanguageServerId,
211169
uri: Uri,
212-
document_id: helix_view::DocumentId,
170+
document_id: DocumentId,
213171
) {
214172
let Some(doc) = editor.document_mut(document_id) else {
215173
return;
@@ -263,7 +221,7 @@ fn add_diagnostics_to_editor(
263221

264222
fn handle_document_diagnostic_report_kind(
265223
editor: &mut Editor,
266-
document_id: helix_view::DocumentId,
224+
document_id: DocumentId,
267225
report: Option<HashMap<lsp::Url, lsp::DocumentDiagnosticReportKind>>,
268226
server_id: LanguageServerId,
269227
) {

helix-view/src/handlers.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ pub struct Handlers {
2020
pub signature_hints: Sender<lsp::SignatureHelpEvent>,
2121
pub auto_save: Sender<AutoSaveEvent>,
2222
pub pull_diagnostics_for_language_servers: Sender<lsp::PullDiagnosticsForLanguageServersEvent>,
23-
pub pull_diagnostics_for_documents: Sender<lsp::PullDiagnosticsForDocumentsEvent>,
2423
}
2524

2625
impl Handlers {

helix-view/src/handlers/lsp.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,6 @@ pub struct PullDiagnosticsForLanguageServersEvent {
5252
pub language_server_ids: HashSet<helix_lsp::LanguageServerId>,
5353
}
5454

55-
pub struct PullDiagnosticsForDocumentsEvent {
56-
pub document_id: DocumentId,
57-
}
58-
5955
#[derive(Debug)]
6056
pub struct ApplyEditError {
6157
pub kind: ApplyEditErrorKind,

0 commit comments

Comments
 (0)