@@ -320,6 +320,9 @@ atxClosing = try $ skipMany (char '#') >> blanklines
321setextHeader :: GenParser Char ParserState Block
321setextHeader :: GenParser Char ParserState Block
322setextHeader = try $ do
322setextHeader = try $ do
323+ -- This lookahead prevents us from wasting time parsing Inlines
324+ -- unless necessary -- it gives a significant performance boost.
325+ lookAhead $ anyLine >> many1 (oneOf setextHChars) >> blankline
323 text <- many1Till inline newline
326 text <- many1Till inline newline
324 underlineChar <- oneOf setextHChars
327 underlineChar <- oneOf setextHChars
325 many (char underlineChar)
328 many (char underlineChar)