diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2023-10-09 04:39:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-09 04:39:52 +0100 |
commit | 35f028daf27bb40e86829e7b7cc19aa72a62c0a0 (patch) | |
tree | 6ab02d98771646b87197a40aa927c680158e7bab /cli/lsp/language_server.rs | |
parent | 2167a52d693e79c661f91d29164f59111f3bc3c9 (diff) |
perf(lsp): optimize formatting minified files (#20829)
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index dc36c0540..08ebfccee 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -1651,11 +1651,11 @@ impl Inner { } // spawn a blocking task to allow doing other work while this is occurring - let format_result = deno_core::unsync::spawn_blocking({ + let text_edits = deno_core::unsync::spawn_blocking({ let fmt_options = self.fmt_options.options.clone(); let document = document.clone(); move || { - match document.maybe_parsed_source() { + let format_result = match document.maybe_parsed_source() { Some(Ok(parsed_source)) => { format_parsed_source(&parsed_source, &fmt_options) } @@ -1672,26 +1672,24 @@ impl Inner { // it's not a js/ts file, so attempt to format its contents format_file(&file_path, &document.content(), &fmt_options) } + }; + match format_result { + Ok(Some(new_text)) => Some(text::get_edits( + &document.content(), + &new_text, + document.line_index().as_ref(), + )), + Ok(None) => Some(Vec::new()), + Err(err) => { + lsp_warn!("Format error: {:#}", err); + None + } } } }) .await .unwrap(); - let text_edits = match format_result { - Ok(Some(new_text)) => Some(text::get_edits( - &document.content(), - &new_text, - document.line_index().as_ref(), - )), - Ok(None) => Some(Vec::new()), - Err(err) => { - // TODO(lucacasonato): handle error properly - lsp_warn!("Format error: {:#}", err); - None - } - }; - self.performance.measure(mark); if let Some(text_edits) = text_edits { if text_edits.is_empty() { |