Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List indenting is too picky? #1990

Closed
alinush opened this issue Mar 4, 2015 · 6 comments
Closed

List indenting is too picky? #1990

alinush opened this issue Mar 4, 2015 · 6 comments

Comments

@alinush
Copy link

alinush commented Mar 4, 2015

Hi, I switched from Markdown to Pandoc 1.13.2 and my lists are not being indented properly anymore.

With Pandoc, this happens:

alinush@xpad [/tmp] $ cat lol.md 
 - Level 1
   + Level 2 (indent me pls!)
alinush@xpad [/tmp] $ pandoc -f markdown -t html lol.md 
<ul>
<li>Level 1</li>
<li>Level 2 (indent me pls!)</li>
</ul>

With Markdown , I would get this, as expected:

alinush@xpad [/tmp] $ cat lol.md 
 - Level 1
   + Level 2 (indent me pls!)
alinush@xpad [/tmp] $ markdown lol.md 
<ul>
<li>Level 1
<ul>
<li>Level 2 (indent me pls!)</li>
</ul></li>
</ul>

If I add another space after the + sign, Pandoc will indent correctly, but that shouldn't be necessary it seems. I'm assuming backwards compatibility is desired.

Any chance you can fix this?

@nkalvi
Copy link

nkalvi commented Mar 4, 2015

http://johnmacfarlane.net/pandoc/README.html#lists

List items may include other lists. In this case the preceding blank line is optional. The nested list must be indented four spaces or one tab:

@timtylin
Copy link
Contributor

timtylin commented Mar 4, 2015

This is one of the distinctive ways that Pandoc differs from most implementations. Obligatory link to Babelmark

For a rationale behind this behavior, see item number 10 in the motivations behind CommonMark. It's worth noting that the original Markdown specs doesn't explicitly give an example of list-inside-lists but seem to imply a 4-space rule.

@jgm
Copy link
Owner

jgm commented Mar 4, 2015

+++ Tim T.Y. Lin [Mar 04 15 13:23 ]:

This is one of the distinctive ways that Pandoc differs from most implementations. Obligatory link to Babelmark

For a rationale behind this behavior, see item number 10 in the motivations behind CommonMark. It's worth noting that the original Markdown specs doesn't explicitly give an example of list-inside-lists but seem to imply a 4-space rule.

Note also that CommonMark does not use the 4-space rule, and uses a
different rule that would make your list work.

Anyway, bottom line is, if you want your lists to be maximally portable
across Markdown implementations, use the 4-space rule.

@alinush
Copy link
Author

alinush commented Mar 5, 2015

I see! Thank you all for the help!

My 2 cents: It's hard for the user to visually inspect that he has 4*k spaces in a k-level sublist. Thus, if it doesn't make parsing harder, it would be more user-friendly to have this limitation removed.

@jgm
Copy link
Owner

jgm commented Mar 5, 2015

+++ Alin Tomescu [Mar 05 15 12:28 ]:

I see! Thank you all for the help!

My 2 cents: It's hard for the user to visually inspect that he has 4*k
spaces in a k-level sublist. Thus, if it doesn't make parsing harder,
it would be more user-friendly to have this limitation removed.

If it changes, it will change in the direction of CommonMark.

But I think this issue can be closed.

@bpj
Copy link

bpj commented Mar 6, 2015

It is not so hard to see if you use a fixed-width font, which you need
anyway for tables, and set your editor's tab width to four columns.
Aditionally a good editor can show you what column you are on in its status
bar or equivalent thereof.
Den 5 mar 2015 21:28 skrev "Alin Tomescu" notifications@github.com:

I see! Thank you all for the help!

My 2 cents: It's hard for the user to visually inspect that he has 4*k
spaces in a k-level sublist. Thus, if it doesn't make parsing harder, it
would be more user-friendly to have this limitation removed.


Reply to this email directly or view it on GitHub
#1990 (comment).

@jgm jgm closed this as completed Mar 7, 2015
jgm added a commit that referenced this issue Aug 19, 2017
Closes #3511.

Previously pandoc used the four-space rule: continuation paragraphs,
sublists, and other block level content had to be indented 4
spaces.  Now the indentation required is determined by the
first line of the list item:  to be included in the list item,
blocks must be indented to the level of the first non-space
content after the list marker. Exception: if are 5 or more spaces
after the list marker, then the content is interpreted as an
indented code block, and continuation paragraphs must be indented
two spaces beyond the end of the list marker.  See the CommonMark
spec for more details and examples.

Documents that adhere to the four-space rule should, in most cases,
be parsed the same way by the new rules.  Here are some examples
of texts that will be parsed differently:

    - a
      - b

will be parsed as a list item with a sublist; under the four-space
rule, it would be a list with two items.

    - a

          code

Here we have an indented code block under the list item, even though it
is only indented six spaces from the margin, because it is four spaces
past the point where a continuation paragraph could begin.  With the
four-space rule, this would be a regular paragraph rather than a code
block.

    - a

            code

Here the code block will start with two spaces, whereas under
the four-space rule, it would start with `code`.  With the four-space
rule, indented code under a list item always must be indented eight
spaces from the margin, while the new rules require only that it
be indented four spaces from the beginning of the first non-space
text after the list marker (here, `a`).

This change was motivated by a slew of bug reports from people
who expected lists to work differently (#3125, #2367, #2575, #2210,
 #1990, #1137, #744, #172, #137, #128) and by the growing prevalance
of CommonMark (now used by GitHub, for example).

Users who want to use the old rules can select the `four_space_rule`
extension.

* Added `four_space_rule` extension.
* Added `Ext_four_space_rule` to `Extensions`.
* `Parsing` now exports `gobbleAtMostSpaces`, and the type
  of `gobbleSpaces` has been changed so that a `ReaderOptions`
  parameter is not needed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants