ec2f7376e3
Execute implementations already checks for permissions and existence and returns relevant errors as necessary, so instead of printing our own errors, we just print theirs. This also fixes a case in windows where the driver might be missing the `.exe` suffix. Previously, clangd would reject such a driver because sys::fs::exists is strict, whereas the underlying Execute implementation would check with `.exe` suffix too. Fixes https://github.com/clangd/clangd/issues/93 Differential Revision: https://reviews.llvm.org/D102431 |
||
---|---|---|
.. | ||
benchmarks | ||
fuzzer | ||
include-mapping | ||
index | ||
indexer | ||
quality | ||
refactor | ||
support | ||
test | ||
tool | ||
unittests | ||
xpc | ||
AST.cpp | ||
AST.h | ||
ASTSignals.cpp | ||
ASTSignals.h | ||
ClangdLSPServer.cpp | ||
ClangdLSPServer.h | ||
ClangdServer.cpp | ||
ClangdServer.h | ||
CMakeLists.txt | ||
CodeComplete.cpp | ||
CodeComplete.h | ||
CodeCompletionStrings.cpp | ||
CodeCompletionStrings.h | ||
CollectMacros.cpp | ||
CollectMacros.h | ||
CompileCommands.cpp | ||
CompileCommands.h | ||
Compiler.cpp | ||
Compiler.h | ||
Config.cpp | ||
Config.h | ||
ConfigCompile.cpp | ||
ConfigFragment.h | ||
ConfigProvider.cpp | ||
ConfigProvider.h | ||
ConfigYAML.cpp | ||
CSymbolMap.inc | ||
Diagnostics.cpp | ||
Diagnostics.h | ||
DraftStore.cpp | ||
DraftStore.h | ||
DumpAST.cpp | ||
DumpAST.h | ||
ExpectedTypes.cpp | ||
ExpectedTypes.h | ||
FeatureModule.cpp | ||
FeatureModule.h | ||
Features.inc.in | ||
FileDistance.cpp | ||
FileDistance.h | ||
FindSymbols.cpp | ||
FindSymbols.h | ||
FindTarget.cpp | ||
FindTarget.h | ||
Format.cpp | ||
Format.h | ||
FS.cpp | ||
FS.h | ||
FuzzyMatch.cpp | ||
FuzzyMatch.h | ||
GlobalCompilationDatabase.cpp | ||
GlobalCompilationDatabase.h | ||
Headers.cpp | ||
Headers.h | ||
HeaderSourceSwitch.cpp | ||
HeaderSourceSwitch.h | ||
HeuristicResolver.cpp | ||
HeuristicResolver.h | ||
Hover.cpp | ||
Hover.h | ||
IncludeFixer.cpp | ||
IncludeFixer.h | ||
InlayHints.cpp | ||
InlayHints.h | ||
JSONTransport.cpp | ||
LSPBinder.h | ||
ParsedAST.cpp | ||
ParsedAST.h | ||
PathMapping.cpp | ||
PathMapping.h | ||
Preamble.cpp | ||
Preamble.h | ||
Protocol.cpp | ||
Protocol.h | ||
Quality.cpp | ||
Quality.h | ||
QueryDriverDatabase.cpp | ||
README.md | ||
RIFF.cpp | ||
RIFF.h | ||
Selection.cpp | ||
Selection.h | ||
SemanticHighlighting.cpp | ||
SemanticHighlighting.h | ||
SemanticSelection.cpp | ||
SemanticSelection.h | ||
SourceCode.cpp | ||
SourceCode.h | ||
StdSymbolMap.inc | ||
TidyProvider.cpp | ||
TidyProvider.h | ||
Transport.h | ||
TUScheduler.cpp | ||
TUScheduler.h | ||
URI.cpp | ||
URI.h | ||
XRefs.cpp | ||
XRefs.h |
clangd
clangd is a language server, and provides C++ IDE features to editors. This is not its documentation.
- the website is https://clangd.llvm.org/.
- the bug tracker is https://github.com/clangd/clangd/issues
- the source code is hosted at https://github.com/llvm/llvm-project/tree/main/clang-tools-extra/clangd.
- the website source code is at https://github.com/llvm/clangd-www/
Communication channels
If you have any questions or feedback, you can reach community and developers through one of these channels:
- chat: #clangd room hosted on LLVM's Discord channel.
- user questions and feature requests can be asked in the clangd topic on LLVM Discussion Forums
Building and testing clangd
For a minimal setup on building clangd:
-
Clone the LLVM repo to
$LLVM_ROOT
. -
Create a build directory, for example at
$LLVM_ROOT/build
. -
Inside the build directory run:
cmake $LLVM_ROOT/llvm/ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra"
.- We suggest building in
Release
mode as building DEBUG binaries requires considerably more resources. You can check Building LLVM with CMake documentation for more details about cmake flags. - In addition to that using
Ninja
as a generator rather than defaultmake
is preferred. To do that consider passing-G Ninja
to cmake invocation. - Finally, you can turn on assertions via
-DLLVM_ENABLE_ASSERTS=On
.
- We suggest building in
-
Afterwards you can build clangd with
cmake --build $LLVM_ROOT/build --target clangd
, similarly run tests by changing target tocheck-clangd
.