Skip to content

Conversation

@a7medev
Copy link
Member

@a7medev a7medev commented Sep 12, 2025

Summary

Formatting for Doxygen commands doesn't add preceding newlines to separate them from other markdown content.

Consider the below markdown:

Does something.

\param x first param

\returns result

Which when parsed with .parseMinimalDoxygen produces the following document structure:

Document
├─ Paragraph
│  └─ Text "Does something."
├─ DoxygenParameter parameter: x
│  └─ Paragraph
│     └─ Text "first param"
└─ DoxygenReturns
   └─ Paragraph
      └─ Text "result"

If we format that document with the default options, the resulting markdown is this:

Does something.\param x first param\returns result

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:

import Markdown

let markdown = #"""
    Does something.

    \param x first param

    \returns result
    """#

let document = Document(parsing: markdown, options: [.parseBlockDirectives, .parseMinimalDoxygen])

print(document.format())

Checklist

Make sure you check off the following items. If they cannot be completed, provide a reason.

  • Added tests
  • Ran the ./bin/test script and it succeeded
  • Updated documentation if necessary

@a7medev
Copy link
Member Author

a7medev commented Sep 12, 2025

@swift-ci please test

@a7medev
Copy link
Member Author

a7medev commented Sep 12, 2025

@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. 🙏🏼

@a7medev
Copy link
Member Author

a7medev commented Sep 17, 2025

@d-ronnqvist I'd appreciate your input on whether we should always use 2 separating lines or not. 🙏🏼

@a7medev
Copy link
Member Author

a7medev commented Sep 25, 2025

Hello @d-ronnqvist! Sorry for being noisy, but can you please recheck and let me know what the best course of action here is? 🙏🏼

@a7medev a7medev requested a review from d-ronnqvist September 25, 2025 21:14
@a7medev a7medev force-pushed the fix/newline-before-doxygen branch from c7d7a40 to 0ab83e3 Compare October 2, 2025 23:44
@a7medev
Copy link
Member Author

a7medev commented Oct 2, 2025

@swift-ci please test

1 similar comment
@a7medev
Copy link
Member Author

a7medev commented Oct 3, 2025

@swift-ci please test

@a7medev
Copy link
Member Author

a7medev commented Oct 8, 2025

Hello @d-ronnqvist @QuietMisdreavus! Have you got a chance to check the updated changes?

@a7medev
Copy link
Member Author

a7medev commented Oct 25, 2025

@QuietMisdreavus @d-ronnqvist Friendly reminder.

Copy link
Contributor

@QuietMisdreavus QuietMisdreavus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great, thanks for reworking it!

@QuietMisdreavus
Copy link
Contributor

There's a command-line tool that exposes a hook to MarkupFormatter in Tools/markdown-tool, but it looks like it wasn't updated for the doxygenCommandPrefix option either, so i'll go ahead and merge this PR without that. Thanks again!

@QuietMisdreavus QuietMisdreavus merged commit 3bc74b6 into swiftlang:main Oct 29, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants