summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/Protocol.cpp
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2018-02-15 14:32:57 +0000
committerIlya Biryukov <ibiryukov@google.com>2018-02-15 14:32:57 +0000
commit23bc73b6263c77894785948c13e7a91416ec5783 (patch)
tree619cf7e7279c9e32d80d6c84e38de1d466250c39 /clang-tools-extra/clangd/Protocol.cpp
parent6353ecb08a60e96bb42f7c63b31c3139e2fd95ec (diff)
downloadbcm5719-llvm-23bc73b6263c77894785948c13e7a91416ec5783.tar.gz
bcm5719-llvm-23bc73b6263c77894785948c13e7a91416ec5783.zip
[clangd] Enable snippet completion based on client capabilities.
Summary: And remove -enable-snippets flag. Reviewers: hokein, ioeric, sammccall Reviewed By: ioeric Subscribers: klimek, jkorous-apple, cfe-commits Differential Revision: https://reviews.llvm.org/D43229 llvm-svn: 325242
Diffstat (limited to 'clang-tools-extra/clangd/Protocol.cpp')
-rw-r--r--clang-tools-extra/clangd/Protocol.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/Protocol.cpp b/clang-tools-extra/clangd/Protocol.cpp
index a55b50f0c54..0c10540ff3b 100644
--- a/clang-tools-extra/clangd/Protocol.cpp
+++ b/clang-tools-extra/clangd/Protocol.cpp
@@ -150,6 +150,41 @@ bool fromJSON(const json::Expr &E, TraceLevel &Out) {
return false;
}
+bool fromJSON(const json::Expr &Params, CompletionItemClientCapabilities &R) {
+ json::ObjectMapper O(Params);
+ if (!O)
+ return false;
+ O.map("snippetSupport", R.snippetSupport);
+ O.map("commitCharacterSupport", R.commitCharacterSupport);
+ return true;
+}
+
+bool fromJSON(const json::Expr &Params, CompletionClientCapabilities &R) {
+ json::ObjectMapper O(Params);
+ if (!O)
+ return false;
+ O.map("dynamicRegistration", R.dynamicRegistration);
+ O.map("completionItem", R.completionItem);
+ O.map("contextSupport", R.contextSupport);
+ return true;
+}
+
+bool fromJSON(const json::Expr &Params, TextDocumentClientCapabilities &R) {
+ json::ObjectMapper O(Params);
+ if (!O)
+ return false;
+ O.map("completion", R.completion);
+ return true;
+}
+
+bool fromJSON(const json::Expr &Params, ClientCapabilities &R) {
+ json::ObjectMapper O(Params);
+ if (!O)
+ return false;
+ O.map("textDocument", R.textDocument);
+ return true;
+}
+
bool fromJSON(const json::Expr &Params, InitializeParams &R) {
json::ObjectMapper O(Params);
if (!O)
@@ -159,6 +194,7 @@ bool fromJSON(const json::Expr &Params, InitializeParams &R) {
O.map("processId", R.processId);
O.map("rootUri", R.rootUri);
O.map("rootPath", R.rootPath);
+ O.map("capabilities", R.capabilities);
O.map("trace", R.trace);
// initializationOptions, capabilities unused
return true;
OpenPOWER on IntegriCloud