prettier / prettier/prettier

Markdown: double underscores inside emphasis can truncate the span

Open
#20,046 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
52.3k
Forks
5k
Avg merge
19h 2m
Merged PRs (30d)
117

Description

Prettier 3.9.6

Playground link

--parser markdown

Input:

*a__b__c*

Output:

_a__b_\_c_

Expected output:

*a__b__c*

Why?

The entire identifier should remain emphasized; equivalent delimiter choices are fine. CommonMark 0.31.2 renders the input as <em>a__b__c</em>, but the output as <em>a__b</em>_c_. The emphasized key__x__value sentence also fails; the corresponding key__xy__value control preserves meaning.

Also reproduced on development commit 891accaaab6dab0fbb5eba6748fbb1f5ac4809b5. Related #3834 concerns word-leading underscores inside strong text; this example uses intraword underscores inside emphasis and introduces an escape despite a correct input AST.

GPT-6 Astra assisted; I manually reviewed this report.

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

Reproduce the report with the supplied markdown input and the Markdown parser, then trace the emphasis delimiter handling that turns *a__b__c* into a truncated span with an escape. Done means the formatter preserves the input's meaning and produces the expected equivalent output, with regression coverage for this case and the mentioned key__x__value example.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, markdown
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.