I'm working on a plugin, and would like to be able to tell if it's GHC or GHCi that's running. I tried: df <- getDynFlags let isGHCi = ghcMode df == CompManager Alas, while that correctly tells apart "ghci" from "ghc -c", it also returns True when ghc is called without the "-c" argument. Is there a better/more robust way of figuring out whether we're in an interactive session? -Levent.
How about `GHC.Environment.getFullArgs` which includes “—interactive” when you’re in GHCi?
On 24 Nov 2015, at 09:37, Levent Erkok <erkokl@gmail.com> wrote:
I'm working on a plugin, and would like to be able to tell if it's GHC or GHCi that's running.
I tried:
df <- getDynFlags let isGHCi = ghcMode df == CompManager
Alas, while that correctly tells apart "ghci" from "ghc -c", it also returns True when ghc is called without the "-c" argument.
Is there a better/more robust way of figuring out whether we're in an interactive session?
-Levent. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Thanks! That indeed does work. I'm a bit surprised though that there isn't already an internal boolean set somewhere; checking for a string in the arguments sounds a bit fragile. On Tue, Nov 24, 2015 at 12:28 AM, Aycan İrican <iricanaycan@gmail.com> wrote:
How about `GHC.Environment.getFullArgs` which includes “—interactive” when you’re in GHCi?
On 24 Nov 2015, at 09:37, Levent Erkok <erkokl@gmail.com> wrote:
I'm working on a plugin, and would like to be able to tell if it's GHC or GHCi that's running.
I tried:
df <- getDynFlags let isGHCi = ghcMode df == CompManager
Alas, while that correctly tells apart "ghci" from "ghc -c", it also returns True when ghc is called without the "-c" argument.
Is there a better/more robust way of figuring out whether we're in an interactive session?
-Levent. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
The executable-path package wraps this up nicely with its `getScriptPath` function: https://hackage.haskell.org/package/executable-path-0.0.3/docs/System-Enviro... Probably best to use this existing function. Then, if a less fragile solution comes along, getScriptPath can do that instead. -Michael On Tue, Nov 24, 2015 at 5:58 PM, Levent Erkok <erkokl@gmail.com> wrote:
Thanks! That indeed does work.
I'm a bit surprised though that there isn't already an internal boolean set somewhere; checking for a string in the arguments sounds a bit fragile.
On Tue, Nov 24, 2015 at 12:28 AM, Aycan İrican <iricanaycan@gmail.com> wrote:
How about `GHC.Environment.getFullArgs` which includes “—interactive” when you’re in GHCi?
On 24 Nov 2015, at 09:37, Levent Erkok <erkokl@gmail.com> wrote:
I'm working on a plugin, and would like to be able to tell if it's GHC or GHCi that's running.
I tried:
df <- getDynFlags let isGHCi = ghcMode df == CompManager
Alas, while that correctly tells apart "ghci" from "ghc -c", it also returns True when ghc is called without the "-c" argument.
Is there a better/more robust way of figuring out whether we're in an interactive session?
-Levent. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
On 24/11/2015 07:37, Levent Erkok wrote:
I'm working on a plugin, and would like to be able to tell if it's GHC or GHCi that's running.
I tried:
df <- getDynFlags let isGHCi = ghcMode df == CompManager
Alas, while that correctly tells apart "ghci" from "ghc -c", it also returns True when ghc is called without the "-c" argument.
Is there a better/more robust way of figuring out whether we're in an interactive session?
The best way is to check whether hscTarget df == HscInterpreted, and you can also check whether ghcLink df == LinkInMemory. Checking for the `--interactive` flag only works for the standalone GHCi, and not users of the GHC API. Cheers, Simon
Thanks Simon.. I tried the 'hscTarget df == HscInterpreted' check, and it works perfectly well. -Levent. On Fri, Dec 4, 2015 at 12:34 AM, Simon Marlow <marlowsd@gmail.com> wrote:
On 24/11/2015 07:37, Levent Erkok wrote:
I'm working on a plugin, and would like to be able to tell if it's GHC or GHCi that's running.
I tried:
df <- getDynFlags let isGHCi = ghcMode df == CompManager
Alas, while that correctly tells apart "ghci" from "ghc -c", it also returns True when ghc is called without the "-c" argument.
Is there a better/more robust way of figuring out whether we're in an interactive session?
The best way is to check whether hscTarget df == HscInterpreted, and you can also check whether ghcLink df == LinkInMemory.
Checking for the `--interactive` flag only works for the standalone GHCi, and not users of the GHC API.
Cheers, Simon
participants (4)
-
Aycan İrican -
Levent Erkok -
Michael Sloan -
Simon Marlow