diff --git a/CabalDev.hs b/CabalDev.hs index 79cd71f..1e4be52 100644 --- a/CabalDev.hs +++ b/CabalDev.hs @@ -1,7 +1,9 @@ +{-# LANGUAGE DoAndIfThenElse #-} + module CabalDev (modifyOptions) where {- -If the directory 'cabal-dev/packages-X.X.X.conf' exists, add it to the +If the directory 'cabal-dev/packages-X.X.X.conf' exists, add it to the options ghc-mod uses to check the source. Otherwise just pass it on. -} @@ -17,9 +19,9 @@ modifyOptions :: Options -> IO Options modifyOptions opts = fmap (has_cdev opts) findCabalDev where - has_cdev :: Options -> Maybe String -> Options - has_cdev op Nothing = op - has_cdev op (Just path) = addPath op path + has_cdev :: Options -> Maybe String -> Options + has_cdev op Nothing = op + has_cdev op (Just path) = addPath op path findCabalDev :: IO (Maybe String) findCabalDev = @@ -28,18 +30,16 @@ findCabalDev = addPath :: Options -> String -> Options addPath orig_opts path = do let orig_paths = packageConfs orig_opts - orig_opts { - packageConfs = orig_paths ++ [path] } + orig_opts { packageConfs = orig_paths ++ [path] } searchIt :: [FilePath] -> IO (Maybe FilePath) searchIt [] = return Nothing searchIt path = do a <- doesDirectoryExist (mpath path) - case a of - False -> return Nothing - True -> do - b <- find always (fileName ~~? "packages*.conf") $ mpath path - maybe (searchIt $ init path) (return . Just) $ listToMaybe b - where - mpath a = (joinPath a) ++ "cabal-dev/" - + if a then do + b <- find always (fileName ~~? "packages*.conf") $ mpath path + maybe (searchIt $ init path) (return . Just) $ listToMaybe b + else + return Nothing + where + mpath a = joinPath a ++ "cabal-dev/"