@@ -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
@@ -63,6 +64,7 @@ import Language.LSP.Types hiding
6364import Language.LSP.Types.Capabilities (ClientCapabilities )
6465import System.Directory (getCurrentDirectory ,
6566 setCurrentDirectory )
67+ import System.Environment (lookupEnv )
6668import System.FilePath
6769import System.IO.Unsafe (unsafePerformIO )
6870import System.Process.Extra (createPipe )
@@ -159,14 +161,20 @@ runSessionWithServer' ::
159161runSessionWithServer' plugin conf sconf caps root s = withLock lock $ keepCurrentDirectory $ do
160162 (inR, inW) <- createPipe
161163 (outR, outW) <- createPipe
164+ let logger = do
165+ logStdErr <- fromMaybe " 0" <$> lookupEnv " LSP_TEST_LOG_STDERR"
166+ if logStdErr == " 0"
167+ then return noLogging
168+ else argsLogger testing
169+
162170 server <-
163171 async $
164172 Ghcide. defaultMain
165173 testing
166174 { argsHandleIn = pure inR,
167175 argsHandleOut = pure outW,
168176 argsDefaultHlsConfig = conf,
169- argsLogger = pure noLogging ,
177+ argsLogger = logger ,
170178 argsIdeOptions = \ config sessionLoader ->
171179 let ideOptions = (argsIdeOptions def config sessionLoader) {optTesting = IdeTesting True }
172180 in ideOptions {optShakeOptions = (optShakeOptions ideOptions) {shakeThreads = 2 }},
0 commit comments