@@ -41,6 +41,7 @@ import Data.Aeson (Value (Null), toJSON)
41
41
import qualified Data.Aeson as A
42
42
import Data.ByteString.Lazy (ByteString )
43
43
import Data.Default (def )
44
+ import Data.Maybe (fromMaybe )
44
45
import qualified Data.Text as T
45
46
import qualified Data.Text.Lazy as TL
46
47
import qualified Data.Text.Lazy.Encoding as TL
@@ -64,6 +65,7 @@ import Language.LSP.Types hiding
64
65
import Language.LSP.Types.Capabilities (ClientCapabilities )
65
66
import System.Directory (getCurrentDirectory ,
66
67
setCurrentDirectory )
68
+ import System.Environment (lookupEnv )
67
69
import System.FilePath
68
70
import System.IO.Unsafe (unsafePerformIO )
69
71
import System.Process.Extra (createPipe )
@@ -160,14 +162,20 @@ runSessionWithServer' ::
160
162
runSessionWithServer' plugin conf sconf caps root s = withLock lock $ keepCurrentDirectory $ do
161
163
(inR, inW) <- createPipe
162
164
(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
+
163
171
server <-
164
172
async $
165
173
Ghcide. defaultMain
166
174
testing
167
175
{ argsHandleIn = pure inR,
168
176
argsHandleOut = pure outW,
169
177
argsDefaultHlsConfig = conf,
170
- argsLogger = pure noLogging ,
178
+ argsLogger = logger ,
171
179
argsIdeOptions = \ config sessionLoader ->
172
180
let ideOptions = (argsIdeOptions def config sessionLoader) {optTesting = IdeTesting True }
173
181
in ideOptions {optShakeOptions = (optShakeOptions ideOptions) {shakeThreads = 2 }},
0 commit comments