@@ -1,6 +1,7 @@
11-- Copyright (c) 2019 The DAML Authors. All rights reserved.
22-- SPDX-License-Identifier: Apache-2.0
33{-# OPTIONS_GHC -Wno-dodgy-imports #-} -- GHC no longer exports def in GHC 8.6 and above
4+{-# LANGUAGE CPP #-} -- To get precise GHC version
45
56module Main(main) where
67
@@ -29,12 +30,13 @@ import qualified Data.Text as T
2930import qualified Data.Text.IO as T
3031import Language.Haskell.LSP.Messages
3132import Linker
32−import System.Info
3333import Data.Version
3434import Development.IDE.LSP.LanguageServer
3535import System.Directory.Extra as IO
3636import System.Environment
3737import System.IO
38+import System.Exit
39+import Paths_ghcide
3840import Development.Shake hiding (Env)
3941import qualified Data.Set as Set
4042
@@ -47,13 +49,19 @@ import HIE.Bios
4749getLibdir :: IO FilePath
4850getLibdir = fromMaybe GHC.Paths.libdir <$> lookupEnv "NIX_GHC_LIBDIR"
4951
52+ghcideVersion :: String
53+ghcideVersion = "ghcide version: " <> showVersion version
54+ <> " (GHC: " <> VERSION_ghc <> ")"
55+
5056main :: IO ()
5157main = do
5258 -- WARNING: If you write to stdout before runLanguageServer
5359 -- then the language server will not work
54− hPutStrLn stderr $ "Starting ghcide (GHC v" ++ showVersion compilerVersion ++ ")"
5560 Arguments{..} <- getArguments
5661
62+ if argsVersion then putStrLn ghcideVersion >> exitSuccess
63+ else hPutStrLn stderr {- see WARNING above -} ghcideVersion
64+
5765 -- lock to avoid overlapping output on stdout
5866 lock <- newLock
5967 let logger = Logger $ \pri msg -> withLock lock $