llvm-project/clang-tools-extra/clangd
David Goldman 2982bd9e9b [clangd] Use the active file's language for hover code blocks
This helps improve the syntax highlighting for Objective-C code,
although it currently doesn't work well in VS Code with
methods/properties/ivars since we don't currently include the proper
decl context (e.g. class).

Differential Revision: https://reviews.llvm.org/D108584
2021-09-03 11:38:27 -04:00
..
benchmarks [clangd] Cleanup FuzzyFindRequest serialization and dex benchmark 2021-07-21 14:51:16 +02:00
fuzzer [clangd] CMake: express -Iclangd/ at top level and inherit 2021-07-02 09:52:36 +02:00
include-mapping
index [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
indexer [clangd] Unify compiler invocation creation 2021-07-30 15:22:51 +02:00
quality Make clangd CompletionModel not depend on directory layout. 2021-05-05 19:25:34 +01:00
refactor [clangd] Populate-switch triggers when the whole condition is selected. 2021-08-08 21:06:08 +02:00
support Recommit: Support: add llvm::thread class that supports specifying stack size. 2021-07-08 16:22:26 +01:00
test [clangd] Add new semantic token modifier "virtual" 2021-08-03 19:53:01 -07:00
tool [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
unittests [clangd] Use the active file's language for hover code blocks 2021-09-03 11:38:27 -04:00
xpc [clangd] CMake: express -Iclangd/ at top level and inherit 2021-07-02 09:52:36 +02:00
AST.cpp [clangd] Guard against null Attrs in the AST 2021-08-13 10:38:52 +02:00
AST.h [clangd] Add basic support for attributes (selection, hover) 2021-08-06 22:49:14 +02:00
ASTSignals.cpp [clangd] Factor out the heuristic resolver code into its own class 2021-02-16 04:10:52 -05:00
ASTSignals.h [clangd] Trivial: Documentation fix in ASTSignals. 2021-01-14 18:38:42 +01:00
CMakeLists.txt [clangd] IncludeCleaner as a library: Find all references to symbols in the file 2021-08-18 10:08:35 +02:00
CSymbolMap.inc
ClangdLSPServer.cpp [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
ClangdLSPServer.h [clangd] Log feature configuration (linux+asan+grpc) of the clangd build 2021-06-30 17:49:29 +02:00
ClangdServer.cpp [clangd] Add a flag to disable formatting of tweak edits 2021-06-28 20:52:47 +02:00
ClangdServer.h [clangd] Allow AST request without range 2021-04-23 21:35:42 +02:00
CodeComplete.cpp clangd: Make documentation property of completion items more similar 2021-08-13 00:18:15 +02:00
CodeComplete.h Revert "Revert "[clangd] Use ML Code completion ranking as default."" 2021-03-02 18:03:52 +01:00
CodeCompletionStrings.cpp [clangd][ObjC] Fix issue completing a method decl by name 2021-06-01 13:35:05 -04:00
CodeCompletionStrings.h
CollectMacros.cpp Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
CollectMacros.h Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
CompileCommands.cpp [clangd] detectClangPath() - remove (dead) return. NFC. 2021-08-20 12:41:38 +01:00
CompileCommands.h [clangd] Unify compiler invocation creation 2021-07-30 15:22:51 +02:00
Compiler.cpp [clangd] Unify compiler invocation creation 2021-07-30 15:22:51 +02:00
Compiler.h [clangd] Unify compiler invocation creation 2021-07-30 15:22:51 +02:00
Config.cpp [clangd] config() -> Config::current to avoid confict with NS 2020-06-29 23:05:19 +02:00
Config.h [clangd] Drop optional on ExternalIndexSpec 2021-06-02 23:26:37 +02:00
ConfigCompile.cpp [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
ConfigFragment.h [clangd] Only allow remote index to be enabled from user config. 2021-04-15 14:51:23 +02:00
ConfigProvider.cpp [clangd] Only allow remote index to be enabled from user config. 2021-04-15 14:51:23 +02:00
ConfigProvider.h [clangd] Only allow remote index to be enabled from user config. 2021-04-15 14:51:23 +02:00
ConfigYAML.cpp [clang-tools-extra] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
Diagnostics.cpp [clangd] Make use of diagnostic tags for some clang diags 2021-07-30 15:11:46 +02:00
Diagnostics.h [clangd] Make use of diagnostic tags for some clang diags 2021-07-30 15:11:46 +02:00
DraftStore.cpp [clangd][NFC] Silence some buildbot warnings after 0250b053 2021-03-09 14:55:55 +00:00
DraftStore.h [clangd][NFC] Silence some buildbot warnings after 0250b053 2021-03-09 14:55:55 +00:00
DumpAST.cpp Fully qualify template template parameters when printing 2021-09-02 15:04:34 -07:00
DumpAST.h [clangd] Allow AST request without range 2021-04-23 21:35:42 +02:00
ExpectedTypes.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ExpectedTypes.h
FS.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
FS.h [clangd] Move non-clang base pieces into separate support/ lib. NFCI 2020-04-29 15:57:12 +02:00
Feature.cpp [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
Feature.h [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
FeatureModule.cpp [clangd] Rename Module -> FeatureModule to avoid confusion. NFC 2021-03-05 10:04:00 +01:00
FeatureModule.h [clangd] Introduce ASTHooks to FeatureModules 2021-04-13 17:45:09 +02:00
Features.inc.in [clangd] Add CMake option to (not) link in clang-tidy checks 2021-07-14 10:04:21 +02:00
FileDistance.cpp [clangd] NFC: Use SmallVector<T> where possible 2020-12-10 13:36:49 +01:00
FileDistance.h
FindSymbols.cpp Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
FindSymbols.h [clang-tools-extra] NFC: Fix trivial typo in documents and comments 2020-04-05 15:28:40 +09:00
FindTarget.cpp [clang] p1099 using enum part 2 2021-06-08 11:11:46 -07:00
FindTarget.h [clangd] Factor out the heuristic resolver code into its own class 2021-02-16 04:10:52 -05:00
Format.cpp [clangd] Replace usages of dummy with more descriptive words 2021-03-22 12:49:24 +01:00
Format.h
FuzzyMatch.cpp
FuzzyMatch.h
GlobalCompilationDatabase.cpp Revert "Revert "[clangd] Adjust compile flags to contain only the requested file as input"" 2021-07-27 14:49:53 +02:00
GlobalCompilationDatabase.h [clangd] Allow configuration database to be specified in config. 2021-01-25 23:15:48 +01:00
HeaderSourceSwitch.cpp [clang-tools-extra] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
HeaderSourceSwitch.h [clangd][NFC] Use PathRef for getCorrespondingHeaderOrSource 2021-01-07 02:41:19 +00:00
Headers.cpp [clangd] Introduce Modules 2021-02-12 18:37:16 +01:00
Headers.h [clangd] Use flags from open files when opening headers they include 2021-03-01 09:43:59 +01:00
HeuristicResolver.cpp [clangd] Improve resolution of static method calls in HeuristicResolver 2021-06-02 20:30:19 -04:00
HeuristicResolver.h [clangd] Parameter hints for dependent calls 2021-05-03 02:03:16 -04:00
Hover.cpp [clangd] Use the active file's language for hover code blocks 2021-09-03 11:38:27 -04:00
Hover.h clangd: Provide hover info for include directives 2021-08-13 00:07:23 +02:00
IncludeCleaner.cpp [clangd] IncludeCleaner as a library: Find all references to symbols in the file 2021-08-18 10:08:35 +02:00
IncludeCleaner.h [clangd] IncludeCleaner as a library: Find all references to symbols in the file 2021-08-18 10:08:35 +02:00
IncludeFixer.cpp [clangd] Deduplicate scopes in IncludeFixer queries 2021-02-05 14:02:50 +01:00
IncludeFixer.h
InlayHints.cpp [clangd] Do not show inlay hints pertaining to code in other files 2021-08-16 01:58:23 -04:00
InlayHints.h [clangd] Add support for inline parameter hints 2021-04-14 02:31:20 -04:00
JSONTransport.cpp PR51018: Remove explicit conversions from SmallString to StringRef to future-proof against C++23 2021-07-08 13:37:57 -07:00
LSPBinder.h [clangd] Bind outgoing calls through LSPBinder too. NFC 2021-02-17 10:56:06 +01:00
ParsedAST.cpp Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
ParsedAST.h Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
PathMapping.cpp [clangd, llvm] Remove redundant calls to c_str() (NFC) 2021-09-02 09:07:13 -07:00
PathMapping.h [clangd] Add path mappings functionality 2020-01-07 12:40:51 +01:00
Preamble.cpp Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
Preamble.h Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
Protocol.cpp [clangd] Make use of diagnostic tags for some clang diags 2021-07-30 15:11:46 +02:00
Protocol.h [clangd] Make use of diagnostic tags for some clang diags 2021-07-30 15:11:46 +02:00
Quality.cpp [clang-tools-extra] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
Quality.h Revert "[clangd] Extract symbol-scope logic out of Quality, add tests. NFC" 2021-01-29 14:59:16 +01:00
QueryDriverDatabase.cpp PR51018: Remove explicit conversions from SmallString to StringRef to future-proof against C++23 2021-07-08 13:37:57 -07:00
README.md [Branch-Rename] Fix some links 2021-02-01 16:43:21 +05:30
RIFF.cpp [clangd] Add error() function for creating formatv-style llvm::Errors. NFC 2020-09-14 10:43:42 +02:00
RIFF.h [clangd] Improve serialization error messages. NFC 2020-07-08 17:31:40 +02:00
Selection.cpp [clangd] Add basic support for attributes (selection, hover) 2021-08-06 22:49:14 +02:00
Selection.h Remove references to the ast_type_traits namespace 2020-12-11 00:58:46 +01:00
SemanticHighlighting.cpp [clangd] Add new semantic token modifier "virtual" 2021-08-03 19:53:01 -07:00
SemanticHighlighting.h [clangd] Add new semantic token modifier "virtual" 2021-08-03 19:53:01 -07:00
SemanticSelection.cpp [clang] Simplify buildSyntaxTree API 2020-11-09 22:49:54 +01:00
SemanticSelection.h [clangd] Implement textDocument/foldingRange 2020-07-14 09:28:42 +02:00
SourceCode.cpp Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
SourceCode.h Revert "[clangd] Support `#pragma mark` in the outline" 2021-08-10 14:25:52 +01:00
StdSymbolMap.inc
TUScheduler.cpp Reapply [clangd] Fix possible assertion fail in TUScheduler 2021-07-02 16:32:13 +02:00
TUScheduler.h [clangd] TUScheduler uses last active file for file-less queries 2021-06-02 22:50:24 +02:00
TidyProvider.cpp [clangd] Expose absoluteParent helper 2021-02-19 13:40:21 +01:00
TidyProvider.h [clangd] Validate clang-tidy Checks in clangd config. 2020-12-15 21:10:57 +00:00
Transport.h [clangd] Rename Features.h -> Feature.h to avoid confilct with libstdc++ 2021-08-06 18:56:41 +02:00
URI.cpp [clangd] Remove dead variable. NFC 2020-09-30 23:19:15 +02:00
URI.h
XRefs.cpp [clangd] Add basic support for attributes (selection, hover) 2021-08-06 22:49:14 +02:00
XRefs.h [clangd] Add SymbolID to LocatedSymbol. 2021-04-28 15:05:53 +02:00

README.md

clangd

clangd is a language server, and provides C++ IDE features to editors. This is not its documentation.

Communication channels

If you have any questions or feedback, you can reach community and developers through one of these channels:

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 default make is preferred. To do that consider passing -G Ninja to cmake invocation.
    • Finally, you can turn on assertions via -DLLVM_ENABLE_ASSERTS=On.
  • Afterwards you can build clangd with cmake --build $LLVM_ROOT/build --target clangd, similarly run tests by changing target to check-clangd.