rumdl 0.0.136__tar.gz → 0.0.138__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.
- {rumdl-0.0.136 → rumdl-0.0.138}/CHANGELOG.md +18 -1
- {rumdl-0.0.136 → rumdl-0.0.138}/Cargo.lock +18 -17
- {rumdl-0.0.136 → rumdl-0.0.138}/Cargo.toml +1 -1
- {rumdl-0.0.136 → rumdl-0.0.138}/PKG-INFO +1 -1
- {rumdl-0.0.136 → rumdl-0.0.138}/src/lsp/server.rs +62 -11
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md013_line_length.rs +26 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/github.rs +54 -9
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/text_reflow.rs +97 -9
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_regression_prevention_test.rs +4 -4
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_test.rs +35 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md052_test.rs +25 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/.config/nextest.toml +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/.mise.toml +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/.rumdl.toml +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/.rustfmt.toml +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/LICENSE +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/MANIFEST.in +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/Makefile +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/README.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/assets/logo.png +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benches/range_performance.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/RULES.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/global-settings.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md001.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md002.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md003.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md004.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md005.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md006.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md007.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md009.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md010.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md011.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md012.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md013.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md014.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md018.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md019.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md020.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md021.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md022.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md023.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md024.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md025.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md026.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md027.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md028.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md029.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md030.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md031.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md032.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md033.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md034.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md035.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md036.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md037.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md038.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md039.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md040.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md041.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md042.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md043.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md044.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md045.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md046.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md047.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md048.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md049.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md050.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md051.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md052.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md053.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md054.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md055.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md056.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md057.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/md058.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/parity_check.py +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/pyproject.toml +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/python/MANIFEST.in +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/rumdl.toml.example +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/rust-toolchain.toml +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/scripts/generate-downloads-table.sh +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/scripts/pre-release.sh +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/exit_codes.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/inline_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/lib.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/lint_context.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/lsp/types.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/main.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/output/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/parallel.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/performance.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/profiling.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/python.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rule.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rule_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md011_no_reversed_links.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md029_ordered_list_prefix.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md036_no_emphasis_only_first.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/jekyll.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/kramdown.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/anchor_styles/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/header_id_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/kramdown_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/line_ending.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_admonitions.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_common.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_critic.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_footnotes.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_patterns.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_snippets.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_tabs.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocs_test_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mkdocstrings_refs.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/skip_context.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/utils/table_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/src/vscode.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_integration_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/cli_test_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/fixtures.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/common/test_utils.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/config_upward_traversal_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/fixable_unfixable_config_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/init_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/kramdown_integration_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lib.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_formatting_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_initialization_options_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_mkdocs_flavor_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/md037_xxxx_regression_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/perf_check.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/python_bindings_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/emphasis_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/inline_content_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/list_rules_integration_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md005_dynamic_indent_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md026_kramdown_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md028_md009_interaction_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_code_block_separation_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_fix_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_issue42_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_markdownlint_parity_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md029_unicode_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md031_kramdown_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md033_kramdown_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md037_kramdown_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_comprehensive_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_property_based_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md051_unicode_security_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md058_kramdown_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_admonitions_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_edge_cases_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_extensions_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mkdocs_snippets_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules/rule_interaction_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/skip_context_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/test_underscore_edge_cases.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/unfixable_rules_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_tests.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_windows_comprehensive_test.rs +0 -0
- {rumdl-0.0.136 → rumdl-0.0.138}/tests/vscode_windows_test.rs +0 -0
|
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.138] - 2025-09-05
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **LSP**: Fixed formatting to return empty array instead of null when no edits available (fixes #79)
|
|
14
|
+
- Helix editor now properly receives LSP formatting responses
|
|
15
|
+
- Added textDocument/rangeFormatting support for better editor compatibility
|
|
16
|
+
- Fixed critical position calculation bug that could cause incorrect text edit ranges
|
|
17
|
+
|
|
18
|
+
## [0.0.137] - 2025-09-04
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **MD051**: Fixed GitHub anchor generation for headers with arrow patterns (fixes #82)
|
|
22
|
+
- Headers like `WAL->L0 Compaction` now correctly generate `#wal-l0-compaction` anchors
|
|
23
|
+
- Arrow patterns (`->`, `-->`) now convert to the correct number of hyphens based on surrounding spaces
|
|
24
|
+
|
|
10
25
|
## [0.0.136] - 2025-09-03
|
|
11
26
|
|
|
12
27
|
## [0.0.135] - 2025-09-03
|
|
@@ -562,7 +577,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
562
577
|
|
|
563
578
|
- Initial implementation of remaining rules for markdownlint parity
|
|
564
579
|
|
|
565
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
580
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.138...HEAD
|
|
581
|
+
[0.0.138]: https://github.com/rvben/rumdl/compare/v0.0.137...v0.0.138
|
|
582
|
+
[0.0.137]: https://github.com/rvben/rumdl/compare/v0.0.136...v0.0.137
|
|
566
583
|
[0.0.136]: https://github.com/rvben/rumdl/compare/v0.0.135...v0.0.136
|
|
567
584
|
[0.0.135]: https://github.com/rvben/rumdl/compare/v0.0.134...v0.0.135
|
|
568
585
|
[0.0.134]: https://github.com/rvben/rumdl/compare/v0.0.133...v0.0.134
|
|
@@ -1012,9 +1012,9 @@ dependencies = [
|
|
|
1012
1012
|
|
|
1013
1013
|
[[package]]
|
|
1014
1014
|
name = "js-sys"
|
|
1015
|
-
version = "0.3.
|
|
1015
|
+
version = "0.3.78"
|
|
1016
1016
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1017
|
-
checksum = "
|
|
1017
|
+
checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738"
|
|
1018
1018
|
dependencies = [
|
|
1019
1019
|
"once_cell",
|
|
1020
1020
|
"wasm-bindgen",
|
|
@@ -1087,9 +1087,9 @@ dependencies = [
|
|
|
1087
1087
|
|
|
1088
1088
|
[[package]]
|
|
1089
1089
|
name = "log"
|
|
1090
|
-
version = "0.4.
|
|
1090
|
+
version = "0.4.28"
|
|
1091
1091
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1092
|
-
checksum = "
|
|
1092
|
+
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
|
|
1093
1093
|
|
|
1094
1094
|
[[package]]
|
|
1095
1095
|
name = "lsp-types"
|
|
@@ -1632,7 +1632,7 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001"
|
|
|
1632
1632
|
|
|
1633
1633
|
[[package]]
|
|
1634
1634
|
name = "rumdl"
|
|
1635
|
-
version = "0.0.
|
|
1635
|
+
version = "0.0.138"
|
|
1636
1636
|
dependencies = [
|
|
1637
1637
|
"anyhow",
|
|
1638
1638
|
"assert_cmd",
|
|
@@ -2279,21 +2279,22 @@ dependencies = [
|
|
|
2279
2279
|
|
|
2280
2280
|
[[package]]
|
|
2281
2281
|
name = "wasm-bindgen"
|
|
2282
|
-
version = "0.2.
|
|
2282
|
+
version = "0.2.101"
|
|
2283
2283
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2284
|
-
checksum = "
|
|
2284
|
+
checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b"
|
|
2285
2285
|
dependencies = [
|
|
2286
2286
|
"cfg-if",
|
|
2287
2287
|
"once_cell",
|
|
2288
2288
|
"rustversion",
|
|
2289
2289
|
"wasm-bindgen-macro",
|
|
2290
|
+
"wasm-bindgen-shared",
|
|
2290
2291
|
]
|
|
2291
2292
|
|
|
2292
2293
|
[[package]]
|
|
2293
2294
|
name = "wasm-bindgen-backend"
|
|
2294
|
-
version = "0.2.
|
|
2295
|
+
version = "0.2.101"
|
|
2295
2296
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2296
|
-
checksum = "
|
|
2297
|
+
checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb"
|
|
2297
2298
|
dependencies = [
|
|
2298
2299
|
"bumpalo",
|
|
2299
2300
|
"log",
|
|
@@ -2305,9 +2306,9 @@ dependencies = [
|
|
|
2305
2306
|
|
|
2306
2307
|
[[package]]
|
|
2307
2308
|
name = "wasm-bindgen-macro"
|
|
2308
|
-
version = "0.2.
|
|
2309
|
+
version = "0.2.101"
|
|
2309
2310
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2310
|
-
checksum = "
|
|
2311
|
+
checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d"
|
|
2311
2312
|
dependencies = [
|
|
2312
2313
|
"quote",
|
|
2313
2314
|
"wasm-bindgen-macro-support",
|
|
@@ -2315,9 +2316,9 @@ dependencies = [
|
|
|
2315
2316
|
|
|
2316
2317
|
[[package]]
|
|
2317
2318
|
name = "wasm-bindgen-macro-support"
|
|
2318
|
-
version = "0.2.
|
|
2319
|
+
version = "0.2.101"
|
|
2319
2320
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2320
|
-
checksum = "
|
|
2321
|
+
checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa"
|
|
2321
2322
|
dependencies = [
|
|
2322
2323
|
"proc-macro2",
|
|
2323
2324
|
"quote",
|
|
@@ -2328,18 +2329,18 @@ dependencies = [
|
|
|
2328
2329
|
|
|
2329
2330
|
[[package]]
|
|
2330
2331
|
name = "wasm-bindgen-shared"
|
|
2331
|
-
version = "0.2.
|
|
2332
|
+
version = "0.2.101"
|
|
2332
2333
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2333
|
-
checksum = "
|
|
2334
|
+
checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1"
|
|
2334
2335
|
dependencies = [
|
|
2335
2336
|
"unicode-ident",
|
|
2336
2337
|
]
|
|
2337
2338
|
|
|
2338
2339
|
[[package]]
|
|
2339
2340
|
name = "web-sys"
|
|
2340
|
-
version = "0.3.
|
|
2341
|
+
version = "0.3.78"
|
|
2341
2342
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2342
|
-
checksum = "
|
|
2343
|
+
checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12"
|
|
2343
2344
|
dependencies = [
|
|
2344
2345
|
"js-sys",
|
|
2345
2346
|
"wasm-bindgen",
|
|
@@ -160,9 +160,18 @@ impl RumdlLanguageServer {
|
|
|
160
160
|
|
|
161
161
|
/// Get the end position of a document
|
|
162
162
|
fn get_end_position(&self, text: &str) -> Position {
|
|
163
|
-
let
|
|
164
|
-
let
|
|
165
|
-
|
|
163
|
+
let mut line = 0u32;
|
|
164
|
+
let mut character = 0u32;
|
|
165
|
+
|
|
166
|
+
for ch in text.chars() {
|
|
167
|
+
if ch == '\n' {
|
|
168
|
+
line += 1;
|
|
169
|
+
character = 0;
|
|
170
|
+
} else {
|
|
171
|
+
character += 1;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
166
175
|
Position { line, character }
|
|
167
176
|
}
|
|
168
177
|
|
|
@@ -331,6 +340,7 @@ impl LanguageServer for RumdlLanguageServer {
|
|
|
331
340
|
text_document_sync: Some(TextDocumentSyncCapability::Kind(TextDocumentSyncKind::FULL)),
|
|
332
341
|
code_action_provider: Some(CodeActionProviderCapability::Simple(true)),
|
|
333
342
|
document_formatting_provider: Some(OneOf::Left(true)),
|
|
343
|
+
document_range_formatting_provider: Some(OneOf::Left(true)),
|
|
334
344
|
diagnostic_provider: Some(DiagnosticServerCapabilities::Options(DiagnosticOptions {
|
|
335
345
|
identifier: Some("rumdl".to_string()),
|
|
336
346
|
inter_file_dependencies: false,
|
|
@@ -489,22 +499,57 @@ impl LanguageServer for RumdlLanguageServer {
|
|
|
489
499
|
}
|
|
490
500
|
}
|
|
491
501
|
|
|
502
|
+
async fn range_formatting(&self, params: DocumentRangeFormattingParams) -> JsonRpcResult<Option<Vec<TextEdit>>> {
|
|
503
|
+
// For markdown linting, we format the entire document because:
|
|
504
|
+
// 1. Many markdown rules have document-wide implications (e.g., heading hierarchy, list consistency)
|
|
505
|
+
// 2. Fixes often need surrounding context to be applied correctly
|
|
506
|
+
// 3. This approach is common among linters (ESLint, rustfmt, etc. do similar)
|
|
507
|
+
log::debug!(
|
|
508
|
+
"Range formatting requested for {:?}, formatting entire document due to rule interdependencies",
|
|
509
|
+
params.range
|
|
510
|
+
);
|
|
511
|
+
|
|
512
|
+
let formatting_params = DocumentFormattingParams {
|
|
513
|
+
text_document: params.text_document,
|
|
514
|
+
options: params.options,
|
|
515
|
+
work_done_progress_params: params.work_done_progress_params,
|
|
516
|
+
};
|
|
517
|
+
|
|
518
|
+
self.formatting(formatting_params).await
|
|
519
|
+
}
|
|
520
|
+
|
|
492
521
|
async fn formatting(&self, params: DocumentFormattingParams) -> JsonRpcResult<Option<Vec<TextEdit>>> {
|
|
493
522
|
let uri = params.text_document.uri;
|
|
494
523
|
|
|
524
|
+
log::debug!("Formatting request for: {uri}");
|
|
525
|
+
|
|
495
526
|
if let Some(text) = self.documents.read().await.get(&uri) {
|
|
527
|
+
// Get config with LSP overrides
|
|
528
|
+
let config_guard = self.config.read().await;
|
|
529
|
+
let lsp_config = config_guard.clone();
|
|
530
|
+
drop(config_guard);
|
|
531
|
+
|
|
496
532
|
// Get all rules from config
|
|
497
533
|
let rumdl_config = self.rumdl_config.read().await;
|
|
498
534
|
let all_rules = rules::all_rules(&rumdl_config);
|
|
499
535
|
let flavor = rumdl_config.markdown_flavor();
|
|
500
536
|
|
|
501
537
|
// Use the standard filter_rules function which respects config's disabled rules
|
|
502
|
-
let filtered_rules = rules::filter_rules(&all_rules, &rumdl_config.global);
|
|
538
|
+
let mut filtered_rules = rules::filter_rules(&all_rules, &rumdl_config.global);
|
|
503
539
|
drop(rumdl_config);
|
|
504
540
|
|
|
541
|
+
// Apply LSP config overrides
|
|
542
|
+
filtered_rules = self.apply_lsp_config_overrides(filtered_rules, &lsp_config);
|
|
543
|
+
|
|
505
544
|
// Lint the document to get all warnings
|
|
506
545
|
match crate::lint(text, &filtered_rules, false, flavor) {
|
|
507
546
|
Ok(warnings) => {
|
|
547
|
+
log::debug!(
|
|
548
|
+
"Found {} warnings, {} with fixes",
|
|
549
|
+
warnings.len(),
|
|
550
|
+
warnings.iter().filter(|w| w.fix.is_some()).count()
|
|
551
|
+
);
|
|
552
|
+
|
|
508
553
|
// Check if there are any fixable warnings
|
|
509
554
|
let has_fixes = warnings.iter().any(|w| w.fix.is_some());
|
|
510
555
|
|
|
@@ -514,6 +559,7 @@ impl LanguageServer for RumdlLanguageServer {
|
|
|
514
559
|
Ok(fixed_content) => {
|
|
515
560
|
// Only return edits if the content actually changed
|
|
516
561
|
if fixed_content != *text {
|
|
562
|
+
log::debug!("Returning formatting edits");
|
|
517
563
|
// Create a single TextEdit that replaces the entire document
|
|
518
564
|
// Calculate proper end position by iterating through all characters
|
|
519
565
|
let mut line = 0u32;
|
|
@@ -543,18 +589,23 @@ impl LanguageServer for RumdlLanguageServer {
|
|
|
543
589
|
log::error!("Failed to apply fixes: {e}");
|
|
544
590
|
}
|
|
545
591
|
}
|
|
592
|
+
} else {
|
|
593
|
+
log::debug!("No fixes available for formatting");
|
|
546
594
|
}
|
|
547
595
|
|
|
548
|
-
// No fixes available or applied
|
|
549
|
-
Ok(
|
|
596
|
+
// No fixes available or applied - return empty array
|
|
597
|
+
Ok(Some(Vec::new()))
|
|
550
598
|
}
|
|
551
599
|
Err(e) => {
|
|
552
600
|
log::error!("Failed to format document: {e}");
|
|
553
|
-
|
|
601
|
+
// Return empty array on error
|
|
602
|
+
Ok(Some(Vec::new()))
|
|
554
603
|
}
|
|
555
604
|
}
|
|
556
605
|
} else {
|
|
557
|
-
|
|
606
|
+
log::warn!("Document not found in cache: {uri}");
|
|
607
|
+
// Return empty array when document not found
|
|
608
|
+
Ok(Some(Vec::new()))
|
|
558
609
|
}
|
|
559
610
|
}
|
|
560
611
|
|
|
@@ -826,10 +877,10 @@ mod tests {
|
|
|
826
877
|
assert_eq!(pos.line, 0);
|
|
827
878
|
assert_eq!(pos.character, 0);
|
|
828
879
|
|
|
829
|
-
// Ends with newline -
|
|
880
|
+
// Ends with newline - position should be at start of next line
|
|
830
881
|
let pos = server.get_end_position("Hello\n");
|
|
831
|
-
assert_eq!(pos.line,
|
|
832
|
-
assert_eq!(pos.character,
|
|
882
|
+
assert_eq!(pos.line, 1);
|
|
883
|
+
assert_eq!(pos.character, 0);
|
|
833
884
|
}
|
|
834
885
|
|
|
835
886
|
#[tokio::test]
|
|
@@ -1027,6 +1027,32 @@ And a bullet list:
|
|
|
1027
1027
|
}
|
|
1028
1028
|
}
|
|
1029
1029
|
|
|
1030
|
+
#[test]
|
|
1031
|
+
fn test_issue_83_numbered_list_with_backticks() {
|
|
1032
|
+
// Test for issue #83: enable_reflow was incorrectly handling numbered lists
|
|
1033
|
+
let config = MD013Config {
|
|
1034
|
+
line_length: 100,
|
|
1035
|
+
reflow: true,
|
|
1036
|
+
..Default::default()
|
|
1037
|
+
};
|
|
1038
|
+
let rule = MD013LineLength::from_config_struct(config);
|
|
1039
|
+
|
|
1040
|
+
// The exact case from issue #83
|
|
1041
|
+
let content = "1. List `manifest` to find the manifest with the largest ID. Say it's `00000000000000000002.manifest` in this example.";
|
|
1042
|
+
let ctx = LintContext::new(content, crate::config::MarkdownFlavor::Standard);
|
|
1043
|
+
|
|
1044
|
+
let fixed = rule.fix(&ctx).unwrap();
|
|
1045
|
+
|
|
1046
|
+
// The expected output: properly wrapped at 100 chars with correct list formatting
|
|
1047
|
+
// After the fix, it correctly accounts for "1. " (3 chars) leaving 97 for content
|
|
1048
|
+
let expected = "1. List `manifest` to find the manifest with the largest ID. Say it's\n `00000000000000000002.manifest` in this example.";
|
|
1049
|
+
|
|
1050
|
+
assert_eq!(
|
|
1051
|
+
fixed, expected,
|
|
1052
|
+
"List should be properly reflowed with correct marker and indentation.\nExpected:\n{expected}\nGot:\n{fixed}"
|
|
1053
|
+
);
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1030
1056
|
#[test]
|
|
1031
1057
|
fn test_text_reflow_disabled_by_default() {
|
|
1032
1058
|
let rule = MD013LineLength::new(30, false, false, false, false);
|
|
@@ -157,15 +157,33 @@ fn heading_to_fragment_internal(heading: &str) -> String {
|
|
|
157
157
|
|
|
158
158
|
// Step 6: Multi-character arrow patterns (order matters!)
|
|
159
159
|
// GitHub.com converts these patterns to specific hyphen sequences
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
text = text.replace("
|
|
166
|
-
text = text.replace("
|
|
167
|
-
text = text.replace("
|
|
168
|
-
text = text.replace("
|
|
160
|
+
// Verified against GitHub.com actual behavior (issue #82)
|
|
161
|
+
// Pattern: arrow itself becomes N hyphens, each adjacent space adds 1 more
|
|
162
|
+
// Must handle patterns with most spaces first to avoid partial replacements
|
|
163
|
+
|
|
164
|
+
// --> patterns (arrow = 2 hyphens base)
|
|
165
|
+
text = text.replace(" --> ", "----"); // 2 + 1 + 1 = 4 hyphens
|
|
166
|
+
text = text.replace(" -->", "---"); // 2 + 1 = 3 hyphens
|
|
167
|
+
text = text.replace("--> ", "---"); // 2 + 1 = 3 hyphens
|
|
168
|
+
text = text.replace("-->", "--"); // 2 hyphens
|
|
169
|
+
|
|
170
|
+
// <-> patterns (assuming similar pattern, needs verification)
|
|
171
|
+
text = text.replace(" <-> ", "---"); // estimated: 1 + 1 + 1 = 3 hyphens
|
|
172
|
+
text = text.replace(" <->", "--"); // estimated: 1 + 1 = 2 hyphens
|
|
173
|
+
text = text.replace("<-> ", "--"); // estimated: 1 + 1 = 2 hyphens
|
|
174
|
+
text = text.replace("<->", "-"); // estimated: 1 hyphen
|
|
175
|
+
|
|
176
|
+
// ==> patterns (assuming similar pattern, needs verification)
|
|
177
|
+
text = text.replace(" ==> ", "--"); // estimated pattern
|
|
178
|
+
text = text.replace(" ==>", "-"); // estimated pattern
|
|
179
|
+
text = text.replace("==> ", "-"); // estimated pattern
|
|
180
|
+
text = text.replace("==>", ""); // estimated: might be removed entirely
|
|
181
|
+
|
|
182
|
+
// -> patterns (arrow = 1 hyphen base)
|
|
183
|
+
text = text.replace(" -> ", "---"); // 1 + 1 + 1 = 3 hyphens
|
|
184
|
+
text = text.replace(" ->", "--"); // 1 + 1 = 2 hyphens
|
|
185
|
+
text = text.replace("-> ", "--"); // 1 + 1 = 2 hyphens
|
|
186
|
+
text = text.replace("->", "-"); // 1 hyphen
|
|
169
187
|
|
|
170
188
|
// Step 7: Remove problematic characters before symbol replacement
|
|
171
189
|
// First remove em-dashes and en-dashes entirely
|
|
@@ -899,6 +917,33 @@ mod tests {
|
|
|
899
917
|
assert_eq!(result, "cbrown----sbrown---unsafe-paths");
|
|
900
918
|
}
|
|
901
919
|
|
|
920
|
+
#[test]
|
|
921
|
+
fn test_github_arrow_patterns_issue_82() {
|
|
922
|
+
// Test cases for issue #82 - verified against GitHub.com actual behavior
|
|
923
|
+
// Pattern: arrow itself becomes N hyphens, each adjacent space adds 1 more
|
|
924
|
+
|
|
925
|
+
// Single arrow (->) patterns
|
|
926
|
+
assert_eq!(heading_to_fragment("WAL->L0 Compaction"), "wal-l0-compaction");
|
|
927
|
+
assert_eq!(heading_to_fragment("foo->bar->baz"), "foo-bar-baz");
|
|
928
|
+
assert_eq!(heading_to_fragment("a->b"), "a-b");
|
|
929
|
+
assert_eq!(heading_to_fragment("a ->b"), "a--b");
|
|
930
|
+
assert_eq!(heading_to_fragment("a-> b"), "a--b");
|
|
931
|
+
assert_eq!(heading_to_fragment("a -> b"), "a---b");
|
|
932
|
+
|
|
933
|
+
// Double arrow (-->) patterns
|
|
934
|
+
assert_eq!(heading_to_fragment("a-->b"), "a--b");
|
|
935
|
+
assert_eq!(heading_to_fragment("a -->b"), "a---b");
|
|
936
|
+
assert_eq!(heading_to_fragment("a--> b"), "a---b");
|
|
937
|
+
assert_eq!(heading_to_fragment("a --> b"), "a----b");
|
|
938
|
+
|
|
939
|
+
// Mixed patterns
|
|
940
|
+
assert_eq!(heading_to_fragment("cbrown -> sbrown"), "cbrown---sbrown");
|
|
941
|
+
assert_eq!(
|
|
942
|
+
heading_to_fragment("cbrown --> sbrown: --unsafe-paths"),
|
|
943
|
+
"cbrown----sbrown---unsafe-paths"
|
|
944
|
+
);
|
|
945
|
+
}
|
|
946
|
+
|
|
902
947
|
#[test]
|
|
903
948
|
fn test_security_performance_edge_cases() {
|
|
904
949
|
// Test performance with edge cases that could cause issues
|
|
@@ -629,20 +629,52 @@ pub fn reflow_markdown(content: &str, options: &ReflowOptions) -> String {
|
|
|
629
629
|
let indent = line.len() - line.trim_start().len();
|
|
630
630
|
let indent_str = " ".repeat(indent);
|
|
631
631
|
|
|
632
|
-
//
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
632
|
+
// For numbered lists, find the period and the space after it
|
|
633
|
+
// For bullet lists, find the marker and the space after it
|
|
634
|
+
let mut marker_end = indent;
|
|
635
|
+
let mut content_start = indent;
|
|
636
|
+
|
|
637
|
+
if trimmed.chars().next().is_some_and(|c| c.is_numeric()) {
|
|
638
|
+
// Numbered list: find the period
|
|
639
|
+
if let Some(period_pos) = line[indent..].find('.') {
|
|
640
|
+
marker_end = indent + period_pos + 1; // Include the period
|
|
641
|
+
content_start = marker_end;
|
|
642
|
+
// Skip any spaces after the period to find content start
|
|
643
|
+
while content_start < line.len() && line.chars().nth(content_start) == Some(' ') {
|
|
644
|
+
content_start += 1;
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
} else {
|
|
648
|
+
// Bullet list: marker is single character
|
|
649
|
+
marker_end = indent + 1; // Just the marker character
|
|
650
|
+
content_start = marker_end;
|
|
651
|
+
// Skip any spaces after the marker
|
|
652
|
+
while content_start < line.len() && line.chars().nth(content_start) == Some(' ') {
|
|
653
|
+
content_start += 1;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
636
656
|
|
|
637
|
-
let marker = &line[indent..
|
|
638
|
-
let content = &line[content_start..]
|
|
657
|
+
let marker = &line[indent..marker_end];
|
|
658
|
+
let content = &line[content_start..];
|
|
639
659
|
|
|
640
660
|
// Calculate the proper indentation for continuation lines
|
|
641
661
|
// We need to align with the text after the marker
|
|
642
|
-
let trimmed_marker = marker
|
|
643
|
-
let continuation_spaces =
|
|
662
|
+
let trimmed_marker = marker;
|
|
663
|
+
let continuation_spaces = content_start; // Use the actual content start position
|
|
664
|
+
|
|
665
|
+
// CRITICAL: Adjust line length to account for list marker and space
|
|
666
|
+
// For the first line, we need to account for: indent + marker + space
|
|
667
|
+
// The format is: "{indent_str}{trimmed_marker} {content}"
|
|
668
|
+
// So available width = line_length - indent - marker_length - 1 (for space)
|
|
669
|
+
let prefix_length = indent + trimmed_marker.len() + 1; // +1 for space after marker
|
|
670
|
+
|
|
671
|
+
// Create adjusted options with reduced line length
|
|
672
|
+
let adjusted_options = ReflowOptions {
|
|
673
|
+
line_length: options.line_length.saturating_sub(prefix_length),
|
|
674
|
+
..options.clone()
|
|
675
|
+
};
|
|
644
676
|
|
|
645
|
-
let reflowed = reflow_line(content,
|
|
677
|
+
let reflowed = reflow_line(content, &adjusted_options);
|
|
646
678
|
for (j, reflowed_line) in reflowed.iter().enumerate() {
|
|
647
679
|
if j == 0 {
|
|
648
680
|
result.push(format!("{indent_str}{trimmed_marker} {reflowed_line}"));
|
|
@@ -1063,4 +1095,60 @@ mod tests {
|
|
|
1063
1095
|
}
|
|
1064
1096
|
}
|
|
1065
1097
|
}
|
|
1098
|
+
|
|
1099
|
+
#[test]
|
|
1100
|
+
fn test_reflow_markdown_numbered_lists() {
|
|
1101
|
+
// Test for issue #83: numbered lists with proper formatting
|
|
1102
|
+
let options = ReflowOptions {
|
|
1103
|
+
line_length: 50,
|
|
1104
|
+
..Default::default()
|
|
1105
|
+
};
|
|
1106
|
+
|
|
1107
|
+
let content = r#"1. List `manifest` to find the manifest with the largest ID. Say it's `00000000000000000002.manifest` in this example.
|
|
1108
|
+
2. Short item
|
|
1109
|
+
3. Another long item that definitely exceeds the fifty character limit and needs wrapping"#;
|
|
1110
|
+
|
|
1111
|
+
let result = reflow_markdown(content, &options);
|
|
1112
|
+
|
|
1113
|
+
// Define exact expected output
|
|
1114
|
+
let expected = r#"1. List `manifest` to find the manifest with the
|
|
1115
|
+
largest ID. Say it's
|
|
1116
|
+
`00000000000000000002.manifest` in this
|
|
1117
|
+
example.
|
|
1118
|
+
2. Short item
|
|
1119
|
+
3. Another long item that definitely exceeds the
|
|
1120
|
+
fifty character limit and needs wrapping"#;
|
|
1121
|
+
|
|
1122
|
+
assert_eq!(
|
|
1123
|
+
result, expected,
|
|
1124
|
+
"Numbered lists should be reflowed with proper markers and indentation.\nExpected:\n{expected}\nGot:\n{result}"
|
|
1125
|
+
);
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
#[test]
|
|
1129
|
+
fn test_reflow_markdown_bullet_lists() {
|
|
1130
|
+
let options = ReflowOptions {
|
|
1131
|
+
line_length: 40,
|
|
1132
|
+
..Default::default()
|
|
1133
|
+
};
|
|
1134
|
+
|
|
1135
|
+
let content = r#"- First bullet point with a very long line that needs wrapping
|
|
1136
|
+
* Second bullet using asterisk
|
|
1137
|
+
+ Third bullet using plus sign
|
|
1138
|
+
- Short one"#;
|
|
1139
|
+
|
|
1140
|
+
let result = reflow_markdown(content, &options);
|
|
1141
|
+
|
|
1142
|
+
// Define exact expected output - each bullet type preserved with proper indentation
|
|
1143
|
+
let expected = r#"- First bullet point with a very long
|
|
1144
|
+
line that needs wrapping
|
|
1145
|
+
* Second bullet using asterisk
|
|
1146
|
+
+ Third bullet using plus sign
|
|
1147
|
+
- Short one"#;
|
|
1148
|
+
|
|
1149
|
+
assert_eq!(
|
|
1150
|
+
result, expected,
|
|
1151
|
+
"Bullet lists should preserve markers and indent continuations with 2 spaces.\nExpected:\n{expected}\nGot:\n{result}"
|
|
1152
|
+
);
|
|
1153
|
+
}
|
|
1066
1154
|
}
|
|
@@ -94,10 +94,10 @@ fn regression_test_historical_patterns() {
|
|
|
94
94
|
("A&B", "ab"),
|
|
95
95
|
("A & B", "a--b"),
|
|
96
96
|
("A & B & C", "a--b--c"),
|
|
97
|
-
// Arrow issues - updated
|
|
98
|
-
("A->B", "a
|
|
99
|
-
("A -> B", "a---b"),
|
|
100
|
-
("A --> B", "a----b"),
|
|
97
|
+
// Arrow issues - updated for issue #82 fix (correct GitHub behavior)
|
|
98
|
+
("A->B", "a-b"), // Fixed: -> now correctly becomes single hyphen
|
|
99
|
+
("A -> B", "a---b"), // Spaces preserved: space+arrow+space = 3 hyphens
|
|
100
|
+
("A --> B", "a----b"), // Spaces preserved: space+double-arrow+space = 4 hyphens
|
|
101
101
|
// Colon issues
|
|
102
102
|
("Title:Subtitle", "titlesubtitle"),
|
|
103
103
|
("Title: Subtitle", "title-subtitle"),
|
|
@@ -1795,3 +1795,38 @@ Table of contents:
|
|
|
1795
1795
|
// All links should be valid - no errors
|
|
1796
1796
|
assert_eq!(result.len(), 0, "All HTML anchor links should be valid");
|
|
1797
1797
|
}
|
|
1798
|
+
|
|
1799
|
+
#[test]
|
|
1800
|
+
fn test_issue_82_arrow_patterns() {
|
|
1801
|
+
// Test for issue #82 - headers with arrows should generate correct anchors
|
|
1802
|
+
let content = r#"# Document
|
|
1803
|
+
|
|
1804
|
+
## Table of Contents
|
|
1805
|
+
- [WAL->L0 Compaction](#wal-l0-compaction)
|
|
1806
|
+
- [foo->bar->baz](#foo-bar-baz)
|
|
1807
|
+
- [Header->with->Arrows](#header-with-arrows)
|
|
1808
|
+
|
|
1809
|
+
## WAL->L0 Compaction
|
|
1810
|
+
|
|
1811
|
+
Content about WAL to L0 compaction.
|
|
1812
|
+
|
|
1813
|
+
## foo->bar->baz
|
|
1814
|
+
|
|
1815
|
+
Content about foo bar baz.
|
|
1816
|
+
|
|
1817
|
+
## Header->with->Arrows
|
|
1818
|
+
|
|
1819
|
+
Content with arrows.
|
|
1820
|
+
"#;
|
|
1821
|
+
|
|
1822
|
+
let rule = MD051LinkFragments::new();
|
|
1823
|
+
let ctx = LintContext::new(content, rumdl_lib::config::MarkdownFlavor::Standard);
|
|
1824
|
+
let result = rule.check(&ctx).unwrap();
|
|
1825
|
+
|
|
1826
|
+
// All links should be valid with the fixed arrow pattern handling
|
|
1827
|
+
assert_eq!(
|
|
1828
|
+
result.len(),
|
|
1829
|
+
0,
|
|
1830
|
+
"Arrow patterns in headers should generate correct anchors (issue #82)"
|
|
1831
|
+
);
|
|
1832
|
+
}
|
|
@@ -632,3 +632,28 @@ fn test_undefined_reference_with_nested_brackets() {
|
|
|
632
632
|
assert_eq!(result.len(), 1);
|
|
633
633
|
assert!(result[0].message.contains("`Dict[str, Any]`"));
|
|
634
634
|
}
|
|
635
|
+
|
|
636
|
+
#[test]
|
|
637
|
+
fn test_issue_81_toml_code_block_not_parsed() {
|
|
638
|
+
// Test for issue #81 - TOML code blocks should not be parsed for references
|
|
639
|
+
let rule = MD052ReferenceLinkImages::new();
|
|
640
|
+
let content = r#"## Adding new examples
|
|
641
|
+
|
|
642
|
+
1. Create a new Rust file under `src`.
|
|
643
|
+
2. Add the binary definition to the `Cargo.toml` file, the list is ordered alphabetically by example name:
|
|
644
|
+
|
|
645
|
+
```toml
|
|
646
|
+
[[bin]]
|
|
647
|
+
name = "tracing-subscriber"
|
|
648
|
+
path = "src/tracing_subscriber.rs"
|
|
649
|
+
test = false
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
3. Add any required dependencies to the `Cargo.toml` file."#;
|
|
653
|
+
let ctx = LintContext::new(content, rumdl_lib::config::MarkdownFlavor::Standard);
|
|
654
|
+
let result = rule.check(&ctx).unwrap();
|
|
655
|
+
assert!(
|
|
656
|
+
result.is_empty(),
|
|
657
|
+
"Should not flag [[bin]] in TOML code block as undefined reference (issue #81)"
|
|
658
|
+
);
|
|
659
|
+
}
|
|
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
|