aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2021-09-16 20:42:18 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2021-09-16 20:46:05 -0700
commita07d955d6f96e78ade3e09c150ce580fb6e6f3a7 (patch)
tree5f82883787dba70854bacf7566c840086890e2c8
parent7c22c0202e8ed706d33f301e65f0aa1a847b4ec4 (diff)
downloadpandoc-a07d955d6f96e78ade3e09c150ce580fb6e6f3a7.tar.gz
Fix code blocks using `--preserve-tabs`.
Previously they did not behave as the equivalent input with spaces would. Closes #7573.
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs8
-rw-r--r--test/command/7573.md11
2 files changed, 18 insertions, 1 deletions
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
diff --git a/test/command/7573.md b/test/command/7573.md
new file mode 100644
index 000000000..d6529cde6
--- /dev/null
+++ b/test/command/7573.md
@@ -0,0 +1,11 @@
+```
+% pandoc --preserve-tabs
+<ol>
+ <li>one
+</ol>
+^D
+<ol>
+<li>
+one
+</ol>
+```