[PATCH] D79142: [clangd] Render doc-comment code spans with `backticks` in plaintext mode
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 29 16:46:09 PDT 2020
sammccall created this revision.
sammccall added a reviewer: kadircet.
Herald added subscribers: cfe-commits, usaxena95, arphaman, jkorous, MaskRay, ilya-biryukov.
Herald added a project: clang.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D79142
Files:
clang-tools-extra/clangd/FormattedString.cpp
clang-tools-extra/clangd/FormattedString.h
clang-tools-extra/clangd/Hover.cpp
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
@@ -2022,12 +2022,12 @@
// FIXME: we insert spaces between code and text chunk.
"Tests primality of `p`.",
"Tests primality of `p` .",
- "Tests primality of p .",
+ "Tests primality of `p` .",
},
{
"'`' should not occur in `Code`",
"'\\`' should not occur in `Code`",
- "'`' should not occur in Code",
+ "'`' should not occur in `Code`",
},
{
"`not\nparsed`",
Index: clang-tools-extra/clangd/Hover.cpp
===================================================================
--- clang-tools-extra/clangd/Hover.cpp
+++ clang-tools-extra/clangd/Hover.cpp
@@ -876,7 +876,7 @@
case '`':
if (auto Range = getBacktickQuoteRange(Line, I)) {
Out.appendText(Line.substr(0, I));
- Out.appendCode(Range->trim("`"));
+ Out.appendCode(Range->trim("`"), /*Preserve=*/true);
return parseDocumentationLine(Line.substr(I+Range->size()), Out);
}
break;
Index: clang-tools-extra/clangd/FormattedString.h
===================================================================
--- clang-tools-extra/clangd/FormattedString.h
+++ clang-tools-extra/clangd/FormattedString.h
@@ -49,7 +49,8 @@
Paragraph &appendText(llvm::StringRef Text);
/// Append inline code, this translates to the ` block in markdown.
- Paragraph &appendCode(llvm::StringRef Code);
+ /// \p Preserve indicates the code span must be apparent even in plaintext.
+ Paragraph &appendCode(llvm::StringRef Code, bool Preserve = false);
private:
struct Chunk {
@@ -57,6 +58,8 @@
PlainText,
InlineCode,
} Kind = PlainText;
+ // Preserve chunk markers in plaintext.
+ bool Preserve = false;
std::string Contents;
/// Language for code block chunks. Ignored for other chunks.
std::string Language;
Index: clang-tools-extra/clangd/FormattedString.cpp
===================================================================
--- clang-tools-extra/clangd/FormattedString.cpp
+++ clang-tools-extra/clangd/FormattedString.cpp
@@ -361,7 +361,10 @@
void Paragraph::renderPlainText(llvm::raw_ostream &OS) const {
llvm::StringRef Sep = "";
for (auto &C : Chunks) {
- OS << Sep << C.Contents;
+ llvm::StringRef Marker = "";
+ if (C.Preserve && C.Kind == Chunk::InlineCode)
+ Marker = "`";
+ OS << Sep << Marker << C.Contents << Marker;
Sep = " ";
}
OS << '\n';
@@ -396,7 +399,7 @@
return *this;
}
-Paragraph &Paragraph::appendCode(llvm::StringRef Code) {
+Paragraph &Paragraph::appendCode(llvm::StringRef Code, bool Preserve) {
std::string Norm = canonicalizeSpaces(std::move(Code));
if (Norm.empty())
return *this;
@@ -404,6 +407,7 @@
Chunk &C = Chunks.back();
C.Contents = std::move(Norm);
C.Kind = Chunk::InlineCode;
+ C.Preserve = Preserve;
return *this;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79142.261087.patch
Type: text/x-patch
Size: 3262 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200429/95dd2e5a/attachment.bin>
More information about the cfe-commits
mailing list