Add hook for creating ghci external interpreter
authorAlan Zimmerman <alan.zimm@gmail.com>
Thu, 8 Sep 2016 06:59:48 +0000 (08:59 +0200)
committerAlan Zimmerman <alan.zimm@gmail.com>
Fri, 9 Sep 2016 13:02:34 +0000 (15:02 +0200)
commit65d9597d98ead78198bb747aed4e1163ee0d60d3
tree9601901055332da6fa0a13d28ad853082ec71feb
parenta8238a4eb628dcab93e19021b27c0cf2b38ef7d0
Add hook for creating ghci external interpreter

Summary:
The external interpreter is launched by calling
'System.Process.createProcess' with a 'CreateProcess' parameter.

The current value for this has the 'std_in', 'std_out' and 'std_err'
fields use the default of 'Inherit', meaning that the remote interpreter
shares the stdio with the original ghc/ghci process.

This patch introduces a new hook to the DynFlags, which has an
opportunity to override the 'CreateProcess' fields, launch the process,
and retrieve the stdio handles actually used.

So if a ghci external interpreter session is launched from the GHC API
the stdio can be redirected if required, which is useful for tooling/IDE
integration.

Test Plan: ./validate

Reviewers: austin, hvr, simonmar, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2518
compiler/ghci/GHCi.hs
compiler/main/Hooks.hs