From 567340e1222d6be354b17ec66bf5f23066d4fa82 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Mon, 16 May 2022 13:32:44 +0200 Subject: Avoid ending Markdown fenced code blocks with gratuitous blank lines This caused unnecessary empty
 blocks when converting markdown to
HTML, made code blocks too large using QSyntaxHighlighter to highlight
the whole block, and caused assymmetry when rewriting markdown.

Also remove redundant qCDebug in QTextMarkdownImporter::cbText().

Fixes: QTBUG-101031
Change-Id: I08016577ccb92edb4afae31d7df3259cb011d5c8
Reviewed-by: Qt CI Bot 
Reviewed-by: Allan Sandfeld Jensen 
(cherry picked from commit ff153d9874f728c9ec3ab40b87f55ccf0239e538)
---
 src/gui/text/qtextmarkdownimporter.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

(limited to 'src/gui/text/qtextmarkdownimporter.cpp')

diff --git a/src/gui/text/qtextmarkdownimporter.cpp b/src/gui/text/qtextmarkdownimporter.cpp
index 0d672658fc..806ecb8eda 100644
--- a/src/gui/text/qtextmarkdownimporter.cpp
+++ b/src/gui/text/qtextmarkdownimporter.cpp
@@ -532,6 +532,14 @@ int QTextMarkdownImporter::cbText(int textType, const char *text, unsigned size)
     case MD_BLOCK_TD:
         m_nonEmptyTableCells.append(m_tableCol);
         break;
+    case MD_BLOCK_CODE:
+        if (s == Newline) {
+            // defer a blank line until we see something else in the code block,
+            // to avoid ending every code block with a gratuitous blank line
+            m_needsInsertBlock = true;
+            s = QString();
+        }
+        break;
     default:
         break;
     }
@@ -569,8 +577,6 @@ int QTextMarkdownImporter::cbText(int textType, const char *text, unsigned size)
                       << "bindent" << bfmt.indent() << "tindent" << bfmt.textIndent()
                       << "margins" << bfmt.leftMargin() << bfmt.topMargin() << bfmt.bottomMargin() << bfmt.rightMargin();
     }
-    qCDebug(lcMD) << textType << "in block" << m_blockType << s << "in list?" << m_cursor->currentList()
-                  << "indent" << m_cursor->blockFormat().indent();
     return 0; // no error
 }
 
-- 
cgit v1.2.3