rumdl 0.0.123__tar.gz → 0.0.125__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rumdl might be problematic. Click here for more details.

Files changed (406) hide show
  1. {rumdl-0.0.123 → rumdl-0.0.125}/CHANGELOG.md +70 -9
  2. {rumdl-0.0.123 → rumdl-0.0.125}/Cargo.lock +19 -19
  3. {rumdl-0.0.123 → rumdl-0.0.125}/Cargo.toml +1 -1
  4. {rumdl-0.0.123 → rumdl-0.0.125}/Makefile +4 -4
  5. {rumdl-0.0.123 → rumdl-0.0.125}/PKG-INFO +101 -11
  6. {rumdl-0.0.123 → rumdl-0.0.125}/README.md +100 -10
  7. {rumdl-0.0.123 → rumdl-0.0.125}/scripts/pre-release.sh +21 -1
  8. {rumdl-0.0.123 → rumdl-0.0.125}/src/config.rs +95 -35
  9. {rumdl-0.0.123 → rumdl-0.0.125}/src/lint_context.rs +1 -1
  10. {rumdl-0.0.123 → rumdl-0.0.125}/src/main.rs +205 -24
  11. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md009_trailing_spaces.rs +10 -1
  12. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md029_ordered_list_prefix.rs +49 -130
  13. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md052_reference_links_images.rs +78 -0
  14. {rumdl-0.0.123 → rumdl-0.0.125}/tests/cli_integration_tests.rs +304 -0
  15. {rumdl-0.0.123 → rumdl-0.0.125}/tests/config_file_command_test.rs +28 -9
  16. rumdl-0.0.125/tests/config_upward_traversal_test.rs +207 -0
  17. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md009_test.rs +2 -1
  18. rumdl-0.0.125/tests/rules/md029_fix_test.rs +170 -0
  19. rumdl-0.0.125/tests/rules/md029_markdownlint_parity_test.rs +229 -0
  20. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md029_test.rs +18 -16
  21. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/mod.rs +2 -0
  22. {rumdl-0.0.123 → rumdl-0.0.125}/.config/nextest.toml +0 -0
  23. {rumdl-0.0.123 → rumdl-0.0.125}/.mise.toml +0 -0
  24. {rumdl-0.0.123 → rumdl-0.0.125}/.pre-commit-config.yaml +0 -0
  25. {rumdl-0.0.123 → rumdl-0.0.125}/.rumdl.toml +0 -0
  26. {rumdl-0.0.123 → rumdl-0.0.125}/.rustfmt.toml +0 -0
  27. {rumdl-0.0.123 → rumdl-0.0.125}/LICENSE +0 -0
  28. {rumdl-0.0.123 → rumdl-0.0.125}/MANIFEST.in +0 -0
  29. {rumdl-0.0.123 → rumdl-0.0.125}/assets/logo.png +0 -0
  30. {rumdl-0.0.123 → rumdl-0.0.125}/benches/fix_performance.rs +0 -0
  31. {rumdl-0.0.123 → rumdl-0.0.125}/benches/range_performance.rs +0 -0
  32. {rumdl-0.0.123 → rumdl-0.0.125}/benches/range_utils_benchmark.rs +0 -0
  33. {rumdl-0.0.123 → rumdl-0.0.125}/benches/rule_performance.rs +0 -0
  34. {rumdl-0.0.123 → rumdl-0.0.125}/benches/simple_fix_bench.rs +0 -0
  35. {rumdl-0.0.123 → rumdl-0.0.125}/benchmark/bin/bench_lint_context.rs +0 -0
  36. {rumdl-0.0.123 → rumdl-0.0.125}/benchmark/bin/benchmark.rs +0 -0
  37. {rumdl-0.0.123 → rumdl-0.0.125}/benchmark/bin/benchmark_rule.rs +0 -0
  38. {rumdl-0.0.123 → rumdl-0.0.125}/benchmark/bin/file_parallel_benchmark.rs +0 -0
  39. {rumdl-0.0.123 → rumdl-0.0.125}/benchmark/bin/measure_code_span_performance.rs +0 -0
  40. {rumdl-0.0.123 → rumdl-0.0.125}/docs/RULES.md +0 -0
  41. {rumdl-0.0.123 → rumdl-0.0.125}/docs/global-settings.md +0 -0
  42. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md001.md +0 -0
  43. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md002.md +0 -0
  44. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md003.md +0 -0
  45. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md004.md +0 -0
  46. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md005.md +0 -0
  47. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md006.md +0 -0
  48. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md007.md +0 -0
  49. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md009.md +0 -0
  50. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md010.md +0 -0
  51. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md011.md +0 -0
  52. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md012.md +0 -0
  53. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md013.md +0 -0
  54. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md014.md +0 -0
  55. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md018.md +0 -0
  56. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md019.md +0 -0
  57. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md020.md +0 -0
  58. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md021.md +0 -0
  59. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md022.md +0 -0
  60. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md023.md +0 -0
  61. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md024.md +0 -0
  62. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md025.md +0 -0
  63. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md026.md +0 -0
  64. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md027.md +0 -0
  65. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md028.md +0 -0
  66. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md029.md +0 -0
  67. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md030.md +0 -0
  68. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md031.md +0 -0
  69. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md032.md +0 -0
  70. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md033.md +0 -0
  71. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md034.md +0 -0
  72. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md035.md +0 -0
  73. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md036.md +0 -0
  74. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md037.md +0 -0
  75. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md038.md +0 -0
  76. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md039.md +0 -0
  77. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md040.md +0 -0
  78. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md041.md +0 -0
  79. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md042.md +0 -0
  80. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md043.md +0 -0
  81. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md044.md +0 -0
  82. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md045.md +0 -0
  83. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md046.md +0 -0
  84. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md047.md +0 -0
  85. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md048.md +0 -0
  86. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md049.md +0 -0
  87. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md050.md +0 -0
  88. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md051.md +0 -0
  89. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md052.md +0 -0
  90. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md053.md +0 -0
  91. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md054.md +0 -0
  92. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md055.md +0 -0
  93. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md056.md +0 -0
  94. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md057.md +0 -0
  95. {rumdl-0.0.123 → rumdl-0.0.125}/docs/md058.md +0 -0
  96. {rumdl-0.0.123 → rumdl-0.0.125}/docs/vscode-extension.md +0 -0
  97. {rumdl-0.0.123 → rumdl-0.0.125}/parity_check.py +0 -0
  98. {rumdl-0.0.123 → rumdl-0.0.125}/pyproject.toml +0 -0
  99. {rumdl-0.0.123 → rumdl-0.0.125}/python/MANIFEST.in +0 -0
  100. {rumdl-0.0.123 → rumdl-0.0.125}/python/PYTHON-README.md +0 -0
  101. {rumdl-0.0.123 → rumdl-0.0.125}/python/rumdl/__init__.py +0 -0
  102. {rumdl-0.0.123 → rumdl-0.0.125}/python/rumdl/__main__.py +0 -0
  103. {rumdl-0.0.123 → rumdl-0.0.125}/python/rumdl/py.typed +0 -0
  104. {rumdl-0.0.123 → rumdl-0.0.125}/rumdl.toml.example +0 -0
  105. {rumdl-0.0.123 → rumdl-0.0.125}/rust-toolchain.toml +0 -0
  106. {rumdl-0.0.123 → rumdl-0.0.125}/scripts/extract-changelog.sh +0 -0
  107. {rumdl-0.0.123 → rumdl-0.0.125}/scripts/generate-downloads-table.sh +0 -0
  108. {rumdl-0.0.123 → rumdl-0.0.125}/scripts/prepare-release.sh +0 -0
  109. {rumdl-0.0.123 → rumdl-0.0.125}/scripts/setup-pre-commit.sh +0 -0
  110. {rumdl-0.0.123 → rumdl-0.0.125}/scripts/update-pre-commit-docs.sh +0 -0
  111. {rumdl-0.0.123 → rumdl-0.0.125}/src/exit_codes.rs +0 -0
  112. {rumdl-0.0.123 → rumdl-0.0.125}/src/inline_config.rs +0 -0
  113. {rumdl-0.0.123 → rumdl-0.0.125}/src/lib.rs +0 -0
  114. {rumdl-0.0.123 → rumdl-0.0.125}/src/lsp/mod.rs +0 -0
  115. {rumdl-0.0.123 → rumdl-0.0.125}/src/lsp/server.rs +0 -0
  116. {rumdl-0.0.123 → rumdl-0.0.125}/src/lsp/types.rs +0 -0
  117. {rumdl-0.0.123 → rumdl-0.0.125}/src/markdownlint_config.rs +0 -0
  118. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/azure.rs +0 -0
  119. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/concise.rs +0 -0
  120. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/github.rs +0 -0
  121. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/gitlab.rs +0 -0
  122. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/grouped.rs +0 -0
  123. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/json.rs +0 -0
  124. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/json_lines.rs +0 -0
  125. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/junit.rs +0 -0
  126. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/mod.rs +0 -0
  127. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/pylint.rs +0 -0
  128. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/sarif.rs +0 -0
  129. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/formatters/text.rs +0 -0
  130. {rumdl-0.0.123 → rumdl-0.0.125}/src/output/mod.rs +0 -0
  131. {rumdl-0.0.123 → rumdl-0.0.125}/src/parallel.rs +0 -0
  132. {rumdl-0.0.123 → rumdl-0.0.125}/src/performance.rs +0 -0
  133. {rumdl-0.0.123 → rumdl-0.0.125}/src/profiling.rs +0 -0
  134. {rumdl-0.0.123 → rumdl-0.0.125}/src/python.rs +0 -0
  135. {rumdl-0.0.123 → rumdl-0.0.125}/src/rule.rs +0 -0
  136. {rumdl-0.0.123 → rumdl-0.0.125}/src/rule_config.rs +0 -0
  137. {rumdl-0.0.123 → rumdl-0.0.125}/src/rule_config_serde.rs +0 -0
  138. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/blockquote_utils.rs +0 -0
  139. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/code_block_utils.rs +0 -0
  140. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/code_fence_utils.rs +0 -0
  141. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/emphasis_style.rs +0 -0
  142. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/front_matter_utils.rs +0 -0
  143. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/heading_utils.rs +0 -0
  144. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/list_utils.rs +0 -0
  145. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md001_heading_increment.rs +0 -0
  146. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  147. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md002_first_heading_h1.rs +0 -0
  148. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md003_heading_style/md003_config.rs +0 -0
  149. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md003_heading_style.rs +0 -0
  150. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  151. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md004_unordered_list_style.rs +0 -0
  152. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md005_list_indent.rs +0 -0
  153. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md006_start_bullets.rs +0 -0
  154. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  155. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md007_ul_indent.rs +0 -0
  156. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  157. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  158. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md010_no_hard_tabs.rs +0 -0
  159. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md011_no_reversed_links.rs +0 -0
  160. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  161. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md012_no_multiple_blanks.rs +0 -0
  162. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md013_line_length/md013_config.rs +0 -0
  163. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md013_line_length.rs +0 -0
  164. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  165. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md014_commands_show_output.rs +0 -0
  166. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md018_no_missing_space_atx.rs +0 -0
  167. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  168. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  169. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  170. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  171. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md022_blanks_around_headings.rs +0 -0
  172. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md023_heading_start_left.rs +0 -0
  173. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  174. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md024_no_duplicate_heading.rs +0 -0
  175. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md025_single_title/md025_config.rs +0 -0
  176. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md025_single_title.rs +0 -0
  177. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  178. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  179. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  180. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  181. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
  182. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  183. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md030_list_marker_space.rs +0 -0
  184. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md031_blanks_around_fences.rs +0 -0
  185. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md032_blanks_around_lists.rs +0 -0
  186. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  187. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md033_no_inline_html.rs +0 -0
  188. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md034_no_bare_urls.rs +0 -0
  189. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md035_hr_style/md035_config.rs +0 -0
  190. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md035_hr_style.rs +0 -0
  191. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  192. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  193. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  194. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md038_no_space_in_code.rs +0 -0
  195. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md039_no_space_in_links.rs +0 -0
  196. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md040_fenced_code_language.rs +0 -0
  197. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md041_first_line_heading.rs +0 -0
  198. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md042_no_empty_links.rs +0 -0
  199. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md043_required_headings.rs +0 -0
  200. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md044_proper_names/md044_config.rs +0 -0
  201. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md044_proper_names.rs +0 -0
  202. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  203. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md045_no_alt_text.rs +0 -0
  204. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  205. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md046_code_block_style.rs +0 -0
  206. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md047_single_trailing_newline.rs +0 -0
  207. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  208. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md048_code_fence_style.rs +0 -0
  209. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  210. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md049_emphasis_style.rs +0 -0
  211. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md050_strong_style/md050_config.rs +0 -0
  212. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md050_strong_style.rs +0 -0
  213. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md051_link_fragments.rs +0 -0
  214. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  215. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  216. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md054_link_image_style.rs +0 -0
  217. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  218. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md055_table_pipe_style.rs +0 -0
  219. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md056_table_column_count.rs +0 -0
  220. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  221. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md057_existing_relative_links.rs +0 -0
  222. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/md058_blanks_around_tables.rs +0 -0
  223. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/mod.rs +0 -0
  224. {rumdl-0.0.123 → rumdl-0.0.125}/src/rules/strong_style.rs +0 -0
  225. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/anchor_styles/github.rs +0 -0
  226. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/anchor_styles/jekyll.rs +0 -0
  227. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/anchor_styles/kramdown.rs +0 -0
  228. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
  229. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/anchor_styles/mod.rs +0 -0
  230. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/ast_utils.rs +0 -0
  231. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/code_block_utils.rs +0 -0
  232. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/document_structure.rs +0 -0
  233. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/early_returns.rs +0 -0
  234. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/element_cache.rs +0 -0
  235. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/emphasis_utils.rs +0 -0
  236. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/fix_utils.rs +0 -0
  237. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/header_id_utils.rs +0 -0
  238. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/kramdown_utils.rs +0 -0
  239. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/markdown_elements.rs +0 -0
  240. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/mod.rs +0 -0
  241. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/range_utils.rs +0 -0
  242. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/regex_cache.rs +0 -0
  243. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/skip_context.rs +0 -0
  244. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/string_interner.rs +0 -0
  245. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/table_utils.rs +0 -0
  246. {rumdl-0.0.123 → rumdl-0.0.125}/src/utils/text_reflow.rs +0 -0
  247. {rumdl-0.0.123 → rumdl-0.0.125}/src/vscode.rs +0 -0
  248. {rumdl-0.0.123 → rumdl-0.0.125}/tests/advanced_integration_tests.rs +0 -0
  249. {rumdl-0.0.123 → rumdl-0.0.125}/tests/character_ranges/additional_tests.rs +0 -0
  250. {rumdl-0.0.123 → rumdl-0.0.125}/tests/character_ranges/basic_tests.rs +0 -0
  251. {rumdl-0.0.123 → rumdl-0.0.125}/tests/character_ranges/comprehensive_tests.rs +0 -0
  252. {rumdl-0.0.123 → rumdl-0.0.125}/tests/character_ranges/extended_tests.rs +0 -0
  253. {rumdl-0.0.123 → rumdl-0.0.125}/tests/character_ranges/mod.rs +0 -0
  254. {rumdl-0.0.123 → rumdl-0.0.125}/tests/character_ranges/unicode_utils.rs +0 -0
  255. {rumdl-0.0.123 → rumdl-0.0.125}/tests/cli_duplication_test.rs +0 -0
  256. {rumdl-0.0.123 → rumdl-0.0.125}/tests/cli_explain_test.rs +0 -0
  257. {rumdl-0.0.123 → rumdl-0.0.125}/tests/cli_flag_precedence_test.rs +0 -0
  258. {rumdl-0.0.123 → rumdl-0.0.125}/tests/cli_lsp_fix_consistency.rs +0 -0
  259. {rumdl-0.0.123 → rumdl-0.0.125}/tests/cli_statistics_test.rs +0 -0
  260. {rumdl-0.0.123 → rumdl-0.0.125}/tests/common/cli_test_utils.rs +0 -0
  261. {rumdl-0.0.123 → rumdl-0.0.125}/tests/common/fixtures.rs +0 -0
  262. {rumdl-0.0.123 → rumdl-0.0.125}/tests/common/mod.rs +0 -0
  263. {rumdl-0.0.123 → rumdl-0.0.125}/tests/common/test_utils.rs +0 -0
  264. {rumdl-0.0.123 → rumdl-0.0.125}/tests/commonmark_compliance_tests.rs +0 -0
  265. {rumdl-0.0.123 → rumdl-0.0.125}/tests/comprehensive_integration_tests.rs +0 -0
  266. {rumdl-0.0.123 → rumdl-0.0.125}/tests/comprehensive_output_format_tests.rs +0 -0
  267. {rumdl-0.0.123 → rumdl-0.0.125}/tests/config_application_tests.rs +0 -0
  268. {rumdl-0.0.123 → rumdl-0.0.125}/tests/config_tests.rs +0 -0
  269. {rumdl-0.0.123 → rumdl-0.0.125}/tests/configuration_inheritance_tests.rs +0 -0
  270. {rumdl-0.0.123 → rumdl-0.0.125}/tests/consistency_regression_tests.rs +0 -0
  271. {rumdl-0.0.123 → rumdl-0.0.125}/tests/cross_platform_compatibility_tests.rs +0 -0
  272. {rumdl-0.0.123 → rumdl-0.0.125}/tests/deeply_nested_lists_performance_test.rs +0 -0
  273. {rumdl-0.0.123 → rumdl-0.0.125}/tests/escaped_brackets_test.rs +0 -0
  274. {rumdl-0.0.123 → rumdl-0.0.125}/tests/final_confidence_assessment.rs +0 -0
  275. {rumdl-0.0.123 → rumdl-0.0.125}/tests/fixable_unfixable_config_test.rs +0 -0
  276. {rumdl-0.0.123 → rumdl-0.0.125}/tests/init_command_test.rs +0 -0
  277. {rumdl-0.0.123 → rumdl-0.0.125}/tests/init_tests.rs +0 -0
  278. {rumdl-0.0.123 → rumdl-0.0.125}/tests/inline_config_blocks_test.rs +0 -0
  279. {rumdl-0.0.123 → rumdl-0.0.125}/tests/inline_config_test.rs +0 -0
  280. {rumdl-0.0.123 → rumdl-0.0.125}/tests/integration_tests.rs +0 -0
  281. {rumdl-0.0.123 → rumdl-0.0.125}/tests/json_output_test.rs +0 -0
  282. {rumdl-0.0.123 → rumdl-0.0.125}/tests/kramdown_integration_test.rs +0 -0
  283. {rumdl-0.0.123 → rumdl-0.0.125}/tests/lib.rs +0 -0
  284. {rumdl-0.0.123 → rumdl-0.0.125}/tests/lsp_editor_integration_tests.rs +0 -0
  285. {rumdl-0.0.123 → rumdl-0.0.125}/tests/lsp_integration_tests.rs +0 -0
  286. {rumdl-0.0.123 → rumdl-0.0.125}/tests/lsp_memory_leak_tests.rs +0 -0
  287. {rumdl-0.0.123 → rumdl-0.0.125}/tests/lsp_tests.rs +0 -0
  288. {rumdl-0.0.123 → rumdl-0.0.125}/tests/malformed_markdown_stress_tests.rs +0 -0
  289. {rumdl-0.0.123 → rumdl-0.0.125}/tests/markdownlint_cli_integration.rs +0 -0
  290. {rumdl-0.0.123 → rumdl-0.0.125}/tests/markdownlint_config_test.rs +0 -0
  291. {rumdl-0.0.123 → rumdl-0.0.125}/tests/markdownlintignore_test.rs +0 -0
  292. {rumdl-0.0.123 → rumdl-0.0.125}/tests/md013_reflow_integration_test.rs +0 -0
  293. {rumdl-0.0.123 → rumdl-0.0.125}/tests/md051_issue_39_regression_test.rs +0 -0
  294. {rumdl-0.0.123 → rumdl-0.0.125}/tests/nested_code_block_test.rs +0 -0
  295. {rumdl-0.0.123 → rumdl-0.0.125}/tests/output_format_integration_tests.rs +0 -0
  296. {rumdl-0.0.123 → rumdl-0.0.125}/tests/output_format_tests.rs +0 -0
  297. {rumdl-0.0.123 → rumdl-0.0.125}/tests/perf_check.rs +0 -0
  298. {rumdl-0.0.123 → rumdl-0.0.125}/tests/performance_validation_tests.rs +0 -0
  299. {rumdl-0.0.123 → rumdl-0.0.125}/tests/pyproject_config_tests.rs +0 -0
  300. {rumdl-0.0.123 → rumdl-0.0.125}/tests/python_bindings_test.rs +0 -0
  301. {rumdl-0.0.123 → rumdl-0.0.125}/tests/real_world_repository_tests.rs +0 -0
  302. {rumdl-0.0.123 → rumdl-0.0.125}/tests/regression_prevention_tests.rs +0 -0
  303. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/emphasis_edge_cases_test.rs +0 -0
  304. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/heading_edge_cases_test.rs +0 -0
  305. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/inline_content_edge_cases_test.rs +0 -0
  306. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/link_edge_cases_test.rs +0 -0
  307. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/list_rules_integration_test.rs +0 -0
  308. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md001_test.rs +0 -0
  309. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md001_unicode_test.rs +0 -0
  310. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md002_test.rs +0 -0
  311. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md003_test.rs +0 -0
  312. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md004_test.rs +0 -0
  313. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md005_test.rs +0 -0
  314. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md005_unicode_test.rs +0 -0
  315. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md006_test.rs +0 -0
  316. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md006_unicode_test.rs +0 -0
  317. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md007_test.rs +0 -0
  318. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md010_test.rs +0 -0
  319. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md011_test.rs +0 -0
  320. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md012_test.rs +0 -0
  321. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md013_test.rs +0 -0
  322. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md014_test.rs +0 -0
  323. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md018_test.rs +0 -0
  324. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md019_test.rs +0 -0
  325. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md020_test.rs +0 -0
  326. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md021_test.rs +0 -0
  327. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md022_test.rs +0 -0
  328. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md023_extended_test.rs +0 -0
  329. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md023_test.rs +0 -0
  330. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md024_test.rs +0 -0
  331. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md025_test.rs +0 -0
  332. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md026_kramdown_test.rs +0 -0
  333. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md026_test.rs +0 -0
  334. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md027_test.rs +0 -0
  335. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md028_test.rs +0 -0
  336. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md029_code_block_separation_test.rs +0 -0
  337. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md029_issue42_test.rs +0 -0
  338. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
  339. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md029_unicode_test.rs +0 -0
  340. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md030_test.rs +0 -0
  341. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md031_kramdown_test.rs +0 -0
  342. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md031_test.rs +0 -0
  343. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md032_test.rs +0 -0
  344. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md033_extended_test.rs +0 -0
  345. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md033_kramdown_test.rs +0 -0
  346. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md033_test.rs +0 -0
  347. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md034_ipv6_test.rs +0 -0
  348. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md034_test.rs +0 -0
  349. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md035_test.rs +0 -0
  350. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md036_test.rs +0 -0
  351. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md037_kramdown_test.rs +0 -0
  352. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md037_test.rs +0 -0
  353. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md038_nested_backticks_test.rs +0 -0
  354. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md038_test.rs +0 -0
  355. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md039_test.rs +0 -0
  356. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md040_test.rs +0 -0
  357. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md041_test.rs +0 -0
  358. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md042_test.rs +0 -0
  359. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md043_test.rs +0 -0
  360. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md044_test.rs +0 -0
  361. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md045_test.rs +0 -0
  362. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md046_test.rs +0 -0
  363. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md047_test.rs +0 -0
  364. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md048_test.rs +0 -0
  365. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md049_test.rs +0 -0
  366. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md050_test.rs +0 -0
  367. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_comprehensive_test.rs +0 -0
  368. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
  369. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_edge_cases_test.rs +0 -0
  370. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_issue_39_regression_test.rs +0 -0
  371. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
  372. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_property_based_test.rs +0 -0
  373. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_regression_prevention_test.rs +0 -0
  374. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_test.rs +0 -0
  375. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md051_unicode_security_test.rs +0 -0
  376. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md052_test.rs +0 -0
  377. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md053_additional_test.rs +0 -0
  378. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md053_proptest.rs +0 -0
  379. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md053_test.rs +0 -0
  380. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md054_test.rs +0 -0
  381. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md054_unicode_test.rs +0 -0
  382. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md055_test.rs +0 -0
  383. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md056_test.rs +0 -0
  384. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md057_test.rs +0 -0
  385. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md058_kramdown_test.rs +0 -0
  386. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules/md058_test.rs +0 -0
  387. {rumdl-0.0.123 → rumdl-0.0.125}/tests/rules_mod_test.rs +0 -0
  388. {rumdl-0.0.123 → rumdl-0.0.125}/tests/skip_context_tests.rs +0 -0
  389. {rumdl-0.0.123 → rumdl-0.0.125}/tests/test_underscore_edge_cases.rs +0 -0
  390. {rumdl-0.0.123 → rumdl-0.0.125}/tests/thread_safety_tests.rs +0 -0
  391. {rumdl-0.0.123 → rumdl-0.0.125}/tests/unfixable_rules_test.rs +0 -0
  392. {rumdl-0.0.123 → rumdl-0.0.125}/tests/unicode_edge_case_tests.rs +0 -0
  393. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils/blockquote_utils_test.rs +0 -0
  394. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils/code_block_utils_extended_test.rs +0 -0
  395. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils/code_block_utils_test.rs +0 -0
  396. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils/core_utils_test.rs +0 -0
  397. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils/front_matter_utils_test.rs +0 -0
  398. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils/line_index_test.rs +0 -0
  399. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils/mod.rs +0 -0
  400. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils_markdown_edge_cases.rs +0 -0
  401. {rumdl-0.0.123 → rumdl-0.0.125}/tests/utils_tests.rs +0 -0
  402. {rumdl-0.0.123 → rumdl-0.0.125}/tests/vscode_extension_fixes.rs +0 -0
  403. {rumdl-0.0.123 → rumdl-0.0.125}/tests/vscode_test.rs +0 -0
  404. {rumdl-0.0.123 → rumdl-0.0.125}/tests/vscode_tests.rs +0 -0
  405. {rumdl-0.0.123 → rumdl-0.0.125}/tests/vscode_windows_comprehensive_test.rs +0 -0
  406. {rumdl-0.0.123 → rumdl-0.0.125}/tests/vscode_windows_test.rs +0 -0
@@ -7,7 +7,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [0.0.123] - 2025-08-21
10
+ ## [0.0.125] - 2025-08-22
11
+
12
+ ### Added
13
+ - **CLI**: Added `--stdin-filename` flag for better stdin processing
14
+ - Specify filename when reading from stdin for better error messages
15
+ - Enables MD057 (relative link checking) to work correctly with stdin
16
+ - Provides proper filename context in all output formats
17
+ - Improves editor integration capabilities
18
+
19
+ ### Fixed
20
+ - **CLI**: Fixed `rumdl fmt -` to output original content when no issues found
21
+ - Previously incorrectly output "No issues found in stdin" message
22
+ - Now correctly outputs the original content unchanged
23
+ - **MD029**: Corrected list continuity detection and fix functionality
24
+ - Improved handling of sublists and indented content
25
+ - Better markdownlint compatibility
26
+
27
+ ### Changed
28
+ - **Build**: Added mise version validation to pre-release checks
29
+ - Prevents CI failures from non-existent mise versions
30
+
31
+ ## [0.0.124] - 2025-08-22
32
+
33
+ ### Added
34
+ - **Formatting**: Added stdin/stdout formatting support (closes #59)
35
+ - `rumdl fmt` command for formatting markdown files (alias for `check --fix`)
36
+ - `--stdin` with `--fix` now outputs formatted content to stdout
37
+ - Support for `-` as stdin indicator (Unix convention: `rumdl fmt -`)
38
+ - Clear separation between linting (diagnostics to stderr) and formatting (content to stdout)
39
+ - Documentation updated with formatting examples
40
+
41
+ ### Fixed
42
+ - **MD052**: Don't flag GitHub alerts as undefined references (closes #60)
43
+ - GitHub alert syntax (`[!NOTE]`, `[!TIP]`, `[!WARNING]`, `[!IMPORTANT]`, `[!CAUTION]`) no longer flagged
44
+ - Improved compatibility with GitHub-flavored markdown
45
+ - **MD009**: Fixed heading trailing space removal
46
+ - Headings now have ALL trailing spaces removed (they serve no purpose in headings)
47
+ - **CLI**: Fixed stdin diagnostics output in check mode
48
+ - Diagnostics now correctly output to stderr by default in check mode without `--fix`
11
49
 
12
50
  ## [0.0.123] - 2025-08-21
13
51
 
@@ -33,6 +71,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
33
71
 
34
72
  ## [0.0.122] - 2025-08-19
35
73
 
74
+ ### Added
75
+ - **Configuration Discovery**: Automatic upward directory traversal to find configuration files (closes #58)
76
+ - Searches parent directories for `.rumdl.toml`, `rumdl.toml`, or `pyproject.toml`
77
+ - Similar behavior to `git`, `ruff`, and `eslint`
78
+ - Stops at `.git` directory boundaries
79
+ - **--isolated flag**: New flag to disable all configuration discovery (Ruff-compatible)
80
+ - Alias for `--no-config` for better ecosystem compatibility
81
+
36
82
  ## [0.0.121] - 2025-08-19
37
83
 
38
84
  ### Fixed
@@ -52,6 +98,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
52
98
 
53
99
  ## [0.0.120] - 2025-08-16
54
100
 
101
+ ### Performance
102
+ - Incremental improvements to various rule implementations
103
+
55
104
  ## [0.0.119] - 2025-08-15
56
105
 
57
106
  ### Fixed
@@ -68,6 +117,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
68
117
 
69
118
  ## [0.0.118] - 2025-08-14
70
119
 
120
+ ### Performance
121
+ - Incremental improvements to various rule implementations
122
+
71
123
  ## [0.0.117] - 2025-08-14
72
124
 
73
125
  ### Fixed
@@ -95,17 +147,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
95
147
 
96
148
  ## [0.0.115] - 2025-08-12
97
149
 
150
+ ### Fixed
151
+ - Various bug fixes and improvements
152
+
98
153
  ## [0.0.114] - 2025-08-09
99
154
 
155
+ ### Fixed
156
+ - Various bug fixes and improvements
157
+
100
158
  ## [0.0.113] - 2025-08-09
101
159
 
160
+ ### Fixed
161
+ - Various bug fixes and improvements
162
+
102
163
  ## [0.0.112] - 2025-08-08
103
164
 
104
- ## [0.0.110] - 2025-08-08
165
+ ### Fixed
166
+ - Various bug fixes and improvements
105
167
 
106
168
  ## [0.0.110] - 2025-08-08
107
169
 
108
- ## [0.0.107] - 2025-08-06
170
+ ### Changed
171
+ - Various bug fixes and improvements
109
172
 
110
173
  ## [0.0.107] - 2025-08-06
111
174
 
@@ -125,8 +188,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
125
188
 
126
189
  ## [0.0.105] - 2025-08-05
127
190
 
128
- ## [0.0.105] - 2025-08-05
129
-
130
191
  ### Fixed
131
192
  - MD029: Fixed list continuation detection to properly handle variable marker widths (fixes #16)
132
193
  - List items with double-digit markers (e.g., "10. ") now correctly require 4+ spaces for continuation
@@ -396,7 +457,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
396
457
 
397
458
  - Initial implementation of remaining rules for markdownlint parity
398
459
 
399
- [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.123...HEAD
460
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.125...HEAD
461
+ [0.0.125]: https://github.com/rvben/rumdl/compare/v0.0.124...v0.0.125
462
+ [0.0.124]: https://github.com/rvben/rumdl/compare/v0.0.123...v0.0.124
400
463
  [0.0.123]: https://github.com/rvben/rumdl/compare/v0.0.122...v0.0.123
401
464
  [0.0.122]: https://github.com/rvben/rumdl/compare/v0.0.121...v0.0.122
402
465
  [0.0.121]: https://github.com/rvben/rumdl/compare/v0.0.120...v0.0.121
@@ -410,10 +473,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
410
473
  [0.0.113]: https://github.com/rvben/rumdl/compare/v0.0.112...v0.0.113
411
474
  [0.0.112]: https://github.com/rvben/rumdl/compare/v0.0.111...v0.0.112
412
475
  [0.0.110]: https://github.com/rvben/rumdl/compare/v0.0.109...v0.0.110
413
- [0.0.110]: https://github.com/rvben/rumdl/compare/v0.0.109...v0.0.110
414
476
  [0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
415
- [0.0.107]: https://github.com/rvben/rumdl/compare/v0.0.106...v0.0.107
416
- [0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
477
+ [0.0.106]: https://github.com/rvben/rumdl/compare/v0.0.105...v0.0.106
417
478
  [0.0.105]: https://github.com/rvben/rumdl/compare/v0.0.104...v0.0.105
418
479
  [0.0.104]: https://github.com/rvben/rumdl/compare/v0.0.103...v0.0.104
419
480
  [0.0.102]: https://github.com/rvben/rumdl/compare/v0.0.101...v0.0.102
@@ -185,9 +185,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
185
185
 
186
186
  [[package]]
187
187
  name = "bitflags"
188
- version = "2.9.2"
188
+ version = "2.9.3"
189
189
  source = "registry+https://github.com/rust-lang/crates.io-index"
190
- checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29"
190
+ checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d"
191
191
 
192
192
  [[package]]
193
193
  name = "bstr"
@@ -220,9 +220,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
220
220
 
221
221
  [[package]]
222
222
  name = "cc"
223
- version = "1.2.33"
223
+ version = "1.2.34"
224
224
  source = "registry+https://github.com/rust-lang/crates.io-index"
225
- checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f"
225
+ checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc"
226
226
  dependencies = [
227
227
  "shlex",
228
228
  ]
@@ -843,9 +843,9 @@ dependencies = [
843
843
 
844
844
  [[package]]
845
845
  name = "indexmap"
846
- version = "2.10.0"
846
+ version = "2.11.0"
847
847
  source = "registry+https://github.com/rust-lang/crates.io-index"
848
- checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
848
+ checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9"
849
849
  dependencies = [
850
850
  "equivalent",
851
851
  "hashbrown 0.15.5",
@@ -859,11 +859,11 @@ checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
859
859
 
860
860
  [[package]]
861
861
  name = "io-uring"
862
- version = "0.7.9"
862
+ version = "0.7.10"
863
863
  source = "registry+https://github.com/rust-lang/crates.io-index"
864
- checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
864
+ checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b"
865
865
  dependencies = [
866
- "bitflags 2.9.2",
866
+ "bitflags 2.9.3",
867
867
  "cfg-if",
868
868
  "libc",
869
869
  ]
@@ -1013,9 +1013,9 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
1013
1013
 
1014
1014
  [[package]]
1015
1015
  name = "memmap2"
1016
- version = "0.9.7"
1016
+ version = "0.9.8"
1017
1017
  source = "registry+https://github.com/rust-lang/crates.io-index"
1018
- checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28"
1018
+ checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7"
1019
1019
  dependencies = [
1020
1020
  "libc",
1021
1021
  ]
@@ -1280,7 +1280,7 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f"
1280
1280
  dependencies = [
1281
1281
  "bit-set",
1282
1282
  "bit-vec",
1283
- "bitflags 2.9.2",
1283
+ "bitflags 2.9.3",
1284
1284
  "lazy_static",
1285
1285
  "num-traits",
1286
1286
  "rand",
@@ -1298,7 +1298,7 @@ version = "0.12.2"
1298
1298
  source = "registry+https://github.com/rust-lang/crates.io-index"
1299
1299
  checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14"
1300
1300
  dependencies = [
1301
- "bitflags 2.9.2",
1301
+ "bitflags 2.9.3",
1302
1302
  "getopts",
1303
1303
  "memchr",
1304
1304
  "pulldown-cmark-escape",
@@ -1459,7 +1459,7 @@ version = "0.5.17"
1459
1459
  source = "registry+https://github.com/rust-lang/crates.io-index"
1460
1460
  checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
1461
1461
  dependencies = [
1462
- "bitflags 2.9.2",
1462
+ "bitflags 2.9.3",
1463
1463
  ]
1464
1464
 
1465
1465
  [[package]]
@@ -1493,7 +1493,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
1493
1493
 
1494
1494
  [[package]]
1495
1495
  name = "rumdl"
1496
- version = "0.0.123"
1496
+ version = "0.0.125"
1497
1497
  dependencies = [
1498
1498
  "anyhow",
1499
1499
  "assert_cmd",
@@ -1555,7 +1555,7 @@ version = "1.0.8"
1555
1555
  source = "registry+https://github.com/rust-lang/crates.io-index"
1556
1556
  checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
1557
1557
  dependencies = [
1558
- "bitflags 2.9.2",
1558
+ "bitflags 2.9.3",
1559
1559
  "errno",
1560
1560
  "libc",
1561
1561
  "linux-raw-sys",
@@ -2421,9 +2421,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
2421
2421
 
2422
2422
  [[package]]
2423
2423
  name = "winnow"
2424
- version = "0.7.12"
2424
+ version = "0.7.13"
2425
2425
  source = "registry+https://github.com/rust-lang/crates.io-index"
2426
- checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
2426
+ checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
2427
2427
  dependencies = [
2428
2428
  "memchr",
2429
2429
  ]
@@ -2434,7 +2434,7 @@ version = "0.39.0"
2434
2434
  source = "registry+https://github.com/rust-lang/crates.io-index"
2435
2435
  checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
2436
2436
  dependencies = [
2437
- "bitflags 2.9.2",
2437
+ "bitflags 2.9.3",
2438
2438
  ]
2439
2439
 
2440
2440
  [[package]]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.123"
3
+ version = "0.0.125"
4
4
  edition = "2024"
5
5
  rust-version = "1.89.0"
6
6
  description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
@@ -334,7 +334,7 @@ update-rust-version:
334
334
  cargo check || (echo "Warning: cargo check failed. You may need to fix compatibility issues."; exit 1); \
335
335
  fi
336
336
 
337
- pre-release:
337
+ prepare-release:
338
338
  @echo "Preparing for release..."
339
339
  @echo "===================="
340
340
  @$(MAKE) update-rust-version
@@ -354,6 +354,6 @@ pre-release:
354
354
  @echo "Please review changes and commit if satisfied."
355
355
 
356
356
  # Full release targets that include pre-release preparation
357
- release-major-full: pre-release version-major version-push
358
- release-minor-full: pre-release version-minor version-push
359
- release-patch-full: pre-release version-patch version-push
357
+ release-major-full: prepare-release version-major version-push
358
+ release-minor-full: prepare-release version-minor version-push
359
+ release-patch-full: prepare-release version-patch version-push
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.123
3
+ Version: 0.0.125
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -55,8 +55,9 @@ cargo install rumdl
55
55
  # Lint Markdown files in the current directory
56
56
  rumdl check .
57
57
 
58
- # Automatically fix issues
59
- rumdl check --fix .
58
+ # Format files (automatically fix issues)
59
+ rumdl fmt .
60
+ # Alternative: rumdl check --fix .
60
61
 
61
62
  # Create a default configuration file
62
63
  rumdl init
@@ -64,7 +65,7 @@ rumdl init
64
65
 
65
66
  ## Overview
66
67
 
67
- rumdl is a high-performance Markdown linter and fixer that helps ensure consistency and best practices
68
+ rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices
68
69
  in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting,
69
70
  rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
70
71
 
@@ -72,7 +73,7 @@ It offers:
72
73
 
73
74
  - ⚡️ **Built for speed** with Rust - significantly faster than alternatives
74
75
  - 🔍 **54 lint rules** covering common Markdown issues
75
- - 🛠️ **Automatic fixing** with `--fix` for most rules
76
+ - 🛠️ **Automatic formatting** with `--fix` for files and stdin/stdout
76
77
  - 📦 **Zero dependencies** - single binary with no runtime requirements
77
78
  - 🔧 **Highly configurable** with TOML-based config files
78
79
  - 🌐 **Multiple installation options** - Rust, Python, standalone binaries
@@ -95,6 +96,8 @@ It offers:
95
96
  - [Download binary](#download-binary)
96
97
  - [VS Code Extension](#vs-code-extension)
97
98
  - [Usage](#usage)
99
+ - [Stdin/Stdout Formatting](#stdinstdout-formatting)
100
+ - [Editor Integration](#editor-integration)
98
101
  - [Pre-commit Integration](#pre-commit-integration)
99
102
  - [CI/CD Integration](#cicd-integration)
100
103
  - [GitHub Actions](#github-actions)
@@ -102,6 +105,7 @@ It offers:
102
105
  - [Command-line Interface](#command-line-interface)
103
106
  - [Commands](#commands)
104
107
  - [`check [PATHS...]`](#check-paths)
108
+ - [`fmt [PATHS...]`](#fmt-paths)
105
109
  - [`init [OPTIONS]`](#init-options)
106
110
  - [`import <FILE> [OPTIONS]`](#import-file-options)
107
111
  - [`rule [<rule>]`](#rule-rule)
@@ -213,8 +217,8 @@ rumdl check README.md
213
217
  # Lint all Markdown files in current directory and subdirectories
214
218
  rumdl check .
215
219
 
216
- # Automatically fix issues
217
- rumdl check --fix README.md
220
+ # Format a specific file
221
+ rumdl fmt README.md
218
222
 
219
223
  # Create a default configuration file
220
224
  rumdl init
@@ -245,6 +249,38 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
245
249
  rumdl check --respect-gitignore=false .
246
250
  ```
247
251
 
252
+ ### Stdin/Stdout Formatting
253
+
254
+ rumdl supports formatting via stdin/stdout, making it ideal for editor integrations and CI pipelines:
255
+
256
+ ```bash
257
+ # Format content from stdin and output to stdout
258
+ cat README.md | rumdl fmt - > README_formatted.md
259
+ # Alternative: cat README.md | rumdl fmt --stdin > README_formatted.md
260
+
261
+ # Use in a pipeline
262
+ echo "# Title " | rumdl fmt -
263
+ # Output: # Title
264
+
265
+ # Format clipboard content (macOS example)
266
+ pbpaste | rumdl fmt - | pbcopy
267
+
268
+ # Provide filename context for better error messages (useful for editor integrations)
269
+ cat README.md | rumdl check - --stdin-filename README.md
270
+ ```
271
+
272
+ ### Editor Integration
273
+
274
+ For editor integration, use stdin/stdout mode with the `--quiet` flag to suppress diagnostic messages:
275
+
276
+ ```bash
277
+ # Format selection in editor (example for vim)
278
+ :'<,'>!rumdl fmt - --quiet
279
+
280
+ # Format entire buffer
281
+ :%!rumdl fmt - --quiet
282
+ ```
283
+
248
284
  ## Pre-commit Integration
249
285
 
250
286
  You can use `rumdl` as a pre-commit hook to check and fix your Markdown files.
@@ -337,6 +373,37 @@ Lint Markdown files and print warnings/errors (main subcommand)
337
373
  - `-o, --output <format>`: Output format: `text` (default) or `json`
338
374
  - `--stdin`: Read from stdin instead of files
339
375
 
376
+ #### `fmt [PATHS...]`
377
+
378
+ Format Markdown files (alias for `check --fix`)
379
+
380
+ **Arguments:**
381
+
382
+ - `[PATHS...]`: Files or directories to format. If provided, these paths take precedence over include patterns
383
+
384
+ **Options:**
385
+
386
+ All the same options as `check` are available (except `--fix` which is always enabled), including:
387
+ - `--stdin`: Format content from stdin and output to stdout
388
+ - `-d, --disable <rules>`: Disable specific rules during formatting
389
+ - `-e, --enable <rules>`: Format using only specific rules
390
+ - `--exclude/--include`: Control which files to format
391
+ - `-q, --quiet`: Suppress diagnostic output
392
+
393
+ **Examples:**
394
+
395
+ ```bash
396
+ # Format all Markdown files in current directory
397
+ rumdl fmt
398
+
399
+ # Format specific file
400
+ rumdl fmt README.md
401
+
402
+ # Format from stdin (using dash syntax)
403
+ cat README.md | rumdl fmt - > formatted.md
404
+ # Alternative: cat README.md | rumdl fmt --stdin > formatted.md
405
+ ```
406
+
340
407
  #### `init [OPTIONS]`
341
408
 
342
409
  Create a default configuration file in the current directory
@@ -428,8 +495,9 @@ This allows scripts and CI/CD systems to distinguish between "the tool found pro
428
495
  # Lint all Markdown files in the current directory
429
496
  rumdl check .
430
497
 
431
- # Automatically fix issues
432
- rumdl check --fix .
498
+ # Format files (automatically fix issues)
499
+ rumdl fmt .
500
+ # Alternative: rumdl check --fix .
433
501
 
434
502
  # Create a default configuration file
435
503
  rumdl init
@@ -484,11 +552,33 @@ rumdl version
484
552
 
485
553
  rumdl can be configured in several ways:
486
554
 
487
- 1. Using a `.rumdl.toml` file in your project directory
555
+ 1. Using a `.rumdl.toml` file in your project directory or parent directories
488
556
  2. Using the `[tool.rumdl]` section in your project's `pyproject.toml` file (for Python projects)
489
557
  3. Using command-line arguments
490
558
  4. **Automatic markdownlint compatibility**: rumdl automatically discovers and loads existing markdownlint config files (`.markdownlint.json`, `.markdownlint.yaml`, etc.)
491
559
 
560
+ ### Configuration Discovery
561
+
562
+ rumdl automatically searches for configuration files by traversing up the directory tree from the current
563
+ working directory, similar to tools like `git`, `ruff`, and `eslint`. This means you can run rumdl from any
564
+ subdirectory of your project and it will find the configuration file at the project root.
565
+
566
+ The search follows these rules:
567
+ - Searches upward for `.rumdl.toml`, `rumdl.toml`, or `pyproject.toml` (with `[tool.rumdl]` section)
568
+ - Stops at the first configuration file found
569
+ - Stops searching when it encounters a `.git` directory (project boundary)
570
+ - Maximum traversal depth of 100 directories
571
+
572
+ To disable all configuration discovery and use only built-in defaults, use the `--isolated` flag:
573
+
574
+ ```bash
575
+ # Use discovered configuration (default behavior)
576
+ rumdl check .
577
+
578
+ # Ignore all configuration files
579
+ rumdl check --isolated .
580
+ ```
581
+
492
582
  ### Markdownlint Migration
493
583
 
494
584
  rumdl provides seamless compatibility with existing markdownlint configurations:
@@ -660,7 +750,7 @@ README.md:24:5: [MD037] Spaces inside emphasis markers: "* incorrect *" [*]
660
750
  README.md:42:3: [MD010] Hard tabs found, use spaces instead [*]
661
751
 
662
752
  Found 3 issues in 1 file (2 files checked)
663
- Run with `--fix` to automatically fix issues
753
+ Run `rumdl fmt` to automatically fix issues
664
754
  ```
665
755
 
666
756
  ### Output Format
@@ -26,8 +26,9 @@ cargo install rumdl
26
26
  # Lint Markdown files in the current directory
27
27
  rumdl check .
28
28
 
29
- # Automatically fix issues
30
- rumdl check --fix .
29
+ # Format files (automatically fix issues)
30
+ rumdl fmt .
31
+ # Alternative: rumdl check --fix .
31
32
 
32
33
  # Create a default configuration file
33
34
  rumdl init
@@ -35,7 +36,7 @@ rumdl init
35
36
 
36
37
  ## Overview
37
38
 
38
- rumdl is a high-performance Markdown linter and fixer that helps ensure consistency and best practices
39
+ rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices
39
40
  in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting,
40
41
  rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
41
42
 
@@ -43,7 +44,7 @@ It offers:
43
44
 
44
45
  - ⚡️ **Built for speed** with Rust - significantly faster than alternatives
45
46
  - 🔍 **54 lint rules** covering common Markdown issues
46
- - 🛠️ **Automatic fixing** with `--fix` for most rules
47
+ - 🛠️ **Automatic formatting** with `--fix` for files and stdin/stdout
47
48
  - 📦 **Zero dependencies** - single binary with no runtime requirements
48
49
  - 🔧 **Highly configurable** with TOML-based config files
49
50
  - 🌐 **Multiple installation options** - Rust, Python, standalone binaries
@@ -66,6 +67,8 @@ It offers:
66
67
  - [Download binary](#download-binary)
67
68
  - [VS Code Extension](#vs-code-extension)
68
69
  - [Usage](#usage)
70
+ - [Stdin/Stdout Formatting](#stdinstdout-formatting)
71
+ - [Editor Integration](#editor-integration)
69
72
  - [Pre-commit Integration](#pre-commit-integration)
70
73
  - [CI/CD Integration](#cicd-integration)
71
74
  - [GitHub Actions](#github-actions)
@@ -73,6 +76,7 @@ It offers:
73
76
  - [Command-line Interface](#command-line-interface)
74
77
  - [Commands](#commands)
75
78
  - [`check [PATHS...]`](#check-paths)
79
+ - [`fmt [PATHS...]`](#fmt-paths)
76
80
  - [`init [OPTIONS]`](#init-options)
77
81
  - [`import <FILE> [OPTIONS]`](#import-file-options)
78
82
  - [`rule [<rule>]`](#rule-rule)
@@ -184,8 +188,8 @@ rumdl check README.md
184
188
  # Lint all Markdown files in current directory and subdirectories
185
189
  rumdl check .
186
190
 
187
- # Automatically fix issues
188
- rumdl check --fix README.md
191
+ # Format a specific file
192
+ rumdl fmt README.md
189
193
 
190
194
  # Create a default configuration file
191
195
  rumdl init
@@ -216,6 +220,38 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
216
220
  rumdl check --respect-gitignore=false .
217
221
  ```
218
222
 
223
+ ### Stdin/Stdout Formatting
224
+
225
+ rumdl supports formatting via stdin/stdout, making it ideal for editor integrations and CI pipelines:
226
+
227
+ ```bash
228
+ # Format content from stdin and output to stdout
229
+ cat README.md | rumdl fmt - > README_formatted.md
230
+ # Alternative: cat README.md | rumdl fmt --stdin > README_formatted.md
231
+
232
+ # Use in a pipeline
233
+ echo "# Title " | rumdl fmt -
234
+ # Output: # Title
235
+
236
+ # Format clipboard content (macOS example)
237
+ pbpaste | rumdl fmt - | pbcopy
238
+
239
+ # Provide filename context for better error messages (useful for editor integrations)
240
+ cat README.md | rumdl check - --stdin-filename README.md
241
+ ```
242
+
243
+ ### Editor Integration
244
+
245
+ For editor integration, use stdin/stdout mode with the `--quiet` flag to suppress diagnostic messages:
246
+
247
+ ```bash
248
+ # Format selection in editor (example for vim)
249
+ :'<,'>!rumdl fmt - --quiet
250
+
251
+ # Format entire buffer
252
+ :%!rumdl fmt - --quiet
253
+ ```
254
+
219
255
  ## Pre-commit Integration
220
256
 
221
257
  You can use `rumdl` as a pre-commit hook to check and fix your Markdown files.
@@ -308,6 +344,37 @@ Lint Markdown files and print warnings/errors (main subcommand)
308
344
  - `-o, --output <format>`: Output format: `text` (default) or `json`
309
345
  - `--stdin`: Read from stdin instead of files
310
346
 
347
+ #### `fmt [PATHS...]`
348
+
349
+ Format Markdown files (alias for `check --fix`)
350
+
351
+ **Arguments:**
352
+
353
+ - `[PATHS...]`: Files or directories to format. If provided, these paths take precedence over include patterns
354
+
355
+ **Options:**
356
+
357
+ All the same options as `check` are available (except `--fix` which is always enabled), including:
358
+ - `--stdin`: Format content from stdin and output to stdout
359
+ - `-d, --disable <rules>`: Disable specific rules during formatting
360
+ - `-e, --enable <rules>`: Format using only specific rules
361
+ - `--exclude/--include`: Control which files to format
362
+ - `-q, --quiet`: Suppress diagnostic output
363
+
364
+ **Examples:**
365
+
366
+ ```bash
367
+ # Format all Markdown files in current directory
368
+ rumdl fmt
369
+
370
+ # Format specific file
371
+ rumdl fmt README.md
372
+
373
+ # Format from stdin (using dash syntax)
374
+ cat README.md | rumdl fmt - > formatted.md
375
+ # Alternative: cat README.md | rumdl fmt --stdin > formatted.md
376
+ ```
377
+
311
378
  #### `init [OPTIONS]`
312
379
 
313
380
  Create a default configuration file in the current directory
@@ -399,8 +466,9 @@ This allows scripts and CI/CD systems to distinguish between "the tool found pro
399
466
  # Lint all Markdown files in the current directory
400
467
  rumdl check .
401
468
 
402
- # Automatically fix issues
403
- rumdl check --fix .
469
+ # Format files (automatically fix issues)
470
+ rumdl fmt .
471
+ # Alternative: rumdl check --fix .
404
472
 
405
473
  # Create a default configuration file
406
474
  rumdl init
@@ -455,11 +523,33 @@ rumdl version
455
523
 
456
524
  rumdl can be configured in several ways:
457
525
 
458
- 1. Using a `.rumdl.toml` file in your project directory
526
+ 1. Using a `.rumdl.toml` file in your project directory or parent directories
459
527
  2. Using the `[tool.rumdl]` section in your project's `pyproject.toml` file (for Python projects)
460
528
  3. Using command-line arguments
461
529
  4. **Automatic markdownlint compatibility**: rumdl automatically discovers and loads existing markdownlint config files (`.markdownlint.json`, `.markdownlint.yaml`, etc.)
462
530
 
531
+ ### Configuration Discovery
532
+
533
+ rumdl automatically searches for configuration files by traversing up the directory tree from the current
534
+ working directory, similar to tools like `git`, `ruff`, and `eslint`. This means you can run rumdl from any
535
+ subdirectory of your project and it will find the configuration file at the project root.
536
+
537
+ The search follows these rules:
538
+ - Searches upward for `.rumdl.toml`, `rumdl.toml`, or `pyproject.toml` (with `[tool.rumdl]` section)
539
+ - Stops at the first configuration file found
540
+ - Stops searching when it encounters a `.git` directory (project boundary)
541
+ - Maximum traversal depth of 100 directories
542
+
543
+ To disable all configuration discovery and use only built-in defaults, use the `--isolated` flag:
544
+
545
+ ```bash
546
+ # Use discovered configuration (default behavior)
547
+ rumdl check .
548
+
549
+ # Ignore all configuration files
550
+ rumdl check --isolated .
551
+ ```
552
+
463
553
  ### Markdownlint Migration
464
554
 
465
555
  rumdl provides seamless compatibility with existing markdownlint configurations:
@@ -631,7 +721,7 @@ README.md:24:5: [MD037] Spaces inside emphasis markers: "* incorrect *" [*]
631
721
  README.md:42:3: [MD010] Hard tabs found, use spaces instead [*]
632
722
 
633
723
  Found 3 issues in 1 file (2 files checked)
634
- Run with `--fix` to automatically fix issues
724
+ Run `rumdl fmt` to automatically fix issues
635
725
  ```
636
726
 
637
727
  ### Output Format