[PATCH] D147395: [Clangd] Make the type hint length limit configurable
Yi Zhang via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Apr 1 20:06:19 PDT 2023
zhangyi1357 created this revision.
Herald added subscribers: kadircet, arphaman.
Herald added a project: All.
zhangyi1357 requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay, ilya-biryukov.
Herald added a project: clang-tools-extra.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D147395
Files:
clang-tools-extra/clangd/Config.h
clang-tools-extra/clangd/ConfigCompile.cpp
clang-tools-extra/clangd/ConfigFragment.h
clang-tools-extra/clangd/ConfigYAML.cpp
clang-tools-extra/clangd/InlayHints.cpp
Index: clang-tools-extra/clangd/InlayHints.cpp
===================================================================
--- clang-tools-extra/clangd/InlayHints.cpp
+++ clang-tools-extra/clangd/InlayHints.cpp
@@ -688,7 +688,7 @@
return;
std::string TypeName = T.getAsString(Policy);
- if (TypeName.length() < TypeNameLimit)
+ if (TypeName.length() < Cfg.InlayHints.TypeNameLimit)
addInlayHint(R, HintSide::Right, InlayHintKind::Type, Prefix, TypeName,
/*Suffix=*/"");
}
@@ -714,8 +714,6 @@
// the policies are initialized for more details.)
PrintingPolicy TypeHintPolicy;
PrintingPolicy StructuredBindingPolicy;
-
- static const size_t TypeNameLimit = 32;
};
} // namespace
Index: clang-tools-extra/clangd/ConfigYAML.cpp
===================================================================
--- clang-tools-extra/clangd/ConfigYAML.cpp
+++ clang-tools-extra/clangd/ConfigYAML.cpp
@@ -254,6 +254,10 @@
if (auto Value = boolValue(N, "Designators"))
F.Designators = *Value;
});
+ Dict.handle("TypeNameLimit", [&](Node &N) {
+ if (auto Value = scalarValue(N, "TypeNameLimit"))
+ F.TypeNameLimit = *Value;
+ });
Dict.parse(N);
}
Index: clang-tools-extra/clangd/ConfigFragment.h
===================================================================
--- clang-tools-extra/clangd/ConfigFragment.h
+++ clang-tools-extra/clangd/ConfigFragment.h
@@ -322,6 +322,8 @@
std::optional<Located<bool>> DeducedTypes;
/// Show designators in aggregate initialization.
std::optional<Located<bool>> Designators;
+ /// Limit the length of type name hints.
+ std::optional<Located<std::string>> TypeNameLimit;
};
InlayHintsBlock InlayHints;
};
Index: clang-tools-extra/clangd/ConfigCompile.cpp
===================================================================
--- clang-tools-extra/clangd/ConfigCompile.cpp
+++ clang-tools-extra/clangd/ConfigCompile.cpp
@@ -611,6 +611,11 @@
Out.Apply.push_back([Value(**F.Designators)](const Params &, Config &C) {
C.InlayHints.Designators = Value;
});
+ if (F.TypeNameLimit)
+ Out.Apply.push_back(
+ [Value(**F.TypeNameLimit)](const Params &, Config &C) {
+ C.InlayHints.TypeNameLimit = stoul(Value);
+ });
}
constexpr static llvm::SourceMgr::DiagKind Error = llvm::SourceMgr::DK_Error;
Index: clang-tools-extra/clangd/Config.h
===================================================================
--- clang-tools-extra/clangd/Config.h
+++ clang-tools-extra/clangd/Config.h
@@ -147,6 +147,8 @@
bool Parameters = true;
bool DeducedTypes = true;
bool Designators = true;
+ // Limit the length of type names in inlay hints.
+ size_t TypeNameLimit = 32;
} InlayHints;
};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147395.510290.patch
Type: text/x-patch
Size: 2803 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230402/a5a4dc81/attachment.bin>
More information about the cfe-commits
mailing list