+
+ -- also act as a registerer for workspace/didChangeWatchedFiles
+ when ("/register" `isSuffixOf` fp) $ do
+ reqId <- readMVar lfvar >>= getNextReqId
+ send $ ReqRegisterCapability $ fmServerRegisterCapabilityRequest reqId $
+ RegistrationParams $ List $
+ [ Registration "0" WorkspaceDidChangeWatchedFiles $ Just $ toJSON $
+ DidChangeWatchedFilesRegistrationOptions $ List
+ [ FileSystemWatcher "*.watch" (Just (WatchKind True True True)) ]
+ ]
+ when ("/register.abs" `isSuffixOf` fp) $ do
+ curDir <- getCurrentDirectory
+ reqId <- readMVar lfvar >>= getNextReqId
+ send $ ReqRegisterCapability $ fmServerRegisterCapabilityRequest reqId $
+ RegistrationParams $ List $
+ [ Registration "1" WorkspaceDidChangeWatchedFiles $ Just $ toJSON $
+ DidChangeWatchedFilesRegistrationOptions $ List
+ [ FileSystemWatcher (curDir </> "*.watch") (Just (WatchKind True True True)) ]
+ ]
+
+ -- also act as an unregisterer for workspace/didChangeWatchedFiles
+ when ("/unregister" `isSuffixOf` fp) $ do
+ reqId <- readMVar lfvar >>= getNextReqId
+ send $ ReqUnregisterCapability $ fmServerUnregisterCapabilityRequest reqId $
+ UnregistrationParams $ List [ Unregistration "0" "workspace/didChangeWatchedFiles" ]
+ when ("/unregister.abs" `isSuffixOf` fp) $ do
+ reqId <- readMVar lfvar >>= getNextReqId
+ send $ ReqUnregisterCapability $ fmServerUnregisterCapabilityRequest reqId $
+ UnregistrationParams $ List [ Unregistration "1" "workspace/didChangeWatchedFiles" ]