[formatter] Warn when markdown files are skipped due to preview being disabled#24150
Conversation
…isabled Previously, ruff format would silently produce an error message via the error log when encountering markdown files without preview mode. This made it easy to miss, especially in editor integrations like VS Code where stderr output is not always visible. Now, markdown formatting errors are rendered as proper warning diagnostics using the same diagnostic rendering pipeline as other format diagnostics. This produces a clear, structured warning with the file location, making it immediately obvious to users that markdown formatting requires preview mode.
|
I should have made this clearer in #23859, but the issue is specifically about showing a warning in VS Code. I think the behavior in the CLI is fine. |
|
@MichaReiser Thanks for the clarification. I focused on the CLI diagnostic rendering, but I see the real problem is VS Code advertising Ruff as a markdown formatter when preview is disabled. Should the fix be in the LSP - e.g., not advertising markdown formatting capability when preview is off, or returning a warning via LSP diagnostics when a markdown format request comes in with preview disabled? Or is there a different approach you'd prefer? Happy to pivot the PR accordingly. |
|
I'm not sure what the best solution is. Mainly because we're limited by what VS Code/LSP support. Figuring out the correct solution requires doing some research on what our options are. |
|
I looked into what VS Code supports for this. The VS Code extension unconditionally registers itself as a markdown formatter via the documentSelector in utilities.ts. In the LSP, format_internal() in format.rs returns Ok(None) when preview is disabled for markdown. VS Code interprets this as "no changes needed" rather than an error. I have listed some options below based on what I see:
I think option 1 would be best. It keeps the formatting response contract intact while giving clearly giving the user the specific instructions. |
|
Using |
…preview mode When the LSP receives a document formatting request for a markdown file and preview mode is disabled, send a notification to the editor before returning Ok(None). This gives VS Code users an actionable message instead of silent no-op behavior. The CLI diagnostic changes from the previous commit are retained for command-line users.
|
I've implemented the window/showMessage approach. When the LSP receives a formatting request for a markdown file with preview disabled, it now sends a warning notification to the editor before returning Ok(None). The message reads: "Markdown formatting requires preview mode. Enable preview = true in your Ruff configuration." The CLI diagnostic changes from the previous commit are retained for command-line users. |
MichaReiser
left a comment
There was a problem hiding this comment.
Thank you.
Would you mind updating your PR summary with a video showing:
- The warning is shown when formatting a file and preview mode is disabled
- The file gets correctly formatted when
format.previewis on.
Reverts the format.rs changes per review feedback. The CLI already shows MarkdownExperimental errors via the existing error!() loop. The LSP side shows a proper warning via client.show_message().
|
@MichaReiser I have now added a video to the PR summary showing the results of the preview setting on/off. |
Summary
Fixes #23859
Ruff silently skipped markdown files when preview mode was disabled, leaving users confused about why their files weren't being formatted. Now it emits a warning diagnostic to stderr when markdown files are skipped, making the preview requirement explicit.
Changes
MarkdownExperimentalwarnings vs other errorsTest Plan
ruff formaton a markdown file without--preview-> warning diagnostic emittedruff format --previewon a markdown file -> formats normally, no warningTest Video
Screen.Recording.2026-03-25.at.10.19.41.PM.mov
Edit - added Test Video as requested by @MichaReiser.