@@ -456,27 +456,26 @@ definitionListItem = try $ do
456 notFollowedBy blankline
456 notFollowedBy blankline
457 notFollowedBy' indentSpaces
457 notFollowedBy' indentSpaces
458 term <- manyTill inline newline
458 term <- manyTill inline newline
459− char ':'
459+ raw <- many1 defRawBlock
460 state <- getState
460 state <- getState
461− let tabStop = stateTabStop state
462− try (count (tabStop - 1) (char ' ')) <|> (do{many (char ' '); string "\t"})
463− firstline <- anyLine
464− blanksAfterFirst <- option "" blanklines
465− raw <- many defRawBlock
466 let oldContext = stateParserContext state
461 let oldContext = stateParserContext state
467− setState $ state {stateParserContext = ListItemState}
468 -- parse the extracted block, which may contain various block elements:
462 -- parse the extracted block, which may contain various block elements:
469 rest <- getInput
463 rest <- getInput
470− setInput (concat (firstline:"\n":blanksAfterFirst:raw))
464+ setInput (concat raw)
471 contents <- parseBlocks
465 contents <- parseBlocks
472 setInput rest
466 setInput rest
473 updateState (\st -> st {stateParserContext = oldContext})
467 updateState (\st -> st {stateParserContext = oldContext})
474 return ((normalizeSpaces term), contents)
468 return ((normalizeSpaces term), contents)
476defRawBlock = try $ do
470defRawBlock = try $ do
473+ let tabStop = stateTabStop state
474+ try (count (tabStop - 1) (char ' ')) <|> (do{many (char ' '); string "\t"})
475+ firstline <- anyLine
477− rawlines <- many1 (do {notFollowedBy' blankline; indentSpaces; anyLine})
476+ rawlines <- many (do {notFollowedBy' blankline; indentSpaces; anyLine})
478 trailing <- option "" blanklines
477 trailing <- option "" blanklines
479− return $ (unlines rawlines) ++ trailing
478+ return $ firstline ++ "\n" ++ unlines rawlines ++ trailing
481definitionList = do
480definitionList = do
482 failIfStrict
481 failIfStrict