@@ -631,26 +631,37 @@ orderedListUntil end = try $ do
631631 (items, e) <- orderedListItemsUntil indent style end
632632 return $ (B.orderedListWith p <$> sequence items, e)
633633
634+descriptionsUntil :: PandocMonad m
635+ => Int
636+ -> MuseParser m a
637+ -> MuseParser m ([F Blocks], a)
638+descriptionsUntil indent end = do
639+ void spaceChar <|> lookAhead eol
640+ st <- getState
641+ setState $ st{ museInPara = False }
642+ (x, e) <- listItemContentsUntil indent (Right <$> try (optional blankline >> indentWith indent >> manyTill spaceChar (string "::") >> descriptionsUntil indent end)) (Left <$> end)
643+ case e of
644+ Right (xs, ee) -> return (x:xs, ee)
645+ Left ee -> return ([x], ee)
646+
634647definitionListItemsUntil :: PandocMonad m
635648 => Int
636649 -> MuseParser m a
637650 -> MuseParser m ([F (Inlines, [Blocks])], a)
638651definitionListItemsUntil indent end =
639652 continuation
640− where continuation = try $ do
641− pos <- getPosition
642− term <- trimInlinesF . mconcat <$> manyTill (choice inlineList) (string "::")
643− void spaceChar <|> lookAhead eol
644− st <- getState
645− setState $ st{ museInPara = False }
646− (x, e) <- listItemContentsUntil (sourceColumn pos) ((Right <$> try (optional blankline >> count indent spaceChar >> continuation)) <|> (Left <$> end))
647− let xx = do
648− term' <- term
649− x' <- x
650− (return (term', [x']))::(F (Inlines, [Blocks]))
651− case e of
652− Left ee -> return $ ([xx], ee)
653− Right (xs, ee) -> return $ (xx : xs, ee)
653+ where
654+ continuation = try $ do
655+ pos <- getPosition
656+ term <- trimInlinesF . mconcat <$> manyTill (choice inlineList) (string "::")
657+ (x, e) <- descriptionsUntil (sourceColumn pos) ((Right <$> try (optional blankline >> indentWith indent >> continuation)) <|> (Left <$> end))
658+ let xx = do
659+ term' <- term
660+ x' <- sequence x
661+ return (term', x')
662+ case e of
663+ Left ee -> return ([xx], ee)
664+ Right (xs, ee) -> return (xx:xs, ee)
654665
655666definitionListUntil :: PandocMonad m
656667 => MuseParser m a