@@ -556,9 +556,9 @@ listLine = try $ do
556556 return $ concat chunks ++ "\n"
557557
558558-- parse raw text for one list item, excluding start marker and continuations
559−rawListItem :: GenParser Char ParserState [Char]
560−rawListItem = try $ do
561− listStart
559+rawListItem :: GenParser Char ParserState a -> GenParser Char ParserState [Char]
560+rawListItem start = try $ do
561+ start
562562 result <- many1 listLine
563563 blanks <- many blankline
564564 return $ concat result ++ blanks
@@ -581,9 +581,9 @@ listContinuationLine = try $ do
581581 result <- manyTill anyChar newline
582582 return $ result ++ "\n"
583583
584−listItem :: GenParser Char ParserState [Block]
585−listItem = try $ do
586− first <- rawListItem
584+listItem :: GenParser Char ParserState a -> GenParser Char ParserState [Block]
585+listItem start = try $ do
586+ first <- rawListItem start
587587 continuations <- many listContinuation
588588 -- parsing with ListItemState forces markers at beginning of lines to
589589 -- count as list item markers, even if not separated by blank space.
@@ -600,13 +600,15 @@ listItem = try $ do
600600orderedList :: GenParser Char ParserState Block
601601orderedList = try $ do
602602 (start, style, delim) <- lookAhead anyOrderedListStart
603− items <- many1 listItem
603+ items <- many1 $ listItem $ try $
604+ do optional newline -- if preceded by a Plain block in a list context
605+ skipNonindentSpaces
606+ orderedListMarker style delim
604607 return $ OrderedList (start, style, delim) $ compactify items
605608
606609bulletList :: GenParser Char ParserState Block
607−bulletList = try $ do
608− lookAhead bulletListStart
609− many1 listItem >>= return . BulletList . compactify
610+bulletList =
611+ many1 (listItem bulletListStart) >>= return . BulletList . compactify
610612
611613-- definition lists
612614