diff --git a/lsp/src/Language/LSP/Server/Core.hs b/lsp/src/Language/LSP/Server/Core.hs index c705a26a..f8813f3f 100644 --- a/lsp/src/Language/LSP/Server/Core.hs +++ b/lsp/src/Language/LSP/Server/Core.hs @@ -297,6 +297,18 @@ data Options = Options -- ^ The delay before starting a progress reporting session, in microseconds , optProgressUpdateDelay :: Int -- ^ The delay between sending progress updates, in microseconds + , optWorkspaceDidCreateFileOperationRegistrationOptions :: Maybe FileOperationRegistrationOptions + -- ^ Options for the 'Method_WorkspaceDidCreateFiles' request, in case the language server supports it + , optWorkspaceWillCreateFileOperationRegistrationOptions :: Maybe FileOperationRegistrationOptions + -- ^ Options for the 'Method_WorkspaceWillCreateFiles' notification, in case the language server supports it + , optWorkspaceDidRenameFileOperationRegistrationOptions :: Maybe FileOperationRegistrationOptions + -- ^ Options for the 'Method_WorkspaceDidRenameFiles' request, in case the language server supports it + , optWorkspaceWillRenameFileOperationRegistrationOptions :: Maybe FileOperationRegistrationOptions + -- ^ Options for the 'Method_WorkspaceWillRenameFiles' notification, in case the language server supports it + , optWorkspaceDidDeleteFileOperationRegistrationOptions :: Maybe FileOperationRegistrationOptions + -- ^ Options for the 'Method_WorkspaceDidDeleteFiles' request, in case the language server supports it + , optWorkspaceWillDeleteFileOperationRegistrationOptions :: Maybe FileOperationRegistrationOptions + -- ^ Options for the 'Method_WorkspaceWillDeleteFiles' notification, in case the language server supports it } instance Default Options where @@ -315,6 +327,12 @@ instance Default Options where -- See Note [Delayed progress reporting] 0 0 + Nothing + Nothing + Nothing + Nothing + Nothing + Nothing defaultOptions :: Options defaultOptions = def diff --git a/lsp/src/Language/LSP/Server/Processing.hs b/lsp/src/Language/LSP/Server/Processing.hs index b78cc921..4a2e46e2 100644 --- a/lsp/src/Language/LSP/Server/Processing.hs +++ b/lsp/src/Language/LSP/Server/Processing.hs @@ -416,12 +416,23 @@ inferServerCapabilities _clientCaps o h = Just x -> Just (InL x) Nothing -> Nothing - workspace = WorkspaceOptions{_workspaceFolders = workspaceFolder, _fileOperations = Nothing} + workspace = WorkspaceOptions{_workspaceFolders = workspaceFolder, _fileOperations = Just fileOperations} + workspaceFolder = supported' SMethod_WorkspaceDidChangeWorkspaceFolders $ -- sign up to receive notifications WorkspaceFoldersServerCapabilities (Just True) (Just (InR True)) + fileOperations = + FileOperationOptions + { _didCreate = join $ supported' SMethod_WorkspaceDidCreateFiles $ optWorkspaceDidCreateFileOperationRegistrationOptions o + , _willCreate = join $ supported' SMethod_WorkspaceWillCreateFiles $ optWorkspaceWillCreateFileOperationRegistrationOptions o + , _didRename = join $ supported' SMethod_WorkspaceDidRenameFiles $ optWorkspaceDidRenameFileOperationRegistrationOptions o + , _willRename = join $ supported' SMethod_WorkspaceWillRenameFiles $ optWorkspaceWillRenameFileOperationRegistrationOptions o + , _didDelete = join $ supported' SMethod_WorkspaceDidDeleteFiles $ optWorkspaceDidDeleteFileOperationRegistrationOptions o + , _willDelete = join $ supported' SMethod_WorkspaceWillDeleteFiles $ optWorkspaceWillDeleteFileOperationRegistrationOptions o + } + diagnosticProvider = supported' SMethod_TextDocumentDiagnostic $ InL $