This revision was automatically updated to reflect the committed changes. Closed by commit rCTE325813: [clangd] Extend textDocument/didChange to specify whether diagnostics should be… (authored by ioeric, committed by ).
Changed prior to commit: https://reviews.llvm.org/D43634?vs=135463&id=135465#toc Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D43634 Files: clangd/ClangdLSPServer.cpp clangd/Protocol.cpp clangd/Protocol.h Index: clangd/Protocol.h =================================================================== --- clangd/Protocol.h +++ clangd/Protocol.h @@ -297,6 +297,12 @@ /// The actual content changes. std::vector<TextDocumentContentChangeEvent> contentChanges; + + /// Forces diagnostics to be generated, or to not be generated, for this + /// version of the file. If not set, diagnostics are eventually consistent: + /// either they will be provided for this version or some subsequent one. + /// This is a clangd extension. + llvm::Optional<bool> wantDiagnostics; }; bool fromJSON(const json::Expr &, DidChangeTextDocumentParams &); Index: clangd/ClangdLSPServer.cpp =================================================================== --- clangd/ClangdLSPServer.cpp +++ clangd/ClangdLSPServer.cpp @@ -149,9 +149,13 @@ if (Params.contentChanges.size() != 1) return replyError(ErrorCode::InvalidParams, "can only apply one change at a time"); + auto WantDiags = WantDiagnostics::Auto; + if (Params.wantDiagnostics.hasValue()) + WantDiags = Params.wantDiagnostics.getValue() ? WantDiagnostics::Yes + : WantDiagnostics::No; // We only support full syncing right now. Server.addDocument(Params.textDocument.uri.file(), - Params.contentChanges[0].text, WantDiagnostics::Auto); + Params.contentChanges[0].text, WantDiags); } void ClangdLSPServer::onFileEvent(DidChangeWatchedFilesParams &Params) { Index: clangd/Protocol.cpp =================================================================== --- clangd/Protocol.cpp +++ clangd/Protocol.cpp @@ -221,7 +221,8 @@ bool fromJSON(const json::Expr &Params, DidChangeTextDocumentParams &R) { json::ObjectMapper O(Params); return O && O.map("textDocument", R.textDocument) && - O.map("contentChanges", R.contentChanges); + O.map("contentChanges", R.contentChanges) && + O.map("wantDiagnostics", R.wantDiagnostics); } bool fromJSON(const json::Expr &E, FileChangeType &Out) {
Index: clangd/Protocol.h =================================================================== --- clangd/Protocol.h +++ clangd/Protocol.h @@ -297,6 +297,12 @@ /// The actual content changes. std::vector<TextDocumentContentChangeEvent> contentChanges; + + /// Forces diagnostics to be generated, or to not be generated, for this + /// version of the file. If not set, diagnostics are eventually consistent: + /// either they will be provided for this version or some subsequent one. + /// This is a clangd extension. + llvm::Optional<bool> wantDiagnostics; }; bool fromJSON(const json::Expr &, DidChangeTextDocumentParams &); Index: clangd/ClangdLSPServer.cpp =================================================================== --- clangd/ClangdLSPServer.cpp +++ clangd/ClangdLSPServer.cpp @@ -149,9 +149,13 @@ if (Params.contentChanges.size() != 1) return replyError(ErrorCode::InvalidParams, "can only apply one change at a time"); + auto WantDiags = WantDiagnostics::Auto; + if (Params.wantDiagnostics.hasValue()) + WantDiags = Params.wantDiagnostics.getValue() ? WantDiagnostics::Yes + : WantDiagnostics::No; // We only support full syncing right now. Server.addDocument(Params.textDocument.uri.file(), - Params.contentChanges[0].text, WantDiagnostics::Auto); + Params.contentChanges[0].text, WantDiags); } void ClangdLSPServer::onFileEvent(DidChangeWatchedFilesParams &Params) { Index: clangd/Protocol.cpp =================================================================== --- clangd/Protocol.cpp +++ clangd/Protocol.cpp @@ -221,7 +221,8 @@ bool fromJSON(const json::Expr &Params, DidChangeTextDocumentParams &R) { json::ObjectMapper O(Params); return O && O.map("textDocument", R.textDocument) && - O.map("contentChanges", R.contentChanges); + O.map("contentChanges", R.contentChanges) && + O.map("wantDiagnostics", R.wantDiagnostics); } bool fromJSON(const json::Expr &E, FileChangeType &Out) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits