File tree 1 file changed +5
-3
lines changed
ghcide/src/Development/IDE/Core
1 file changed +5
-3
lines changed Original file line number Diff line number Diff line change @@ -36,14 +36,16 @@ newAsyncDebouncer = Debouncer . asyncRegisterEvent <$> STM.newIO
36
36
-- | Register an event that will fire after the given delay if no other event
37
37
-- for the same key gets registered until then.
38
38
asyncRegisterEvent :: (Eq k , Hashable k ) => STM. Map k (TVar (Seconds , IO () )) -> Seconds -> k -> IO () -> IO ()
39
- asyncRegisterEvent d delay k fire = join $ atomically $ do
39
+ asyncRegisterEvent d delay k fire = join $ atomicallyNamed " debouncer - register " $ do
40
40
prev <- STM. lookup k d
41
41
case prev of
42
42
Just v -> writeTVar v (delay, fire) >> return (pure () )
43
- Nothing -> do
43
+ Nothing
44
+ | delay == 0 -> return fire
45
+ | otherwise -> do
44
46
var <- newTVar (delay, fire)
45
47
STM. insert var k d
46
- return $ void $ async $ do
48
+ return $ void $ async $
47
49
join $ atomicallyNamed " debouncer - sleep" $ do
48
50
(s,act) <- readTVar var
49
51
unsafeIOToSTM $ sleep s
You can’t perform that action at this time.
0 commit comments