@@ -67,6 +67,15 @@ updateState _ StopProgress st = pure st
6767
6868data InProgress = InProgress { todo , done :: ! Int , current :: ! (HMap. HashMap NormalizedFilePath Int )}
6969
70+ recordProgress :: NormalizedFilePath -> (Int -> Int ) -> InProgress -> InProgress
71+ recordProgress file shift InProgress {.. } = case HMap. alterF alter file current of
72+ ((prev, new), m') ->
73+ let todo' = if isJust prev then todo else todo + 1
74+ done' = if new == 0 then done+ 1 else done
75+ in InProgress todo' done' m'
76+ where
77+ alter x = let x' = maybe (shift 0 ) shift x in ((x,x'), Just x')
78+
7079-- | A 'ProgressReporting' that enqueues Begin and End notifications in a new
7180-- thread, with a grace period (nothing will be sent if 'KickCompleted' arrives
7281-- before the end of the grace period).
@@ -145,14 +154,7 @@ delayedProgressReporting before after lspEnv optProgressStyle = do
145154 -- Do not remove the eta-expansion without profiling a session with at
146155 -- least 1000 modifications.
147156 where
148- f shift = void $ modifyVar' var $ \ InProgress {.. } ->
149- case HMap. alterF alter file current of
150- ((prev, new), m') ->
151- let todo' = if isJust prev then todo else todo + 1
152- done' = if new == 0 then done+ 1 else done
153- in InProgress todo' done' m'
154- where
155- alter x = let x' = maybe (shift 0 ) shift x in ((x,x'), Just x')
157+ f shift = modifyVar' var $ recordProgress file shift
156158
157159mRunLspT :: Applicative m => Maybe (LSP. LanguageContextEnv c ) -> LSP. LspT c m () -> m ()
158160mRunLspT (Just lspEnv) f = LSP. runLspT lspEnv f
0 commit comments