rumdl 0.0.134__tar.gz → 0.0.136__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 (427) hide show
  1. {rumdl-0.0.134 → rumdl-0.0.136}/CHANGELOG.md +7 -1
  2. {rumdl-0.0.134 → rumdl-0.0.136}/Cargo.lock +7 -7
  3. {rumdl-0.0.134 → rumdl-0.0.136}/Cargo.toml +1 -1
  4. {rumdl-0.0.134 → rumdl-0.0.136}/PKG-INFO +46 -18
  5. {rumdl-0.0.134 → rumdl-0.0.136}/README.md +45 -17
  6. {rumdl-0.0.134 → rumdl-0.0.136}/src/config.rs +52 -0
  7. {rumdl-0.0.134 → rumdl-0.0.136}/src/main.rs +38 -3
  8. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md009_trailing_spaces.rs +85 -12
  9. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md013_line_length.rs +83 -47
  10. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md034_no_bare_urls.rs +5 -2
  11. {rumdl-0.0.134 → rumdl-0.0.136}/tests/cli_integration_tests.rs +114 -0
  12. {rumdl-0.0.134 → rumdl-0.0.136}/tests/comprehensive_output_format_tests.rs +3 -5
  13. rumdl-0.0.136/tests/md037_xxxx_regression_test.rs +91 -0
  14. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md009_test.rs +15 -5
  15. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md013_test.rs +4 -2
  16. {rumdl-0.0.134 → rumdl-0.0.136}/.config/nextest.toml +0 -0
  17. {rumdl-0.0.134 → rumdl-0.0.136}/.mise.toml +0 -0
  18. {rumdl-0.0.134 → rumdl-0.0.136}/.pre-commit-config.yaml +0 -0
  19. {rumdl-0.0.134 → rumdl-0.0.136}/.rumdl.toml +0 -0
  20. {rumdl-0.0.134 → rumdl-0.0.136}/.rustfmt.toml +0 -0
  21. {rumdl-0.0.134 → rumdl-0.0.136}/LICENSE +0 -0
  22. {rumdl-0.0.134 → rumdl-0.0.136}/MANIFEST.in +0 -0
  23. {rumdl-0.0.134 → rumdl-0.0.136}/Makefile +0 -0
  24. {rumdl-0.0.134 → rumdl-0.0.136}/assets/logo.png +0 -0
  25. {rumdl-0.0.134 → rumdl-0.0.136}/benches/fix_performance.rs +0 -0
  26. {rumdl-0.0.134 → rumdl-0.0.136}/benches/range_performance.rs +0 -0
  27. {rumdl-0.0.134 → rumdl-0.0.136}/benches/range_utils_benchmark.rs +0 -0
  28. {rumdl-0.0.134 → rumdl-0.0.136}/benches/rule_performance.rs +0 -0
  29. {rumdl-0.0.134 → rumdl-0.0.136}/benches/simple_fix_bench.rs +0 -0
  30. {rumdl-0.0.134 → rumdl-0.0.136}/benchmark/bin/bench_lint_context.rs +0 -0
  31. {rumdl-0.0.134 → rumdl-0.0.136}/benchmark/bin/benchmark.rs +0 -0
  32. {rumdl-0.0.134 → rumdl-0.0.136}/benchmark/bin/benchmark_rule.rs +0 -0
  33. {rumdl-0.0.134 → rumdl-0.0.136}/benchmark/bin/file_parallel_benchmark.rs +0 -0
  34. {rumdl-0.0.134 → rumdl-0.0.136}/benchmark/bin/measure_code_span_performance.rs +0 -0
  35. {rumdl-0.0.134 → rumdl-0.0.136}/docs/RULES.md +0 -0
  36. {rumdl-0.0.134 → rumdl-0.0.136}/docs/global-settings.md +0 -0
  37. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md001.md +0 -0
  38. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md002.md +0 -0
  39. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md003.md +0 -0
  40. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md004.md +0 -0
  41. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md005.md +0 -0
  42. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md006.md +0 -0
  43. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md007.md +0 -0
  44. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md009.md +0 -0
  45. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md010.md +0 -0
  46. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md011.md +0 -0
  47. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md012.md +0 -0
  48. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md013.md +0 -0
  49. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md014.md +0 -0
  50. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md018.md +0 -0
  51. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md019.md +0 -0
  52. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md020.md +0 -0
  53. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md021.md +0 -0
  54. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md022.md +0 -0
  55. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md023.md +0 -0
  56. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md024.md +0 -0
  57. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md025.md +0 -0
  58. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md026.md +0 -0
  59. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md027.md +0 -0
  60. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md028.md +0 -0
  61. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md029.md +0 -0
  62. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md030.md +0 -0
  63. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md031.md +0 -0
  64. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md032.md +0 -0
  65. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md033.md +0 -0
  66. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md034.md +0 -0
  67. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md035.md +0 -0
  68. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md036.md +0 -0
  69. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md037.md +0 -0
  70. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md038.md +0 -0
  71. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md039.md +0 -0
  72. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md040.md +0 -0
  73. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md041.md +0 -0
  74. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md042.md +0 -0
  75. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md043.md +0 -0
  76. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md044.md +0 -0
  77. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md045.md +0 -0
  78. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md046.md +0 -0
  79. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md047.md +0 -0
  80. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md048.md +0 -0
  81. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md049.md +0 -0
  82. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md050.md +0 -0
  83. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md051.md +0 -0
  84. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md052.md +0 -0
  85. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md053.md +0 -0
  86. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md054.md +0 -0
  87. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md055.md +0 -0
  88. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md056.md +0 -0
  89. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md057.md +0 -0
  90. {rumdl-0.0.134 → rumdl-0.0.136}/docs/md058.md +0 -0
  91. {rumdl-0.0.134 → rumdl-0.0.136}/docs/vscode-extension.md +0 -0
  92. {rumdl-0.0.134 → rumdl-0.0.136}/parity_check.py +0 -0
  93. {rumdl-0.0.134 → rumdl-0.0.136}/pyproject.toml +0 -0
  94. {rumdl-0.0.134 → rumdl-0.0.136}/python/MANIFEST.in +0 -0
  95. {rumdl-0.0.134 → rumdl-0.0.136}/python/PYTHON-README.md +0 -0
  96. {rumdl-0.0.134 → rumdl-0.0.136}/python/rumdl/__init__.py +0 -0
  97. {rumdl-0.0.134 → rumdl-0.0.136}/python/rumdl/__main__.py +0 -0
  98. {rumdl-0.0.134 → rumdl-0.0.136}/python/rumdl/py.typed +0 -0
  99. {rumdl-0.0.134 → rumdl-0.0.136}/rumdl.toml.example +0 -0
  100. {rumdl-0.0.134 → rumdl-0.0.136}/rust-toolchain.toml +0 -0
  101. {rumdl-0.0.134 → rumdl-0.0.136}/scripts/extract-changelog.sh +0 -0
  102. {rumdl-0.0.134 → rumdl-0.0.136}/scripts/generate-downloads-table.sh +0 -0
  103. {rumdl-0.0.134 → rumdl-0.0.136}/scripts/pre-release.sh +0 -0
  104. {rumdl-0.0.134 → rumdl-0.0.136}/scripts/prepare-release.sh +0 -0
  105. {rumdl-0.0.134 → rumdl-0.0.136}/scripts/setup-pre-commit.sh +0 -0
  106. {rumdl-0.0.134 → rumdl-0.0.136}/scripts/update-pre-commit-docs.sh +0 -0
  107. {rumdl-0.0.134 → rumdl-0.0.136}/src/exit_codes.rs +0 -0
  108. {rumdl-0.0.134 → rumdl-0.0.136}/src/inline_config.rs +0 -0
  109. {rumdl-0.0.134 → rumdl-0.0.136}/src/lib.rs +0 -0
  110. {rumdl-0.0.134 → rumdl-0.0.136}/src/lint_context.rs +0 -0
  111. {rumdl-0.0.134 → rumdl-0.0.136}/src/lsp/mod.rs +0 -0
  112. {rumdl-0.0.134 → rumdl-0.0.136}/src/lsp/server.rs +0 -0
  113. {rumdl-0.0.134 → rumdl-0.0.136}/src/lsp/types.rs +0 -0
  114. {rumdl-0.0.134 → rumdl-0.0.136}/src/markdownlint_config.rs +0 -0
  115. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/azure.rs +0 -0
  116. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/concise.rs +0 -0
  117. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/github.rs +0 -0
  118. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/gitlab.rs +0 -0
  119. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/grouped.rs +0 -0
  120. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/json.rs +0 -0
  121. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/json_lines.rs +0 -0
  122. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/junit.rs +0 -0
  123. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/mod.rs +0 -0
  124. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/pylint.rs +0 -0
  125. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/sarif.rs +0 -0
  126. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/formatters/text.rs +0 -0
  127. {rumdl-0.0.134 → rumdl-0.0.136}/src/output/mod.rs +0 -0
  128. {rumdl-0.0.134 → rumdl-0.0.136}/src/parallel.rs +0 -0
  129. {rumdl-0.0.134 → rumdl-0.0.136}/src/performance.rs +0 -0
  130. {rumdl-0.0.134 → rumdl-0.0.136}/src/profiling.rs +0 -0
  131. {rumdl-0.0.134 → rumdl-0.0.136}/src/python.rs +0 -0
  132. {rumdl-0.0.134 → rumdl-0.0.136}/src/rule.rs +0 -0
  133. {rumdl-0.0.134 → rumdl-0.0.136}/src/rule_config.rs +0 -0
  134. {rumdl-0.0.134 → rumdl-0.0.136}/src/rule_config_serde.rs +0 -0
  135. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/blockquote_utils.rs +0 -0
  136. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/code_block_utils.rs +0 -0
  137. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/code_fence_utils.rs +0 -0
  138. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/emphasis_style.rs +0 -0
  139. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/front_matter_utils.rs +0 -0
  140. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/heading_utils.rs +0 -0
  141. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/list_utils.rs +0 -0
  142. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md001_heading_increment.rs +0 -0
  143. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
  144. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md002_first_heading_h1.rs +0 -0
  145. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md003_heading_style/md003_config.rs +0 -0
  146. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md003_heading_style.rs +0 -0
  147. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
  148. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md004_unordered_list_style.rs +0 -0
  149. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md005_list_indent.rs +0 -0
  150. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md006_start_bullets.rs +0 -0
  151. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md007_ul_indent/md007_config.rs +0 -0
  152. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md007_ul_indent.rs +0 -0
  153. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
  154. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
  155. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md010_no_hard_tabs.rs +0 -0
  156. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md011_no_reversed_links.rs +0 -0
  157. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
  158. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md012_no_multiple_blanks.rs +0 -0
  159. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md013_line_length/md013_config.rs +0 -0
  160. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
  161. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md014_commands_show_output.rs +0 -0
  162. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md018_no_missing_space_atx.rs +0 -0
  163. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  164. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  165. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  166. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
  167. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md022_blanks_around_headings.rs +0 -0
  168. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md023_heading_start_left.rs +0 -0
  169. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
  170. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md024_no_duplicate_heading.rs +0 -0
  171. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md025_single_title/md025_config.rs +0 -0
  172. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md025_single_title.rs +0 -0
  173. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
  174. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  175. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  176. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  177. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
  178. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md029_ordered_list_prefix.rs +0 -0
  179. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
  180. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md030_list_marker_space.rs +0 -0
  181. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md031_blanks_around_fences.rs +0 -0
  182. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md032_blanks_around_lists.rs +0 -0
  183. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
  184. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md033_no_inline_html.rs +0 -0
  185. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md035_hr_style/md035_config.rs +0 -0
  186. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md035_hr_style.rs +0 -0
  187. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
  188. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  189. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  190. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md038_no_space_in_code.rs +0 -0
  191. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md039_no_space_in_links.rs +0 -0
  192. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md040_fenced_code_language.rs +0 -0
  193. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md041_first_line_heading.rs +0 -0
  194. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md042_no_empty_links.rs +0 -0
  195. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md043_required_headings.rs +0 -0
  196. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md044_proper_names/md044_config.rs +0 -0
  197. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md044_proper_names.rs +0 -0
  198. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
  199. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md045_no_alt_text.rs +0 -0
  200. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md046_code_block_style/md046_config.rs +0 -0
  201. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md046_code_block_style.rs +0 -0
  202. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md047_single_trailing_newline.rs +0 -0
  203. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
  204. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md048_code_fence_style.rs +0 -0
  205. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
  206. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md049_emphasis_style.rs +0 -0
  207. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md050_strong_style/md050_config.rs +0 -0
  208. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md050_strong_style.rs +0 -0
  209. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md051_link_fragments.rs +0 -0
  210. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md052_reference_links_images.rs +0 -0
  211. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  212. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md054_link_image_style/md054_config.rs +0 -0
  213. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md054_link_image_style.rs +0 -0
  214. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
  215. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md055_table_pipe_style.rs +0 -0
  216. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md056_table_column_count.rs +0 -0
  217. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
  218. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md057_existing_relative_links.rs +0 -0
  219. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/md058_blanks_around_tables.rs +0 -0
  220. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/mod.rs +0 -0
  221. {rumdl-0.0.134 → rumdl-0.0.136}/src/rules/strong_style.rs +0 -0
  222. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/anchor_styles/github.rs +0 -0
  223. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/anchor_styles/jekyll.rs +0 -0
  224. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/anchor_styles/kramdown.rs +0 -0
  225. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
  226. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/anchor_styles/mod.rs +0 -0
  227. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/ast_utils.rs +0 -0
  228. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/code_block_utils.rs +0 -0
  229. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/document_structure.rs +0 -0
  230. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/early_returns.rs +0 -0
  231. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/element_cache.rs +0 -0
  232. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/emphasis_utils.rs +0 -0
  233. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/fix_utils.rs +0 -0
  234. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/header_id_utils.rs +0 -0
  235. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/kramdown_utils.rs +0 -0
  236. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/line_ending.rs +0 -0
  237. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/markdown_elements.rs +0 -0
  238. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_admonitions.rs +0 -0
  239. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_common.rs +0 -0
  240. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_critic.rs +0 -0
  241. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_footnotes.rs +0 -0
  242. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_patterns.rs +0 -0
  243. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_snippets.rs +0 -0
  244. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_tabs.rs +0 -0
  245. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocs_test_utils.rs +0 -0
  246. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mkdocstrings_refs.rs +0 -0
  247. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/mod.rs +0 -0
  248. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/range_utils.rs +0 -0
  249. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/regex_cache.rs +0 -0
  250. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/skip_context.rs +0 -0
  251. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/string_interner.rs +0 -0
  252. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/table_utils.rs +0 -0
  253. {rumdl-0.0.134 → rumdl-0.0.136}/src/utils/text_reflow.rs +0 -0
  254. {rumdl-0.0.134 → rumdl-0.0.136}/src/vscode.rs +0 -0
  255. {rumdl-0.0.134 → rumdl-0.0.136}/tests/advanced_integration_tests.rs +0 -0
  256. {rumdl-0.0.134 → rumdl-0.0.136}/tests/character_ranges/additional_tests.rs +0 -0
  257. {rumdl-0.0.134 → rumdl-0.0.136}/tests/character_ranges/basic_tests.rs +0 -0
  258. {rumdl-0.0.134 → rumdl-0.0.136}/tests/character_ranges/comprehensive_tests.rs +0 -0
  259. {rumdl-0.0.134 → rumdl-0.0.136}/tests/character_ranges/extended_tests.rs +0 -0
  260. {rumdl-0.0.134 → rumdl-0.0.136}/tests/character_ranges/mod.rs +0 -0
  261. {rumdl-0.0.134 → rumdl-0.0.136}/tests/character_ranges/unicode_utils.rs +0 -0
  262. {rumdl-0.0.134 → rumdl-0.0.136}/tests/cli_duplication_test.rs +0 -0
  263. {rumdl-0.0.134 → rumdl-0.0.136}/tests/cli_explain_test.rs +0 -0
  264. {rumdl-0.0.134 → rumdl-0.0.136}/tests/cli_flag_precedence_test.rs +0 -0
  265. {rumdl-0.0.134 → rumdl-0.0.136}/tests/cli_lsp_fix_consistency.rs +0 -0
  266. {rumdl-0.0.134 → rumdl-0.0.136}/tests/cli_statistics_test.rs +0 -0
  267. {rumdl-0.0.134 → rumdl-0.0.136}/tests/common/cli_test_utils.rs +0 -0
  268. {rumdl-0.0.134 → rumdl-0.0.136}/tests/common/fixtures.rs +0 -0
  269. {rumdl-0.0.134 → rumdl-0.0.136}/tests/common/mod.rs +0 -0
  270. {rumdl-0.0.134 → rumdl-0.0.136}/tests/common/test_utils.rs +0 -0
  271. {rumdl-0.0.134 → rumdl-0.0.136}/tests/commonmark_compliance_tests.rs +0 -0
  272. {rumdl-0.0.134 → rumdl-0.0.136}/tests/comprehensive_integration_tests.rs +0 -0
  273. {rumdl-0.0.134 → rumdl-0.0.136}/tests/config_application_tests.rs +0 -0
  274. {rumdl-0.0.134 → rumdl-0.0.136}/tests/config_file_command_test.rs +0 -0
  275. {rumdl-0.0.134 → rumdl-0.0.136}/tests/config_tests.rs +0 -0
  276. {rumdl-0.0.134 → rumdl-0.0.136}/tests/config_upward_traversal_test.rs +0 -0
  277. {rumdl-0.0.134 → rumdl-0.0.136}/tests/configuration_inheritance_tests.rs +0 -0
  278. {rumdl-0.0.134 → rumdl-0.0.136}/tests/consistency_regression_tests.rs +0 -0
  279. {rumdl-0.0.134 → rumdl-0.0.136}/tests/cross_platform_compatibility_tests.rs +0 -0
  280. {rumdl-0.0.134 → rumdl-0.0.136}/tests/deeply_nested_lists_performance_test.rs +0 -0
  281. {rumdl-0.0.134 → rumdl-0.0.136}/tests/escaped_brackets_test.rs +0 -0
  282. {rumdl-0.0.134 → rumdl-0.0.136}/tests/final_confidence_assessment.rs +0 -0
  283. {rumdl-0.0.134 → rumdl-0.0.136}/tests/fixable_unfixable_config_test.rs +0 -0
  284. {rumdl-0.0.134 → rumdl-0.0.136}/tests/init_command_test.rs +0 -0
  285. {rumdl-0.0.134 → rumdl-0.0.136}/tests/init_tests.rs +0 -0
  286. {rumdl-0.0.134 → rumdl-0.0.136}/tests/inline_config_blocks_test.rs +0 -0
  287. {rumdl-0.0.134 → rumdl-0.0.136}/tests/inline_config_test.rs +0 -0
  288. {rumdl-0.0.134 → rumdl-0.0.136}/tests/integration_tests.rs +0 -0
  289. {rumdl-0.0.134 → rumdl-0.0.136}/tests/json_output_test.rs +0 -0
  290. {rumdl-0.0.134 → rumdl-0.0.136}/tests/kramdown_integration_test.rs +0 -0
  291. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lib.rs +0 -0
  292. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lsp_editor_integration_tests.rs +0 -0
  293. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lsp_formatting_tests.rs +0 -0
  294. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lsp_initialization_options_test.rs +0 -0
  295. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lsp_integration_tests.rs +0 -0
  296. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lsp_memory_leak_tests.rs +0 -0
  297. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lsp_mkdocs_flavor_test.rs +0 -0
  298. {rumdl-0.0.134 → rumdl-0.0.136}/tests/lsp_tests.rs +0 -0
  299. {rumdl-0.0.134 → rumdl-0.0.136}/tests/malformed_markdown_stress_tests.rs +0 -0
  300. {rumdl-0.0.134 → rumdl-0.0.136}/tests/markdownlint_cli_integration.rs +0 -0
  301. {rumdl-0.0.134 → rumdl-0.0.136}/tests/markdownlint_config_test.rs +0 -0
  302. {rumdl-0.0.134 → rumdl-0.0.136}/tests/markdownlintignore_test.rs +0 -0
  303. {rumdl-0.0.134 → rumdl-0.0.136}/tests/md013_reflow_integration_test.rs +0 -0
  304. {rumdl-0.0.134 → rumdl-0.0.136}/tests/md051_issue_39_regression_test.rs +0 -0
  305. {rumdl-0.0.134 → rumdl-0.0.136}/tests/nested_code_block_test.rs +0 -0
  306. {rumdl-0.0.134 → rumdl-0.0.136}/tests/output_format_integration_tests.rs +0 -0
  307. {rumdl-0.0.134 → rumdl-0.0.136}/tests/output_format_tests.rs +0 -0
  308. {rumdl-0.0.134 → rumdl-0.0.136}/tests/perf_check.rs +0 -0
  309. {rumdl-0.0.134 → rumdl-0.0.136}/tests/performance_validation_tests.rs +0 -0
  310. {rumdl-0.0.134 → rumdl-0.0.136}/tests/pyproject_config_tests.rs +0 -0
  311. {rumdl-0.0.134 → rumdl-0.0.136}/tests/python_bindings_test.rs +0 -0
  312. {rumdl-0.0.134 → rumdl-0.0.136}/tests/real_world_repository_tests.rs +0 -0
  313. {rumdl-0.0.134 → rumdl-0.0.136}/tests/regression_prevention_tests.rs +0 -0
  314. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/emphasis_edge_cases_test.rs +0 -0
  315. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/heading_edge_cases_test.rs +0 -0
  316. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/inline_content_edge_cases_test.rs +0 -0
  317. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/link_edge_cases_test.rs +0 -0
  318. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/list_rules_integration_test.rs +0 -0
  319. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md001_test.rs +0 -0
  320. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md001_unicode_test.rs +0 -0
  321. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md002_test.rs +0 -0
  322. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md003_test.rs +0 -0
  323. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md004_test.rs +0 -0
  324. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md005_dynamic_indent_test.rs +0 -0
  325. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md005_test.rs +0 -0
  326. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md005_unicode_test.rs +0 -0
  327. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md006_test.rs +0 -0
  328. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md006_unicode_test.rs +0 -0
  329. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md007_test.rs +0 -0
  330. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md010_test.rs +0 -0
  331. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md011_test.rs +0 -0
  332. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md012_test.rs +0 -0
  333. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md014_test.rs +0 -0
  334. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md018_test.rs +0 -0
  335. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md019_test.rs +0 -0
  336. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md020_test.rs +0 -0
  337. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md021_test.rs +0 -0
  338. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md022_test.rs +0 -0
  339. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md023_extended_test.rs +0 -0
  340. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md023_test.rs +0 -0
  341. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md024_test.rs +0 -0
  342. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md025_test.rs +0 -0
  343. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md026_kramdown_test.rs +0 -0
  344. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md026_test.rs +0 -0
  345. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md027_test.rs +0 -0
  346. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md028_md009_interaction_test.rs +0 -0
  347. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md028_test.rs +0 -0
  348. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md029_code_block_separation_test.rs +0 -0
  349. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md029_fix_test.rs +0 -0
  350. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md029_issue42_test.rs +0 -0
  351. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
  352. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
  353. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md029_test.rs +0 -0
  354. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md029_unicode_test.rs +0 -0
  355. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md030_test.rs +0 -0
  356. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md031_kramdown_test.rs +0 -0
  357. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md031_test.rs +0 -0
  358. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md032_test.rs +0 -0
  359. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md033_extended_test.rs +0 -0
  360. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md033_kramdown_test.rs +0 -0
  361. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md033_test.rs +0 -0
  362. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md034_ipv6_test.rs +0 -0
  363. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md034_test.rs +0 -0
  364. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md035_test.rs +0 -0
  365. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md036_test.rs +0 -0
  366. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md037_kramdown_test.rs +0 -0
  367. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md037_test.rs +0 -0
  368. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md038_nested_backticks_test.rs +0 -0
  369. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md038_test.rs +0 -0
  370. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md039_test.rs +0 -0
  371. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md040_test.rs +0 -0
  372. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md041_test.rs +0 -0
  373. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md042_test.rs +0 -0
  374. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md043_test.rs +0 -0
  375. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md044_test.rs +0 -0
  376. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md045_test.rs +0 -0
  377. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md046_test.rs +0 -0
  378. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md047_test.rs +0 -0
  379. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md048_test.rs +0 -0
  380. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md049_test.rs +0 -0
  381. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md050_test.rs +0 -0
  382. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_comprehensive_test.rs +0 -0
  383. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
  384. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_edge_cases_test.rs +0 -0
  385. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_issue_39_regression_test.rs +0 -0
  386. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
  387. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_property_based_test.rs +0 -0
  388. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_regression_prevention_test.rs +0 -0
  389. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_test.rs +0 -0
  390. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md051_unicode_security_test.rs +0 -0
  391. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md052_test.rs +0 -0
  392. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md053_additional_test.rs +0 -0
  393. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md053_proptest.rs +0 -0
  394. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md053_test.rs +0 -0
  395. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md054_test.rs +0 -0
  396. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md054_unicode_test.rs +0 -0
  397. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md055_test.rs +0 -0
  398. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md056_test.rs +0 -0
  399. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md057_test.rs +0 -0
  400. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md058_kramdown_test.rs +0 -0
  401. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/md058_test.rs +0 -0
  402. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/mkdocs_admonitions_test.rs +0 -0
  403. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
  404. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/mkdocs_extensions_test.rs +0 -0
  405. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/mkdocs_snippets_test.rs +0 -0
  406. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/mod.rs +0 -0
  407. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules/rule_interaction_test.rs +0 -0
  408. {rumdl-0.0.134 → rumdl-0.0.136}/tests/rules_mod_test.rs +0 -0
  409. {rumdl-0.0.134 → rumdl-0.0.136}/tests/skip_context_tests.rs +0 -0
  410. {rumdl-0.0.134 → rumdl-0.0.136}/tests/test_underscore_edge_cases.rs +0 -0
  411. {rumdl-0.0.134 → rumdl-0.0.136}/tests/thread_safety_tests.rs +0 -0
  412. {rumdl-0.0.134 → rumdl-0.0.136}/tests/unfixable_rules_test.rs +0 -0
  413. {rumdl-0.0.134 → rumdl-0.0.136}/tests/unicode_edge_case_tests.rs +0 -0
  414. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils/blockquote_utils_test.rs +0 -0
  415. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils/code_block_utils_extended_test.rs +0 -0
  416. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils/code_block_utils_test.rs +0 -0
  417. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils/core_utils_test.rs +0 -0
  418. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils/front_matter_utils_test.rs +0 -0
  419. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils/line_index_test.rs +0 -0
  420. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils/mod.rs +0 -0
  421. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils_markdown_edge_cases.rs +0 -0
  422. {rumdl-0.0.134 → rumdl-0.0.136}/tests/utils_tests.rs +0 -0
  423. {rumdl-0.0.134 → rumdl-0.0.136}/tests/vscode_extension_fixes.rs +0 -0
  424. {rumdl-0.0.134 → rumdl-0.0.136}/tests/vscode_test.rs +0 -0
  425. {rumdl-0.0.134 → rumdl-0.0.136}/tests/vscode_tests.rs +0 -0
  426. {rumdl-0.0.134 → rumdl-0.0.136}/tests/vscode_windows_comprehensive_test.rs +0 -0
  427. {rumdl-0.0.134 → rumdl-0.0.136}/tests/vscode_windows_test.rs +0 -0
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.0.136] - 2025-09-03
11
+
12
+ ## [0.0.135] - 2025-09-03
13
+
10
14
  ## [0.0.134] - 2025-09-02
11
15
 
12
16
  ### Added
@@ -558,7 +562,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
558
562
 
559
563
  - Initial implementation of remaining rules for markdownlint parity
560
564
 
561
- [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.134...HEAD
565
+ [Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.136...HEAD
566
+ [0.0.136]: https://github.com/rvben/rumdl/compare/v0.0.135...v0.0.136
567
+ [0.0.135]: https://github.com/rvben/rumdl/compare/v0.0.134...v0.0.135
562
568
  [0.0.134]: https://github.com/rvben/rumdl/compare/v0.0.133...v0.0.134
563
569
  [0.0.133]: https://github.com/rvben/rumdl/compare/v0.0.132...v0.0.133
564
570
  [0.0.132]: https://github.com/rvben/rumdl/compare/v0.0.131...v0.0.132
@@ -278,9 +278,9 @@ dependencies = [
278
278
 
279
279
  [[package]]
280
280
  name = "clap"
281
- version = "4.5.46"
281
+ version = "4.5.47"
282
282
  source = "registry+https://github.com/rust-lang/crates.io-index"
283
- checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57"
283
+ checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931"
284
284
  dependencies = [
285
285
  "clap_builder",
286
286
  "clap_derive",
@@ -288,9 +288,9 @@ dependencies = [
288
288
 
289
289
  [[package]]
290
290
  name = "clap_builder"
291
- version = "4.5.46"
291
+ version = "4.5.47"
292
292
  source = "registry+https://github.com/rust-lang/crates.io-index"
293
- checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41"
293
+ checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6"
294
294
  dependencies = [
295
295
  "anstream",
296
296
  "anstyle",
@@ -300,9 +300,9 @@ dependencies = [
300
300
 
301
301
  [[package]]
302
302
  name = "clap_derive"
303
- version = "4.5.45"
303
+ version = "4.5.47"
304
304
  source = "registry+https://github.com/rust-lang/crates.io-index"
305
- checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6"
305
+ checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c"
306
306
  dependencies = [
307
307
  "heck",
308
308
  "proc-macro2",
@@ -1632,7 +1632,7 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
1632
1632
 
1633
1633
  [[package]]
1634
1634
  name = "rumdl"
1635
- version = "0.0.134"
1635
+ version = "0.0.136"
1636
1636
  dependencies = [
1637
1637
  "anyhow",
1638
1638
  "assert_cmd",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.134"
3
+ version = "0.0.136"
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)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.134
3
+ Version: 0.0.136
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -34,11 +34,8 @@ Project-URL: Repository, https://github.com/rvben/rumdl.git
34
34
  ![rumdl Logo](https://raw.githubusercontent.com/rvben/rumdl/main/assets/logo.png)
35
35
 
36
36
  [![Build Status](https://img.shields.io/github/actions/workflow/status/rvben/rumdl/build.yml?branch=main)](https://github.com/rvben/rumdl/actions)
37
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
38
- [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
39
- [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/)
40
- [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest)
41
- [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
37
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
38
+ [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest) [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
42
39
 
43
40
  ## A modern Markdown linter and formatter, built for speed with Rust
44
41
 
@@ -65,9 +62,8 @@ rumdl init
65
62
 
66
63
  ## Overview
67
64
 
68
- rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices
69
- in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting,
70
- rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
65
+ rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff) 's approach to
66
+ Python linting, rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
71
67
 
72
68
  It offers:
73
69
 
@@ -206,7 +202,8 @@ The extension provides:
206
202
  - 📋 Hover tooltips with rule documentation
207
203
  - ⚡ Lightning-fast performance with zero lag
208
204
 
209
- The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
205
+ The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the
206
+ [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
210
207
 
211
208
  ## Usage
212
209
 
@@ -252,6 +249,9 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
252
249
 
253
250
  # Don't respect gitignore files (note: --respect-gitignore defaults to true)
254
251
  rumdl check --respect-gitignore=false .
252
+
253
+ # Force exclude patterns even for explicitly specified files (useful for pre-commit)
254
+ rumdl check excluded.md --force-exclude # Will respect exclude patterns in config
255
255
  ```
256
256
 
257
257
  ### Stdin/Stdout Formatting
@@ -313,6 +313,33 @@ repos:
313
313
 
314
314
  When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
315
315
 
316
+ ### Excluding Files in Pre-commit
317
+
318
+ By default, when pre-commit passes files explicitly to rumdl, the exclude patterns in your `.rumdl.toml` configuration file are ignored. This is intentional behavior - if you explicitly specify a
319
+ file, it gets checked.
320
+
321
+ However, for pre-commit workflows where you want to exclude certain files even when they're passed explicitly, you have two options:
322
+
323
+ 1. **Use `force_exclude` in your configuration file:**
324
+
325
+ ```toml
326
+ # .rumdl.toml
327
+ [global]
328
+ exclude = ["generated/*.md", "vendor/**"]
329
+ force_exclude = true # Enforce excludes even for explicitly provided files
330
+ ```
331
+
332
+ 2. **Use the `--force-exclude` flag in your pre-commit config:**
333
+
334
+ ```yaml
335
+ repos:
336
+ - repo: https://github.com/rvben/rumdl-pre-commit
337
+ rev: v0.0.99
338
+ hooks:
339
+ - id: rumdl
340
+ args: [--force-exclude] # Respect exclude patterns from config
341
+ ```
342
+
316
343
  ## CI/CD Integration
317
344
 
318
345
  ### GitHub Actions
@@ -373,6 +400,7 @@ Lint Markdown files and print warnings/errors (main subcommand)
373
400
  - `--exclude <patterns>`: Exclude specific files or directories (comma-separated glob patterns)
374
401
  - `--include <patterns>`: Include only specific files or directories (comma-separated glob patterns)
375
402
  - `--respect-gitignore`: Respect .gitignore files when scanning directories (does not apply to explicitly provided paths)
403
+ - `--force-exclude`: Enforce exclude patterns even for explicitly specified files (useful for pre-commit hooks)
376
404
  - `-v, --verbose`: Show detailed output
377
405
  - `--profile`: Show profiling information
378
406
  - `--statistics`: Show rule violation statistics summary
@@ -569,9 +597,8 @@ rumdl can be configured in several ways:
569
597
 
570
598
  ### Configuration Discovery
571
599
 
572
- rumdl automatically searches for configuration files by traversing up the directory tree from the current
573
- working directory, similar to tools like `git`, `ruff`, and `eslint`. This means you can run rumdl from any
574
- subdirectory of your project and it will find the configuration file at the project root.
600
+ rumdl automatically searches for configuration files by traversing up the directory tree from the current working directory, similar to tools like `git` , `ruff` , and `eslint` . This means you can
601
+ run rumdl from any subdirectory of your project and it will find the configuration file at the project root.
575
602
 
576
603
  The search follows these rules:
577
604
  - Searches upward for `.rumdl.toml`, `rumdl.toml`, or `pyproject.toml` (with `[tool.rumdl]` section)
@@ -624,13 +651,13 @@ indent = 2
624
651
 
625
652
  rumdl provides seamless compatibility with existing markdownlint configurations:
626
653
 
627
- **Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
654
+ ** Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
628
655
 
629
656
  - `.markdownlint.json` / `.markdownlint.jsonc`
630
657
  - `.markdownlint.yaml` / `.markdownlint.yml`
631
658
  - `markdownlint.json` / `markdownlint.yaml`
632
659
 
633
- **Explicit Import**: Convert markdownlint configs to rumdl format:
660
+ ** Explicit Import**: Convert markdownlint configs to rumdl format:
634
661
 
635
662
  ```bash
636
663
  # Convert to .rumdl.toml
@@ -718,8 +745,8 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
718
745
 
719
746
  #### Effective Configuration (`rumdl config`)
720
747
 
721
- The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value.
722
- The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
748
+ The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value. The output is colorized and
749
+ the `[from ...]` annotation is globally aligned for easy scanning.
723
750
 
724
751
  #### Example output
725
752
 
@@ -736,7 +763,7 @@ The output is colorized and the `[from ...]` annotation is globally aligned for
736
763
  ...
737
764
  ```
738
765
 
739
- - **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
766
+ - ** Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
740
767
  - Green: CLI
741
768
  - Blue: `.rumdl.toml`
742
769
  - Magenta: `pyproject.toml`
@@ -754,6 +781,7 @@ disable = []
754
781
  exclude = []
755
782
  include = []
756
783
  respect_gitignore = true
784
+ force_exclude = false # Set to true to exclude files even when explicitly specified
757
785
 
758
786
  [MD013]
759
787
  line_length = 80
@@ -5,11 +5,8 @@
5
5
  ![rumdl Logo](https://raw.githubusercontent.com/rvben/rumdl/main/assets/logo.png)
6
6
 
7
7
  [![Build Status](https://img.shields.io/github/actions/workflow/status/rvben/rumdl/build.yml?branch=main)](https://github.com/rvben/rumdl/actions)
8
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
- [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
10
- [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/)
11
- [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest)
12
- [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/rumdl)](https://crates.io/crates/rumdl)
9
+ [![PyPI](https://img.shields.io/pypi/v/rumdl)](https://pypi.org/project/rumdl/) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/rvben/rumdl)](https://github.com/rvben/rumdl/releases/latest) [![GitHub stars](https://img.shields.io/github/stars/rvben/rumdl)](https://github.com/rvben/rumdl/stargazers)
13
10
 
14
11
  ## A modern Markdown linter and formatter, built for speed with Rust
15
12
 
@@ -36,9 +33,8 @@ rumdl init
36
33
 
37
34
  ## Overview
38
35
 
39
- rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices
40
- in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff)'s approach to Python linting,
41
- rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
36
+ rumdl is a high-performance Markdown linter and formatter that helps ensure consistency and best practices in your Markdown files. Inspired by [ruff](https://github.com/astral-sh/ruff) 's approach to
37
+ Python linting, rumdl brings similar speed and developer experience improvements to the Markdown ecosystem.
42
38
 
43
39
  It offers:
44
40
 
@@ -177,7 +173,8 @@ The extension provides:
177
173
  - 📋 Hover tooltips with rule documentation
178
174
  - ⚡ Lightning-fast performance with zero lag
179
175
 
180
- The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
176
+ The CLI will automatically detect VS Code, Cursor, or Windsurf and install the appropriate extension. See the
177
+ [VS Code extension documentation](https://github.com/rvben/rumdl/blob/main/docs/vscode-extension.md) for more details.
181
178
 
182
179
  ## Usage
183
180
 
@@ -223,6 +220,9 @@ rumdl check --include "docs/**/*.md" --exclude "docs/temp,docs/drafts" .
223
220
 
224
221
  # Don't respect gitignore files (note: --respect-gitignore defaults to true)
225
222
  rumdl check --respect-gitignore=false .
223
+
224
+ # Force exclude patterns even for explicitly specified files (useful for pre-commit)
225
+ rumdl check excluded.md --force-exclude # Will respect exclude patterns in config
226
226
  ```
227
227
 
228
228
  ### Stdin/Stdout Formatting
@@ -284,6 +284,33 @@ repos:
284
284
 
285
285
  When you run `pre-commit install` or `pre-commit run`, pre-commit will automatically install `rumdl` in an isolated Python environment using pip. You do **not** need to install rumdl manually.
286
286
 
287
+ ### Excluding Files in Pre-commit
288
+
289
+ By default, when pre-commit passes files explicitly to rumdl, the exclude patterns in your `.rumdl.toml` configuration file are ignored. This is intentional behavior - if you explicitly specify a
290
+ file, it gets checked.
291
+
292
+ However, for pre-commit workflows where you want to exclude certain files even when they're passed explicitly, you have two options:
293
+
294
+ 1. **Use `force_exclude` in your configuration file:**
295
+
296
+ ```toml
297
+ # .rumdl.toml
298
+ [global]
299
+ exclude = ["generated/*.md", "vendor/**"]
300
+ force_exclude = true # Enforce excludes even for explicitly provided files
301
+ ```
302
+
303
+ 2. **Use the `--force-exclude` flag in your pre-commit config:**
304
+
305
+ ```yaml
306
+ repos:
307
+ - repo: https://github.com/rvben/rumdl-pre-commit
308
+ rev: v0.0.99
309
+ hooks:
310
+ - id: rumdl
311
+ args: [--force-exclude] # Respect exclude patterns from config
312
+ ```
313
+
287
314
  ## CI/CD Integration
288
315
 
289
316
  ### GitHub Actions
@@ -344,6 +371,7 @@ Lint Markdown files and print warnings/errors (main subcommand)
344
371
  - `--exclude <patterns>`: Exclude specific files or directories (comma-separated glob patterns)
345
372
  - `--include <patterns>`: Include only specific files or directories (comma-separated glob patterns)
346
373
  - `--respect-gitignore`: Respect .gitignore files when scanning directories (does not apply to explicitly provided paths)
374
+ - `--force-exclude`: Enforce exclude patterns even for explicitly specified files (useful for pre-commit hooks)
347
375
  - `-v, --verbose`: Show detailed output
348
376
  - `--profile`: Show profiling information
349
377
  - `--statistics`: Show rule violation statistics summary
@@ -540,9 +568,8 @@ rumdl can be configured in several ways:
540
568
 
541
569
  ### Configuration Discovery
542
570
 
543
- rumdl automatically searches for configuration files by traversing up the directory tree from the current
544
- working directory, similar to tools like `git`, `ruff`, and `eslint`. This means you can run rumdl from any
545
- subdirectory of your project and it will find the configuration file at the project root.
571
+ rumdl automatically searches for configuration files by traversing up the directory tree from the current working directory, similar to tools like `git` , `ruff` , and `eslint` . This means you can
572
+ run rumdl from any subdirectory of your project and it will find the configuration file at the project root.
546
573
 
547
574
  The search follows these rules:
548
575
  - Searches upward for `.rumdl.toml`, `rumdl.toml`, or `pyproject.toml` (with `[tool.rumdl]` section)
@@ -595,13 +622,13 @@ indent = 2
595
622
 
596
623
  rumdl provides seamless compatibility with existing markdownlint configurations:
597
624
 
598
- **Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
625
+ ** Automatic Discovery**: rumdl automatically detects and loads markdownlint config files:
599
626
 
600
627
  - `.markdownlint.json` / `.markdownlint.jsonc`
601
628
  - `.markdownlint.yaml` / `.markdownlint.yml`
602
629
  - `markdownlint.json` / `markdownlint.yaml`
603
630
 
604
- **Explicit Import**: Convert markdownlint configs to rumdl format:
631
+ ** Explicit Import**: Convert markdownlint configs to rumdl format:
605
632
 
606
633
  ```bash
607
634
  # Convert to .rumdl.toml
@@ -689,8 +716,8 @@ Both kebab-case (`line-length`, `ignore-gitignore`) and snake_case (`line_length
689
716
 
690
717
  #### Effective Configuration (`rumdl config`)
691
718
 
692
- The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value.
693
- The output is colorized and the `[from ...]` annotation is globally aligned for easy scanning.
719
+ The `rumdl config` command prints the **full effective configuration** (defaults + all overrides), showing every key and its value, annotated with the source of each value. The output is colorized and
720
+ the `[from ...]` annotation is globally aligned for easy scanning.
694
721
 
695
722
  #### Example output
696
723
 
@@ -707,7 +734,7 @@ The output is colorized and the `[from ...]` annotation is globally aligned for
707
734
  ...
708
735
  ```
709
736
 
710
- - **Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
737
+ - ** Keys** are cyan, **values** are yellow, and the `[from ...]` annotation is colored by source:
711
738
  - Green: CLI
712
739
  - Blue: `.rumdl.toml`
713
740
  - Magenta: `pyproject.toml`
@@ -725,6 +752,7 @@ disable = []
725
752
  exclude = []
726
753
  include = []
727
754
  respect_gitignore = true
755
+ force_exclude = false # Set to true to exclude files even when explicitly specified
728
756
 
729
757
  [MD013]
730
758
  line_length = 80
@@ -174,6 +174,13 @@ pub struct GlobalConfig {
174
174
  /// When set, adjusts parsing and validation rules for that specific Markdown variant
175
175
  #[serde(default)]
176
176
  pub flavor: MarkdownFlavor,
177
+
178
+ /// Whether to enforce exclude and extend-exclude patterns even for paths that are passed explicitly.
179
+ /// By default (false), rumdl will lint any paths passed in directly, even if they would typically be excluded.
180
+ /// Setting this to true will cause rumdl to respect exclusions unequivocally.
181
+ /// This is useful for pre-commit, which explicitly passes all changed files.
182
+ #[serde(default)]
183
+ pub force_exclude: bool,
177
184
  }
178
185
 
179
186
  fn default_respect_gitignore() -> bool {
@@ -198,6 +205,7 @@ impl Default for GlobalConfig {
198
205
  fixable: Vec::new(),
199
206
  unfixable: Vec::new(),
200
207
  flavor: MarkdownFlavor::default(),
208
+ force_exclude: false,
201
209
  }
202
210
  }
203
211
  }
@@ -1115,6 +1123,7 @@ pub struct SourcedGlobalConfig {
1115
1123
  pub fixable: SourcedValue<Vec<String>>,
1116
1124
  pub unfixable: SourcedValue<Vec<String>>,
1117
1125
  pub flavor: SourcedValue<MarkdownFlavor>,
1126
+ pub force_exclude: SourcedValue<bool>,
1118
1127
  }
1119
1128
 
1120
1129
  impl Default for SourcedGlobalConfig {
@@ -1130,6 +1139,7 @@ impl Default for SourcedGlobalConfig {
1130
1139
  fixable: SourcedValue::new(Vec::new(), ConfigSource::Default),
1131
1140
  unfixable: SourcedValue::new(Vec::new(), ConfigSource::Default),
1132
1141
  flavor: SourcedValue::new(MarkdownFlavor::default(), ConfigSource::Default),
1142
+ force_exclude: SourcedValue::new(false, ConfigSource::Default),
1133
1143
  }
1134
1144
  }
1135
1145
  }
@@ -1228,6 +1238,19 @@ impl SourcedConfig {
1228
1238
  fragment.global.flavor.overrides.first().and_then(|o| o.line),
1229
1239
  );
1230
1240
 
1241
+ // Merge force_exclude
1242
+ self.global.force_exclude.merge_override(
1243
+ fragment.global.force_exclude.value,
1244
+ fragment.global.force_exclude.source,
1245
+ fragment
1246
+ .global
1247
+ .force_exclude
1248
+ .overrides
1249
+ .first()
1250
+ .and_then(|o| o.file.clone()),
1251
+ fragment.global.force_exclude.overrides.first().and_then(|o| o.line),
1252
+ );
1253
+
1231
1254
  // Merge output_format if present
1232
1255
  if let Some(output_format_fragment) = fragment.global.output_format {
1233
1256
  if let Some(ref mut output_format) = self.global.output_format {
@@ -1608,6 +1631,7 @@ impl From<SourcedConfig> for Config {
1608
1631
  fixable: sourced.global.fixable.value,
1609
1632
  unfixable: sourced.global.unfixable.value,
1610
1633
  flavor: sourced.global.flavor.value,
1634
+ force_exclude: sourced.global.force_exclude.value,
1611
1635
  };
1612
1636
  Config { global, rules }
1613
1637
  }
@@ -1886,6 +1910,15 @@ fn parse_pyproject_toml(content: &str, path: &str) -> Result<Option<SourcedConfi
1886
1910
  .push_override(value, source, file.clone(), None);
1887
1911
  }
1888
1912
 
1913
+ if let Some(force_exclude) = table.get("force-exclude").or_else(|| table.get("force_exclude"))
1914
+ && let Ok(value) = bool::deserialize(force_exclude.clone())
1915
+ {
1916
+ fragment
1917
+ .global
1918
+ .force_exclude
1919
+ .push_override(value, source, file.clone(), None);
1920
+ }
1921
+
1889
1922
  if let Some(output_format) = table.get("output-format").or_else(|| table.get("output_format"))
1890
1923
  && let Ok(value) = String::deserialize(output_format.clone())
1891
1924
  {
@@ -1968,6 +2001,8 @@ fn parse_pyproject_toml(content: &str, path: &str) -> Result<Option<SourcedConfi
1968
2001
  "exclude",
1969
2002
  "respect_gitignore",
1970
2003
  "respect-gitignore", // Added kebab-case here too
2004
+ "force_exclude",
2005
+ "force-exclude",
1971
2006
  "line_length",
1972
2007
  "line-length",
1973
2008
  "output_format",
@@ -2167,6 +2202,23 @@ fn parse_rumdl_toml(content: &str, path: &str) -> Result<SourcedConfigFragment,
2167
2202
  );
2168
2203
  }
2169
2204
  }
2205
+ "force_exclude" | "force-exclude" => {
2206
+ // Handle both cases
2207
+ if let Some(toml_edit::Value::Boolean(formatted_bool)) = value_item.as_value() {
2208
+ let val = *formatted_bool.value();
2209
+ fragment
2210
+ .global
2211
+ .force_exclude
2212
+ .push_override(val, source, file.clone(), None);
2213
+ } else {
2214
+ log::warn!(
2215
+ "[WARN] Expected boolean for global key '{}' in {}, found {}",
2216
+ key,
2217
+ path,
2218
+ value_item.type_name()
2219
+ );
2220
+ }
2221
+ }
2170
2222
  "line_length" | "line-length" => {
2171
2223
  // Handle both cases
2172
2224
  if let Some(toml_edit::Value::Integer(formatted_int)) = value_item.as_value() {
@@ -300,6 +300,13 @@ struct CheckArgs {
300
300
  /// Run in watch mode by re-running whenever files change
301
301
  #[arg(short, long, help = "Run in watch mode by re-running whenever files change")]
302
302
  watch: bool,
303
+
304
+ /// Enforce exclude patterns even for paths that are passed explicitly.
305
+ /// By default, rumdl will lint any paths passed in directly, even if they would typically be excluded.
306
+ /// Setting this flag will cause rumdl to respect exclusions unequivocally.
307
+ /// This is useful for pre-commit, which explicitly passes all changed files.
308
+ #[arg(long, help = "Enforce exclude patterns even for explicitly specified files")]
309
+ force_exclude: bool,
303
310
  }
304
311
 
305
312
  // Get a complete set of enabled rules based on CLI options and config
@@ -591,12 +598,15 @@ fn find_markdown_files(
591
598
  // --- Pre-check for explicit file paths ---
592
599
  // If not in discovery mode, validate that specified paths exist
593
600
  if !is_discovery_mode {
601
+ // Check if we should apply excludes to explicitly provided files
602
+ let should_force_exclude = args.force_exclude || config.global.force_exclude;
603
+
594
604
  for path_str in paths {
595
605
  let path = Path::new(path_str);
596
606
  if !path.exists() {
597
607
  return Err(format!("File not found: {path_str}").into());
598
608
  }
599
- // If it's a file, check if it's a markdown file and add it directly
609
+ // If it's a file, check if it's a markdown file
600
610
  if path.is_file()
601
611
  && let Some(ext) = path.extension()
602
612
  && (ext == "md" || ext == "markdown")
@@ -606,12 +616,37 @@ fn find_markdown_files(
606
616
  } else {
607
617
  path_str.clone()
608
618
  };
609
- file_paths.push(cleaned_path);
619
+
620
+ // If force_exclude is enabled, check if this file should be excluded
621
+ if should_force_exclude && !final_exclude_patterns.is_empty() {
622
+ let mut should_exclude = false;
623
+ for pattern in &final_exclude_patterns {
624
+ // Use globset for pattern matching
625
+ if let Ok(glob) = globset::Glob::new(pattern) {
626
+ let matcher = glob.compile_matcher();
627
+ if matcher.is_match(&cleaned_path) {
628
+ should_exclude = true;
629
+ if args.verbose {
630
+ eprintln!(
631
+ "Excluding explicitly provided file due to force_exclude: {cleaned_path}"
632
+ );
633
+ }
634
+ break;
635
+ }
636
+ }
637
+ }
638
+ if !should_exclude {
639
+ file_paths.push(cleaned_path);
640
+ }
641
+ } else {
642
+ // Default behavior: add all explicitly provided files
643
+ file_paths.push(cleaned_path);
644
+ }
610
645
  }
611
646
  }
612
647
 
613
648
  // If we found files directly, skip the walker
614
- if !file_paths.is_empty() {
649
+ if !file_paths.is_empty() || should_force_exclude {
615
650
  file_paths.sort();
616
651
  file_paths.dedup();
617
652
  return Ok(file_paths);