packages feed

hdevtools 0.1.0.8 → 0.1.0.9

raw patch · 2 files changed

+9/−4 lines, 2 files

Files

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