llvm-project/clang-tools-extra/clangd
Paul Pluzhnikov afbe3aed49 [clangd] Minor refactor of CanonicalIncludes::addSystemHeadersMapping.
Before commit b3a991df3c SystemHeaderMap used to be a vector.

Commit b3a991df3c changed it into a map, but neglected to remove
duplicate keys (e.g. "bits/typesizes.h", "include/stdint.h", etc.).

To prevent confusion, remove all duplicates, build HeaderMapping
one pair at a time and assert() that no duplicates are found.

Change by Paul Pluzhnikov (ppluzhnikov)!

Reviewed By: ilya-biryukov

Differential Revision: https://reviews.llvm.org/D125742
2022-06-09 12:18:39 +02:00
..
benchmarks [clangd] Cleanup of readability-identifier-naming 2022-02-01 13:31:52 +00:00
fuzzer Reland "[FuzzMutate] Split out FuzzerCLI library that doesn't depend on IR." 2022-05-07 13:49:54 +02:00
index [clangd] Minor refactor of CanonicalIncludes::addSystemHeadersMapping. 2022-06-09 12:18:39 +02:00
indexer [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
quality Make clangd CompletionModel not depend on directory layout. 2021-05-05 19:25:34 +01:00
refactor [clangd] ExtractVariable support for C and Objective-C 2022-05-31 11:14:51 -04:00
support [clangd] Speed up a slow sleeping testcase. 2022-05-06 20:12:17 +02:00
test [clangd] Provide links to clang-tidy and include-cleaner diagnostic docs 2022-05-20 16:33:48 +02:00
tool [clangd] Add command-line flag to set background indexing thread priority. 2022-05-17 20:17:07 +02:00
unittests [AST] Fix clang RecursiveASTVisitor for definition of XXXTemplateSpecializationDecl 2022-06-06 02:35:34 -04:00
xpc [NFC][clangd] fix llvm-namespace-comment finding 2021-11-16 15:10:32 +00:00
AST.cpp [Clang] Fix memory leak due to TemplateArgumentListInfo used in AST node. 2022-06-08 09:58:25 -07:00
AST.h [clangd] Add code action to generate a constructor for a C++ class 2022-04-06 16:23:50 +02:00
ASTSignals.cpp [clangd] Record latency for ASTSignal derivation 2022-04-28 14:34:39 +02:00
ASTSignals.h [clangd] Trivial: Documentation fix in ASTSignals. 2021-01-14 18:38:42 +01:00
CMakeLists.txt Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
ClangdLSPServer.cpp [clangd] Support for standard inlayHint protocol 2022-05-10 18:59:15 +02:00
ClangdLSPServer.h [clangd] Support for standard inlayHint protocol 2022-05-10 18:59:15 +02:00
ClangdServer.cpp Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
ClangdServer.h Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
CodeComplete.cpp [clangd][ObjC] Filter ObjC method completions on the remaining selector 2022-05-20 11:49:16 -04:00
CodeComplete.h [clangd][ObjC] Filter ObjC method completions on the remaining selector 2022-05-20 11:49:16 -04:00
CodeCompletionStrings.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CodeCompletionStrings.h
CollectMacros.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CollectMacros.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CompileCommands.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
CompileCommands.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Compiler.cpp [clangd] Skip extra round-trip in parsing args in debug builds. NFC 2022-05-09 14:45:35 +02:00
Compiler.h [clangd] parse all make_unique-like functions in preamble 2022-05-16 11:17:25 +02:00
Config.cpp [clangd] config() -> Config::current to avoid confict with NS 2020-06-29 23:05:19 +02:00
Config.h Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
ConfigCompile.cpp Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
ConfigFragment.h Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
ConfigProvider.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ConfigProvider.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ConfigYAML.cpp Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
Diagnostics.cpp [clangd] Provide links to clang-tidy and include-cleaner diagnostic docs 2022-05-20 16:33:48 +02:00
Diagnostics.h Avoid uninitialized Diag.ID (which we pass but never read) 2022-05-20 20:29:47 +02:00
DraftStore.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
DraftStore.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
DumpAST.cpp Reland "[AST] Add a new TemplateKind for template decls found via a using decl."" 2022-04-14 11:04:55 +02:00
DumpAST.h [clang] Forward-declare DynTypedNode (NFC) 2022-01-23 13:28:04 -08:00
ExpectedTypes.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
ExpectedTypes.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
FS.cpp
FS.h
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] Add beforeExecute() callback to FeatureModules. 2022-04-21 18:03:39 +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] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FileDistance.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FindSymbols.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FindSymbols.h
FindTarget.cpp [clangd] Support UnresolvedUsingTypeLoc AST node in FindTarget. 2022-05-20 14:54:17 +02:00
FindTarget.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Format.cpp [clangd] Handle tabs in getIncrementalChangesAfterNewline() 2022-03-29 01:43:09 -04:00
Format.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
FuzzyMatch.cpp [NFC][clangd] cleanup llvm-else-after-return findings 2021-11-17 14:37:03 +00:00
FuzzyMatch.h
GlobalCompilationDatabase.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
GlobalCompilationDatabase.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
HeaderSourceSwitch.cpp [clangd] Test against path insensitivity 2022-03-21 17:27:05 +01:00
HeaderSourceSwitch.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Headers.cpp [clangd] NFC: Rename field to be compatible with the function name 2022-05-16 10:18:08 +02:00
Headers.h [clangd] NFC: Rename field to be compatible with the function name 2022-05-16 10:18:08 +02:00
HeuristicResolver.cpp [clangd] Use castAs<> instead of getAs<> to avoid dereference of nullptr 2022-01-23 13:24:36 +00:00
HeuristicResolver.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Hover.cpp Revert "[clangd] Fix hover crashing on integral or enumeral casts" 2022-05-31 22:30:20 +02:00
Hover.h [clangd] getHover - pass FormatStyle argument by const reference 2022-02-18 17:27:45 +00:00
IncludeCleaner.cpp [clangd] NFC: Clarify the Include Cleaner warning 2022-05-19 11:59:00 +02:00
IncludeCleaner.h Reland "[clangd] IncludeCleaner: Add support for IWYU pragma private" 2022-04-05 16:57:39 +02:00
IncludeFixer.cpp Generalize calls to ImplicitlyDefineFunction 2022-04-30 10:03:51 -04:00
IncludeFixer.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
InlayHints.cpp [clangd] Support for standard inlayHint protocol 2022-05-10 18:59:15 +02:00
InlayHints.h [clangd] Polish clangd/inlayHints and expose them by default. 2022-01-07 15:12:43 +01:00
JSONTransport.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
LSPBinder.h [clangd] Bind outgoing calls through LSPBinder too. NFC 2021-02-17 10:56:06 +01:00
ParsedAST.cpp [clang-tidy][NFC] Add createChecks method that also checks for LangaugeOptions 2022-05-06 17:30:34 +01:00
ParsedAST.h [clangd] Code action to declare missing move/copy constructor/assignment 2022-04-06 16:14:42 +02:00
PathMapping.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
PathMapping.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
Preamble.cpp [clangd] parse all make_unique-like functions in preamble 2022-05-16 11:17:25 +02:00
Preamble.h [clangd] Export preamble AST and serialized size as metrics 2022-04-13 14:43:06 +02:00
Protocol.cpp [clangd] Provide links to clang-tidy and include-cleaner diagnostic docs 2022-05-20 16:33:48 +02:00
Protocol.h [clangd] Provide links to clang-tidy and include-cleaner diagnostic docs 2022-05-20 16:33:48 +02:00
Quality.cpp [Index] [clangd] Support for concept declarations and requires expressions 2022-04-26 13:50:01 +00:00
Quality.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
QueryDriverDatabase.cpp [clangd] Handle '--' in QueryDriverDatabase 2022-05-24 13:10:41 -04: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] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
Selection.cpp [AST] Improve traversal of concepts and concept requirements 2022-04-28 09:33:26 +00:00
Selection.h [clangd] SelectionTree should prefer lexical declcontext 2021-10-28 17:39:35 +02:00
SemanticHighlighting.cpp Reland "[AST] Add a new TemplateKind for template decls found via a using decl."" 2022-04-14 11:04:55 +02:00
SemanticHighlighting.h Add semantic token modifier for non-const reference parameter 2021-09-13 00:51:09 -04:00
SemanticSelection.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
SemanticSelection.h [clangd] Implement textDocument/foldingRange 2020-07-14 09:28:42 +02:00
SourceCode.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
SourceCode.h [clangd] Don't index __reserved_names in headers. 2022-01-05 16:34:04 +01:00
TUScheduler.cpp Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
TUScheduler.h Reland(3) "[clangd] Indexing of standard library" 2022-05-19 08:13:23 +02:00
TidyProvider.cpp [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
TidyProvider.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01:00
URI.h [clangd] cleanup of header guard names 2021-12-02 15:58:35 +00:00
XRefs.cpp Add an option to fill container for ref 2022-05-19 16:05:38 +02:00
XRefs.h [clangd] Clean up unused includes. NFCI 2022-02-26 12:00:16 +01: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.