on master help sign in
Don't repeatedly update the progress (#230)
commit9d1f2baff8758b8c46f488455849e58dcd4a8a53 authorNeil Mitchell <ndmitchell@gmail.com> dateThu 12 Dec 2019, 08:00 (7 years ago) parent481ca01
1 file changed+14−11
src/Development/IDE/Core/Shake.hs+14−11
src/Development/IDE/Core/Shake.hs+14−11
@@ -311,7 +311,7 @@ lspShakeProgress getLspId sendMsg prog = do
311311 sendMsg $ LSP.ReqWorkDoneProgressCreate $ LSP.fmServerWorkDoneProgressCreateRequest
312312 lspId $ LSP.WorkDoneProgressCreateParams
313313 { _token = u }
314− bracket_ (start u) (stop u) (loop u)
314+ bracket_ (start u) (stop u) (loop u Nothing)
315315 where
316316 start id = sendMsg $ LSP.NotWorkDoneProgressBegin $ LSP.fmServerWorkDoneProgressBeginNotification
317317 LSP.ProgressParams
@@ -331,20 +331,23 @@ lspShakeProgress getLspId sendMsg prog = do
331331 }
332332 }
333333 sample = 0.1
334− loop id = forever $ do
334+ loop id prev = do
335335 sleep sample
336336 p <- prog
337337 let done = countSkipped p + countBuilt p
338338 let todo = done + countUnknown p + countTodo p
339− sendMsg $ LSP.NotWorkDoneProgressReport $ LSP.fmServerWorkDoneProgressReportNotification
340− LSP.ProgressParams
341− { _token = id
342− , _value = LSP.WorkDoneProgressReportParams
343− { _cancellable = Nothing
344− , _message = Just $ T.pack $ show done <> "/" <> show todo
345− , _percentage = Nothing
346− }
347− }
339+ let next = Just $ T.pack $ show done <> "/" <> show todo
340+ when (next /= prev) $
341+ sendMsg $ LSP.NotWorkDoneProgressReport $ LSP.fmServerWorkDoneProgressReportNotification
342+ LSP.ProgressParams
343+ { _token = id
344+ , _value = LSP.WorkDoneProgressReportParams
345+ { _cancellable = Nothing
346+ , _message = next
347+ , _percentage = Nothing
348+ }
349+ }
350+ loop id next
348351
349352shakeProfile :: IdeState -> FilePath -> IO ()
350353shakeProfile IdeState{..} = shakeProfileDatabase shakeDb