Watch files to send didChangeWatchedFiles notifications
[lsp-test.git] / test / dummy-server / Main.hs
index 8120b030431c1bb0ce6b977f7a750755bb9dabda..52fc4bc6eee7a983110b7a7334d19bbbbd7d62f5 100644 (file)
@@ -59,7 +59,7 @@ handlers lfvar = def
           fmServerPublishDiagnosticsNotification $ PublishDiagnosticsParams uri $ List [diag]
 
       -- also act as a registerer for workspace/didChangeWatchedFiles
-      when ("/register" `isSuffixOf` fp) $ do
+      when (".register" `isSuffixOf` fp) $ do
         reqId <- readMVar lfvar >>= getNextReqId
         send $ ReqRegisterCapability $ fmServerRegisterCapabilityRequest reqId $
           RegistrationParams $ List $
@@ -67,7 +67,7 @@ handlers lfvar = def
                 DidChangeWatchedFilesRegistrationOptions $ List
                 [ FileSystemWatcher "*.watch" (Just (WatchKind True True True)) ]
             ]
-      when ("/register.abs" `isSuffixOf` fp) $ do
+      when (".register.abs" `isSuffixOf` fp) $ do
         curDir <- getCurrentDirectory
         reqId <- readMVar lfvar >>= getNextReqId
         send $ ReqRegisterCapability $ fmServerRegisterCapabilityRequest reqId $
@@ -76,16 +76,29 @@ handlers lfvar = def
                 DidChangeWatchedFilesRegistrationOptions $ List
                 [ FileSystemWatcher (curDir </> "*.watch") (Just (WatchKind True True True)) ]
             ]
+      when (".register.tmp" `isSuffixOf` fp) $ do
+        tmpDir <- getTemporaryDirectory
+        reqId <- readMVar lfvar >>= getNextReqId
+        send $ ReqRegisterCapability $ fmServerRegisterCapabilityRequest reqId $
+          RegistrationParams $ List $
+            [ Registration "2" WorkspaceDidChangeWatchedFiles $ Just $ toJSON $
+                DidChangeWatchedFilesRegistrationOptions $ List
+                [ FileSystemWatcher (tmpDir </> "*.watch") (Just (WatchKind True True True)) ]
+            ]
 
       -- also act as an unregisterer for workspace/didChangeWatchedFiles
-      when ("/unregister" `isSuffixOf` fp) $ do
+      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
+      when (".unregister.abs" `isSuffixOf` fp) $ do
         reqId <- readMVar lfvar >>= getNextReqId
         send $ ReqUnregisterCapability $ fmServerUnregisterCapabilityRequest reqId $
           UnregistrationParams $ List [ Unregistration "1" "workspace/didChangeWatchedFiles" ]
+      when (".unregister.tmp" `isSuffixOf` fp) $ do
+        reqId <- readMVar lfvar >>= getNextReqId
+        send $ ReqUnregisterCapability $ fmServerUnregisterCapabilityRequest reqId $
+          UnregistrationParams $ List [ Unregistration "2" "workspace/didChangeWatchedFiles" ]
   , executeCommandHandler = pure $ \req -> do
       send $ RspExecuteCommand $ makeResponseMessage req Null
       reqId <- readMVar lfvar >>= getNextReqId