From a07d955d6f96e78ade3e09c150ce580fb6e6f3a7 Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Thu, 16 Sep 2021 20:42:18 -0700
Subject: Fix code blocks using `--preserve-tabs`.

Previously they did not behave as the equivalent input
with spaces would.  Closes #7573.
---
 src/Text/Pandoc/Readers/Markdown.hs | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index 45594e0fa..917eef287 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -1124,7 +1124,13 @@ rawHtmlBlocks = do
   let selfClosing = "/>" `T.isSuffixOf` raw
   -- we don't want '<td>    text' to be a code block:
   skipMany spaceChar
-  indentlevel <- (blankline >> length <$> many (char ' ')) <|> return 0
+  tabStop <- getOption readerTabStop
+  indentlevel <- option 0 $
+                 do blankline
+                    foldr (+) 0 <$>
+                      many ( (1 <$ char ' ')
+                            <|>
+                             (tabStop <$ char '\t') )
   -- try to find closing tag
   -- we set stateInHtmlBlock so that closing tags that can be either block or
   -- inline will not be parsed as inline tags
-- 
cgit v1.2.3