@@ -623,8 +623,9 @@ indentedLine = indentSpaces >> anyLineNewline
623623blockDelimiter :: PandocMonad m
624624 => (Char -> Bool)
625625 -> Maybe Int
626− -> ParserT [Char] st m Int
626+ -> ParserT [Char] ParserState m Int
627627blockDelimiter f len = try $ do
628+ skipNonindentSpaces
628629 c <- lookAhead (satisfy f)
629630 case len of
630631 Just l -> count l (char c) >> many (char c) >> return l
@@ -689,6 +690,8 @@ rawAttribute = do
689690
690691codeBlockFenced :: PandocMonad m => MarkdownParser m (F Blocks)
691692codeBlockFenced = try $ do
693+ indentchars <- nonindentSpaces
694+ let indentLevel = length indentchars
692695 c <- try (guardEnabled Ext_fenced_code_blocks >> lookAhead (char '~'))
693696 <|> (guardEnabled Ext_backtick_code_blocks >> lookAhead (char '`'))
694697 size <- blockDelimiter (== c) Nothing
@@ -701,7 +704,8 @@ codeBlockFenced = try $ do
701704 <|> ((\x -> ("",[toLanguageId x],[])) <$> many1 nonspaceChar)))
702705 blankline
703706 contents <- intercalate "\n" <$>
704− manyTill anyLine (blockDelimiter (== c) (Just size))
707+ manyTill (gobbleAtMostSpaces indentLevel >> anyLine)
708+ (blockDelimiter (== c) (Just size))
705709 blanklines
706710 return $ return $
707711 case rawattr of