@@ -554,7 +554,6 @@ listStart = bulletListStart <|> (anyOrderedListStart >> return ())
554554-- parse a line of a list item (start = parser for beginning of list item)
555555listLine :: GenParser Char ParserState [Char]
556556listLine = try $ do
557− notFollowedBy' listStart
558557 notFollowedBy blankline
559558 notFollowedBy' (do indentSpaces
560559 many (spaceChar)
@@ -563,12 +562,14 @@ listLine = try $ do
563562 return $ concat chunks ++ "\n"
564563
565564-- parse raw text for one list item, excluding start marker and continuations
566−rawListItem :: GenParser Char ParserState a -> GenParser Char ParserState [Char]
565+rawListItem :: GenParser Char ParserState a
566+ -> GenParser Char ParserState [Char]
567567rawListItem start = try $ do
568568 start
569− result <- many1 listLine
569+ first <- listLine
570+ rest <- many (notFollowedBy listStart >> listLine)
570571 blanks <- many blankline
571− return $ concat result ++ blanks
572+ return $ concat (first:rest) ++ blanks
572573
573574-- continuation of a list item - indented and separated by blankline
574575-- or (in compact lists) endline.
@@ -588,8 +589,9 @@ listContinuationLine = try $ do
588589 result <- manyTill anyChar newline
589590 return $ result ++ "\n"
590591
591−listItem :: GenParser Char ParserState a -> GenParser Char ParserState [Block]
592−listItem start = try $ do
592+listItem :: GenParser Char ParserState a
593+ -> GenParser Char ParserState [Block]
594+listItem start = try $ do
593595 first <- rawListItem start
594596 continuations <- many listContinuation
595597 -- parsing with ListItemState forces markers at beginning of lines to