From 1545f05d87b2b0e6b293edc768c1cbff64d8adf3 Mon Sep 17 00:00:00 2001 From: Kazu Yamamoto Date: Tue, 23 Sep 2014 15:14:46 +0900 Subject: [PATCH] prepareAutogen skips its work if a cabal file does not exist. --- src/GHCModi.hs | 5 +++-- src/Misc.hs | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/GHCModi.hs b/src/GHCModi.hs index 565be8b..b9d35d7 100644 --- a/src/GHCModi.hs +++ b/src/GHCModi.hs @@ -28,6 +28,7 @@ import Data.List (intercalate) import Data.List.Split (splitOn) import Data.Version (showVersion) import Language.Haskell.GhcMod +import Language.Haskell.GhcMod.Internal (cradle) import Paths_ghc_mod import System.Console.GetOpt import System.Directory (setCurrentDirectory) @@ -87,7 +88,7 @@ run opt ref = flip E.catches handlers $ do let rootdir = cradleRootDir cradle0 -- c = cradle0 { cradleCurrentDir = rootdir } TODO: ????? setCurrentDirectory rootdir - prepareAutogen + prepareAutogen cradle0 -- Asynchronous db loading starts here. symdbreq <- newSymDbReq opt (res, _) <- runGhcModT opt $ getCurrentWorld >>= loop symdbreq ref @@ -129,7 +130,7 @@ loop symdbreq ref world = do when changed $ do liftIO $ ungetCommand ref cmdArg E.throw Restart - liftIO $ prepareAutogen + cradle >>= liftIO . prepareAutogen let (cmd,arg') = break (== ' ') cmdArg arg = dropWhile (== ' ') arg' (ret,ok) <- case cmd of diff --git a/src/Misc.hs b/src/Misc.hs index 153531d..eeb84d5 100644 --- a/src/Misc.hs +++ b/src/Misc.hs @@ -21,15 +21,16 @@ import Control.Applicative ((<$>)) import Control.Concurrent (threadDelay) import Control.Concurrent.Async (Async, async, wait) import Control.Exception (Exception) -import Control.Monad (unless) +import Control.Monad (unless, when) import CoreMonad (liftIO) import Data.IORef (IORef, newIORef, readIORef, writeIORef) import Data.List (isPrefixOf) +import Data.Maybe (isJust) import Data.Time (UTCTime) import Data.Typeable (Typeable) import System.Directory (getModificationTime, doesDirectoryExist, getDirectoryContents) -import System.Process import System.IO (openBinaryFile, IOMode(..)) +import System.Process import Language.Haskell.GhcMod import Language.Haskell.GhcMod.Internal @@ -168,8 +169,8 @@ watch n hdl = do threadDelay 100000 watch (n - 1) hdl -prepareAutogen :: IO () -prepareAutogen = do +prepareAutogen :: Cradle -> IO () +prepareAutogen crdl = when (isJust $ cradleCabalFile crdl) $ do prepared <- isAutogenPrepared unless prepared $ do hdl <- build