hdevtools 0.1.0.8 → 0.1.0.9
raw patch · 2 files changed
+9/−4 lines, 2 files
Files
- hdevtools.cabal +1/−1
- src/Server.hs +8/−3
hdevtools.cabal view
@@ -1,5 +1,5 @@ name: hdevtools-version: 0.1.0.8+version: 0.1.0.9 synopsis: Persistent GHC powered background server for FAST haskell development tools description: 'hdevtools' is a backend for text editor plugins, to allow for things such as
src/Server.hs view
@@ -8,15 +8,20 @@ import System.Directory (removeFile) import System.Exit (ExitCode(ExitSuccess)) import System.IO (Handle, hClose, hFlush, hGetLine, hPutStrLn)-import System.IO.Error (ioeGetErrorType, isDoesNotExistError)+import System.IO.Error (ioeGetErrorType, isAlreadyInUseError, isDoesNotExistError) import CommandLoop (newCommandLoopState, Config, newConfig, startCommandLoop) import Types (ClientDirective(..), Command, emptyCommandExtra, ServerDirective(..)) import Util (readMaybe) createListenSocket :: FilePath -> IO Socket-createListenSocket socketPath =- listenOn (UnixSocket socketPath)+createListenSocket socketPath = do+ r <- tryJust (guard . isAlreadyInUseError) $ listenOn (UnixSocket socketPath)+ case r of+ Right socket -> return socket+ Left _ -> do+ removeFile socketPath+ listenOn (UnixSocket socketPath) startServer :: FilePath -> Maybe Socket -> IO () startServer socketPath mbSock = do