Skip to content

Commit 276fd0e

Browse files
committed
add diagnostic interval config
1 parent 40e7b56 commit 276fd0e

File tree

4 files changed

+28
-13
lines changed

4 files changed

+28
-13
lines changed

crates/emmylua_ls/src/context/file_diagnostic.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ impl FileDiagnostic {
3030
}
3131

3232
#[allow(unused)]
33-
pub async fn add_diagnostic_task(&self, file_id: FileId) {
33+
pub async fn add_diagnostic_task(&self, file_id: FileId, interval: u64) {
3434
let mut tokens = self.diagnostic_tokens.lock().await;
3535

3636
if let Some(token) = tokens.get(&file_id) {
@@ -44,8 +44,6 @@ impl FileDiagnostic {
4444
drop(tokens); // free the lock
4545

4646
let analysis = self.analysis.clone();
47-
let emmyrc = analysis.read().await.get_emmyrc();
48-
let interval = emmyrc.diagnostics.diagnostic_interval.unwrap_or(500);
4947
let client = self.client.clone();
5048
let diagnostic_tokens = self.diagnostic_tokens.clone();
5149
let file_id_clone = file_id.clone();
@@ -80,9 +78,9 @@ impl FileDiagnostic {
8078
}
8179

8280
// todo add message show
83-
pub async fn add_files_diagnostic_task(&self, file_ids: Vec<FileId>) {
81+
pub async fn add_files_diagnostic_task(&self, file_ids: Vec<FileId>, interval: u64) {
8482
for file_id in file_ids {
85-
self.add_diagnostic_task(file_id).await;
83+
self.add_diagnostic_task(file_id, interval).await;
8684
}
8785
}
8886

crates/emmylua_ls/src/handlers/text_document/text_document_handler.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
use lsp_types::{DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidOpenTextDocumentParams, DidSaveTextDocumentParams};
1+
use lsp_types::{
2+
DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidOpenTextDocumentParams,
3+
DidSaveTextDocumentParams,
4+
};
25

36
use crate::context::ServerContextSnapshot;
47

@@ -10,8 +13,13 @@ pub async fn on_did_open_text_document(
1013
let uri = params.text_document.uri;
1114
let text = params.text_document.text;
1215
let file_id = analysis.update_file_by_uri(&uri, Some(text));
16+
let emmyrc = analysis.get_emmyrc();
17+
let interval = emmyrc.diagnostics.diagnostic_interval.unwrap_or(500);
1318
if let Some(file_id) = file_id {
14-
context.file_diagnostic.add_diagnostic_task(file_id).await;
19+
context
20+
.file_diagnostic
21+
.add_diagnostic_task(file_id, interval)
22+
.await;
1523
}
1624

1725
Some(())
@@ -24,8 +32,13 @@ pub async fn on_did_save_text_document(
2432
let analysis = context.analysis.read().await;
2533
let uri = params.text_document.uri;
2634
let file_id = analysis.get_file_id(&uri);
35+
let emmyrc = analysis.get_emmyrc();
36+
let interval = emmyrc.diagnostics.diagnostic_interval.unwrap_or(500);
2737
if let Some(file_id) = file_id {
28-
context.file_diagnostic.add_diagnostic_task(file_id).await;
38+
context
39+
.file_diagnostic
40+
.add_diagnostic_task(file_id, interval)
41+
.await;
2942
}
3043

3144
Some(())
@@ -39,9 +52,14 @@ pub async fn on_did_change_text_document(
3952
let uri = params.text_document.uri;
4053
let text = params.content_changes.first()?.text.clone();
4154
let file_id = analysis.update_file_by_uri(&uri, Some(text));
55+
let emmyrc = analysis.get_emmyrc();
56+
let interval = emmyrc.diagnostics.diagnostic_interval.unwrap_or(500);
4257
drop(analysis);
4358
if let Some(file_id) = file_id {
44-
context.file_diagnostic.add_diagnostic_task(file_id).await;
59+
context
60+
.file_diagnostic
61+
.add_diagnostic_task(file_id, interval)
62+
.await;
4563
}
4664

4765
Some(())
@@ -51,6 +69,5 @@ pub async fn on_did_close_document(
5169
_: ServerContextSnapshot,
5270
_: DidCloseTextDocumentParams,
5371
) -> Option<()> {
54-
5572
Some(())
56-
}
73+
}

crates/emmylua_ls/src/handlers/text_document/watched_file_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pub async fn on_did_change_watched_files(
1010
let mut analysis = context.analysis.write().await;
1111
let emmyrc = analysis.get_emmyrc();
1212
let encoding = &emmyrc.workspace.encoding;
13+
let interval = emmyrc.diagnostics.diagnostic_interval.unwrap_or(500);
1314
let mut watched_lua_files: Vec<(Uri, Option<String>)> = Vec::new();
1415
// let
1516
for file_event in params.changes.into_iter() {
@@ -54,7 +55,7 @@ pub async fn on_did_change_watched_files(
5455
let file_ids = analysis.update_files_by_uri(watched_lua_files);
5556
context
5657
.file_diagnostic
57-
.add_files_diagnostic_task(file_ids)
58+
.add_files_diagnostic_task(file_ids, interval)
5859
.await;
5960

6061
Some(())

crates/emmylua_ls/src/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const CRATE_VERSION: &str = env!("CARGO_PKG_VERSION");
1919

2020
#[tokio::main]
2121
async fn main() -> Result<(), Box<dyn Error + Sync + Send>> {
22-
env::set_var("RUST_BACKTRACE", "full");
2322
let cmd_args = CmdArgs::from_args();
2423
let (connection, threads) = match cmd_args.communication {
2524
cmd_args::Communication::Stdio => Connection::stdio(),

0 commit comments

Comments
 (0)