Anyone still using Intero?

Is anyone still using Intero? @chrisdone announced the project had reached its end of life in November 2019.

I ask because parts of Stack’s code base seem to check for it. If Intero’s time has now passed, then that code could be simplified.

2 Likes

Haven’t heard that name in a looooong time.

I’d be surprised if anyone was still using it, to be honest :thinking:

1 Like

Me too. I’d been using for a few years, but when it died off I just moved to dante and have been using it since then.

1 Like

I’d also be surprised to hear of any active users of Intero. As I recall, I switched to dante pretty soon after it was deprecated (and thence to HLS some time later).

1 Like

I’m a bit confused why parts of a build tool’s code base check for an IDE. Perhaps there’s more to this than meets the eye?

1 Like

I might be wrong but I understand that intero was a fork of ghci (with a few goodies which have been merged back into ghci). I would assume than stack will launch intero instead of ghic when doing things like stack repl. This is a total guess, so I might be totally wrong.

1 Like

On what Stack is doing, it is indeed GHCi-related. Stack.Ghci.runGhci has (extract only):

        -- TODO: Consider optimizing this check. Perhaps if no
        -- "with-ghc" is specified, assume that it is not using intero.
        checkIsIntero =
            -- Optimization dependent on the behavior of renderScript -
            -- it doesn't matter if it's intero or ghci when loading
            -- multiple packages.
            case pkgs of
                [_] -> do
                    menv <- liftIO $ configProcessContextSettings config defaultEnvSettings
                    output <- withProcessContext menv
                            $ runGrabFirstLine (fromMaybe compilerExeName ghciGhcCommand) ["--version"]
                    pure $ "Intero" `L.isPrefixOf` output
                _ -> pure False

and Stack.Ghci.renderScript has (extract only):

renderScript ::
     Bool
  -> [GhciPkgInfo]
  -> Maybe (Path Abs File)
  -> Bool
  -> [Path Abs File]
  -> GhciScript
renderScript isIntero pkgs mainFile onlyMain extraFiles = do
  let cdPhase = case (isIntero, pkgs) of
        -- If only loading one package, set the cwd properly.
        -- Otherwise don't try. See
        -- https://github.com/commercialhaskell/stack/issues/3309
        (True, [pkg]) -> cmdCdGhc (ghciPkgDir pkg)
        _ -> mempty