Markdown reader: always use four space rule for example lists.
It would be awkward to indent example list contents to the first non-space character after the label, since example list labels are often long. Thanks to Bernhard Fisseni for the suggestion.
This commit is contained in:
parent
68edc9efbf
commit
d9cdce4281
2 changed files with 22 additions and 9 deletions
|
@ -2369,6 +2369,12 @@ document:
|
||||||
The label can be any string of alphanumeric characters, underscores,
|
The label can be any string of alphanumeric characters, underscores,
|
||||||
or hyphens.
|
or hyphens.
|
||||||
|
|
||||||
|
Note: continuation paragraphs in example lists must always
|
||||||
|
be indented four spaces, regardless of the length of the
|
||||||
|
list marker. That is, example lists always behave as if the
|
||||||
|
`four_space_rule` extension is set. This is because example
|
||||||
|
labels tend to be long, and indenting content to the
|
||||||
|
first non-space character after the label would be awkward.
|
||||||
|
|
||||||
### Compact and loose lists ###
|
### Compact and loose lists ###
|
||||||
|
|
||||||
|
|
|
@ -863,14 +863,16 @@ listLineCommon = concat <$> manyTill
|
||||||
|
|
||||||
-- parse raw text for one list item, excluding start marker and continuations
|
-- parse raw text for one list item, excluding start marker and continuations
|
||||||
rawListItem :: PandocMonad m
|
rawListItem :: PandocMonad m
|
||||||
=> MarkdownParser m a
|
=> Bool -- four space rule
|
||||||
|
-> MarkdownParser m a
|
||||||
-> MarkdownParser m (String, Int)
|
-> MarkdownParser m (String, Int)
|
||||||
rawListItem start = try $ do
|
rawListItem fourSpaceRule start = try $ do
|
||||||
pos1 <- getPosition
|
pos1 <- getPosition
|
||||||
start
|
start
|
||||||
pos2 <- getPosition
|
pos2 <- getPosition
|
||||||
continuationIndent <- (4 <$ guardEnabled Ext_four_space_rule)
|
let continuationIndent = if fourSpaceRule
|
||||||
<|> return (sourceColumn pos2 - sourceColumn pos1)
|
then 4
|
||||||
|
else (sourceColumn pos2 - sourceColumn pos1)
|
||||||
first <- listLineCommon
|
first <- listLineCommon
|
||||||
rest <- many (do notFollowedBy listStart
|
rest <- many (do notFollowedBy listStart
|
||||||
notFollowedBy (() <$ codeBlockFenced)
|
notFollowedBy (() <$ codeBlockFenced)
|
||||||
|
@ -914,10 +916,11 @@ notFollowedByHtmlCloser = do
|
||||||
Nothing -> return ()
|
Nothing -> return ()
|
||||||
|
|
||||||
listItem :: PandocMonad m
|
listItem :: PandocMonad m
|
||||||
=> MarkdownParser m a
|
=> Bool -- four-space rule
|
||||||
|
-> MarkdownParser m a
|
||||||
-> MarkdownParser m (F Blocks)
|
-> MarkdownParser m (F Blocks)
|
||||||
listItem start = try $ do
|
listItem fourSpaceRule start = try $ do
|
||||||
(first, continuationIndent) <- rawListItem start
|
(first, continuationIndent) <- rawListItem fourSpaceRule start
|
||||||
continuations <- many (listContinuation continuationIndent)
|
continuations <- many (listContinuation continuationIndent)
|
||||||
-- parsing with ListItemState forces markers at beginning of lines to
|
-- parsing with ListItemState forces markers at beginning of lines to
|
||||||
-- count as list item markers, even if not separated by blank space.
|
-- count as list item markers, even if not separated by blank space.
|
||||||
|
@ -938,14 +941,18 @@ orderedList = try $ do
|
||||||
delim `elem` [DefaultDelim, Period]) $
|
delim `elem` [DefaultDelim, Period]) $
|
||||||
guardEnabled Ext_fancy_lists
|
guardEnabled Ext_fancy_lists
|
||||||
when (style == Example) $ guardEnabled Ext_example_lists
|
when (style == Example) $ guardEnabled Ext_example_lists
|
||||||
items <- fmap sequence $ many1 $ listItem
|
fourSpaceRule <- (True <$ guardEnabled Ext_four_space_rule)
|
||||||
|
<|> return (style == Example)
|
||||||
|
items <- fmap sequence $ many1 $ listItem fourSpaceRule
|
||||||
(orderedListStart (Just (style, delim)))
|
(orderedListStart (Just (style, delim)))
|
||||||
start' <- (start <$ guardEnabled Ext_startnum) <|> return 1
|
start' <- (start <$ guardEnabled Ext_startnum) <|> return 1
|
||||||
return $ B.orderedListWith (start', style, delim) <$> fmap compactify items
|
return $ B.orderedListWith (start', style, delim) <$> fmap compactify items
|
||||||
|
|
||||||
bulletList :: PandocMonad m => MarkdownParser m (F Blocks)
|
bulletList :: PandocMonad m => MarkdownParser m (F Blocks)
|
||||||
bulletList = do
|
bulletList = do
|
||||||
items <- fmap sequence $ many1 $ listItem bulletListStart
|
fourSpaceRule <- (True <$ guardEnabled Ext_four_space_rule)
|
||||||
|
<|> return False
|
||||||
|
items <- fmap sequence $ many1 $ listItem fourSpaceRule bulletListStart
|
||||||
return $ B.bulletList <$> fmap compactify items
|
return $ B.bulletList <$> fmap compactify items
|
||||||
|
|
||||||
-- definition lists
|
-- definition lists
|
||||||
|
|
Loading…
Reference in a new issue