[okular] [Bug 488497] Markdown not respecting linebreak
bugzilla_noreply at kde.org
bugzilla_noreply at kde.org
Tue Jun 18 03:52:57 BST 2024
https://bugs.kde.org/show_bug.cgi?id=488497
machinedreamcatcher at temp752.ynh.fr changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|REOPENED |NEEDSINFO
Resolution|--- |NOT A BUG
--- Comment #4 from machinedreamcatcher at temp752.ynh.fr ---
> (Joplin, Zotero, Typora as desktop editors, or websites such as popular software forges) are actually following as a base a common spec called CommonMark (sometimes referred-to as "Github-flavoured"). It seems to me relatively widespread, even if not the unique path as you demonstrated.
After further research, the CommonMark spec alone is not enough to cover that
linebreak issue, as show this page: https://markdown-it.github.io ("CommonMark
strict" does not convert newlines in paragraphs as linebreaks, but checking the
extra feature "breaks" would do it). In the section dedicated to soft and hard
breaks, [the specs say](https://spec.commonmark.org/0.31.2/#example-649) that
`a renderer may also provide an option to render soft line breaks as hard line
breaks.`
So the softwares I mentionned earlier may be using CommonMark-based markdown
rendered together with extra-features, in particular for linebreak. But any
CommonMark-based renderer is supposed to allow forcing hard linebreaks by
adding a backslash OR 2 spaces or more at the end of a line.
As for Discount, it also implements a way to force hard linebreak [since
version 2.1.5a](https://www.pell.portland.or.us/~orc/Code/discount/#v2.1.5a)
(and it works at least from Okular 21.12.3): `[support for github flavored
markdown] input methods that put hardbreaks (== two spaces) at the end of every
input line.
The bahavior of linebreaks in Markdown has actually is being [subject to
debate](https://talk.commonmark.org/search?q=line%20break), and personnally I
would rather have the option to consider newline as linebreak, ideally within
the same paragraph.
> I do think that - at some point - it could make sense to switch Okular from libdiscount to Qt's recently-ish gained markdown support (iirc based upon md4c) but don't hold your breath for it. Will happily review patches though.
Thank you for the feedback. [According to
MD4C](https://github.com/mity/md4c?tab=readme-ov-file#links-to-related-projects),
QT do use their implementation.
MD4C has CommonMark and Github-flavour, as well as extra optional features,
potentially the one regarding linebreaks.
QT implements a strict CommonMark rendered as well a Github-flavoured one
(according to the parameters which is set when using the method).
Markdown-related methods seems to be implemented in `QTextDocument` &
`QTextEdit` classes. Are those related to the former what you had in mind ?
https://docs.w3cub.com/qt/qtextdocument#setMarkdown
https://docs.w3cub.com/qt/qtextdocument#toMarkdown
While I have never worked on a C++/QT/KDE project so far, it could be a
starting point... This is not something I could work on with a high priority
either, but I quickly checked the code and I guess I would have to focus on
that folder :
https://invent.kde.org/graphics/okular/-/tree/master/generators/markdown?ref_type=heads
Would you have in mind:
1. Where in the code is libmarkdown (Discount) being called so far ? I could
see mentions of it in what seem the build instructions or as comments in
`/generators/markdown/converter.cpp`, but could not spot an actual call to the
library.
2. Is the Markdown class (in converter.cpp) used to both render view and
generate file ? In that case, the general markdown ouput string would be the
one returned at the following line ?
https://invent.kde.org/graphics/okular/-/blob/master/generators/markdown/converter.cpp?ref_type=heads#L177
Also, should QT/MD4C Markdown renderer be implemented as the new and only
markdown backend, or should it be optional and offered as an alternative
backend to Discount in the [configuration
window](https://docs.kde.org/stable5/en/okular/okular/configure-backends.html)?
Not sure whether this is feasible with QT, but ideally the config panel would
offer optional markdown features included in MD4C.
PS: could this bug report be moved to the Request section?
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the Okular-devel
mailing list