Skip to content

Commit 7ab7b45

Browse files
committed
Implicit cradle: match implicit-hie-cradle logic
1 parent 224c72e commit 7ab7b45

File tree

1 file changed

+11
-4
lines changed
  • ghcide/session-loader/Development/IDE/Session

1 file changed

+11
-4
lines changed

ghcide/session-loader/Development/IDE/Session/Implicit.hs

+11-4
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,18 @@ inferCradleTree start_dir =
4949
-- (dist-newstyle/.stack-work), prefer that
5050
<|> (cabalExecutable >> cabalConfigDir start_dir >>= \dir -> cabalWorkDir dir >> pure (cabalCradle dir))
5151
<|> (stackExecutable >> stackConfigDir start_dir >>= \dir -> stackWorkDir dir >> stackCradle dir)
52-
-- Redo the checks, but don't check for the work-dir, maybe the user hasn't run a build yet
53-
<|> (cabalExecutable >> cabalConfigDir start_dir >>= pure . cabalCradle)
52+
-- If we have a cabal.project OR we have a .cabal and dist-newstyle, prefer cabal
53+
<|> (cabalExecutable >> (cabalConfigDir start_dir <|> cabalFileAndWorkDir) >>= pure . cabalCradle)
54+
-- If we have a stack.yaml, use stack
5455
<|> (stackExecutable >> stackConfigDir start_dir >>= stackCradle)
56+
-- If we have a cabal file, use cabal
57+
<|> (cabalExecutable >> cabalFileDir start_dir >>= pure . cabalCradle)
5558

5659
where
5760
maybeItsBios = (\wdir -> (Bios (Program $ wdir </> ".hie-bios") Nothing Nothing, wdir)) <$> biosWorkDir start_dir
5861

62+
cabalFileAndWorkDir = cabalFileDir start_dir >>= (\dir -> cabalWorkDir dir >> pure dir)
63+
5964
stackCradle :: FilePath -> MaybeT IO (CradleTree a, FilePath)
6065
stackCradle fp = do
6166
pkgs <- stackYamlPkgs fp
@@ -90,8 +95,10 @@ stackWorkDir wdir = do
9095
unless check $ fail "No .stack-work"
9196

9297
cabalConfigDir :: FilePath -> MaybeT IO FilePath
93-
cabalConfigDir wdir = findFileUpwards (== "cabal.project") wdir
94-
<|> findFileUpwards (\fp -> takeExtension fp == ".cabal") wdir
98+
cabalConfigDir = findFileUpwards (\fp -> fp == "cabal.project" || fp == "cabal.project.local")
99+
100+
cabalFileDir :: FilePath -> MaybeT IO FilePath
101+
cabalFileDir = findFileUpwards (\fp -> takeExtension fp == ".cabal")
95102

96103
stackConfigDir :: FilePath -> MaybeT IO FilePath
97104
stackConfigDir = findFileUpwards isStack

0 commit comments

Comments
 (0)