rumdl 0.0.77__tar.gz → 0.0.79__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 (263) hide show
  1. {rumdl-0.0.77 → rumdl-0.0.79}/Cargo.lock +1 -1
  2. {rumdl-0.0.77 → rumdl-0.0.79}/Cargo.toml +1 -1
  3. {rumdl-0.0.77 → rumdl-0.0.79}/PKG-INFO +1 -1
  4. {rumdl-0.0.77 → rumdl-0.0.79}/src/config.rs +1 -1
  5. {rumdl-0.0.77 → rumdl-0.0.79}/src/lsp/server.rs +60 -14
  6. {rumdl-0.0.77 → rumdl-0.0.79}/src/main.rs +47 -33
  7. {rumdl-0.0.77 → rumdl-0.0.79}/.rumdl.toml +0 -0
  8. {rumdl-0.0.77 → rumdl-0.0.79}/MANIFEST.in +0 -0
  9. {rumdl-0.0.77 → rumdl-0.0.79}/Makefile +0 -0
  10. {rumdl-0.0.77 → rumdl-0.0.79}/README.md +0 -0
  11. {rumdl-0.0.77 → rumdl-0.0.79}/assets/logo.png +0 -0
  12. {rumdl-0.0.77 → rumdl-0.0.79}/benches/fix_performance.rs +0 -0
  13. {rumdl-0.0.77 → rumdl-0.0.79}/benches/range_performance.rs +0 -0
  14. {rumdl-0.0.77 → rumdl-0.0.79}/benches/range_utils_benchmark.rs +0 -0
  15. {rumdl-0.0.77 → rumdl-0.0.79}/benches/rule_performance.rs +0 -0
  16. {rumdl-0.0.77 → rumdl-0.0.79}/benches/simple_fix_bench.rs +0 -0
  17. {rumdl-0.0.77 → rumdl-0.0.79}/docs/RULES.md +0 -0
  18. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md001.md +0 -0
  19. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md002.md +0 -0
  20. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md003.md +0 -0
  21. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md004.md +0 -0
  22. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md005.md +0 -0
  23. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md006.md +0 -0
  24. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md007.md +0 -0
  25. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md009.md +0 -0
  26. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md010.md +0 -0
  27. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md011.md +0 -0
  28. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md012.md +0 -0
  29. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md013.md +0 -0
  30. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md014.md +0 -0
  31. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md018.md +0 -0
  32. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md019.md +0 -0
  33. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md020.md +0 -0
  34. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md021.md +0 -0
  35. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md022.md +0 -0
  36. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md023.md +0 -0
  37. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md024.md +0 -0
  38. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md025.md +0 -0
  39. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md026.md +0 -0
  40. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md027.md +0 -0
  41. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md028.md +0 -0
  42. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md029.md +0 -0
  43. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md030.md +0 -0
  44. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md031.md +0 -0
  45. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md032.md +0 -0
  46. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md033.md +0 -0
  47. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md034.md +0 -0
  48. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md035.md +0 -0
  49. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md036.md +0 -0
  50. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md037.md +0 -0
  51. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md038.md +0 -0
  52. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md039.md +0 -0
  53. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md040.md +0 -0
  54. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md041.md +0 -0
  55. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md042.md +0 -0
  56. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md043.md +0 -0
  57. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md044.md +0 -0
  58. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md045.md +0 -0
  59. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md046.md +0 -0
  60. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md047.md +0 -0
  61. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md048.md +0 -0
  62. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md049.md +0 -0
  63. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md050.md +0 -0
  64. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md051.md +0 -0
  65. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md052.md +0 -0
  66. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md053.md +0 -0
  67. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md054.md +0 -0
  68. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md055.md +0 -0
  69. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md056.md +0 -0
  70. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md057.md +0 -0
  71. {rumdl-0.0.77 → rumdl-0.0.79}/docs/md058.md +0 -0
  72. {rumdl-0.0.77 → rumdl-0.0.79}/issues/plan-rule-parity-with-markdownlint.md +0 -0
  73. {rumdl-0.0.77 → rumdl-0.0.79}/parity_check.py +0 -0
  74. {rumdl-0.0.77 → rumdl-0.0.79}/pyproject.toml +0 -0
  75. {rumdl-0.0.77 → rumdl-0.0.79}/python/MANIFEST.in +0 -0
  76. {rumdl-0.0.77 → rumdl-0.0.79}/python/PYTHON-README.md +0 -0
  77. {rumdl-0.0.77 → rumdl-0.0.79}/python/rumdl/__init__.py +0 -0
  78. {rumdl-0.0.77 → rumdl-0.0.79}/python/rumdl/__main__.py +0 -0
  79. {rumdl-0.0.77 → rumdl-0.0.79}/python/rumdl/py.typed +0 -0
  80. {rumdl-0.0.77 → rumdl-0.0.79}/rumdl.toml.example +0 -0
  81. {rumdl-0.0.77 → rumdl-0.0.79}/src/init.rs +0 -0
  82. {rumdl-0.0.77 → rumdl-0.0.79}/src/lib.rs +0 -0
  83. {rumdl-0.0.77 → rumdl-0.0.79}/src/lint_context.rs +0 -0
  84. {rumdl-0.0.77 → rumdl-0.0.79}/src/lsp/mod.rs +0 -0
  85. {rumdl-0.0.77 → rumdl-0.0.79}/src/lsp/types.rs +0 -0
  86. {rumdl-0.0.77 → rumdl-0.0.79}/src/markdownlint_config.rs +0 -0
  87. {rumdl-0.0.77 → rumdl-0.0.79}/src/parallel.rs +0 -0
  88. {rumdl-0.0.77 → rumdl-0.0.79}/src/performance.rs +0 -0
  89. {rumdl-0.0.77 → rumdl-0.0.79}/src/profiling.rs +0 -0
  90. {rumdl-0.0.77 → rumdl-0.0.79}/src/python.rs +0 -0
  91. {rumdl-0.0.77 → rumdl-0.0.79}/src/rule.rs +0 -0
  92. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/blockquote_utils.rs +0 -0
  93. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/code_block_utils.rs +0 -0
  94. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/code_fence_utils.rs +0 -0
  95. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/emphasis_style.rs +0 -0
  96. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/front_matter_utils.rs +0 -0
  97. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/heading_utils.rs +0 -0
  98. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/list_utils.rs +0 -0
  99. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md001_heading_increment.rs +0 -0
  100. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md002_first_heading_h1.rs +0 -0
  101. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md003_heading_style.rs +0 -0
  102. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md004_unordered_list_style.rs +0 -0
  103. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md005_list_indent.rs +0 -0
  104. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md006_start_bullets.rs +0 -0
  105. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md007_ul_indent.rs +0 -0
  106. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md009_trailing_spaces.rs +0 -0
  107. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md010_no_hard_tabs.rs +0 -0
  108. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md011_no_reversed_links.rs +0 -0
  109. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md012_no_multiple_blanks.rs +0 -0
  110. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md013_line_length.rs +0 -0
  111. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md014_commands_show_output.rs +0 -0
  112. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md018_no_missing_space_atx.rs +0 -0
  113. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md019_no_multiple_space_atx.rs +0 -0
  114. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
  115. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
  116. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md022_blanks_around_headings.rs +0 -0
  117. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md023_heading_start_left.rs +0 -0
  118. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md024_no_duplicate_heading.rs +0 -0
  119. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md025_single_title.rs +0 -0
  120. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md026_no_trailing_punctuation.rs +0 -0
  121. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
  122. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md028_no_blanks_blockquote.rs +0 -0
  123. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md029_ordered_list_prefix.rs +0 -0
  124. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md030_list_marker_space.rs +0 -0
  125. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md031_blanks_around_fences.rs +0 -0
  126. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md032_blanks_around_lists.rs +0 -0
  127. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md033_no_inline_html.rs +0 -0
  128. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md034_no_bare_urls.rs +0 -0
  129. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md035_hr_style.rs +0 -0
  130. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md036_no_emphasis_only_first.rs +0 -0
  131. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md037_spaces_around_emphasis.rs +0 -0
  132. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md038_no_space_in_code.rs +0 -0
  133. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md039_no_space_in_links.rs +0 -0
  134. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md040_fenced_code_language.rs +0 -0
  135. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md041_first_line_heading.rs +0 -0
  136. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md042_no_empty_links.rs +0 -0
  137. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md043_required_headings.rs +0 -0
  138. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md044_proper_names.rs +0 -0
  139. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md045_no_alt_text.rs +0 -0
  140. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md046_code_block_style.rs +0 -0
  141. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md047_single_trailing_newline.rs +0 -0
  142. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md048_code_fence_style.rs +0 -0
  143. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md049_emphasis_style.rs +0 -0
  144. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md050_strong_style.rs +0 -0
  145. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md051_link_fragments.rs +0 -0
  146. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md052_reference_links_images.rs +0 -0
  147. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md053_link_image_reference_definitions.rs +0 -0
  148. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md054_link_image_style.rs +0 -0
  149. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md055_table_pipe_style.rs +0 -0
  150. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md056_table_column_count.rs +0 -0
  151. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md057_existing_relative_links.rs +0 -0
  152. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/md058_blanks_around_tables.rs +0 -0
  153. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/mod.rs +0 -0
  154. {rumdl-0.0.77 → rumdl-0.0.79}/src/rules/strong_style.rs +0 -0
  155. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/ast_utils.rs +0 -0
  156. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/code_block_utils.rs +0 -0
  157. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/document_structure.rs +0 -0
  158. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/early_returns.rs +0 -0
  159. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/element_cache.rs +0 -0
  160. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/markdown_elements.rs +0 -0
  161. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/mod.rs +0 -0
  162. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/range_utils.rs +0 -0
  163. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/regex_cache.rs +0 -0
  164. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/string_interner.rs +0 -0
  165. {rumdl-0.0.77 → rumdl-0.0.79}/src/utils/table_utils.rs +0 -0
  166. {rumdl-0.0.77 → rumdl-0.0.79}/tests/advanced_integration_tests.rs +0 -0
  167. {rumdl-0.0.77 → rumdl-0.0.79}/tests/character_ranges/additional_tests.rs +0 -0
  168. {rumdl-0.0.77 → rumdl-0.0.79}/tests/character_ranges/basic_tests.rs +0 -0
  169. {rumdl-0.0.77 → rumdl-0.0.79}/tests/character_ranges/comprehensive_tests.rs +0 -0
  170. {rumdl-0.0.77 → rumdl-0.0.79}/tests/character_ranges/extended_tests.rs +0 -0
  171. {rumdl-0.0.77 → rumdl-0.0.79}/tests/character_ranges/mod.rs +0 -0
  172. {rumdl-0.0.77 → rumdl-0.0.79}/tests/character_ranges/unicode_utils.rs +0 -0
  173. {rumdl-0.0.77 → rumdl-0.0.79}/tests/cli_duplication_test.rs +0 -0
  174. {rumdl-0.0.77 → rumdl-0.0.79}/tests/cli_integration_tests.rs +0 -0
  175. {rumdl-0.0.77 → rumdl-0.0.79}/tests/commonmark_compliance_tests.rs +0 -0
  176. {rumdl-0.0.77 → rumdl-0.0.79}/tests/comprehensive_integration_tests.rs +0 -0
  177. {rumdl-0.0.77 → rumdl-0.0.79}/tests/config_application_tests.rs +0 -0
  178. {rumdl-0.0.77 → rumdl-0.0.79}/tests/config_tests.rs +0 -0
  179. {rumdl-0.0.77 → rumdl-0.0.79}/tests/init_command_test.rs +0 -0
  180. {rumdl-0.0.77 → rumdl-0.0.79}/tests/init_tests.rs +0 -0
  181. {rumdl-0.0.77 → rumdl-0.0.79}/tests/integration_tests.rs +0 -0
  182. {rumdl-0.0.77 → rumdl-0.0.79}/tests/json_output_test.rs +0 -0
  183. {rumdl-0.0.77 → rumdl-0.0.79}/tests/lib.rs +0 -0
  184. {rumdl-0.0.77 → rumdl-0.0.79}/tests/lsp_integration_tests.rs +0 -0
  185. {rumdl-0.0.77 → rumdl-0.0.79}/tests/lsp_tests.rs +0 -0
  186. {rumdl-0.0.77 → rumdl-0.0.79}/tests/markdownlint_cli_integration.rs +0 -0
  187. {rumdl-0.0.77 → rumdl-0.0.79}/tests/markdownlint_config_test.rs +0 -0
  188. {rumdl-0.0.77 → rumdl-0.0.79}/tests/md030_edge_cases.md +0 -0
  189. {rumdl-0.0.77 → rumdl-0.0.79}/tests/output_format_tests.rs +0 -0
  190. {rumdl-0.0.77 → rumdl-0.0.79}/tests/perf_check.rs +0 -0
  191. {rumdl-0.0.77 → rumdl-0.0.79}/tests/pyproject_config_tests.rs +0 -0
  192. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md001_test.rs +0 -0
  193. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md001_unicode_test.rs +0 -0
  194. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md002_test.rs +0 -0
  195. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md003_test.rs +0 -0
  196. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md004_test.rs +0 -0
  197. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md005_test.rs +0 -0
  198. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md006_test.rs +0 -0
  199. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md006_unicode_test.rs +0 -0
  200. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md007_test.rs +0 -0
  201. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md009_test.rs +0 -0
  202. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md010_test.rs +0 -0
  203. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md011_test.rs +0 -0
  204. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md012_test.rs +0 -0
  205. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md013_test.rs +0 -0
  206. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md014_test.rs +0 -0
  207. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md018_test.rs +0 -0
  208. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md019_test.rs +0 -0
  209. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md020_test.rs +0 -0
  210. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md021_test.rs +0 -0
  211. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md022_test.rs +0 -0
  212. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md023_extended_test.rs +0 -0
  213. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md023_test.rs +0 -0
  214. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md024_test.rs +0 -0
  215. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md025_test.rs +0 -0
  216. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md026_test.rs +0 -0
  217. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md027_test.rs +0 -0
  218. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md028_test.rs +0 -0
  219. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md029_test.rs +0 -0
  220. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md030_test.rs +0 -0
  221. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md031_test.rs +0 -0
  222. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md032_test.rs +0 -0
  223. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md033_extended_test.rs +0 -0
  224. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md033_test.rs +0 -0
  225. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md034_test.rs +0 -0
  226. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md035_test.rs +0 -0
  227. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md036_test.rs +0 -0
  228. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md037_test.rs +0 -0
  229. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md038_test.rs +0 -0
  230. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md039_test.rs +0 -0
  231. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md040_test.rs +0 -0
  232. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md041_test.rs +0 -0
  233. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md042_test.rs +0 -0
  234. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md043_test.rs +0 -0
  235. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md044_test.rs +0 -0
  236. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md045_test.rs +0 -0
  237. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md046_test.rs +0 -0
  238. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md047_test.rs +0 -0
  239. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md048_test.rs +0 -0
  240. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md049_test.rs +0 -0
  241. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md050_test.rs +0 -0
  242. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md051_test.rs +0 -0
  243. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md052_test.rs +0 -0
  244. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md053_additional_test.rs +0 -0
  245. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md053_proptest.rs +0 -0
  246. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md053_test.rs +0 -0
  247. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md054_test.rs +0 -0
  248. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md054_unicode_test.rs +0 -0
  249. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md055_test.rs +0 -0
  250. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md056_test.rs +0 -0
  251. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md057_test.rs +0 -0
  252. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/md058_test.rs +0 -0
  253. {rumdl-0.0.77 → rumdl-0.0.79}/tests/rules/mod.rs +0 -0
  254. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils/blockquote_utils_test.rs +0 -0
  255. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils/code_block_utils_extended_test.rs +0 -0
  256. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils/code_block_utils_test.rs +0 -0
  257. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils/core_utils_test.rs +0 -0
  258. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils/front_matter_utils_test.rs +0 -0
  259. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils/line_index_test.rs +0 -0
  260. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils/mod.rs +0 -0
  261. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils_markdown_edge_cases.rs +0 -0
  262. {rumdl-0.0.77 → rumdl-0.0.79}/tests/utils_tests.rs +0 -0
  263. {rumdl-0.0.77 → rumdl-0.0.79}/tests/vscode_extension_fixes.rs +0 -0
@@ -1783,7 +1783,7 @@ dependencies = [
1783
1783
 
1784
1784
  [[package]]
1785
1785
  name = "rumdl"
1786
- version = "0.0.77"
1786
+ version = "0.0.79"
1787
1787
  dependencies = [
1788
1788
  "anyhow",
1789
1789
  "assert_cmd",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "rumdl"
3
- version = "0.0.77"
3
+ version = "0.0.79"
4
4
  edition = "2021"
5
5
  description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
6
6
  authors = ["Ruben J. Jongejan <ruben.jongejan@gmail.com>"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rumdl
3
- Version: 0.0.77
3
+ Version: 0.0.79
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -697,7 +697,7 @@ impl SourcedConfig {
697
697
  }
698
698
  }
699
699
 
700
- /// Load and merge configurations from files and CLI overrides.
700
+ /// Load and merge configurations from files and CLI overrides.
701
701
  pub fn load(
702
702
  config_path: Option<&str>,
703
703
  cli_overrides: Option<&SourcedGlobalConfig>,
@@ -119,6 +119,57 @@ impl RumdlLanguageServer {
119
119
  }
120
120
  }
121
121
  }
122
+
123
+ /// Load or reload rumdl configuration from files
124
+ async fn load_configuration(&self, notify_client: bool) {
125
+ let config_guard = self.config.read().await;
126
+ let explicit_config_path = config_guard.config_path.clone();
127
+ drop(config_guard);
128
+
129
+ // Use the same discovery logic as CLI but with LSP-specific error handling
130
+ match Self::load_config_for_lsp(explicit_config_path.as_deref()) {
131
+ Ok(sourced_config) => {
132
+ let loaded_files = sourced_config.loaded_files.clone();
133
+ *self.rumdl_config.write().await = sourced_config.into();
134
+
135
+ if !loaded_files.is_empty() {
136
+ let message = format!("Loaded rumdl config from: {}", loaded_files.join(", "));
137
+ log::info!("{}", message);
138
+ if notify_client {
139
+ self.client
140
+ .log_message(MessageType::INFO, &message)
141
+ .await;
142
+ }
143
+ } else {
144
+ log::info!("Using default rumdl configuration (no config files found)");
145
+ }
146
+ }
147
+ Err(e) => {
148
+ let message = format!("Failed to load rumdl config: {}", e);
149
+ log::warn!("{}", message);
150
+ if notify_client {
151
+ self.client
152
+ .log_message(MessageType::WARNING, &message)
153
+ .await;
154
+ }
155
+ // Use default configuration
156
+ *self.rumdl_config.write().await = crate::config::Config::default();
157
+ }
158
+ }
159
+ }
160
+
161
+ /// Reload rumdl configuration from files (with client notification)
162
+ async fn reload_configuration(&self) {
163
+ self.load_configuration(true).await;
164
+ }
165
+
166
+ /// Load configuration for LSP - similar to CLI loading but returns Result
167
+ fn load_config_for_lsp(
168
+ config_path: Option<&str>,
169
+ ) -> Result<crate::config::SourcedConfig, crate::config::ConfigError> {
170
+ // Use the same configuration loading as the CLI
171
+ crate::config::SourcedConfig::load_with_discovery(config_path, None, false)
172
+ }
122
173
  }
123
174
 
124
175
  #[tower_lsp::async_trait]
@@ -133,20 +184,8 @@ impl LanguageServer for RumdlLanguageServer {
133
184
  }
134
185
  }
135
186
 
136
- // Load rumdl configuration if specified
137
- let config_guard = self.config.read().await;
138
- if let Some(config_path) = &config_guard.config_path {
139
- match crate::config::SourcedConfig::load(Some(config_path), None) {
140
- Ok(sourced_config) => {
141
- *self.rumdl_config.write().await = sourced_config.into();
142
- log::info!("Loaded rumdl config from: {}", config_path);
143
- }
144
- Err(e) => {
145
- log::warn!("Failed to load config from {}: {}", config_path, e);
146
- }
147
- }
148
- }
149
- drop(config_guard);
187
+ // Load rumdl configuration with auto-discovery
188
+ self.load_configuration(false).await;
150
189
 
151
190
  Ok(InitializeResult {
152
191
  capabilities: ServerCapabilities {
@@ -186,6 +225,13 @@ impl LanguageServer for RumdlLanguageServer {
186
225
  .await;
187
226
  }
188
227
 
228
+ async fn did_change_workspace_folders(&self, _params: DidChangeWorkspaceFoldersParams) {
229
+ // Reload configuration when workspace folders change
230
+ self.reload_configuration().await;
231
+ }
232
+
233
+
234
+
189
235
  async fn shutdown(&self) -> JsonRpcResult<()> {
190
236
  log::info!("Shutting down rumdl Language Server");
191
237
  Ok(())
@@ -47,6 +47,21 @@ fn read_file_efficiently(path: &Path) -> Result<String, Box<dyn Error>> {
47
47
  }
48
48
  }
49
49
 
50
+ /// Utility function to load configuration with standard CLI error handling.
51
+ /// This eliminates duplication between different CLI commands that load configuration.
52
+ fn load_config_with_cli_error_handling(
53
+ config_path: Option<&str>,
54
+ no_config: bool,
55
+ ) -> rumdl_config::SourcedConfig {
56
+ match rumdl_config::SourcedConfig::load_with_discovery(config_path, None, no_config) {
57
+ Ok(config) => config,
58
+ Err(e) => {
59
+ eprintln!("{}: {}", "Config error".red().bold(), e);
60
+ std::process::exit(1);
61
+ }
62
+ }
63
+ }
64
+
50
65
  #[derive(Parser)]
51
66
  #[command(author, version, about, long_about = None)]
52
67
  struct Cli {
@@ -164,6 +179,8 @@ enum Commands {
164
179
  enum ConfigSubcommand {
165
180
  /// Query a specific config key (e.g. global.exclude or MD013.line_length)
166
181
  Get { key: String },
182
+ /// Show the absolute path of the configuration file that was loaded
183
+ File,
167
184
  }
168
185
 
169
186
  #[derive(Args, Debug)]
@@ -951,7 +968,7 @@ build-backend = \"setuptools.build_meta\"
951
968
  defaults,
952
969
  output,
953
970
  }) => {
954
- // Handle 'config get' subcommand for querying a specific key
971
+ // Handle config subcommands
955
972
  if let Some(ConfigSubcommand::Get { key }) = subcmd {
956
973
  if let Some((section_part, field_part)) = key.split_once('.') {
957
974
  // 1. Load the full SourcedConfig once
@@ -1096,6 +1113,32 @@ build-backend = \"setuptools.build_meta\"
1096
1113
  std::process::exit(1);
1097
1114
  }
1098
1115
  }
1116
+ // Handle 'config file' subcommand for showing config file path
1117
+ else if let Some(ConfigSubcommand::File) = subcmd {
1118
+ let sourced = load_config_with_cli_error_handling(cli.config.as_deref(), cli.no_config);
1119
+
1120
+ if sourced.loaded_files.is_empty() {
1121
+ if cli.no_config {
1122
+ println!("No configuration file loaded (--no-config specified)");
1123
+ } else {
1124
+ println!("No configuration file found (using defaults)");
1125
+ }
1126
+ } else {
1127
+ // Convert relative paths to absolute paths
1128
+ for file_path in &sourced.loaded_files {
1129
+ match std::fs::canonicalize(file_path) {
1130
+ Ok(absolute_path) => {
1131
+ println!("{}", absolute_path.display());
1132
+ }
1133
+ Err(_) => {
1134
+ // If canonicalize fails, it might be a file that doesn't exist anymore
1135
+ // or a relative path that can't be resolved. Just print as-is.
1136
+ println!("{}", file_path);
1137
+ }
1138
+ }
1139
+ }
1140
+ }
1141
+ }
1099
1142
  // --- Fallthrough logic for `rumdl config` (no subcommand) ---
1100
1143
  // This code now runs ONLY if `subcmd` is None
1101
1144
  else {
@@ -1105,17 +1148,7 @@ build-backend = \"setuptools.build_meta\"
1105
1148
  let sourced_reg = if *defaults {
1106
1149
  rumdl_config::SourcedConfig::default()
1107
1150
  } else {
1108
- match rumdl_config::SourcedConfig::load_with_discovery(
1109
- cli.config.as_deref(),
1110
- None,
1111
- cli.no_config,
1112
- ) {
1113
- Ok(s) => s,
1114
- Err(e) => {
1115
- eprintln!("{}: {}", "Config error".red().bold(), e);
1116
- std::process::exit(1);
1117
- }
1118
- }
1151
+ load_config_with_cli_error_handling(cli.config.as_deref(), cli.no_config)
1119
1152
  };
1120
1153
  let validation_warnings =
1121
1154
  rumdl_config::validate_config_sourced(&sourced_reg, &registry_reg);
@@ -1133,17 +1166,7 @@ build-backend = \"setuptools.build_meta\"
1133
1166
  rumdl_config::SourcedConfig::default()
1134
1167
  } else {
1135
1168
  // Reload config if not defaults (necessary because we exited early in 'get' case)
1136
- match rumdl_config::SourcedConfig::load_with_discovery(
1137
- cli.config.as_deref(),
1138
- None,
1139
- cli.no_config,
1140
- ) {
1141
- Ok(s) => s,
1142
- Err(e) => {
1143
- eprintln!("{}: {}", "Config error".red().bold(), e);
1144
- std::process::exit(1);
1145
- }
1146
- }
1169
+ load_config_with_cli_error_handling(cli.config.as_deref(), cli.no_config)
1147
1170
  };
1148
1171
 
1149
1172
  // If --output toml is set, print as valid TOML
@@ -1325,16 +1348,7 @@ fn process_stdin(rules: &[Box<dyn Rule>], args: &CheckArgs) {
1325
1348
 
1326
1349
  fn run_check(args: &CheckArgs, global_config_path: Option<&str>, no_config: bool) {
1327
1350
  // 1. Load sourced config (for provenance and validation)
1328
- let sourced =
1329
- match rumdl_config::SourcedConfig::load_with_discovery(global_config_path, None, no_config)
1330
- {
1331
- Ok(sourced) => sourced,
1332
- Err(e) => {
1333
- // Syntax error or type mismatch: fail and exit
1334
- eprintln!("{}: {}", "Config error".red().bold(), e);
1335
- std::process::exit(1);
1336
- }
1337
- };
1351
+ let sourced = load_config_with_cli_error_handling(global_config_path, no_config);
1338
1352
 
1339
1353
  // 2. Validate config (unknown keys/rules/options)
1340
1354
  let all_rules = rumdl::rules::all_rules(&rumdl_config::Config::default());
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes