diff --git a/ghcide/exe/Main.hs b/ghcide/exe/Main.hs index 99b6c18d7a5..5bcb9844b55 100644 --- a/ghcide/exe/Main.hs +++ b/ghcide/exe/Main.hs @@ -22,11 +22,11 @@ import Development.IDE (Logger (Logger), Priority (Info), action) import Development.IDE.Core.OfInterest (kick) import Development.IDE.Core.Rules (mainRule) +import Development.IDE.Graph (ShakeOptions (shakeThreads)) import qualified Development.IDE.Main as Main import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde import qualified Development.IDE.Plugin.Test as Test import Development.IDE.Types.Options -import Development.IDE.Graph (ShakeOptions (shakeThreads)) import Ide.Plugin.Config (Config (checkParents, checkProject)) import Ide.Plugin.ConfigUtils (pluginsToDefaultConfig, pluginsToVSCodeExtensionSchema) @@ -98,8 +98,8 @@ main = do then Test.plugin else mempty - ,Main.argsIdeOptions = \config sessionLoader -> - let defOptions = defaultIdeOptions sessionLoader + ,Main.argsIdeOptions = \config sessionLoader -> + let defOptions = Main.argsIdeOptions def config sessionLoader in defOptions { optShakeProfiling = argsShakeProfiling , optOTMemoryProfiling = IdeOTMemoryProfiling argsOTMemoryProfiling diff --git a/ghcide/src/Development/IDE/Main.hs b/ghcide/src/Development/IDE/Main.hs index c3a34415cc7..3d8c4608a18 100644 --- a/ghcide/src/Development/IDE/Main.hs +++ b/ghcide/src/Development/IDE/Main.hs @@ -148,7 +148,7 @@ instance Default Arguments where , argsGhcidePlugin = mempty , argsHlsPlugins = pluginDescToIdePlugins Ghcide.descriptors , argsSessionLoadingOptions = def - , argsIdeOptions = const defaultIdeOptions + , argsIdeOptions = const (defaultIdeOptions False) , argsLspOptions = def {LSP.completionTriggerCharacters = Just "."} , argsDefaultHlsConfig = def , argsGetHieDbLoc = getHieDbLoc diff --git a/ghcide/src/Development/IDE/Types/Options.hs b/ghcide/src/Development/IDE/Types/Options.hs index 804a82e5cad..8d29af5d633 100644 --- a/ghcide/src/Development/IDE/Types/Options.hs +++ b/ghcide/src/Development/IDE/Types/Options.hs @@ -90,7 +90,7 @@ optShakeFiles opts | otherwise = Just value where value = shakeFiles (optShakeOptions opts) - defValue = shakeFiles (optShakeOptions $ defaultIdeOptions undefined) + defValue = shakeFiles (optShakeOptions $ defaultIdeOptions False undefined) data OptHaddockParse = HaddockParse | NoHaddockParse deriving (Eq,Ord,Show,Enum) @@ -119,8 +119,8 @@ clientSupportsProgress :: LSP.ClientCapabilities -> IdeReportProgress clientSupportsProgress caps = IdeReportProgress $ Just True == (LSP._workDoneProgress =<< LSP._window (caps :: LSP.ClientCapabilities)) -defaultIdeOptions :: Action IdeGhcSession -> IdeOptions -defaultIdeOptions session = IdeOptions +defaultIdeOptions :: Bool -> Action IdeGhcSession -> IdeOptions +defaultIdeOptions optRunSubsetValue session = IdeOptions {optPreprocessor = IdePreprocessedSource [] [] ,optGhcSession = session ,optExtensions = ["hs", "lhs"] @@ -128,6 +128,7 @@ defaultIdeOptions session = IdeOptions ,optShakeOptions = shakeOptions {shakeThreads = 0 ,shakeFiles = "/dev/null" + ,shakeReverseDependencies = optRunSubsetValue } ,optShakeProfiling = Nothing ,optOTMemoryProfiling = IdeOTMemoryProfiling False @@ -143,7 +144,7 @@ defaultIdeOptions session = IdeOptions ,optCustomDynFlags = id ,optSkipProgress = defaultSkipProgress ,optProgressStyle = Explicit - ,optRunSubset = False + ,optRunSubset = optRunSubsetValue } defaultSkipProgress :: Typeable a => a -> Bool diff --git a/hls-graph/src/Development/IDE/Graph.hs b/hls-graph/src/Development/IDE/Graph.hs index 1578dda0867..9de1ec30143 100644 --- a/hls-graph/src/Development/IDE/Graph.hs +++ b/hls-graph/src/Development/IDE/Graph.hs @@ -7,7 +7,7 @@ module Development.IDE.Graph( actionFinally, actionBracket, actionCatch, Shake.ShakeException(..), -- * Configuration - ShakeOptions(shakeAllowRedefineRules, shakeThreads, shakeFiles, shakeExtra), + ShakeOptions(shakeAllowRedefineRules, shakeThreads, shakeFiles, shakeExtra, shakeReverseDependencies), getShakeExtra, getShakeExtraRules, newShakeExtra, -- * Explicit parallelism parallel, @@ -19,7 +19,7 @@ module Development.IDE.Graph( reschedule, ) where -import qualified Development.Shake as Shake -import Development.IDE.Graph.Internal.Action -import Development.IDE.Graph.Internal.Options -import Development.IDE.Graph.Internal.Rules +import Development.IDE.Graph.Internal.Action +import Development.IDE.Graph.Internal.Options +import Development.IDE.Graph.Internal.Rules +import qualified Development.Shake as Shake diff --git a/hls-graph/src/Development/IDE/Graph/Internal/Options.hs b/hls-graph/src/Development/IDE/Graph/Internal/Options.hs index 9c3e129b8c2..abd6db6ceec 100644 --- a/hls-graph/src/Development/IDE/Graph/Internal/Options.hs +++ b/hls-graph/src/Development/IDE/Graph/Internal/Options.hs @@ -2,22 +2,23 @@ module Development.IDE.Graph.Internal.Options where -import qualified Development.Shake as Shake -import qualified Data.HashMap.Strict as Map -import Development.IDE.Graph.Internal.Action -import Development.IDE.Graph.Internal.Rules -import Data.Dynamic +import Data.Dynamic +import qualified Data.HashMap.Strict as Map +import Development.IDE.Graph.Internal.Action +import Development.IDE.Graph.Internal.Rules +import qualified Development.Shake as Shake data ShakeOptions = ShakeOptions { - shakeThreads :: Int, - shakeFiles :: FilePath, - shakeExtra :: Maybe Dynamic, - shakeAllowRedefineRules :: Bool, - shakeTimings :: Bool + shakeThreads :: Int, + shakeFiles :: FilePath, + shakeExtra :: Maybe Dynamic, + shakeAllowRedefineRules :: Bool, + shakeReverseDependencies :: Bool, + shakeTimings :: Bool } shakeOptions :: ShakeOptions -shakeOptions = ShakeOptions 0 ".shake" Nothing False False +shakeOptions = ShakeOptions 0 ".shake" Nothing False False False fromShakeOptions :: ShakeOptions -> Shake.ShakeOptions fromShakeOptions ShakeOptions{..} = Shake.shakeOptions{ @@ -25,7 +26,8 @@ fromShakeOptions ShakeOptions{..} = Shake.shakeOptions{ Shake.shakeFiles = shakeFiles, Shake.shakeExtra = maybe Map.empty f shakeExtra, Shake.shakeAllowRedefineRules = shakeAllowRedefineRules, - Shake.shakeTimings = shakeTimings + Shake.shakeTimings = shakeTimings, + Shake.shakeReverseDependencies = shakeReverseDependencies } where f x = Map.singleton (dynTypeRep x) x diff --git a/src/Ide/Main.hs b/src/Ide/Main.hs index 0c54145a800..5beeff8679f 100644 --- a/src/Ide/Main.hs +++ b/src/Ide/Main.hs @@ -15,12 +15,12 @@ import qualified Data.ByteString.Lazy.Char8 as LBS import Data.Default import qualified Data.Text as T import Development.IDE.Core.Rules +import Development.IDE.Graph (ShakeOptions (shakeThreads)) import Development.IDE.Main (isLSP) import qualified Development.IDE.Main as Main import qualified Development.IDE.Session as Session import Development.IDE.Types.Logger as G import qualified Development.IDE.Types.Options as Ghcide -import Development.IDE.Graph (ShakeOptions (shakeThreads)) import Ide.Arguments import Ide.Logger import Ide.Plugin.ConfigUtils (pluginsToDefaultConfig, @@ -98,8 +98,8 @@ runLspMode ghcideArgs@GhcideArguments{..} idePlugins = do { Main.argCommand = argsCommand , Main.argsHlsPlugins = idePlugins , Main.argsLogger = pure hlsLogger - , Main.argsIdeOptions = \_config sessionLoader -> - let defOptions = Ghcide.defaultIdeOptions sessionLoader + , Main.argsIdeOptions = \config sessionLoader -> + let defOptions = Main.argsIdeOptions def config sessionLoader in defOptions { Ghcide.optShakeProfiling = argsShakeProfiling , Ghcide.optTesting = Ghcide.IdeTesting argsTesting