Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Dash-separated long list items rendered as sublist

Abierto
#347 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 3 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
c, markdown
Área
tooling

Línea de trabajo

Empieza reproduciendo el problema con cmark 0.29.0 usando --to commonmark --width 80 y, después, vuelve a pasar la salida por cmark como se muestra en el informe. Traza cómo se trata el guion después de un enlace al ajustar el texto de los elementos de lista y verifica que el recorrido de ida y vuelta mantenga la descripción en el mismo elemento de lista en lugar de crear una sublista.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Here is a Markdown file with a list of very long items:

❯ cat ./dash-separated-link-list.md
- [Link 1](#link-1) - Description of line 1.
- [Link 2](#link-2) - A very long description for the second link in the list. That description is more than 80 characters wide.
- [This is a very long title, pointing to an awesome article on incredible stuff we're not used to see everyday](#link-3) - Line #3's description.
- [Link number three](#this-is-a-very-long-url-that-is-pointing-to-a-really-really-great-website) - Fourth description.

It cleanly renders into a list of 4 items:

❯ /System/Volumes/Data/usr/local/opt/cmark/bin/cmark ./dash-separated-link-list.md
<ul>
<li><a href="#link-1">Link 1</a> - Description of line 1.</li>
<li><a href="#link-2">Link 2</a> - A very long description for the second link in the list. That description is more than 80 characters wide.</li>
<li><a href="#link-3">This is a very long title, pointing to an awesome article on incredible stuff we're not used to see everyday</a> - Line #3's description.</li>
<li><a href="#this-is-a-very-long-url-that-is-pointing-to-a-really-really-great-website">Link number three</a> - Fourth description.</li>
</ul>

Now if I try to tidy up the original markdown into a 80-chars wide format, I get the following:

❯ /System/Volumes/Data/usr/local/opt/cmark/bin/cmark --to commonmark --width 80 ./dash-separated-link-list.md
  - [Link 1](#link-1) - Description of line 1.
  - [Link 2](#link-2) - A very long description for the second link in the list.
    That description is more than 80 characters wide.
  - [This is a very long title, pointing to an awesome article on incredible
    stuff we're not used to see everyday](#link-3) - Line \#3's description.
  - [Link number
    three](#this-is-a-very-long-url-that-is-pointing-to-a-really-really-great-website)
    - Fourth description.

Which renders into a list with an additional sub-list item:

❯ /System/Volumes/Data/usr/local/opt/cmark/bin/cmark --to commonmark --width 80 ./dash-separated-link-list.md | /System/Volumes/Data/usr/local/opt/cmark/bin/cmark
<ul>
<li><a href="#link-1">Link 1</a> - Description of line 1.</li>
<li><a href="#link-2">Link 2</a> - A very long description for the second link in the list.
That description is more than 80 characters wide.</li>
<li><a href="#link-3">This is a very long title, pointing to an awesome article on incredible
stuff we're not used to see everyday</a> - Line #3's description.</li>
<li><a href="#this-is-a-very-long-url-that-is-pointing-to-a-really-really-great-website">Link number
three</a>
<ul>
<li>Fourth description.</li>
</ul>
</li>
</ul>

This is due to an edge-case that is splitting an item content just before the dash located right after the link.


This bug has been reported first to the pandoc project at: https://github.com/jgm/pandoc/issues/6497 . An interesting thing here is that the previous implementation was supporting this edge case while the new one based on cmark does not.


For reference, here the version of cmark I'm using, installed with brew on macOS Catalina:

❯ brew install cmark
(...)
==> Downloading https://homebrew.bintray.com/bottles/cmark-0.29.0_1.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/3a/3af95418f96f4b0cec4bd76abaab312f3caf4cea591f38d3b725f15068d06491?__gda__=exp=1593691219~hmac=7f6c15036b995f36438e934f5bd44ec8
######################################################################## 100.0%
==> Pouring cmark-0.29.0_1.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/cmark/0.29.0_1: 17 files, 724.9KB
❯ /System/Volumes/Data/usr/local/opt/cmark/bin/cmark --version
cmark 0.29.0 - CommonMark converter
(C) 2014-2016 John MacFarlane

This bug can also be reproduced with the cmark-gfm formulae provided by brew:

❯ /System/Volumes/Data/usr/local/opt/cmark-gfm/bin/cmark-gfm --version
cmark-gfm 0.29.0.gfm.0 - CommonMark with GitHub Flavored Markdown converter
(C) 2014-2016 John MacFarlane
❯ /System/Volumes/Data/usr/local/opt/cmark-gfm/bin/cmark-gfm --to commonmark --width 80 ./dash-separated-link-list.md | /System/Volumes/Data/usr/local/opt/cmark-gfm/bin/cmark-gfm
<ul>
<li><a href="#link-1">Link 1</a> - Description of line 1.</li>
<li><a href="#link-2">Link 2</a> - A very long description for the second link in the list.
That description is more than 80 characters wide.</li>
<li><a href="#link-3">This is a very long title, pointing to an awesome article on incredible
stuff we're not used to see everyday</a> - Line #3's description.</li>
<li><a href="#this-is-a-very-long-url-that-is-pointing-to-a-really-really-great-website">Link number
three</a>
<ul>
<li>Fourth description.</li>
</ul>
</li>
</ul>
Lenguaje dominante
C
Estrellas
2k
Forks
702
Merge medio
2 d 17 h
PR fusionados (30 d)
7

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de commonmark/cmark

Todos los issues de commonmark/cmark

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.