./textproc/rumdl, Markdown Linter

[ Image CVSweb ] [ Image Homepage ] [ Image RSS ] [ Image Required by ] [ Image Add to tracker ]


Branch: CURRENT, Version: 0.1.71, Package name: rumdl-0.1.71, Maintainer: pkgsrc-users

A high-performance Markdown linter, written in Rust.

rumdl is a high-performance Markdown linter and formatter that helps
ensure consistency and best practices in your Markdown files.
Inspired by ruff 's approach to Python linting, rumdl brings similar
speed and developer experience improvements to the Markdown ecosystem.


Master sites:

Filesize: 2320.977 KB

Version history: (Expand)


CVS history: (Expand)


   2026-04-13 18:08:25 by pin | Files touched by this commit (3) | Package updated
Log message:
textproc/rumdl: update to 0.1.71

v0.1.71
Added

    config: support bare rule name in rumdl config get (8369fb1)

Fixed

    config: move test module to end of flavor.rs to satisfy clippy \ 
items_after_test_module (e30714d)
    config: load user config alongside discovered markdownlint project config \ 
(c0f79c1)
    config: display global.flavor as lowercase quoted string in rumdl config \ 
output (b162295)

v0.1.70
Fixed

    MD044: do not flag proper names inside bare-domain link text (56a45df)

v0.1.69
Fixed

    MD055,MD056: emit per-row fixes to preserve inline-disabled rows (099443f)
    MD073: make should_skip case-insensitive to match detect_toc_region (3d5ad7b)
    MD050: use skip-context-aware detection for consistent mode target style \ 
(a82362d)
    MD044: use byte-based Fix range to handle multi-byte content on line (e85e032)
    apply_warning_fixes returns content unchanged when no fixes present (a892a90)
    md013: reflow overlong single-line normalize content (cfa6954)
    MD055: preserve trailing newline in check() Fix replacement for \ 
end-of-document tables (7cebfcb)
   2026-04-09 19:20:14 by pin | Files touched by this commit (3) | Package updated
Log message:
textproc/rumdl: update to 0.1.68

This is an update over 26 releases.
Check upstream changelog, https://github.com/rvben/rumdl/blob/main/CHANGELOG.md
   2026-03-12 18:19:30 by pin | Files touched by this commit (1)
Log message:
textproc/rumdl: correct first version that requires 1.94
   2026-03-10 20:37:51 by pin | Files touched by this commit (1)
Log message:
textproc/rumdl: Add note on MSRV
   2026-03-06 09:17:28 by pin | Files touched by this commit (2) | Package updated
Log message:
textproc/rumdl: update to 0.1.42

## [0.1.42] - 2026-03-05

### Fixed

- **MD013**: Disable code block line length checking for Rust doc comments.
  Code blocks in doc comments contain Rust code formatted by rustfmt
  (default `max_width = 100`), not prose governed by markdown line limits.
  Prose lines are still checked
  ([#486](https://github.com/rvben/rumdl/issues/486), reported by @sorairolake)

## [0.1.41] - 2026-03-05

### Fixed

- **MD013**: Skip PyMdown block content during reflow, preventing false
  semantic-line-breaks diagnostics on `/// details` blocks and their content
  ([#495](https://github.com/rvben/rumdl/issues/495), reported by @tahv)
- **MD013**: Flavor-gate attribute list detection in reflow engine so that
  `{#id .class}` syntax is only treated as atomic in MkDocs/Kramdown flavors,
  preventing incorrect wrapping behavior in standard markdown
  ([#494](https://github.com/rvben/rumdl/issues/494), reported by @sisp)
- **MD013**: Treat MkDocs attribute lists as atomic units during text reflow
  so they are never split across lines
- **MD013**: Check inline config directives across the full line range of a
  warning, fixing cases where `<!-- rumdl-disable -->` inside indented list
  items was ignored
  ([#493](https://github.com/rvben/rumdl/issues/493), reported by @sisp)
- **MD054**: Remove `BrokenLinkCallback` to fix false positives on bracket
  text like `[0]`, `[i]`, and `[key]` that are not actual markdown links
  ([#488](https://github.com/rvben/rumdl/issues/488), reported by @eread)
- **MD050**: Replace regex with pulldown-cmark parser to fix false positives
  on sequences of underscores or asterisks that are not emphasis markers
  ([#489](https://github.com/rvben/rumdl/issues/489), reported by @eread)
- **LSP**: Fix zero-length fix ranges in MD050 LSP code actions and clean up
  dead code
  ([#490](https://github.com/rvben/rumdl/issues/490), reported by @eread)
- **MD044**: Use proper byte range for LSP fix to replace flagged text instead
  of prepending to it
  ([#490](https://github.com/rvben/rumdl/issues/490), reported by @eread)
- **MD054**: Replace regex with pulldown-cmark to fix false positive on
  brackets in code spans
- **MD054**: Fix `should_skip` for autolink-only documents and nested link text
- **MD007**: Skip GFM table rows during Setext heading detection to prevent
  false negatives
- **MD007**: Adjust expected indent for MkDocs ordered list continuation lines

## [0.1.40] - 2026-03-04

### Fixed

- **MkDocs**: Support multi-line code spans inside MkDocs containers
  (admonitions, content tabs, markdown HTML) — pulldown-cmark missed these
  because it treats 4-space-indented container content as indented code blocks.
  Replaced the per-line backtick scanner with a dedent-and-reparse approach
  that handles all CommonMark edge cases including nested containers
  ([#487](https://github.com/rvben/rumdl/issues/487), reported by @stefanvanburen)
- **MD034**: Fix code span filter to use byte offsets instead of single-line
  column checks, preventing false positives for URLs and emails inside
  multi-line code spans
- **MD052**: Fix code span filter to use byte offsets, preventing false
  positives for reference links inside multi-line code spans

## [0.1.39] - 2026-03-04

### Fixed

- **Rustdoc**: Skip MD033, MD040, MD051, and MD054 for doc comment blocks to
  eliminate false positives — HTML warning blocks (`<div \ 
class="warning">`),
  unlabeled code blocks (default to Rust), rustdoc anchors (`#method.bar`),
  and shortcut intra-doc links (`[crate::module]`) are all valid rustdoc syntax
  ([#438](https://github.com/rvben/rumdl/issues/438), reported by @sorairolake)
- **Config**: Fix `include` patterns in `.rumdl.toml` not discovering `.rs`
  files — config-based include now correctly expands the file type filter to
  include Rust files alongside markdown
  ([#438](https://github.com/rvben/rumdl/issues/438), reported by @sorairolake)
   2026-03-04 15:55:53 by pin | Files touched by this commit (3) | Package updated
Log message:
textproc/rumdl: update to 0.1.38

## [0.1.38] - 2026-03-04

### Fixed

- **MD013**: Fixed reflow corrupting code blocks inside MkDocs admonitions
  within list items — closing fences were merged with subsequent paragraph
  text ([#485](https://github.com/rvben/rumdl/issues/485), reported by @sisp)

## [0.1.37] - 2026-03-04

### Fixed

- **MD013**: Resolve false positive for MkDocs 2-space list continuation
  indents when using `semantic-line-breaks` reflow mode. Continuation lines
  at the minimum indent were incorrectly flagged as needing reflow
  ([#484](https://github.com/rvben/rumdl/issues/484))
- **MD013**: Detect actual indent of text content for reflow output instead
  of trimming and re-indenting, which produced incorrect indentation for
  code blocks and nested structures
- **MD013**: Use correct indent threshold for code block detection, fixing
  cases where indented code blocks inside list items were incorrectly
  treated as text for reflow
- **MD028**: Make blank-line scanning functions skip-context-aware (HTML
  comments, frontmatter, code blocks) to prevent false positives on
  blockquote separators
- **MD050**: Resolve check/fix divergence for strong emphasis markers inside
  inline code in table cells
- **MD050**: Add line-level code span detection fallback for inline code
  markers in tables
- **MD051**: Handle escaped backticks correctly in `mask_pipes_in_inline_code`
  for table cell parsing
- **MD051**: Preserve underscores in code spans during GitHub anchor
  generation
- **MD054**: Skip alert/callout syntax (e.g., `[!NOTE]`) in shortcut link
  detection to avoid false positives
- **MD056**: Remove duplicate `split_row_into_cells` function, consolidate
  table cell parsing
- **Rules**: Correct CommonMark compliance and close audit gaps across
  multiple rules

### Changed

- **Dependencies**: Update all dependencies including major bumps:
  `toml` 0.9 → 1.0, `toml_edit` 0.24 → 0.25, `jsonschema` 0.37 → 0.44.
  Remove unused `rand` dev-dependency. ~80 crates updated to latest
  compatible versions
- **CI**: Update ryl-pre-commit to v0.4.0

## [0.1.36] - 2026-03-02

### Added

- **Lint**: Rust doc comment linting — `rumdl check` and `rumdl check --fix`
  now lint markdown inside `///` and `//!` doc comments in `.rs` files.
  Rules that don't apply to doc comments (MD041, MD047) are automatically
  skipped. Column numbers are remapped to the original source positions
  ([#438](https://github.com/rvben/rumdl/issues/438))

### Fixed

- **WASM**: Enable opt-in rules (like MD060) via per-rule `enabled = true`
  and `extend-enable` in WASM/Obsidian plugin configuration
  ([obsidian-rumdl#15](https://github.com/rvben/obsidian-rumdl/issues/15))
- **WASM**: Add `fixable`/`unfixable` config fields so fix scope restrictions
  work in WASM builds
- **WASM**: Set `enable_is_explicit` when `enable` is present, matching CLI
  behavior where `enable = []` means "no rules"
- **WASM**: Use canonical `MarkdownFlavor::from_str()` for flavor parsing so
  all aliases (`qmd`, `rmd`, `gfm`, `commonmark`, etc.) work in WASM

## [0.1.35] - 2026-03-02

### Added

- **LSP**: Hover preview for markdown links — hovering over a link shows a
  preview of the destination file or heading section with up to 15 lines of
  content ([#477](https://github.com/rvben/rumdl/issues/477))

### Fixed

- **MD077**: Flag and fix all continuation lines in multiline loose list
  paragraphs, not just the first line after the blank
  ([#474](https://github.com/rvben/rumdl/issues/474))
  (thanks @jlgrimes in [#475](https://github.com/rvben/rumdl/pull/475))
- **LSP**: Return incoming cross-file references when find-references is
  invoked from a target file with cursor not on a heading or link
  ([#476](https://github.com/rvben/rumdl/issues/476))
  (thanks @jlgrimes in [#478](https://github.com/rvben/rumdl/pull/478))
- **CI**: Only dispatch downstream notifications when publish steps succeed

## [0.1.34] - 2026-03-01

### Added

- **Config**: Support top-level global keys in `rumdl.toml` without requiring a
  `[global]` section header, matching \ 
[ruff.toml](https://docs.astral.sh/ruff/settings/)
  conventions. Keys like `line-length`, `disable`, `exclude`, and `respect-gitignore`
  now work at the top level. If both top-level and `[global]` keys exist, `[global]`
  takes precedence

### Fixed

- **Config**: Resolve rule name aliases in `fixable` config lists (was only resolving
  aliases for `unfixable`). Users can now write `fixable = \ 
["trailing-spaces"]`
  instead of needing `fixable = ["MD009"]`
- **CLI**: Correct include/exclude precedence to match industry standard — \ 
`exclude`
  always wins over `include` in discovery mode, consistent with ruff, eslint, and
  markdownlint-cli
   2026-03-01 10:33:54 by pin | Files touched by this commit (2) | Package updated
Log message:
textproc/rumdl: update to 0.1.33

[0.1.33] - 2026-02-28
Added

    CLI: Add --fixable and --unfixable flags to control which rules are allowed \ 
to auto-fix. --fixable acts as an allowlist (only listed rules can fix), \ 
--unfixable acts as a blocklist (takes precedence). Both accept comma-separated \ 
rule names or aliases (#472)

Fixed

    CLI: Resolve rule name aliases in fixable/unfixable config lists so that \ 
aliases like commands-show-output correctly match canonical names like MD014
    Rules: Detect links and images inside MkDocs admonitions, content tabs, and \ 
markdown HTML blocks
    Docs: Fix incorrect MD014 documentation that claimed the rule cannot be \ 
auto-fixed — it removes $ prompts from commands without output, matching \ 
markdownlint-cli behavior (#473)

Changed

    Docs: Add feature comparison matrix and cold start benchmarks for all 8 \ 
comparison tools

[0.1.32] - 2026-02-27
Fixed

    MD013: Respect MkDocs 4-space list continuation indent during reflow. For \ 
markers shorter than 4 characters (e.g., 1., -), continuation lines are now \ 
indented to 4 spaces in MkDocs flavor, matching Python-Markdown requirements. \ 
This fixes an MD077/MD013 conflict loop where reflow produced invalid MkDocs \ 
markdown (#471)
    LSP: Apply per-file-ignores configuration during LSP linting
    CI: Move mise tool install into retry loops for reliability

Changed

    MD046: Expanded documentation with examples and details for unclosed code \ 
block detection (thanks @eread in #470)

[0.1.31] - 2026-02-27
Fixed

    MD013: Handle MkDocs admonitions inside list items during reflow. Admonition \ 
headers and body content are now preserved and reflowed correctly instead of \ 
being treated as plain paragraph text. Body indent is derived from actual \ 
content lines rather than hardcoded, supporting nested admonitions (#469)

[0.1.30] - 2026-02-26
Added

    CLI: rumdl init now supports --preset flag with default, google, and relaxed \ 
variants, and --output flag for custom file paths. The Google preset follows \ 
Google's developer documentation style guide; the relaxed preset disables noisy \ 
rules and uses consistent style detection (#468)

Fixed

    MD076: Blank lines required by MD031 (blanks-around-fences) or MD058 \ 
(blanks-around-tables) inside list items are now classified as structural and \ 
excluded from the loose/tight consistency calculation. Previously, indented code \ 
blocks inside loose lists triggered false "Missing blank line between list \ 
items" warnings (#461)
    MD020: Fix byte-offset vs character-position handling for column reporting \ 
with Unicode content
    MD038: Fix panic on CJK text by converting character positions to byte \ 
offsets before slicing
    MD054: Correct column indexing for code span detection and match range \ 
calculation
    MD057: Fix image URL byte offset calculation that used character-based \ 
offset as byte offset
    MD060: Use Unicode width for table alignment detection so CJK-heavy tables \ 
are recognized correctly
    MD063: Use sentinel value for unfound word positions to prevent false \ 
canonical form matches at byte offset 0
    MD010: Restore distinction between fenced code blocks (skip) and indented \ 
code blocks (flag tabs) that was lost when switching to LintContext
    MD035: Skip HR-style checking inside MkDocs HTML markdown blocks where --- \ 
separators are used for grid cards
    MD052: Replace manual fenced-code-block tracking with LintContext's \ 
pre-computed in_code_block field
    MD009: Remove dead branch in fix replacement that could never execute
    MD011: Rewrite fix mode to reuse check results instead of maintaining a \ 
parallel implementation
    MD025: Use whole-word matching for section indicators to prevent false \ 
positives (e.g., "Indexing" matching the "index" indicator)
    MD029: Include ) in quick-check early return so parenthesis-style ordered \ 
lists are not silently skipped
    MD040: Use 1-indexed line/column for config error warnings instead of \ 
invalid (0,0)
    MD041: Compute actual fix replacements in check mode instead of emitting \ 
empty-string placeholders that would delete content if applied
    MD050: Delegate HTML tag boundary check to shared method so check and fix \ 
use identical logic
    MD064: Fix leading_spaces calculation in reference link detection to use \ 
original line, not already-trimmed string
    MD072: Track in_string state when counting JSON braces/brackets so braces \ 
inside string values don't break nesting depth calculation
    MD073: Replace regex-based code span stripping with correct parser handling \ 
multi-backtick spans and CommonMark space-stripping rules; rewrite TOC \ 
validation to use count-based duplicate anchor comparison
    MD074: Add content-hash cache invalidation so changed mkdocs.yml files are \ 
re-validated
    Config: Preserve Option fields in schema so nullable keys are not flagged as \ 
unknown (#467)

[0.1.29] - 2026-02-25
Added

    MD077: New list-continuation-indent rule that checks list item continuation \ 
lines use the correct indentation (content-aligned rather than tab-stop-aligned)
    LSP: Go-to-definition and find-references for markdown links, enabling \ 
navigation between link references and their definitions
    LSP: Surface code-block-tools diagnostics in server mode so \ 
language-specific linting errors appear in the editor
    MD044: Honor backtick-delimited code in HTML comments when checking proper names

Fixed

    MD013: Exempt link reference definitions and standalone link/image lines \ 
from reflow line-length checks inside list items. Previously, these exempt lines \ 
were joined with other content, producing incorrect combined lengths (e.g., 160 \ 
instead of the actual line length) (#466)
    MD013: Normalize reflow mode now checks each paragraph independently instead \ 
of joining all content across paragraph boundaries. Exempt paragraphs (link ref \ 
defs, standalone links) are preserved verbatim during reflow output
    LSP: Close 4 navigation gaps in go-to-definition and find-references
    LSP: Count fixable warnings document-wide for source.fixAll and clear config \ 
cache on change
    LSP: Create source.fixAll action for single-issue files
    LSP: Skip external code-block-tools on keystroke events to reduce latency
    LSP: Detect stale global-fallback entries in config cache so newly created \ 
.rumdl.toml files are picked up without restarting the language server
    Docs: Fix multi-paragraph list item indentation (thanks @sisp in #465)

Changed

    LSP: source.fixAll code action now respects MD007 indent configuration
   2026-02-25 12:44:13 by pin | Files touched by this commit (3) | Package updated
Log message:
textproc/rumdl: update to 0.1.28

[0.1.28] - 2026-02-24
Added

    Import: rumdl import now preserves original rule aliases (e.g., no-hard-tabs \ 
instead of MD010) in the generated config file (#460)
    Code Block Tools: Per-language configs now support an enabled field to \ 
disable linting/formatting for specific languages while keeping the \ 
configuration (#458)

Fixed

    MD044: Vale (<!-- vale ... -->) and remark-lint (<!-- lint ... \ 
-->) inline configuration directives are now skipped when checking proper \ 
names (#456)

[0.1.27] - 2026-02-24
Fixed

    MD013: CRLF line endings are now preserved during semantic-line-breaks \ 
reflow, fixing false positive warnings in the LSP when editors send \ 
Windows-style line endings (#459)
    MD041: Fix mode now correctly passes the file path to LintContext, enabling \ 
filename-derived title insertion (InsertDerived). Index and README files now \ 
derive their title from the parent directory name instead of "Index" \ 
or "README"
    MD044: YAML frontmatter values are now checked as prose while keys, \ 
delimiters, comments, and flow constructs are skipped. TOML frontmatter keys are \ 
also correctly skipped (#448)
    MD044: Angle-bracket autolinks (<https://...>) inside HTML comments \ 
are no longer flagged for proper name violations. Uses CommonMark autolink \ 
pattern matching for all valid URI schemes (#457)
    MD076: Blank lines required by MD031 (blanks-around-fences) and MD058 \ 
(blanks-around-tables) inside list items are now recognized as structural rather \ 
than inter-item separators, preventing false positives in tight lists with code \ 
blocks, tables, or HTML blocks (#455)

Changed

    Removed unused itertools dependency

[0.1.26] - 2026-02-23
Added

    MD076: New rule for list item spacing — enforces consistent use of blank \ 
lines between list items
    LSP: Markdown link target completion — autocomplete file paths and \ 
headings when typing link destinations (#434)
    MD041: Extended fix support for HTML block preamble, plain text titles, and \ 
directive-only documents (#398)

Fixed

    MD001: Empty ATX headings (e.g., # with no text) are now preserved during \ 
heading level conversion instead of being deleted, fixing non-idempotent fix \ 
behavior
    MD012: Excess blank lines around headings are now flagged using MD022's \ 
configured limits, preventing conflicts between the two rules (#429, #449)
    MD013: Lines whose only content is a link or image (including in list items, \ 
blockquotes, and with emphasis wrappers) are now exempt from line length checks \ 
in non-strict mode, since they cannot be shortened (#452)
    MD013: URLs with balanced parentheses (e.g., Wikipedia links like \ 
Rust_(programming_language)) are now correctly recognized as standalone links
    MD013: Ordered list task checkboxes (1. [x] [link](url)) are now correctly \ 
detected in standalone link exemption and text reflow
    MD025: Frontmatter title field is now counted as the first H1 when checking \ 
for single title (#450)
    MD044: HTML comments are now checked for proper names by default (previously \ 
skipped due to config default mismatch) (#446)
    MD044: Inline config directives (<!-- rumdl-disable -->, <!-- \ 
markdownlint-enable -->) are no longer flagged when the directive keyword \ 
matches a configured proper name
    MD044: YAML frontmatter keys are no longer flagged as improperly capitalized \ 
proper names (#448)
    MD052: Added missing default_config_section for config validation (#451)
    MD063: Precomposed Unicode characters (e.g., Greek ῷ) are no longer \ 
decomposed during case conversion, fixing non-idempotent fix behavior

Changed

    MD063: Removed dependency on external titlecase crate; title case logic is \ 
now fully handled by the built-in implementation

    MD013: Refactored standalone link detection to reuse shared \ 
extract_list_marker_and_content utility, also fixing ordered list task checkbox \ 
handling in text reflow