[clangd] Expose FileStatus to LSP.
Summary:
Add an LSP extension "textDocument/clangd.fileStatus" to emit file-status information.
Reviewers: ilya-biryukov
Subscribers: javed.absar, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Differential Revision: https://reviews.llvm.org/D55363
llvm-svn: 349768
diff --git a/clang-tools-extra/clangd/Protocol.cpp b/clang-tools-extra/clangd/Protocol.cpp
index 5507895..3c1fc7f 100644
--- a/clang-tools-extra/clangd/Protocol.cpp
+++ b/clang-tools-extra/clangd/Protocol.cpp
@@ -716,6 +716,12 @@
};
}
+llvm::json::Value toJSON(const FileStatus &FStatus) {
+ return json::Object{
+ {"uri", FStatus.uri}, {"state", FStatus.state},
+ };
+}
+
raw_ostream &operator<<(raw_ostream &O, const DocumentHighlight &V) {
O << V.range;
if (V.kind == DocumentHighlightKind::Read)
@@ -752,6 +758,7 @@
fromJSON(Params, Opts.ConfigSettings);
O.map("compilationDatabasePath", Opts.compilationDatabasePath);
O.map("fallbackFlags", Opts.fallbackFlags);
+ O.map("clangdFileStatus", Opts.FileStatus);
return true;
}