@@ -499,7 +499,7 @@ shakeOpen lspEnv defaultConfig logger debouncer
499
499
let hiedbWriter = HieDbWriter {.. }
500
500
progressAsync <- async $
501
501
when reportProgress $
502
- progressThread mostRecentProgressEvent inProgress
502
+ progressThread optProgressStyle mostRecentProgressEvent inProgress
503
503
exportsMap <- newVar mempty
504
504
505
505
actionQueue <- newQueue
@@ -517,7 +517,10 @@ shakeOpen lspEnv defaultConfig logger debouncer
517
517
shakeDatabaseProfile <- shakeDatabaseProfileIO shakeProfileDir
518
518
let ideState = IdeState {.. }
519
519
520
- IdeOptions { optOTMemoryProfiling = IdeOTMemoryProfiling otProfilingEnabled } <- getIdeOptionsIO shakeExtras
520
+ IdeOptions
521
+ { optOTMemoryProfiling = IdeOTMemoryProfiling otProfilingEnabled
522
+ , optProgressStyle
523
+ } <- getIdeOptionsIO shakeExtras
521
524
startTelemetry otProfilingEnabled logger $ state shakeExtras
522
525
523
526
return ideState
@@ -528,7 +531,7 @@ shakeOpen lspEnv defaultConfig logger debouncer
528
531
-- And two transitions, modelled by 'ProgressEvent':
529
532
-- 1. KickCompleted - transitions from Reporting into Idle
530
533
-- 2. KickStarted - transitions from Idle into Reporting
531
- progressThread mostRecentProgressEvent inProgress = progressLoopIdle
534
+ progressThread style mostRecentProgressEvent inProgress = progressLoopIdle
532
535
where
533
536
progressLoopIdle = do
534
537
atomically $ do
@@ -560,7 +563,7 @@ shakeOpen lspEnv defaultConfig logger debouncer
560
563
bracket_
561
564
(start u)
562
565
(stop u)
563
- (loop u Nothing )
566
+ (loop u 0 )
564
567
where
565
568
start id = LSP. sendNotification LSP. SProgress $
566
569
LSP. ProgressParams
@@ -585,16 +588,27 @@ shakeOpen lspEnv defaultConfig logger debouncer
585
588
current <- liftIO $ readVar inProgress
586
589
let done = length $ filter (== 0 ) $ HMap. elems current
587
590
let todo = HMap. size current
588
- let next = Just $ T. pack $ show done <> " / " <> show todo
591
+ let next = 100 * fromIntegral done / fromIntegral todo
589
592
when (next /= prev) $
590
593
LSP. sendNotification LSP. SProgress $
591
594
LSP. ProgressParams
592
595
{ _token = id
593
- , _value = LSP. Report $ LSP. WorkDoneProgressReportParams
594
- { _cancellable = Nothing
595
- , _message = next
596
- , _percentage = Nothing
597
- }
596
+ , _value = LSP. Report $ case style of
597
+ Explicit -> LSP. WorkDoneProgressReportParams
598
+ { _cancellable = Nothing
599
+ , _message = Just $ T. pack $ show done <> " /" <> show todo
600
+ , _percentage = Nothing
601
+ }
602
+ Percentage -> LSP. WorkDoneProgressReportParams
603
+ { _cancellable = Nothing
604
+ , _message = Nothing
605
+ , _percentage = Just next
606
+ }
607
+ NoProgress -> LSP. WorkDoneProgressReportParams
608
+ { _cancellable = Nothing
609
+ , _message = Nothing
610
+ , _percentage = Nothing
611
+ }
598
612
}
599
613
loop id next
600
614
0 commit comments