@@ -832,8 +832,9 @@ definitionList = fmap B.definitionList . fmap compactify'DL . sequence
832832 <$> many1 (definitionListItem bulletListStart)
833833
834834bulletList :: OrgParser (F Blocks)
835−bulletList = fmap B.bulletList . fmap compactify' . sequence
836− <$> many1 (listItem bulletListStart)
835+bulletList = try $ do n <- lookAhead bulletListStart
836+ fmap B.bulletList . fmap compactify' . sequence
837+ <$> many1 (listItem (bulletListCont n))
837838
838839orderedList :: OrgParser (F Blocks)
839840orderedList = fmap B.orderedList . fmap compactify' . sequence
@@ -850,6 +851,13 @@ bulletListStart :: OrgParser Int
850851bulletListStart = genericListStart bulletListMarker
851852 where bulletListMarker = pure <$> oneOf "*-+"
852853
854+-- parses bullet list marker at a known indent level
855+bulletListCont :: Int -> OrgParser Int
856+bulletListCont n
857+ -- Unindented lists are legal, but they can't use '*' bullets
858+ | n <= 1 = oneOf "+-" >> return n
859+ | otherwise = count (n-1) spaceChar >> oneOf "+-*" >> return n
860+
853861orderedListStart :: OrgParser Int
854862orderedListStart = genericListStart orderedListMarker
855863 -- Ordered list markers allowed in org-mode