@@ -292,9 +292,11 @@ tableCell = try $ do
292292 attrs <- option [] $ try $ parseAttrs <* skipSpaces <* char '|' <*
293293 notFollowedBy (char '|')
294294 skipMany spaceChar
295+ pos' <- getPosition
295296 ls <- concat <$> many (notFollowedBy (cellsep <|> rowsep <|> tableEnd) *>
296297 ((snd <$> withRaw table) <|> count 1 anyChar))
297− bs <- parseFromString (mconcat <$> many block) ls
298+ bs <- parseFromString (do setPosition pos'
299+ mconcat <$> many block) ls
298300 let align = case lookup "align" attrs of
299301 Just "left" -> AlignLeft
300302 Just "right" -> AlignRight
@@ -428,8 +430,13 @@ defListItem = try $ do
428430 return (terms, defs)
429431
430432defListTerm :: PandocMonad m => MWParser m Inlines
431−defListTerm = char ';' >> skipMany spaceChar >> anyLine >>=
432− parseFromString (trimInlines . mconcat <$> many inline)
433+defListTerm = do
434+ guardColumnOne
435+ char ';'
436+ skipMany spaceChar
437+ pos' <- getPosition
438+ anyLine >>= parseFromString (do setPosition pos'
439+ trimInlines . mconcat <$> many inline)
433440
434441listStart :: PandocMonad m => Char -> MWParser m ()
435442listStart c = char c *> notFollowedBy listStartChar
@@ -438,10 +445,7 @@ listStartChar :: PandocMonad m => MWParser m Char
438445listStartChar = oneOf "*#;:"
439446
440447anyListStart :: PandocMonad m => MWParser m Char
441−anyListStart = char '*'
442− <|> char '#'
443− <|> char ':'
444− <|> char ';'
448+anyListStart = guardColumnOne >> oneOf "*#:;"
445449
446450li :: PandocMonad m => MWParser m Blocks
447451li = lookAhead (htmlTag (~== TagOpen "li" [])) *>
@@ -449,16 +453,19 @@ li = lookAhead (htmlTag (~== TagOpen "li" [])) *>
449453
450454listItem :: PandocMonad m => Char -> MWParser m Blocks
451455listItem c = try $ do
456+ guardColumnOne
452457 extras <- many (try $ char c <* lookAhead listStartChar)
453458 if null extras
454459 then listItem' c
455460 else do
456461 skipMany spaceChar
462+ pos' <- getPosition
457463 first <- concat <$> manyTill listChunk newline
458464 rest <- many
459465 (try $ string extras *> lookAhead listStartChar *>
460466 (concat <$> manyTill listChunk newline))
461− contents <- parseFromString (many1 $ listItem' c)
467+ contents <- parseFromString (do setPosition pos'
468+ many1 $ listItem' c)
462469 (unlines (first : rest))
463470 case c of
464471 '*' -> return $ B.bulletList contents
@@ -480,10 +487,12 @@ listItem' :: PandocMonad m => Char -> MWParser m Blocks
480487listItem' c = try $ do
481488 listStart c
482489 skipMany spaceChar
490+ pos' <- getPosition
483491 first <- concat <$> manyTill listChunk newline
484492 rest <- many (try $ char c *> lookAhead listStartChar *>
485493 (concat <$> manyTill listChunk newline))
486− parseFromString (firstParaToPlain . mconcat <$> many1 block)
494+ parseFromString (do setPosition pos'
495+ firstParaToPlain . mconcat <$> many1 block)
487496 $ unlines $ first : rest
488497
489498firstParaToPlain :: Blocks -> Blocks