//===--- ClangdServer.h - Main clangd server code ----------------*- C++-*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_CLANGDSERVER_H #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_CLANGDSERVER_H #include "CodeComplete.h" #include "ConfigProvider.h" #include "Diagnostics.h" #include "DraftStore.h" #include "FeatureModule.h" #include "GlobalCompilationDatabase.h" #include "Hover.h" #include "ModulesBuilder.h" #include "Protocol.h" #include "SemanticHighlighting.h" #include "TUScheduler.h" #include "XRefs.h" #include "index/Background.h" #include "index/FileIndex.h" #include "index/Index.h" #include "refactor/Rename.h" #include "refactor/Tweak.h" #include "support/Function.h" #include "support/MemoryTree.h" #include "support/Path.h" #include "support/ThreadsafeFS.h" #include "clang/Tooling/Core/Replacement.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/FunctionExtras.h" #include "llvm/ADT/StringRef.h" #include <functional> #include <memory> #include <optional> #include <string> #include <tuple> #include <vector> namespace clang { namespace clangd { /// Manages a collection of source files and derived data (ASTs, indexes), /// and provides language-aware features such as code completion. /// /// The primary client is ClangdLSPServer which exposes these features via /// the Language Server protocol. ClangdServer may also be embedded directly, /// though its API is not stable over time. /// /// ClangdServer should be used from a single thread. Many potentially-slow /// operations have asynchronous APIs and deliver their results on another /// thread. /// Such operations support cancellation: if the caller sets up a cancelable /// context, many operations will notice cancellation and fail early. /// (ClangdLSPServer uses this to implement $/cancelRequest). class ClangdServer { … }; } // namespace clangd } // namespace clang #endif