ghcide-1.0.0.0: The core of an IDE
Safe HaskellNone
LanguageHaskell2010

Development.IDE.Session

Description

The logic for setting up a ghcide session by tapping into hie-bios.

Synopsis

Documentation

data SessionLoadingOptions Source #

Constructors

SessionLoadingOptions 

Fields

Instances

Instances details
Default SessionLoadingOptions Source # 
Instance details

Defined in Development.IDE.Session

loadSession :: FilePath -> IO (Action IdeGhcSession) Source #

Given a root directory, return a Shake Action which setups an IdeGhcSession given a file. Some of the many things this does:

  • Find the cradle for the file
  • Get the session options,
  • Get the GHC lib directory
  • Make sure the GHC compiletime and runtime versions match
  • Restart the Shake session

This is the key function which implements multi-component support. All components mapping to the same hie.yaml file are mapped to the same HscEnv which is updated as new components are discovered.

setInitialDynFlags :: SessionLoadingOptions -> IO (Maybe LibDir) Source #

Sets unsafeGlobalDynFlags on using the hie-bios cradle and returns the GHC libdir

runWithDb :: FilePath -> (HieDb -> IndexQueue -> IO ()) -> IO () Source #

Wraps withHieDb to provide a database connection for reading, and a HieWriterChan for writing. Actions are picked off one by one from the HieWriterChan and executed in serial by a worker thread using a dedicated database connection. This is done in order to serialize writes to the database, or else SQLite becomes unhappy