12
12
module Main where
13
13
14
14
import Control.Monad.Extra
15
- import Data.Char (isSpace )
15
+ import Data.Char (isSpace )
16
16
import Data.Default
17
17
import Data.Foldable
18
18
import Data.List
19
19
import Data.Void
20
- import qualified Development.IDE.Session as Session
21
- import qualified HIE.Bios.Environment as HieBios
20
+ import qualified Development.IDE.Session as Session
21
+ import qualified HIE.Bios.Environment as HieBios
22
22
import HIE.Bios.Types
23
23
import Ide.Arguments
24
- import Ide.Version (findProgramVersions ,
25
- hlsVersion ,
26
- showProgramVersionOfInterest )
24
+ import Ide.Version
27
25
import System.Directory
28
26
import System.Environment
29
27
import System.Exit
30
28
import System.FilePath
31
- import System.Info
32
29
import System.IO
33
-
34
- import Control.Concurrent (tryPutMVar )
35
- import Control.Monad.IO.Class
36
- import Control.Monad.IO.Unlift (MonadUnliftIO )
37
- import Control.Monad.Reader
38
- import Control.Monad.Trans.Except (ExceptT , runExceptT ,
39
- throwE )
40
- import qualified Data.Map.Strict as Map
41
- import Data.Maybe (fromMaybe , listToMaybe )
42
- import qualified Data.Text as T
43
- import qualified Data.Text.IO as T
30
+ import System.Info
31
+ #ifndef mingw32_HOST_OS
32
+ import System.Posix.Process (executeFile )
33
+ #else
34
+ import System.Process
35
+ #endif
36
+ import qualified Data.Map.Strict as Map
37
+ import qualified Data.Text.IO as T
38
+ import Control.Monad.Trans.Except (ExceptT , runExceptT , throwE )
39
+ import qualified Data.Text as T
40
+ import Language.LSP.Server (LspM )
41
+ import Control.Monad.IO.Class (MonadIO (liftIO ))
42
+ import Control.Monad.IO.Unlift (MonadUnliftIO )
43
+ import qualified Language.LSP.Server as LSP
44
+ import qualified Development.IDE.Main as Main
45
+ import Ide.Plugin.Config (Config )
46
+ import Language.LSP.Types (RequestMessage , ResponseError , MessageActionItem (MessageActionItem ), Method (Initialize ), MessageType (MtError ), SMethod (SWindowShowMessageRequest , SExit ), ShowMessageRequestParams (ShowMessageRequestParams ))
47
+ import Development.IDE.Types.Logger ( makeDefaultStderrRecorder ,
48
+ cmapWithPrio ,
49
+ Pretty (pretty ),
50
+ Logger (Logger ),
51
+ Priority (Error , Debug , Info , Warning ),
52
+ Recorder (logger_ ),
53
+ WithPriority (WithPriority ) )
54
+ import Data.Maybe
55
+ import GHC.Stack.Types (emptyCallStack )
56
+ import Control.Concurrent (tryPutMVar )
44
57
import Development.IDE.LSP.LanguageServer (runLanguageServer )
45
- import qualified Development.IDE.Main as Main
46
- import Development.IDE.Types.Logger (Logger (Logger ),
47
- Priority (.. ),
48
- WithPriority (WithPriority ),
49
- cmapWithPrio , logger_ ,
50
- makeDefaultStderrRecorder )
51
- import GHC.Stack (emptyCallStack )
52
- import HIE.Bios.Internal.Log (debugm , errorm , logm ,
53
- warningm )
54
- import Ide.Plugin.Config (Config )
55
- import Language.LSP.Server (LspM )
56
- import qualified Language.LSP.Server as LSP
57
- import Language.LSP.Types
58
- import System.Posix.Process (executeFile )
59
-
60
- import Prettyprinter (Pretty (pretty ))
61
-
62
-
63
-
58
+ import HIE.Bios.Internal.Log
64
59
65
60
-- ---------------------------------------------------------------------
66
61
@@ -155,7 +150,9 @@ launchHaskellLanguageServer parsedArgs = do
155
150
Just e -> do
156
151
liftIO $ hPutStrLn stderr $ " Launching haskell-language-server exe at:" ++ e
157
152
158
-
153
+ #ifdef mingw32_HOST_OS
154
+ callProcess e args
155
+ #else
159
156
160
157
let Cradle { cradleOptsProg = CradleAction { runGhcCmd } } = cradle
161
158
@@ -170,6 +167,7 @@ launchHaskellLanguageServer parsedArgs = do
170
167
env <- Map. fromList <$> liftIO getEnvironment
171
168
let newEnv = Map. insert " GHC_BIN" ghcBinary $ Map. insert " GHC_LIBDIR" libdir env
172
169
liftIO $ executeFile e True args (Just (Map. toList newEnv))
170
+ #endif
173
171
174
172
175
173
0 commit comments