@@ -126,29 +126,30 @@ delayedProgressReporting before after lspEnv optProgressStyle = do
126
126
}
127
127
}
128
128
loop id prev = do
129
- liftIO $ sleep after
130
129
current <- liftIO $ readVar inProgress
131
130
let done = length $ filter (== 0 ) $ HMap. elems current
132
131
let todo = HMap. size current
133
- let next = 100 * fromIntegral done / fromIntegral todo
134
- when (style /= NoProgress && next /= prev) $
135
- LSP. sendNotification LSP. SProgress $
136
- LSP. ProgressParams
137
- { _token = id
138
- , _value = LSP. Report $ case style of
139
- Explicit -> LSP. WorkDoneProgressReportParams
140
- { _cancellable = Nothing
141
- , _message = Just $ T. pack $ show done <> " /" <> show todo
142
- , _percentage = Nothing
143
- }
144
- Percentage -> LSP. WorkDoneProgressReportParams
145
- { _cancellable = Nothing
146
- , _message = Nothing
147
- , _percentage = Just next
148
- }
149
- NoProgress -> error " unreachable"
150
- }
151
- loop id next
132
+ if todo == 0 then loop id 0 else do
133
+ let next = 100 * fromIntegral done / fromIntegral todo
134
+ liftIO $ sleep after
135
+ when (style /= NoProgress && next /= prev) $
136
+ LSP. sendNotification LSP. SProgress $
137
+ LSP. ProgressParams
138
+ { _token = id
139
+ , _value = LSP. Report $ case style of
140
+ Explicit -> LSP. WorkDoneProgressReportParams
141
+ { _cancellable = Nothing
142
+ , _message = Just $ T. pack $ show done <> " /" <> show todo
143
+ , _percentage = Nothing
144
+ }
145
+ Percentage -> LSP. WorkDoneProgressReportParams
146
+ { _cancellable = Nothing
147
+ , _message = Nothing
148
+ , _percentage = Just next
149
+ }
150
+ NoProgress -> error " unreachable"
151
+ }
152
+ loop id next
152
153
153
154
withProgressVar var file = actionBracket (f succ ) (const $ f pred ) . const
154
155
-- This functions are deliberately eta-expanded to avoid space leaks.
0 commit comments