-
Notifications
You must be signed in to change notification settings - Fork 236
Add preceding newlines before Doxygen commands #237
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@swift-ci please test |
@Kyle-Ye @d-ronnqvist @QuietMisdreavus Can someone please assist with the review here? We need this for implementing signature help in SourceKit-LSP. Thanks in advance. 🙏🏼 |
\abstract abstract | ||
\param x first param | ||
\returns result | ||
\note note | ||
\discussion discussion |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do these need a blank line in between or would they parse the same if they were just on their own line (without blank lines in between)?
\abstract ...
\param x ...
\returns ...
...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They'd parse the same without a blank line.
A non-Doxygen-aware markdown renderer would show them on the same line without the blank line though (and most LSP clients like VS Code aren't Doxygen-aware).
If you don't think this is something swift-markdown needs to handle, would it be okay to add an option to always add a blank between Doxygen commands? If not, what do you recommend?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From what i've been able to see, Doxygen commands (and HeaderDoc tags, which are similar) are usually written without an interleaving newline between commands, especially commands of the same kind like \param
. Comparing this behavior "when parsed by a non-Doxygen-aware parser" doesn't seem that important to me, since Doxygen commands are non-standard Markdown to begin with.
I would much rather prefer to see "preceding newlines" as a configurable option, with 1 newline (i.e. without an interleaving blank line) as the default. (Maybe as a toggle, something like "print Doxygen commands as separate paragraphs", where turning it on has the behavior you've written, and leaving it off only prints one newline.) You did find a valuable bug in that we don't print any newlines for Doxygen commands at all, so i would want to make sure that we at least print them correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@QuietMisdreavus @d-ronnqvist That makes sense. I updated the implementation to control this behavior with an option. Please recheck. 🙏🏼
let printed = Document( | ||
Paragraph(Text("Does something.")), | ||
DoxygenAbstract(children: Paragraph(Text("abstract"))), | ||
DoxygenParameter(name: "x", children: Paragraph(Text("first param"))), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How would this behave with two different parameters? I wouldn't expect that to have blank lines in-between.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same reasoning as above.
@d-ronnqvist I'd appreciate your input on whether we should always use 2 separating lines or not. 🙏🏼 |
Hello @d-ronnqvist! Sorry for being noisy, but can you please recheck and let me know what the best course of action here is? 🙏🏼 |
c7d7a40
to
0ab83e3
Compare
@swift-ci please test |
1 similar comment
@swift-ci please test |
Summary
Formatting for Doxygen commands doesn't add preceding newlines to separate them from other markdown content.
Consider the below markdown:
Which when parsed with
.parseMinimalDoxygen
produces the following document structure:If we format that document with the default options, the resulting markdown is this:
Notice that everything is just once paragraph now which doesn't resemble the initial document.
Instead, we should separate Doxygen commands from other content similar to what's currently done by adding 2 newlines before a
Paragraph
.Testing
Here's a simple reproducible example:
Checklist
Make sure you check off the following items. If they cannot be completed, provide a reason.
./bin/test
script and it succeeded