aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/rust-analyzer/src/reload.rs57
1 files changed, 28 insertions, 29 deletions
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index cdd6eae69..a8ae56070 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -117,35 +117,6 @@ impl GlobalState {
117 } 117 }
118 } 118 }
119 119
120 pub(crate) fn fetch_build_data_request(&mut self, build_data_collector: BuildDataCollector) {
121 self.fetch_build_data_queue.request_op(build_data_collector);
122 }
123
124 pub(crate) fn fetch_build_data_if_needed(&mut self) {
125 let mut build_data_collector = match self.fetch_build_data_queue.should_start_op() {
126 Some(it) => it,
127 None => return,
128 };
129 self.task_pool.handle.spawn_with_sender(move |sender| {
130 sender.send(Task::FetchBuildData(BuildDataProgress::Begin)).unwrap();
131
132 let progress = {
133 let sender = sender.clone();
134 move |msg| {
135 sender.send(Task::FetchBuildData(BuildDataProgress::Report(msg))).unwrap()
136 }
137 };
138 let res = build_data_collector.collect(&progress);
139 sender.send(Task::FetchBuildData(BuildDataProgress::End(res))).unwrap();
140 });
141 }
142 pub(crate) fn fetch_build_data_completed(
143 &mut self,
144 build_data: anyhow::Result<BuildDataResult>,
145 ) {
146 self.fetch_build_data_queue.op_completed(Some(build_data))
147 }
148
149 pub(crate) fn fetch_workspaces_request(&mut self) { 120 pub(crate) fn fetch_workspaces_request(&mut self) {
150 self.fetch_workspaces_queue.request_op(()) 121 self.fetch_workspaces_queue.request_op(())
151 } 122 }
@@ -204,6 +175,34 @@ impl GlobalState {
204 self.fetch_workspaces_queue.op_completed(workspaces) 175 self.fetch_workspaces_queue.op_completed(workspaces)
205 } 176 }
206 177
178 pub(crate) fn fetch_build_data_request(&mut self, build_data_collector: BuildDataCollector) {
179 self.fetch_build_data_queue.request_op(build_data_collector);
180 }
181 pub(crate) fn fetch_build_data_if_needed(&mut self) {
182 let mut build_data_collector = match self.fetch_build_data_queue.should_start_op() {
183 Some(it) => it,
184 None => return,
185 };
186 self.task_pool.handle.spawn_with_sender(move |sender| {
187 sender.send(Task::FetchBuildData(BuildDataProgress::Begin)).unwrap();
188
189 let progress = {
190 let sender = sender.clone();
191 move |msg| {
192 sender.send(Task::FetchBuildData(BuildDataProgress::Report(msg))).unwrap()
193 }
194 };
195 let res = build_data_collector.collect(&progress);
196 sender.send(Task::FetchBuildData(BuildDataProgress::End(res))).unwrap();
197 });
198 }
199 pub(crate) fn fetch_build_data_completed(
200 &mut self,
201 build_data: anyhow::Result<BuildDataResult>,
202 ) {
203 self.fetch_build_data_queue.op_completed(Some(build_data))
204 }
205
207 pub(crate) fn switch_workspaces(&mut self) { 206 pub(crate) fn switch_workspaces(&mut self) {
208 let _p = profile::span("GlobalState::switch_workspaces"); 207 let _p = profile::span("GlobalState::switch_workspaces");
209 let workspaces = self.fetch_workspaces_queue.last_op_result(); 208 let workspaces = self.fetch_workspaces_queue.last_op_result();