mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-29 02:52:11 +00:00
More rustfmt hang investigations
This commit is contained in:
parent
88b901878e
commit
a830096546
4 changed files with 18 additions and 14 deletions
|
|
@ -396,6 +396,7 @@ impl GlobalState {
|
||||||
|| !self.config.same_source_root_parent_map(&self.local_roots_parent_map)
|
|| !self.config.same_source_root_parent_map(&self.local_roots_parent_map)
|
||||||
{
|
{
|
||||||
let config_change = {
|
let config_change = {
|
||||||
|
let _p = span!(Level::INFO, "GlobalState::process_changes/config_change").entered();
|
||||||
let user_config_path = (|| {
|
let user_config_path = (|| {
|
||||||
let mut p = Config::user_config_dir_path()?;
|
let mut p = Config::user_config_dir_path()?;
|
||||||
p.push("rust-analyzer.toml");
|
p.push("rust-analyzer.toml");
|
||||||
|
|
@ -569,12 +570,12 @@ impl GlobalState {
|
||||||
if let Some((method, start)) = self.req_queue.incoming.complete(&response.id) {
|
if let Some((method, start)) = self.req_queue.incoming.complete(&response.id) {
|
||||||
if let Some(err) = &response.error {
|
if let Some(err) = &response.error {
|
||||||
if err.message.starts_with("server panicked") {
|
if err.message.starts_with("server panicked") {
|
||||||
self.poke_rust_analyzer_developer(format!("{}, check the log", err.message))
|
self.poke_rust_analyzer_developer(format!("{}, check the log", err.message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let duration = start.elapsed();
|
let duration = start.elapsed();
|
||||||
tracing::debug!("handled {} - ({}) in {:0.2?}", method, response.id, duration);
|
tracing::debug!(name: "message response", method, %response.id, duration = format_args!("{:0.2?}", duration));
|
||||||
self.send(response.into());
|
self.send(response.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,8 @@ pub(crate) fn handle_did_open_text_document(
|
||||||
tracing::error!("duplicate DidOpenTextDocument: {}", path);
|
tracing::error!("duplicate DidOpenTextDocument: {}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
state.vfs.write().0.set_file_contents(path, Some(params.text_document.text.into_bytes()));
|
let contents = params.text_document.text.into_bytes();
|
||||||
|
state.vfs.write().0.set_file_contents(path, Some(contents));
|
||||||
if state.config.discover_workspace_config().is_some() {
|
if state.config.discover_workspace_config().is_some() {
|
||||||
tracing::debug!("queuing task");
|
tracing::debug!("queuing task");
|
||||||
let _ = state
|
let _ = state
|
||||||
|
|
|
||||||
|
|
@ -2318,7 +2318,8 @@ fn run_rustfmt(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
tracing::debug!(?command, "created format command");
|
let output = {
|
||||||
|
let _p = tracing::info_span!("rustfmt", ?command).entered();
|
||||||
|
|
||||||
let mut rustfmt = command
|
let mut rustfmt = command
|
||||||
.stdin(Stdio::piped())
|
.stdin(Stdio::piped())
|
||||||
|
|
@ -2329,7 +2330,9 @@ fn run_rustfmt(
|
||||||
|
|
||||||
rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?;
|
rustfmt.stdin.as_mut().unwrap().write_all(file.as_bytes())?;
|
||||||
|
|
||||||
let output = rustfmt.wait_with_output()?;
|
rustfmt.wait_with_output()?
|
||||||
|
};
|
||||||
|
|
||||||
let captured_stdout = String::from_utf8(output.stdout)?;
|
let captured_stdout = String::from_utf8(output.stdout)?;
|
||||||
let captured_stderr = String::from_utf8(output.stderr).unwrap_or_default();
|
let captured_stderr = String::from_utf8(output.stderr).unwrap_or_default();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -701,8 +701,7 @@ impl GlobalState {
|
||||||
|
|
||||||
let (crate_graph, proc_macro_paths, ws_data) = {
|
let (crate_graph, proc_macro_paths, ws_data) = {
|
||||||
// Create crate graph from all the workspaces
|
// Create crate graph from all the workspaces
|
||||||
let vfs = &mut self.vfs.write().0;
|
let vfs = &self.vfs.read().0;
|
||||||
|
|
||||||
let load = |path: &AbsPath| {
|
let load = |path: &AbsPath| {
|
||||||
let vfs_path = vfs::VfsPath::from(path.to_path_buf());
|
let vfs_path = vfs::VfsPath::from(path.to_path_buf());
|
||||||
self.crate_graph_file_dependencies.insert(vfs_path.clone());
|
self.crate_graph_file_dependencies.insert(vfs_path.clone());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue