@@ -426,6 +426,12 @@ fn loop_turn(
426
426
} ) ;
427
427
}
428
428
429
+ if !loop_state. workspace_loaded
430
+ && world_state. feature_flags . get ( "notifications.workspace-loaded" )
431
+ {
432
+ send_startup_progress ( & connection. sender , loop_state, world_state) ;
433
+ }
434
+
429
435
if !loop_state. workspace_loaded
430
436
&& world_state. roots_to_scan == 0
431
437
&& loop_state. pending_libraries . is_empty ( )
@@ -439,7 +445,6 @@ fn loop_turn(
439
445
move || snap. analysis ( ) . prime_caches ( subs) . unwrap_or_else ( |_: Canceled | ( ) )
440
446
} ) ;
441
447
}
442
- send_startup_progress ( & connection. sender , loop_state, world_state) ;
443
448
444
449
if state_changed {
445
450
update_file_notifications_on_threadpool (
@@ -708,18 +713,15 @@ fn send_startup_progress(
708
713
loop_state : & mut LoopState ,
709
714
world_state : & WorldState ,
710
715
) {
711
- if !world_state. feature_flags . get ( "notifications.workspace-loaded" ) {
712
- return ;
713
- }
714
716
let total: usize = world_state. workspaces . iter ( ) . map ( |it| it. n_packages ( ) ) . sum ( ) ;
715
717
let progress = total - world_state. roots_to_scan ;
716
718
if loop_state. roots_scanned_progress == Some ( progress) {
717
719
return ;
718
720
}
719
721
loop_state. roots_scanned_progress = Some ( progress) ;
720
722
721
- match ( progress, loop_state . workspace_loaded ) {
722
- ( 0 , false ) => {
723
+ match progress {
724
+ 0 => {
723
725
let work_done_progress_create = request_new :: < req:: WorkDoneProgressCreate > (
724
726
loop_state. next_request_id ( ) ,
725
727
WorkDoneProgressCreateParams {
@@ -737,20 +739,20 @@ fn send_startup_progress(
737
739
} ) ,
738
740
) ;
739
741
}
740
- ( _, false ) => send_startup_progress_notif (
742
+ progress if progress == total => send_startup_progress_notif (
743
+ sender,
744
+ WorkDoneProgress :: End ( WorkDoneProgressEnd {
745
+ message : Some ( format ! ( "rust-analyzer loaded, {} packages" , progress) ) ,
746
+ } ) ,
747
+ ) ,
748
+ progress => send_startup_progress_notif (
741
749
sender,
742
750
WorkDoneProgress :: Report ( WorkDoneProgressReport {
743
751
cancellable : None ,
744
752
message : Some ( format ! ( "{}/{} packages" , progress, total) ) ,
745
753
percentage : Some ( 100.0 * progress as f64 / total as f64 ) ,
746
754
} ) ,
747
755
) ,
748
- ( _, true ) => send_startup_progress_notif (
749
- sender,
750
- WorkDoneProgress :: End ( WorkDoneProgressEnd {
751
- message : Some ( format ! ( "rust-analyzer loaded, {} packages" , progress) ) ,
752
- } ) ,
753
- ) ,
754
756
}
755
757
}
756
758
0 commit comments