jrblevin / jrblevin/markdown-mode

markdown-fill-paragraph bugs out with blockquotes and lists

Open
#552 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Emacs Lisp
Stars
1.1k
Forks
187
Avg merge
8h 35m
Merged PRs (30d)
3

Description

Consider the following markdown:

> 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas arcu
>    velit, vehicula vitae euismod a, pretium nec mauris. Aliquam fringilla
>    imperdiet finibus. Ut rhoncus diam nec convallis tempus. Lorem ipsum dolor
>    sit amet, consectetur adipiscing elit. Nunc mauris metus, tempor et erat
>    quis, mattis sagittis nibh. Praesent vitae vulputate nunc. Morbi vel ante
>    semper erat convallis eleifend. Aliquam sapien tortor, iaculis ac mi sit
>    amet, lobortis euismod orci. Suspendisse luctus massa ligula, at consequat
>    arcu sodales nec.
> 2. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus purus
>    ipsum, tincidunt convallis lacinia non, tempor ut orci. Nulla
>    facilisi. Duis luctus condimentum elementum. Praesent sit amet ante nec
>    felis pretium pellentesque quis in neque. In sed ullamcorper ex. Phasellus
>    felis nibh, ultrices ut pellentesque vel, vulputate eget augue. Donec
>    vehicula semper diam ut accumsan. Duis in justo placerat, porttitor orci
>    pharetra, luctus ligula. Duis ac ultrices enim.
> 3. Integer volutpat placerat fermentum. Vestibulum in nisl nec nisl lacinia
>    congue eget at neque. Maecenas bibendum eros vehicula, volutpat mi eu,
>    convallis arcu. Aliquam at felis est. Nulla a odio at est blandit
>    dapibus. Pellentesque sollicitudin sem risus, vitae blandit sapien
>    pharetra eu. Donec in mauris id magna tristique laoreet ut at
>    turpis. Donec elementum, est quis egestas dapibus, ante urna auctor est,
>    interdum fermentum ante neque quis odio. Cras quis nisi eleifend,
>    consectetur mauris accumsan, imperdiet ligula. Integer vitae mauris
>    metus. Vivamus sed tortor ultricies, vehicula orci ut, tincidunt
>    enim. Phasellus fringilla metus id ante venenatis, porta tempus nisl
>    rutrum. Morbi auctor bibendum felis eget varius. Phasellus nulla tellus,
>    blandit sit amet faucibus quis, ullamcorper eu arcu.

This is a blockquote with a numbered list inside. If you call markdown-fill-paragraph on the first list item, you'll get this:

View Unexpected Behavior
> 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas arcu
>    velit, vehicula vitae euismod a, pretium nec mauris. Aliquam fringilla
>    imperdiet finibus. Ut rhoncus diam nec convallis tempus. Lorem ipsum dolor
>    sit amet, consectetur adipiscing elit. Nunc mauris metus, tempor et erat
>    quis, mattis sagittis nibh. Praesent vitae vulputate nunc. Morbi vel ante
>    semper erat convallis eleifend. Aliquam sapien tortor, iaculis ac mi sit
>    amet, lobortis euismod orci. Suspendisse luctus massa ligula, at consequat
>    arcu sodales nec.  2. Interdum et malesuada fames ac ante ipsum primis in
>    faucibus. Vivamus purus ipsum, tincidunt convallis lacinia non, tempor ut
>    orci. Nulla facilisi. Duis luctus condimentum elementum. Praesent sit amet
>    ante nec felis pretium pellentesque quis in neque. In sed ullamcorper
>    ex. Phasellus felis nibh, ultrices ut pellentesque vel, vulputate eget
>    augue. Donec vehicula semper diam ut accumsan. Duis in justo placerat,
>    porttitor orci pharetra, luctus ligula. Duis ac ultrices enim.  3. Integer
>    volutpat placerat fermentum. Vestibulum in nisl nec nisl lacinia congue
>    eget at neque. Maecenas bibendum eros vehicula, volutpat mi eu, convallis
>    arcu. Aliquam at felis est. Nulla a odio at est blandit
>    dapibus. Pellentesque sollicitudin sem risus, vitae blandit sapien pharetra
>    eu. Donec in mauris id magna tristique laoreet ut at turpis. Donec
>    elementum, est quis egestas dapibus, ante urna auctor est, interdum
>    fermentum ante neque quis odio. Cras quis nisi eleifend, consectetur mauris
>    accumsan, imperdiet ligula. Integer vitae mauris metus. Vivamus sed tortor
>    ultricies, vehicula orci ut, tincidunt enim. Phasellus fringilla metus id
>    ante venenatis, porta tempus nisl rutrum. Morbi auctor bibendum felis eget
>    varius. Phasellus nulla tellus, blandit sit amet faucibus quis, ullamcorper
>    eu arcu.

... however, remove the blockquote and you'll see the intended behavior:

View expected behavior
1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas arcu velit,
   vehicula vitae euismod a, pretium nec mauris. Aliquam fringilla imperdiet
   finibus. Ut rhoncus diam nec convallis tempus. Lorem ipsum dolor sit amet,
   consectetur adipiscing elit. Nunc mauris metus, tempor et erat quis, mattis
   sagittis nibh. Praesent vitae vulputate nunc. Morbi vel ante semper erat
   convallis eleifend. Aliquam sapien tortor, iaculis ac mi sit amet, lobortis
   euismod orci. Suspendisse luctus massa ligula, at consequat arcu sodales nec.
2. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus purus
   ipsum, tincidunt convallis lacinia non, tempor ut orci. Nulla
   facilisi. Duis luctus condimentum elementum. Praesent sit amet ante nec
   felis pretium pellentesque quis in neque. In sed ullamcorper ex. Phasellus
   felis nibh, ultrices ut pellentesque vel, vulputate eget augue. Donec
   vehicula semper diam ut accumsan. Duis in justo placerat, porttitor orci
   pharetra, luctus ligula. Duis ac ultrices enim.
3. Integer volutpat placerat fermentum. Vestibulum in nisl nec nisl lacinia
   congue eget at neque. Maecenas bibendum eros vehicula, volutpat mi eu,
   convallis arcu. Aliquam at felis est. Nulla a odio at est blandit
   dapibus. Pellentesque sollicitudin sem risus, vitae blandit sapien
   pharetra eu. Donec in mauris id magna tristique laoreet ut at
   turpis. Donec elementum, est quis egestas dapibus, ante urna auctor est,
   interdum fermentum ante neque quis odio. Cras quis nisi eleifend,
   consectetur mauris accumsan, imperdiet ligula. Integer vitae mauris
   metus. Vivamus sed tortor ultricies, vehicula orci ut, tincidunt
   enim. Phasellus fringilla metus id ante venenatis, porta tempus nisl
   rutrum. Morbi auctor bibendum felis eget varius. Phasellus nulla tellus,
   blandit sit amet faucibus quis, ullamcorper eu arcu.

It appears that only the first list element is respected by the parser. The same behavior occurs with unordered lists.

TBH, blockquotes seem to make everything go haywire, which is a shame, because I use them pretty consistently.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the supplied numbered- and unordered-list examples through markdown-fill-paragraph, then trace that entry point's handling of blockquotes and list boundaries. Done means filling an item inside a blockquote preserves each list item's boundary and produces wrapping like the expected output.

Written by the indexing model from the issue text.

Assessment

Tech stack
emacs-lisp
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.