summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/tool/ClangdMain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/tool/ClangdMain.cpp')
-rw-r--r--clang-tools-extra/clangd/tool/ClangdMain.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp
index 12a52a31c81..6dfcd75b96e 100644
--- a/clang-tools-extra/clangd/tool/ClangdMain.cpp
+++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp
@@ -73,10 +73,25 @@ static llvm::cl::opt<bool> IncludeIneligibleResults(
llvm::cl::init(clangd::CodeCompleteOptions().IncludeIneligibleResults),
llvm::cl::Hidden);
+static llvm::cl::opt<JSONStreamStyle> InputStyle(
+ "input-style", llvm::cl::desc("Input JSON stream encoding"),
+ llvm::cl::values(
+ clEnumValN(JSONStreamStyle::Standard, "standard", "usual LSP protocol"),
+ clEnumValN(JSONStreamStyle::Delimited, "delimited",
+ "messages delimited by --- lines, with # comment support")),
+ llvm::cl::init(JSONStreamStyle::Standard));
+
static llvm::cl::opt<bool>
PrettyPrint("pretty", llvm::cl::desc("Pretty-print JSON output"),
llvm::cl::init(false));
+static llvm::cl::opt<bool> Test(
+ "lit-test",
+ llvm::cl::desc(
+ "Abbreviation for -input-style=delimited -pretty -run-synchronously. "
+ "Intended to simplify lit tests."),
+ llvm::cl::init(false), llvm::cl::Hidden);
+
static llvm::cl::opt<PCHStorageFlag> PCHStorage(
"pch-storage",
llvm::cl::desc("Storing PCHs in memory increases memory usages, but may "
@@ -132,6 +147,11 @@ static llvm::cl::opt<Path> YamlSymbolFile(
int main(int argc, char *argv[]) {
llvm::cl::ParseCommandLineOptions(argc, argv, "clangd");
+ if (Test) {
+ RunSynchronously = true;
+ InputStyle = JSONStreamStyle::Delimited;
+ PrettyPrint = true;
+ }
if (!RunSynchronously && WorkerThreadsCount == 0) {
llvm::errs() << "A number of worker threads cannot be 0. Did you mean to "
@@ -228,5 +248,5 @@ int main(int argc, char *argv[]) {
EnableIndexBasedCompletion, StaticIdx.get());
constexpr int NoShutdownRequestErrorCode = 1;
llvm::set_thread_name("clangd.main");
- return LSPServer.run(std::cin) ? 0 : NoShutdownRequestErrorCode;
+ return LSPServer.run(std::cin, InputStyle) ? 0 : NoShutdownRequestErrorCode;
}
OpenPOWER on IntegriCloud