Skip to content

Commit

Permalink
Don’t hold lock forever
Browse files Browse the repository at this point in the history
  • Loading branch information
muglug committed May 2, 2024
1 parent 395a8aa commit fc1b121
Showing 1 changed file with 18 additions and 13 deletions.
31 changes: 18 additions & 13 deletions src/language_server/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@ impl LanguageServer for Backend {
async fn did_change_watched_files(&self, params: DidChangeWatchedFilesParams) {
let mut new_file_statuses = FxHashMap::default();

self.client
.log_message(MessageType::INFO, format!("watched files changed"))
.await;

// self.client
// .log_message(
// MessageType::INFO,
Expand Down Expand Up @@ -141,28 +145,22 @@ impl LanguageServer for Backend {
}
}

let mut existing_file_changes = self.file_changes.write().await;
{
let mut existing_file_changes = self.file_changes.write().await;

if let Some(existing_file_changes) = existing_file_changes.as_mut() {
existing_file_changes.extend(new_file_statuses);
} else {
*existing_file_changes = Some(new_file_statuses);
if let Some(existing_file_changes) = existing_file_changes.as_mut() {
existing_file_changes.extend(new_file_statuses);
} else {
*existing_file_changes = Some(new_file_statuses);
}
}

if Path::new(".git/index.lock").exists() {
self.client
.log_message(MessageType::INFO, "Waiting a sec while git is doing stuff")
.await;
} else {
self.client
.log_message(
MessageType::INFO,
format!("analyzing changes {:?}", self.file_changes),
)
.await;
self.do_analysis().await;
let mut file_changes = self.file_changes.write().await;
*file_changes = None;
self.emit_issues().await;
}
}
Expand Down Expand Up @@ -190,6 +188,13 @@ impl Backend {

let file_changes = file_changes_guard.take();

self.client
.log_message(
MessageType::INFO,
format!("scan & analyze changes — {:?}", file_changes),
)
.await;

let result = scan_and_analyze_async(
Vec::new(),
None,
Expand Down

0 comments on commit fc1b121

Please sign in to comment.