Skip to content

Commit ff22098

Browse files
committed
Avoid unnecessarily dirtying IsFileOfInterest
1 parent ac1c346 commit ff22098

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

ghcide/src/Development/IDE/Core/OfInterest.hs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ getFilesOfInterestUntracked = do
7777
addFileOfInterest :: IdeState -> NormalizedFilePath -> FileOfInterestStatus -> IO ()
7878
addFileOfInterest state f v = do
7979
OfInterestVar var <- getIdeGlobalState state
80-
files <- modifyVar' var $ HashMap.insert f v
81-
recordDirtyKeys (shakeExtras state) IsFileOfInterest [f]
82-
logDebug (ideLogger state) $ "Set files of interest to: " <> T.pack (show files)
80+
(prev, files) <- modifyVar var $ \dict -> do
81+
let (prev, new) = HashMap.alterF (, Just v) f dict
82+
pure (new, (prev, dict))
83+
when (prev /= Just v) $
84+
recordDirtyKeys (shakeExtras state) IsFileOfInterest [f]
85+
logDebug (ideLogger state) $
86+
"Set files of interest to: " <> T.pack (show files)
8387

8488
deleteFileOfInterest :: IdeState -> NormalizedFilePath -> IO ()
8589
deleteFileOfInterest state f = do

0 commit comments

Comments
 (0)