@@ -192,8 +192,7 @@ impl GlobalState {
192192 } ,
193193 Event :: Task ( mut task) => {
194194 let _p = profile:: span ( "GlobalState::handle_event/task" ) ;
195- let mut prime_caches_started = false ;
196- let mut prime_caches_progress = None ;
195+ let mut prime_caches_progress = Vec :: new ( ) ;
197196 loop {
198197 match task {
199198 Task :: Response ( response) => self . respond ( response) ,
@@ -203,13 +202,19 @@ impl GlobalState {
203202 }
204203 }
205204 Task :: Workspaces ( workspaces) => self . switch_workspaces ( workspaces) ,
206- Task :: PrimeCaches ( progress) => {
207- if let PrimeCachesProgress :: Started = progress {
208- prime_caches_started = true ;
205+ Task :: PrimeCaches ( progress) => match progress {
206+ PrimeCachesProgress :: Started => prime_caches_progress. push ( progress) ,
207+ PrimeCachesProgress :: StartedOnCrate { .. } => {
208+ match prime_caches_progress. last_mut ( ) {
209+ Some ( last @ PrimeCachesProgress :: StartedOnCrate { .. } ) => {
210+ // Coalesce subsequent update events.
211+ * last = progress;
212+ }
213+ _ => prime_caches_progress. push ( progress) ,
214+ }
209215 }
210-
211- prime_caches_progress = Some ( progress) ;
212- }
216+ PrimeCachesProgress :: Finished => prime_caches_progress. push ( progress) ,
217+ } ,
213218 }
214219 // Coalesce multiple task events into one loop turn
215220 task = match self . task_pool . receiver . try_recv ( ) {
@@ -218,7 +223,7 @@ impl GlobalState {
218223 } ;
219224 }
220225
221- if let Some ( progress) = prime_caches_progress {
226+ for progress in prime_caches_progress {
222227 let ( state, message, fraction) ;
223228 match progress {
224229 PrimeCachesProgress :: Started => {
@@ -238,11 +243,6 @@ impl GlobalState {
238243 }
239244 } ;
240245
241- if state != Progress :: Begin && prime_caches_started {
242- // Progress indicator needs to be created first.
243- self . report_progress ( "indexing" , Progress :: Begin , None , Some ( 0.0 ) ) ;
244- }
245-
246246 self . report_progress ( "indexing" , state, message, Some ( fraction) ) ;
247247 }
248248 }
0 commit comments