llvm-project/clang-tools-extra
Qingyuan Zheng 44bbf20965 [clangd] Add Macro Expansion to Hover
This patch adds macro expansion preview to hover info. Basically, the refactor infrastructure for expanding macro is used for this purpose. The following steps are added to getHoverContents for macros:
1. calling AST.getTokens().expansionStartingAt(...) to get expanded tokens
2. calling reformat(...) to format expanded tokens

Some opinions are wanted:
1. Should we present macro expansion before definition in the hover card?
2. Should we truncate/ignore macro expansion if it's too long? For performance and presentation reason, it might not be a good idea to expand pages worth of tokens in hover card. If so, what's the preferred threshold?

Also, some limitation applies:
1. Expansion isn't available in macro definition/arguments as the refactor code action isn't either.

Differential Revision: https://reviews.llvm.org/D127082
2022-09-07 17:49:45 +02:00
..
clang-apply-replacements Fix use-after-free in clang-apply-replacements 2022-08-02 13:34:20 -07:00
clang-change-namespace Use StringRef::contains (NFC) 2022-08-28 23:29:02 -07:00
clang-doc Use llvm::all_of (NFC) 2022-08-14 16:25:36 -07:00
clang-include-fixer [cmake] do not set execution permission to regular files. 2022-09-07 11:04:12 +08:00
clang-move Use llvm::none_of (NFC) 2022-08-14 16:25:39 -07:00
clang-query [clang-query] Add check to prevent setting srcloc when no introspection is available. 2021-04-28 11:21:35 +01:00
clang-reorder-fields Use llvm::sort instead of std::sort where possible 2022-07-23 15:19:05 +02:00
clang-tidy [clang-tidy] Skip union-like classes in use-equals-default 2022-09-06 20:19:47 +00:00
clangd [clangd] Add Macro Expansion to Hover 2022-09-07 17:49:45 +02:00
docs [clang-tidy] Skip union-like classes in use-equals-default 2022-09-06 20:19:47 +00:00
include-cleaner [include-cleaner] Fix build error in unit test 2022-06-09 03:38:13 -04:00
modularize Remove unneeded cl::ZeroOrMore for cl::opt/cl::list options 2022-06-05 00:31:44 -07:00
pp-trace [pp-trace] Print HashLoc in InclusionDirective callback 2022-06-03 19:29:59 +08:00
pseudo Drop empty string literals from static_assert (NFC) 2022-09-03 11:17:47 -07:00
test [clang-tidy] Skip union-like classes in use-equals-default 2022-09-06 20:19:47 +00:00
tool-template
unittests [clang-doc] Always emit the TagType for RecordInfo 2022-08-12 18:39:20 +00:00
.gitignore
CMakeLists.txt Generalize "check-all" umbrella targets, use for check-clang-tools 2022-05-06 12:30:49 +02:00
CODE_OWNERS.TXT Update the clang and clang-tools-extra code owners files 2022-09-06 08:28:03 -04:00
LICENSE.TXT
README.txt [NFC] update clang-tools-extra README.txt 2022-06-10 16:59:57 +05:30

README.txt

//===----------------------------------------------------------------------===//
// Clang Tools repository
//===----------------------------------------------------------------------===//

Welcome to the repository of extra Clang Tools.  This repository holds tools
that are developed as part of the LLVM compiler infrastructure project and the
Clang frontend.  These tools are kept in a separate "extra" repository to
allow lighter weight checkouts of the core Clang codebase.

All discussion regarding Clang, Clang-based tools, and code in this repository
should be held using the standard Clang forum:
  https://discourse.llvm.org/c/clang

Code review for this tree should take place on the standard Clang patch and
commit lists:
  http://lists.llvm.org/mailman/listinfo/cfe-commits

If you find a bug in these tools, please file it in the LLVM bug tracker:
  https://github.com/llvm/llvm-project/issues/