This revision was automatically updated to reflect the committed changes.
Closed by commit rG44f9c7a820c1: [clangd] Rearrange type, returntype and
parameters in hover card (authored by kadircet).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D72623/new/
https://reviews.llvm.org/D72623
Files:
clang-tools-extra/clangd/Hover.cpp
clang-tools-extra/clangd/test/hover.test
clang-tools-extra/clangd/unittests/HoverTests.cpp
Index: clang-tools-extra/clangd/unittests/HoverTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/HoverTests.cpp
+++ clang-tools-extra/clangd/unittests/HoverTests.cpp
@@ -1722,8 +1722,10 @@
HI.NamespaceScope = "ns::";
HI.Definition = "ret_type foo(params) {}";
},
- R"(function foo → ret_type
+ R"(function foo
+🡺 ret_type
+Parameters:
-
- type
- type foo
@@ -1741,8 +1743,9 @@
HI.Type = "type";
HI.Definition = "def";
},
- R"(variable foo : type
+ R"(variable foo
+Type: type
Value = value
// In test::bar
@@ -1763,9 +1766,8 @@
HoverInfo HI;
HI.Kind = index::SymbolKind::Variable;
HI.Name = "foo";
- HI.Type = "type";
- EXPECT_EQ(HI.present().asMarkdown(), "### variable `foo` \\: `type`");
+ EXPECT_EQ(HI.present().asMarkdown(), "### variable `foo`");
}
// This is a separate test as rulers behave differently in markdown vs
Index: clang-tools-extra/clangd/test/hover.test
===================================================================
--- clang-tools-extra/clangd/test/hover.test
+++ clang-tools-extra/clangd/test/hover.test
@@ -9,7 +9,7 @@
# CHECK-NEXT: "result": {
# CHECK-NEXT: "contents": {
# CHECK-NEXT: "kind": "plaintext",
-# CHECK-NEXT: "value": "function foo → void\n\nvoid foo()"
+# CHECK-NEXT: "value": "function foo\n\n🡺 void\n\nvoid foo()"
# CHECK-NEXT: },
# CHECK-NEXT: "range": {
# CHECK-NEXT: "end": {
Index: clang-tools-extra/clangd/Hover.cpp
===================================================================
--- clang-tools-extra/clangd/Hover.cpp
+++ clang-tools-extra/clangd/Hover.cpp
@@ -510,13 +510,14 @@
markup::Document HoverInfo::present() const {
markup::Document Output;
// Header contains a text of the form:
- // variable `var` : `int`
+ // variable `var`
//
// class `X`
//
- // function `foo` → `int`
+ // function `foo`
+ //
+ // expression
//
- // expression : `int`
// Note that we are making use of a level-3 heading because VSCode renders
// level 1 and 2 headers in a huge font, see
// https://github.com/microsoft/vscode/issues/88417 for details.
@@ -524,27 +525,30 @@
Header.appendText(index::getSymbolKindString(Kind));
assert(!Name.empty() && "hover triggered on a nameless symbol");
Header.appendCode(Name);
- if (ReturnType) {
- Header.appendText("→");
- Header.appendCode(*ReturnType);
- } else if (Type) {
- Header.appendText(":");
- Header.appendCode(*Type);
- }
// Put a linebreak after header to increase readability.
Output.addRuler();
- // For functions we display signature in a list form, e.g.:
- // - `bool param1`
- // - `int param2 = 5`
- if (Parameters && !Parameters->empty()) {
- markup::BulletList &L = Output.addBulletList();
- for (const auto &Param : *Parameters) {
- std::string Buffer;
- llvm::raw_string_ostream OS(Buffer);
- OS << Param;
- L.addItem().addParagraph().appendCode(std::move(OS.str()));
+ // Print Types on their own lines to reduce chances of getting line-wrapped by
+ // editor, as they might be long.
+ if (ReturnType) {
+ // For functions we display signature in a list form, e.g.:
+ // 🡺 `x`
+ // Parameters:
+ // - `bool param1`
+ // - `int param2 = 5`
+ Output.addParagraph().appendText("🡺").appendCode(*ReturnType);
+ if (Parameters && !Parameters->empty()) {
+ Output.addParagraph().appendText("Parameters:");
+ markup::BulletList &L = Output.addBulletList();
+ for (const auto &Param : *Parameters) {
+ std::string Buffer;
+ llvm::raw_string_ostream OS(Buffer);
+ OS << Param;
+ L.addItem().addParagraph().appendCode(std::move(OS.str()));
+ }
}
+ } else if (Type) {
+ Output.addParagraph().appendText("Type: ").appendCode(*Type);
}
if (Value) {
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits