[PATCH] D75687: [clangd] Only minimally escape text when rendering to markdown.
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 16 13:40:26 PDT 2020
sammccall added a comment.
Sorry for the slow turnaround, bit off more than I could chew on a few fronts :-(
================
Comment at: clang-tools-extra/clangd/FormattedString.cpp:69
+ return false;
+ if (Contents.front() == '!' || Contents.front() == '?' ||
+ Contents.front() == '/')
----------------
kadircet wrote:
> what is the `?` for ?
`<?foo...` is a processing instruction, which is valid inline HTML (and therefore needs escaping)
================
Comment at: clang-tools-extra/clangd/FormattedString.cpp:132
+ return false;
+ llvm::StringRef Rest = After.ltrim(C);
+ return Rest.empty() || Rest.startswith(" ");
----------------
kadircet wrote:
> nit: After.ltrim('#')
I'm trying to avoid repeating the known values of C as there's various fallthrough/copied cases and it seems more fragile.
================
Comment at: clang-tools-extra/clangd/FormattedString.cpp:164
+ case '<': // HTML tag (or autolink, which we choose not to escape)
+ return looksLikeTag(After);
+ case '>': // Quote marker. Needs escaping at start of line.
----------------
kadircet wrote:
> is this really worth all the trouble ?
Simplified it a bit. I think it's worth not escaping `<` when not matched with `>`. Sadly the rule can't be quite that simple because multiple chunks can form a tag.
================
Comment at: clang-tools-extra/clangd/FormattedString.cpp:166
+ case '>': // Quote marker. Needs escaping at start of line.
+ return StartsLine && Before.empty();
+ case '&': { // HTML entity reference
----------------
kadircet wrote:
> I believe it is also allowed to have whitespaces(less than 4?) before the `>` to be interpreted as a quote marker.
Yes, but a chunk never begins with whitespace (see assert at top of function)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75687/new/
https://reviews.llvm.org/D75687
More information about the cfe-commits
mailing list