@@ -41,6 +41,7 @@ import Data.Aeson (Value (Null), toJSON)
4141import qualified Data.Aeson as A
4242import Data.ByteString.Lazy (ByteString )
4343import Data.Default (def )
44+ import Data.Maybe (fromMaybe )
4445import qualified Data.Text as T
4546import qualified Data.Text.Lazy as TL
4647import qualified Data.Text.Lazy.Encoding as TL
@@ -64,6 +65,7 @@ import Language.LSP.Types hiding
6465import Language.LSP.Types.Capabilities (ClientCapabilities )
6566import System.Directory (getCurrentDirectory ,
6667 setCurrentDirectory )
68+ import System.Environment (lookupEnv )
6769import System.FilePath
6870import System.IO.Unsafe (unsafePerformIO )
6971import System.Process.Extra (createPipe )
@@ -160,14 +162,20 @@ runSessionWithServer' ::
160162runSessionWithServer' plugin conf sconf caps root s = withLock lock $ keepCurrentDirectory $ do
161163 (inR, inW) <- createPipe
162164 (outR, outW) <- createPipe
165+ let logger = do
166+ logStdErr <- fromMaybe " 0" <$> lookupEnv " LSP_TEST_LOG_STDERR"
167+ if logStdErr == " 0"
168+ then return noLogging
169+ else argsLogger testing
170+
163171 server <-
164172 async $
165173 Ghcide. defaultMain
166174 testing
167175 { argsHandleIn = pure inR,
168176 argsHandleOut = pure outW,
169177 argsDefaultHlsConfig = conf,
170- argsLogger = pure noLogging ,
178+ argsLogger = logger ,
171179 argsIdeOptions = \ config sessionLoader ->
172180 let ideOptions = (argsIdeOptions def config sessionLoader) {optTesting = IdeTesting True }
173181 in ideOptions {optShakeOptions = (optShakeOptions ideOptions) {shakeThreads = 2 }},
0 commit comments