panache-cli 3.0.1__tar.gz → 3.0.2__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.
- {panache_cli-3.0.1 → panache_cli-3.0.2}/Cargo.lock +26 -26
- {panache_cli-3.0.1 → panache_cli-3.0.2}/Cargo.toml +3 -3
- {panache_cli-3.0.1 → panache_cli-3.0.2}/PKG-INFO +1 -1
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/CHANGELOG.md +8 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/Cargo.toml +2 -2
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/core.rs +1 -1
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/lists.rs +117 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/CHANGELOG.md +6 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/Cargo.toml +1 -1
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/block_dispatcher.rs +27 -1
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tables.rs +44 -1
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs +7 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/core.rs +25 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/config.rs +18 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/main.rs +1 -1
- {panache_cli-3.0.1 → panache_cli-3.0.2}/LICENSE +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/README.md +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/assets/quarto-schema/schema.json +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/build.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/README.md +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/config.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/directives.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/blockquotes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/code_blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/fenced_divs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/hashpipe.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/headings.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/indent_utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/inline.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/inline_layout.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/math/STYLE.md +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/math/linebreak.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/math/operators.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/math/render.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/math.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/metadata.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/paragraphs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/sentence_wrap.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/shortcodes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/smart.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/tables.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml/STYLE.md +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml/block_map.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml/block_sequence.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml/document.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml/flow.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml/options.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml/scalar.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/yaml.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/lib.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/parser.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/syntax.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/yaml_engine.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/README.md +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/build.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/grid_layout.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/lib.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/options.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/pandoc_ast.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/admonitions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/blockquotes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/code_blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/container_prefix.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/definition_lists.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/fenced_divs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/figures.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/headings.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/horizontal_rules.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/html_blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/indented_code.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/latex_envs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/line_blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/lists.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/metadata.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/myst_directives.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/myst_targets.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/paragraphs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/raw_blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/reference_links.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/blanklines.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/code_blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/definition_lists.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/headings.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/helpers.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/lists.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/losslessness.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/metadata_guards.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/diagnostics.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/bookdown.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/bracketed_spans.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/citations.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/code_spans.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/core.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/emoji.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/escapes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/inline_executable.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/inline_footnotes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/inline_html.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/inline_ir.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/latex.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/links.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/mark.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/math.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/myst_roles.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/myst_substitutions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/native_spans.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/raw_inline.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/refdef_map.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/shortcodes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/sink.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/strikeout.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/subscript.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/superscript.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/svelte.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/tests.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/uri-schemes.csv +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines/wikilinks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/inlines.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/math.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/attributes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/chunk_options.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/container_stack.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/continuation.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/helpers.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/inline_emission.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/list_item_buffer.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/marker_utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/text_buffer.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/tree_copy.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils/yaml_regions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml/cooking.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml/events.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml/model.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml/parser.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml/profile.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml/scanner.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml/validator.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/yaml.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/range_utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/alerts.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/ast.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/attributes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/block_quotes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/chunk_options.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/citations.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/code_blocks.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/crossrefs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/definitions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/fenced_divs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/headings.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/inlines.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/kind.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/links.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/lists.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/math.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/myst.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/raw_tex.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/references.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/shortcodes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/tables.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/yaml.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax/yaml_ast.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/syntax.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/pyproject.toml +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bib/bibtex.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bib/csl_json.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bib/csl_yaml.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bib/index.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bib/preview.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bib/ris.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bib.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/bin/distill_quarto_schema.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/cache.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/cli.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/config/formatter_presets.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/config/types/schema_helpers.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/config/types.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/diagnostic_renderer.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/directives.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/external_formatters_common.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/external_formatters_sync.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/external_tools_common.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/formatter.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/includes.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lib.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/code_block_collector.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/diagnostics.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters/clippy.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters/eslint.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters/jarl.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters/ruff.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters/shellcheck.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters/staticcheck.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/external_linters_sync.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/fuzzy.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/index.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/metadata_diagnostics.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/offsets.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/quarto_schema/distill.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/quarto_schema/interp.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/quarto_schema/model.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/quarto_schema/report.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/quarto_schema/value.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/quarto_schema.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/adjacent_footnote_refs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/chunk_label_spaces.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/citation_keys.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/citation_nonbreaking_space.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/consumer_divergence.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/crossref_as_link_target.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/duplicate_references.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/emoji_aliases.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/empty_list_item.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/empty_values.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/figure_crossref_captions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/footnote_ref_in_footnote_def.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/heading_eaten_attrs.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/heading_hierarchy.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/heading_strip_comments_residue.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/html_entities.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/link_text_is_url.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/math_content.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/missing_chunk_labels.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/quarto_schema.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/stray_fenced_div_markers.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/undefined_anchor.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/undefined_references.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules/unused_definitions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/rules.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/runner.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter/yaml_resolve.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/linter.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/config.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/context.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/conversions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/dispatch.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/documents.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/global_state.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/code_actions.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/completion.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/configuration.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/diagnostics.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/document_highlight.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/document_links.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/document_symbols.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/file_operations.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/file_rename.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/file_watcher.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/folding_ranges.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/footnote_conversion.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/formatting.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/goto_definition.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/heading_link_conversion.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/hover.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/link_conversion.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/linked_editing_range.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/list_conversion.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/prepare_rename.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/references.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/rename.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/semantic_tokens.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/shortcode_args.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/workspace_folders.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers/workspace_symbols.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/handlers.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/helpers.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/navigation.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/symbols.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/task_pool.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/testing.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp/uri_ext.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/lsp.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/metadata/bibliography.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/metadata/citations.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/metadata/project.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/metadata/references.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/metadata/yaml.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/metadata.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/parser.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/range_utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/salsa.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/syntax.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/utils.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/yaml_engine.rs +0 -0
- {panache_cli-3.0.1 → panache_cli-3.0.2}/src/yaml_regions.rs +0 -0
|
@@ -220,9 +220,9 @@ dependencies = [
|
|
|
220
220
|
|
|
221
221
|
[[package]]
|
|
222
222
|
name = "clap_complete"
|
|
223
|
-
version = "4.6.
|
|
223
|
+
version = "4.6.8"
|
|
224
224
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
225
|
-
checksum = "
|
|
225
|
+
checksum = "b1f84a88507dbd05c695f2cb5e8558e747179134005e9893882dec964190ed89"
|
|
226
226
|
dependencies = [
|
|
227
227
|
"clap",
|
|
228
228
|
]
|
|
@@ -430,13 +430,13 @@ dependencies = [
|
|
|
430
430
|
|
|
431
431
|
[[package]]
|
|
432
432
|
name = "displaydoc"
|
|
433
|
-
version = "0.2.
|
|
433
|
+
version = "0.2.7"
|
|
434
434
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
435
|
-
checksum = "
|
|
435
|
+
checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
|
|
436
436
|
dependencies = [
|
|
437
437
|
"proc-macro2",
|
|
438
438
|
"quote",
|
|
439
|
-
"syn
|
|
439
|
+
"syn 3.0.3",
|
|
440
440
|
]
|
|
441
441
|
|
|
442
442
|
[[package]]
|
|
@@ -883,9 +883,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
|
883
883
|
|
|
884
884
|
[[package]]
|
|
885
885
|
name = "jiff"
|
|
886
|
-
version = "0.2.
|
|
886
|
+
version = "0.2.35"
|
|
887
887
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
888
|
-
checksum = "
|
|
888
|
+
checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc"
|
|
889
889
|
dependencies = [
|
|
890
890
|
"defmt",
|
|
891
891
|
"jiff-core",
|
|
@@ -907,9 +907,9 @@ dependencies = [
|
|
|
907
907
|
|
|
908
908
|
[[package]]
|
|
909
909
|
name = "jiff-static"
|
|
910
|
-
version = "0.2.
|
|
910
|
+
version = "0.2.35"
|
|
911
911
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
912
|
-
checksum = "
|
|
912
|
+
checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204"
|
|
913
913
|
dependencies = [
|
|
914
914
|
"jiff-core",
|
|
915
915
|
"proc-macro2",
|
|
@@ -1205,7 +1205,7 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
|
|
|
1205
1205
|
|
|
1206
1206
|
[[package]]
|
|
1207
1207
|
name = "panache"
|
|
1208
|
-
version = "3.0.
|
|
1208
|
+
version = "3.0.2"
|
|
1209
1209
|
dependencies = [
|
|
1210
1210
|
"annotate-snippets",
|
|
1211
1211
|
"assert_cmd",
|
|
@@ -1249,7 +1249,7 @@ dependencies = [
|
|
|
1249
1249
|
|
|
1250
1250
|
[[package]]
|
|
1251
1251
|
name = "panache-formatter"
|
|
1252
|
-
version = "0.20.
|
|
1252
|
+
version = "0.20.2"
|
|
1253
1253
|
dependencies = [
|
|
1254
1254
|
"insta",
|
|
1255
1255
|
"log",
|
|
@@ -1267,7 +1267,7 @@ dependencies = [
|
|
|
1267
1267
|
|
|
1268
1268
|
[[package]]
|
|
1269
1269
|
name = "panache-parser"
|
|
1270
|
-
version = "0.22.
|
|
1270
|
+
version = "0.22.2"
|
|
1271
1271
|
dependencies = [
|
|
1272
1272
|
"entities",
|
|
1273
1273
|
"insta",
|
|
@@ -1663,9 +1663,9 @@ dependencies = [
|
|
|
1663
1663
|
|
|
1664
1664
|
[[package]]
|
|
1665
1665
|
name = "schemars"
|
|
1666
|
-
version = "1.2.
|
|
1666
|
+
version = "1.2.2"
|
|
1667
1667
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1668
|
-
checksum = "
|
|
1668
|
+
checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a"
|
|
1669
1669
|
dependencies = [
|
|
1670
1670
|
"dyn-clone",
|
|
1671
1671
|
"ref-cast",
|
|
@@ -1676,14 +1676,14 @@ dependencies = [
|
|
|
1676
1676
|
|
|
1677
1677
|
[[package]]
|
|
1678
1678
|
name = "schemars_derive"
|
|
1679
|
-
version = "1.2.
|
|
1679
|
+
version = "1.2.2"
|
|
1680
1680
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1681
|
-
checksum = "
|
|
1681
|
+
checksum = "d98c67716b46af2f0b8cf752abc930f6f9aecfbf671ecfb531db8a31dbe4e2ba"
|
|
1682
1682
|
dependencies = [
|
|
1683
1683
|
"proc-macro2",
|
|
1684
1684
|
"quote",
|
|
1685
1685
|
"serde_derive_internals",
|
|
1686
|
-
"syn
|
|
1686
|
+
"syn 3.0.3",
|
|
1687
1687
|
]
|
|
1688
1688
|
|
|
1689
1689
|
[[package]]
|
|
@@ -1724,13 +1724,13 @@ dependencies = [
|
|
|
1724
1724
|
|
|
1725
1725
|
[[package]]
|
|
1726
1726
|
name = "serde_derive_internals"
|
|
1727
|
-
version = "0.
|
|
1727
|
+
version = "0.30.0"
|
|
1728
1728
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1729
|
-
checksum = "
|
|
1729
|
+
checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd"
|
|
1730
1730
|
dependencies = [
|
|
1731
1731
|
"proc-macro2",
|
|
1732
1732
|
"quote",
|
|
1733
|
-
"syn
|
|
1733
|
+
"syn 3.0.3",
|
|
1734
1734
|
]
|
|
1735
1735
|
|
|
1736
1736
|
[[package]]
|
|
@@ -1909,9 +1909,9 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233"
|
|
|
1909
1909
|
|
|
1910
1910
|
[[package]]
|
|
1911
1911
|
name = "thin-vec"
|
|
1912
|
-
version = "0.2.
|
|
1912
|
+
version = "0.2.19"
|
|
1913
1913
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1914
|
-
checksum = "
|
|
1914
|
+
checksum = "79def32ffcd477db1ff26f76dab9e3a91f0bd42a85ca96577089b24623056f9d"
|
|
1915
1915
|
|
|
1916
1916
|
[[package]]
|
|
1917
1917
|
name = "thiserror"
|
|
@@ -1951,9 +1951,9 @@ dependencies = [
|
|
|
1951
1951
|
|
|
1952
1952
|
[[package]]
|
|
1953
1953
|
name = "toml"
|
|
1954
|
-
version = "1.1.
|
|
1954
|
+
version = "1.1.4+spec-1.1.0"
|
|
1955
1955
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1956
|
-
checksum = "
|
|
1956
|
+
checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5"
|
|
1957
1957
|
dependencies = [
|
|
1958
1958
|
"indexmap",
|
|
1959
1959
|
"serde_core",
|
|
@@ -1975,9 +1975,9 @@ dependencies = [
|
|
|
1975
1975
|
|
|
1976
1976
|
[[package]]
|
|
1977
1977
|
name = "toml_parser"
|
|
1978
|
-
version = "1.1.
|
|
1978
|
+
version = "1.1.3+spec-1.1.0"
|
|
1979
1979
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1980
|
-
checksum = "
|
|
1980
|
+
checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
|
|
1981
1981
|
dependencies = [
|
|
1982
1982
|
"winnow 1.0.4",
|
|
1983
1983
|
]
|
|
@@ -7,7 +7,7 @@ authors = ["Johan Larsson <johan@jolars.co>"]
|
|
|
7
7
|
|
|
8
8
|
[package]
|
|
9
9
|
name = "panache"
|
|
10
|
-
version = "3.0.
|
|
10
|
+
version = "3.0.2"
|
|
11
11
|
edition.workspace = true
|
|
12
12
|
# `distill_quarto_schema` is a dev-only vendoring bin (src/bin/); keep bare
|
|
13
13
|
# `cargo run` resolving to the CLI for tooling like the pre-commit format hook.
|
|
@@ -48,8 +48,8 @@ path = "src/main.rs"
|
|
|
48
48
|
required-features = ["cli"]
|
|
49
49
|
|
|
50
50
|
[dependencies]
|
|
51
|
-
panache-formatter = { path = "crates/panache-formatter", version = "0.20.
|
|
52
|
-
panache-parser = { path = "crates/panache-parser", version = "0.22.
|
|
51
|
+
panache-formatter = { path = "crates/panache-formatter", version = "0.20.2" }
|
|
52
|
+
panache-parser = { path = "crates/panache-parser", version = "0.22.2", features = [
|
|
53
53
|
"serde",
|
|
54
54
|
"schema",
|
|
55
55
|
] }
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.20.2](https://github.com/jolars/panache/compare/panache-formatter-v0.20.1...panache-formatter-v0.20.2) (2026-07-28)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
- stabilize divs and code blocks in list items ([`3c47658`](https://github.com/jolars/panache/commit/3c476588af1cbdcf1e9f002a5dc904373fbc800e)), closes [#439](https://github.com/jolars/panache/issues/439)
|
|
7
|
+
|
|
8
|
+
### Dependencies
|
|
9
|
+
- updated crates/panache-parser to v0.22.2
|
|
10
|
+
|
|
3
11
|
## [0.20.1](https://github.com/jolars/panache/compare/panache-formatter-v0.20.0...panache-formatter-v0.20.1) (2026-07-25)
|
|
4
12
|
|
|
5
13
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "panache-formatter"
|
|
3
|
-
version = "0.20.
|
|
3
|
+
version = "0.20.2"
|
|
4
4
|
edition.workspace = true
|
|
5
5
|
include = [
|
|
6
6
|
"/src/**/*",
|
|
@@ -18,7 +18,7 @@ keywords = ["quarto", "pandoc", "markdown", "formatter"]
|
|
|
18
18
|
categories = ["text-processing"]
|
|
19
19
|
|
|
20
20
|
[dependencies]
|
|
21
|
-
panache-parser = { path = "../panache-parser", version = "0.22.
|
|
21
|
+
panache-parser = { path = "../panache-parser", version = "0.22.2" }
|
|
22
22
|
log = { version = "0.4.31", features = ["release_max_level_debug"] }
|
|
23
23
|
rowan = "0.16.1"
|
|
24
24
|
serde = { version = "1.0.228", features = ["derive"], optional = true }
|
|
@@ -278,7 +278,7 @@ impl Formatter {
|
|
|
278
278
|
code_blocks::format_code_block(node, &self.config, &self.formatted_code, &mut self.output);
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
fn format_code_block_to_string(&mut self, node: &SyntaxNode) -> String {
|
|
281
|
+
pub(super) fn format_code_block_to_string(&mut self, node: &SyntaxNode) -> String {
|
|
282
282
|
let saved_output = self.output.clone();
|
|
283
283
|
self.output.clear();
|
|
284
284
|
self.format_code_block(node);
|
|
@@ -697,6 +697,123 @@ impl Formatter {
|
|
|
697
697
|
return;
|
|
698
698
|
}
|
|
699
699
|
|
|
700
|
+
// Same-line leading-block case: a LIST_ITEM whose first non-blank child
|
|
701
|
+
// is a FENCED_DIV or CODE_BLOCK (no preceding PLAIN/PARAGRAPH).
|
|
702
|
+
// Examples: `- ::: note`, ``- ```rust``. Without this the item has no
|
|
703
|
+
// content node, so the generic path below never emits the marker and
|
|
704
|
+
// the block swallows it (issue #439). Emit the outer marker, then format
|
|
705
|
+
// the block at indent=0 so its opening fence abuts the marker; splice
|
|
706
|
+
// the outer item's hanging indent into subsequent lines. Mirrors the
|
|
707
|
+
// leading-BQ path.
|
|
708
|
+
if let Some(leading_block) = first_non_blank_child.as_ref()
|
|
709
|
+
&& matches!(
|
|
710
|
+
leading_block.kind(),
|
|
711
|
+
SyntaxKind::FENCED_DIV | SyntaxKind::CODE_BLOCK
|
|
712
|
+
)
|
|
713
|
+
&& Self::find_content_node(node).is_none()
|
|
714
|
+
{
|
|
715
|
+
self.output.push_str(&" ".repeat(total_indent));
|
|
716
|
+
self.output
|
|
717
|
+
.push_str(&" ".repeat(list_indent.marker_padding));
|
|
718
|
+
self.output.push_str(&marker);
|
|
719
|
+
self.output.push_str(&" ".repeat(list_indent.spaces_after));
|
|
720
|
+
if let Some(ref cb) = checkbox {
|
|
721
|
+
self.output.push_str(cb);
|
|
722
|
+
self.output.push(' ');
|
|
723
|
+
}
|
|
724
|
+
let block_start = self.output.len();
|
|
725
|
+
if leading_block.kind() == SyntaxKind::CODE_BLOCK {
|
|
726
|
+
// A code block on the marker line carries no fence-indent token
|
|
727
|
+
// (its indent was consumed as the marker's trailing space), so
|
|
728
|
+
// the shared renderer leaves the list indent embedded in the
|
|
729
|
+
// content. Render it bare, abut the opening fence to the marker,
|
|
730
|
+
// then re-indent: dedent the content by its own common indent
|
|
731
|
+
// and re-apply the hanging column. The closing fence renders at
|
|
732
|
+
// column 0 and just takes the hanging prefix.
|
|
733
|
+
let raw = self.format_code_block_to_string(leading_block);
|
|
734
|
+
let raw = raw.strip_suffix('\n').unwrap_or(&raw);
|
|
735
|
+
let block_lines: Vec<&str> = raw.split('\n').collect();
|
|
736
|
+
let prefix = " ".repeat(hanging);
|
|
737
|
+
let last = block_lines.len().saturating_sub(1);
|
|
738
|
+
let content_indent = block_lines
|
|
739
|
+
.get(1..last)
|
|
740
|
+
.unwrap_or(&[])
|
|
741
|
+
.iter()
|
|
742
|
+
.filter(|l| !l.trim().is_empty())
|
|
743
|
+
.map(|l| l.len() - l.trim_start().len())
|
|
744
|
+
.min()
|
|
745
|
+
.unwrap_or(0);
|
|
746
|
+
for (i, line) in block_lines.iter().enumerate() {
|
|
747
|
+
if i == 0 {
|
|
748
|
+
// Opening fence abuts the marker already emitted above.
|
|
749
|
+
self.output.push_str(line.trim_start());
|
|
750
|
+
} else if line.trim().is_empty() {
|
|
751
|
+
// Leave blank content lines bare (no trailing spaces).
|
|
752
|
+
} else if i == last {
|
|
753
|
+
// Closing fence renders at column 0; just add hanging.
|
|
754
|
+
self.output.push_str(&prefix);
|
|
755
|
+
self.output.push_str(line);
|
|
756
|
+
} else {
|
|
757
|
+
// Content line: dedent its embedded list indent, re-indent.
|
|
758
|
+
self.output.push_str(&prefix);
|
|
759
|
+
let cut = content_indent.min(line.len());
|
|
760
|
+
self.output.push_str(&line[cut..]);
|
|
761
|
+
}
|
|
762
|
+
self.output.push('\n');
|
|
763
|
+
}
|
|
764
|
+
} else {
|
|
765
|
+
// A fenced div's body is re-formatted from child blocks, so
|
|
766
|
+
// format it at indent 0 and splice the hanging indent into
|
|
767
|
+
// every subsequent non-blank line.
|
|
768
|
+
self.format_node_sync(leading_block, 0);
|
|
769
|
+
if self.output.as_bytes().get(block_start) == Some(&b'\n') {
|
|
770
|
+
self.output.remove(block_start);
|
|
771
|
+
}
|
|
772
|
+
if hanging > 0 {
|
|
773
|
+
let block_text = self.output.split_off(block_start);
|
|
774
|
+
let prefix = " ".repeat(hanging);
|
|
775
|
+
let mut first = true;
|
|
776
|
+
for line in block_text.split_inclusive('\n') {
|
|
777
|
+
let is_blank = line.trim_end_matches('\n').is_empty();
|
|
778
|
+
if !first && !is_blank {
|
|
779
|
+
self.output.push_str(&prefix);
|
|
780
|
+
}
|
|
781
|
+
self.output.push_str(line);
|
|
782
|
+
first = false;
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
// Emit trailing children (further blocks after the leading block) at
|
|
788
|
+
// hanging indent, preserving a single blank-line separator between
|
|
789
|
+
// loose blocks. Dropping the blank would glue two sibling divs
|
|
790
|
+
// (`:::` immediately followed by `::: other`), which re-parses into
|
|
791
|
+
// a different shape and breaks idempotency (issue #439).
|
|
792
|
+
let mut reached_leading = false;
|
|
793
|
+
let mut pending_blank = false;
|
|
794
|
+
for child in node.children() {
|
|
795
|
+
if &child == leading_block {
|
|
796
|
+
reached_leading = true;
|
|
797
|
+
continue;
|
|
798
|
+
}
|
|
799
|
+
if !reached_leading {
|
|
800
|
+
continue;
|
|
801
|
+
}
|
|
802
|
+
if child.kind() == SyntaxKind::BLANK_LINE {
|
|
803
|
+
pending_blank = true;
|
|
804
|
+
continue;
|
|
805
|
+
}
|
|
806
|
+
if pending_blank {
|
|
807
|
+
if !self.output.ends_with("\n\n") {
|
|
808
|
+
self.output.push('\n');
|
|
809
|
+
}
|
|
810
|
+
pending_blank = false;
|
|
811
|
+
}
|
|
812
|
+
self.format_node_sync(&child, hanging);
|
|
813
|
+
}
|
|
814
|
+
return;
|
|
815
|
+
}
|
|
816
|
+
|
|
700
817
|
// Same-line nested-marker case: a LIST_ITEM whose first non-blank
|
|
701
818
|
// child is a non-empty nested LIST (no preceding PLAIN/PARAGRAPH).
|
|
702
819
|
// Examples: `- - foo`, `1. - 2. foo`. Emit the outer marker without
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.22.2](https://github.com/jolars/panache/compare/panache-parser-v0.22.1...panache-parser-v0.22.2) (2026-07-28)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
- stabilize divs and code blocks in list items ([`3c47658`](https://github.com/jolars/panache/commit/3c476588af1cbdcf1e9f002a5dc904373fbc800e)), closes [#439](https://github.com/jolars/panache/issues/439)
|
|
7
|
+
- **parser:** inline-parse single-column multiline table cells ([`f69d2bb`](https://github.com/jolars/panache/commit/f69d2bbc7847a15f67c1b5322f9d529962fe0521)), closes [#438](https://github.com/jolars/panache/issues/438)
|
|
8
|
+
|
|
3
9
|
## [0.22.1](https://github.com/jolars/panache/compare/panache-parser-v0.22.0...panache-parser-v0.22.1) (2026-07-25)
|
|
4
10
|
|
|
5
11
|
### Bug Fixes
|
{panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/block_dispatcher.rs
RENAMED
|
@@ -135,6 +135,12 @@ pub(crate) struct BlockContext<'a> {
|
|
|
135
135
|
/// Whether we're currently inside any list
|
|
136
136
|
pub in_list: bool,
|
|
137
137
|
|
|
138
|
+
/// Whether the innermost open fenced div wraps the innermost open list (the
|
|
139
|
+
/// div is outer to the list). When true, a `:::` at the list content column
|
|
140
|
+
/// is list content rather than the div's closer. See issue #439 and
|
|
141
|
+
/// `FencedDivCloseParser::detect_prepared`.
|
|
142
|
+
pub fenced_div_wraps_list: bool,
|
|
143
|
+
|
|
138
144
|
/// Whether the immediate enclosing container is a list item that has so
|
|
139
145
|
/// far seen only its marker (no content yet). Equivalent to the
|
|
140
146
|
/// `marker_only` flag on `Container::ListItem`. Used by indented code
|
|
@@ -2527,7 +2533,27 @@ impl BlockParser for FencedDivCloseParser {
|
|
|
2527
2533
|
return None;
|
|
2528
2534
|
}
|
|
2529
2535
|
|
|
2530
|
-
|
|
2536
|
+
// When the innermost open div *wraps* the current list, a `:::` at or
|
|
2537
|
+
// beyond the list's content column is list content, not this div's
|
|
2538
|
+
// closer: pandoc only closes a div on a fence at the div's own
|
|
2539
|
+
// indentation, so an outer (col-0) div is not closed by an indented
|
|
2540
|
+
// fence buried in a list item — it closes a div opened *inside* the item
|
|
2541
|
+
// (handled by list buffering + re-parse) or is literal text. Without
|
|
2542
|
+
// this guard the outer div steals the inner fence, dropping the nested
|
|
2543
|
+
// div's close and breaking idempotency (issue #439). The guard is scoped
|
|
2544
|
+
// to wrapping divs so a div opened as a list *continuation* block still
|
|
2545
|
+
// closes on a fence at its own (content-column) indentation.
|
|
2546
|
+
let first = lines.first();
|
|
2547
|
+
if ctx.fenced_div_wraps_list
|
|
2548
|
+
&& let Some(list_info) = ctx.list_indent_info
|
|
2549
|
+
{
|
|
2550
|
+
let (indent_cols, _) = leading_indent(first);
|
|
2551
|
+
if indent_cols >= list_info.content_col {
|
|
2552
|
+
return None;
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
|
|
2556
|
+
if !is_div_closing_fence(content_for_fenced_div_detection(ctx, first)) {
|
|
2531
2557
|
return None;
|
|
2532
2558
|
}
|
|
2533
2559
|
|
|
@@ -11,7 +11,7 @@ use crate::parser::utils::attributes::{
|
|
|
11
11
|
use crate::parser::utils::helpers::{emit_line_tokens, emit_separator_tokens, strip_newline};
|
|
12
12
|
use crate::parser::utils::inline_emission;
|
|
13
13
|
|
|
14
|
-
use super::container_prefix::StrippedLines;
|
|
14
|
+
use super::container_prefix::{ContainerPrefix, StrippedLines};
|
|
15
15
|
|
|
16
16
|
/// Read-only indexed view over lines for table detection scans. Two
|
|
17
17
|
/// backings:
|
|
@@ -3340,6 +3340,14 @@ fn extract_first_line_cell_contents(line: &str, columns: &[Column]) -> Vec<Strin
|
|
|
3340
3340
|
cells
|
|
3341
3341
|
}
|
|
3342
3342
|
|
|
3343
|
+
/// Whether the window's container prefix contributes no bytes to continuation
|
|
3344
|
+
/// lines (top-level, i.e. not nested in a blockquote or list). Used to gate the
|
|
3345
|
+
/// single-column multiline-cell inline join, which reads raw continuation lines
|
|
3346
|
+
/// and would otherwise fold `>`/list-marker bytes into cell content.
|
|
3347
|
+
fn prefix_is_empty(prefix: &ContainerPrefix) -> bool {
|
|
3348
|
+
prefix.bq_depth() == 0 && prefix.list_content_col() == 0 && prefix.content_indent() == 0
|
|
3349
|
+
}
|
|
3350
|
+
|
|
3343
3351
|
/// Emit a multiline table row with inline parsing (Phase 7.1).
|
|
3344
3352
|
///
|
|
3345
3353
|
/// `indices` are ABSOLUTE line indices into the window's raw buffer; each
|
|
@@ -3360,6 +3368,41 @@ fn emit_multiline_table_row(
|
|
|
3360
3368
|
|
|
3361
3369
|
builder.start_node(kind.into());
|
|
3362
3370
|
|
|
3371
|
+
// Single-column, top-level multi-line rows: pandoc joins a cell's physical
|
|
3372
|
+
// lines and parses the result as inline content, so a fenced code block
|
|
3373
|
+
// inside the cell flattens to an inline code span. Emitting continuation
|
|
3374
|
+
// lines as raw TEXT (the general path below) skips that inline pass, leaving
|
|
3375
|
+
// un-normalized markup (```` ```{r} rm(F12) ``` ````) that reparses as a
|
|
3376
|
+
// normalized inline code span on the next format pass — an idempotency break
|
|
3377
|
+
// (issue #438). Feed the joined cell text through the inline emitter,
|
|
3378
|
+
// preserving interior newlines for losslessness. Gated on an empty container
|
|
3379
|
+
// prefix so continuation-line `>`/list markers never leak into cell content;
|
|
3380
|
+
// nested and multi-column rows keep the verbatim path.
|
|
3381
|
+
if columns.len() == 1 && indices.len() > 1 && prefix_is_empty(window.prefix()) {
|
|
3382
|
+
let first = window.strip_at(indices[0]);
|
|
3383
|
+
let (first_trimmed, _) = strip_newline(first);
|
|
3384
|
+
let cell_start = column_offset_to_byte_index(first_trimmed, columns[0].start);
|
|
3385
|
+
if cell_start > 0 {
|
|
3386
|
+
builder.token(SyntaxKind::WHITESPACE.into(), &first_trimmed[..cell_start]);
|
|
3387
|
+
}
|
|
3388
|
+
|
|
3389
|
+
let mut joined = String::from(&first[cell_start..]);
|
|
3390
|
+
for &idx in &indices[1..] {
|
|
3391
|
+
joined.push_str(window.strip_at(idx));
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3394
|
+
// Split the trailing newline off so it sits beside the cell as a sibling
|
|
3395
|
+
// NEWLINE, matching the single-line row shape.
|
|
3396
|
+
let (cell_text, trailing_nl) = strip_newline(&joined);
|
|
3397
|
+
emit_table_cell(builder, cell_text, config);
|
|
3398
|
+
if !trailing_nl.is_empty() {
|
|
3399
|
+
builder.token(SyntaxKind::NEWLINE.into(), trailing_nl);
|
|
3400
|
+
}
|
|
3401
|
+
|
|
3402
|
+
builder.finish_node();
|
|
3403
|
+
return;
|
|
3404
|
+
}
|
|
3405
|
+
|
|
3363
3406
|
// Emit the first line's container prefix as tokens, then slice cells from
|
|
3364
3407
|
// the prefix-stripped tail (for CST losslessness, only the first physical
|
|
3365
3408
|
// line is parsed into cells; continuation lines stay verbatim TEXT).
|
{panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs
RENAMED
|
@@ -485,6 +485,7 @@ fn dispatcher_blockquote_detection() {
|
|
|
485
485
|
has_blank_before_strict: true,
|
|
486
486
|
at_document_start: true,
|
|
487
487
|
in_fenced_div: false,
|
|
488
|
+
fenced_div_wraps_list: false,
|
|
488
489
|
myst_directive_closer: None,
|
|
489
490
|
blockquote_depth: 0,
|
|
490
491
|
config: &ParserOptions::default(),
|
|
@@ -525,6 +526,7 @@ fn dispatcher_blockquote_requires_blank_before() {
|
|
|
525
526
|
has_blank_before_strict: false,
|
|
526
527
|
at_document_start: false,
|
|
527
528
|
in_fenced_div: false,
|
|
529
|
+
fenced_div_wraps_list: false,
|
|
528
530
|
myst_directive_closer: None,
|
|
529
531
|
blockquote_depth: 0,
|
|
530
532
|
config: &ParserOptions::default(),
|
|
@@ -571,6 +573,7 @@ fn dispatcher_blockquote_payload_basic() {
|
|
|
571
573
|
has_blank_before_strict: true,
|
|
572
574
|
at_document_start: true,
|
|
573
575
|
in_fenced_div: false,
|
|
576
|
+
fenced_div_wraps_list: false,
|
|
574
577
|
myst_directive_closer: None,
|
|
575
578
|
blockquote_depth: 0,
|
|
576
579
|
config: &ParserOptions::default(),
|
|
@@ -614,6 +617,7 @@ fn dispatcher_blockquote_payload_nested_requires_blank() {
|
|
|
614
617
|
has_blank_before_strict: false,
|
|
615
618
|
at_document_start: false,
|
|
616
619
|
in_fenced_div: false,
|
|
620
|
+
fenced_div_wraps_list: false,
|
|
617
621
|
myst_directive_closer: None,
|
|
618
622
|
blockquote_depth: 0,
|
|
619
623
|
config: &ParserOptions::default(),
|
|
@@ -655,6 +659,7 @@ fn dispatcher_blockquote_ignored_inside_blockquote() {
|
|
|
655
659
|
has_blank_before_strict: false,
|
|
656
660
|
at_document_start: false,
|
|
657
661
|
in_fenced_div: false,
|
|
662
|
+
fenced_div_wraps_list: false,
|
|
658
663
|
myst_directive_closer: None,
|
|
659
664
|
blockquote_depth: 1,
|
|
660
665
|
config: &ParserOptions::default(),
|
|
@@ -692,6 +697,7 @@ fn dispatcher_blockquote_payload_nested_with_blank() {
|
|
|
692
697
|
has_blank_before_strict: false,
|
|
693
698
|
at_document_start: false,
|
|
694
699
|
in_fenced_div: false,
|
|
700
|
+
fenced_div_wraps_list: false,
|
|
695
701
|
myst_directive_closer: None,
|
|
696
702
|
blockquote_depth: 0,
|
|
697
703
|
config: &ParserOptions::default(),
|
|
@@ -733,6 +739,7 @@ fn dispatcher_blockquote_payload_nested_after_blank_line() {
|
|
|
733
739
|
has_blank_before_strict: true,
|
|
734
740
|
at_document_start: false,
|
|
735
741
|
in_fenced_div: false,
|
|
742
|
+
fenced_div_wraps_list: false,
|
|
736
743
|
myst_directive_closer: None,
|
|
737
744
|
blockquote_depth: 0,
|
|
738
745
|
config: &ParserOptions::default(),
|
|
@@ -2406,6 +2406,7 @@ impl<'a> Parser<'a> {
|
|
|
2406
2406
|
has_blank_before_strict: has_blank_before,
|
|
2407
2407
|
at_document_start: self.pos == 0,
|
|
2408
2408
|
in_fenced_div: self.in_fenced_div(),
|
|
2409
|
+
fenced_div_wraps_list: self.fenced_div_wraps_innermost_list(),
|
|
2409
2410
|
myst_directive_closer: self.innermost_myst_directive_closer(),
|
|
2410
2411
|
blockquote_depth: current_bq_depth,
|
|
2411
2412
|
config: self.config,
|
|
@@ -3569,6 +3570,7 @@ impl<'a> Parser<'a> {
|
|
|
3569
3570
|
|| is_blank_line(self.lines[self.pos - 1]),
|
|
3570
3571
|
at_document_start: self.pos == 0 && self.current_blockquote_depth() == 0,
|
|
3571
3572
|
in_fenced_div: self.in_fenced_div(),
|
|
3573
|
+
fenced_div_wraps_list: self.fenced_div_wraps_innermost_list(),
|
|
3572
3574
|
myst_directive_closer: self.innermost_myst_directive_closer(),
|
|
3573
3575
|
blockquote_depth: self.current_blockquote_depth(),
|
|
3574
3576
|
config: self.config,
|
|
@@ -3826,6 +3828,7 @@ impl<'a> Parser<'a> {
|
|
|
3826
3828
|
has_blank_before_strict: false, // filled in later
|
|
3827
3829
|
at_document_start: false, // filled in later
|
|
3828
3830
|
in_fenced_div: self.in_fenced_div(),
|
|
3831
|
+
fenced_div_wraps_list: self.fenced_div_wraps_innermost_list(),
|
|
3829
3832
|
myst_directive_closer: self.innermost_myst_directive_closer(),
|
|
3830
3833
|
blockquote_depth: current_bq_depth,
|
|
3831
3834
|
config: self.config,
|
|
@@ -4368,6 +4371,28 @@ impl<'a> Parser<'a> {
|
|
|
4368
4371
|
.rposition(|c| matches!(c, Container::FencedDiv { .. }))
|
|
4369
4372
|
}
|
|
4370
4373
|
|
|
4374
|
+
/// True when the innermost open fenced div wraps the innermost open list
|
|
4375
|
+
/// (the div is outer to the list on the container stack). In that case a
|
|
4376
|
+
/// `:::` indented to the list's content column is list content, not the
|
|
4377
|
+
/// div's closer — pandoc only closes a div on a fence at the div's own
|
|
4378
|
+
/// indentation. When instead the innermost div was opened *inside* a list
|
|
4379
|
+
/// item (as a continuation block, so it is inner to the list), a fence at
|
|
4380
|
+
/// the content column does close it. See issue #439.
|
|
4381
|
+
fn fenced_div_wraps_innermost_list(&self) -> bool {
|
|
4382
|
+
let Some(div_idx) = self.fenced_div_container_index() else {
|
|
4383
|
+
return false;
|
|
4384
|
+
};
|
|
4385
|
+
match self
|
|
4386
|
+
.containers
|
|
4387
|
+
.stack
|
|
4388
|
+
.iter()
|
|
4389
|
+
.rposition(|c| matches!(c, Container::List { .. }))
|
|
4390
|
+
{
|
|
4391
|
+
Some(list_idx) => div_idx < list_idx,
|
|
4392
|
+
None => false,
|
|
4393
|
+
}
|
|
4394
|
+
}
|
|
4395
|
+
|
|
4371
4396
|
fn close_containers_to_fenced_div(&mut self) {
|
|
4372
4397
|
if let Some(index) = self.fenced_div_container_index() {
|
|
4373
4398
|
self.close_containers_to(index + 1);
|
|
@@ -598,6 +598,17 @@ fn project_boundary(start_dir: &Path) -> Option<PathBuf> {
|
|
|
598
598
|
None
|
|
599
599
|
}
|
|
600
600
|
|
|
601
|
+
/// Resolve a possibly CWD-relative `start_dir` to an absolute path so that
|
|
602
|
+
/// ancestor walks see the real filesystem parents. The empty path (the parent
|
|
603
|
+
/// of a bare filename) means the working directory. Falls back to the path as
|
|
604
|
+
/// given when the working directory is unavailable.
|
|
605
|
+
fn absolutize_start_dir(start_dir: &Path) -> PathBuf {
|
|
606
|
+
if start_dir.as_os_str().is_empty() {
|
|
607
|
+
return env::current_dir().unwrap_or_else(|_| start_dir.to_path_buf());
|
|
608
|
+
}
|
|
609
|
+
std::path::absolute(start_dir).unwrap_or_else(|_| start_dir.to_path_buf())
|
|
610
|
+
}
|
|
611
|
+
|
|
601
612
|
fn xdg_config_path() -> Option<PathBuf> {
|
|
602
613
|
if let Ok(xdg) = env::var("XDG_CONFIG_HOME") {
|
|
603
614
|
let p = Path::new(&xdg).join("panache").join("config.toml");
|
|
@@ -679,6 +690,13 @@ pub fn load_with_chain(
|
|
|
679
690
|
input_file: Option<&Path>,
|
|
680
691
|
flavor_override: Option<Flavor>,
|
|
681
692
|
) -> io::Result<(Config, ConfigSource, Vec<PathBuf>)> {
|
|
693
|
+
// CLI callers derive `start_dir` from user-supplied targets, so it is
|
|
694
|
+
// often CWD-relative (`.`, `subdir`, or even empty for a bare filename).
|
|
695
|
+
// `Path::ancestors()` is purely lexical: a relative walk ends at the
|
|
696
|
+
// working directory and never reaches its real filesystem parents, so
|
|
697
|
+
// discovery and the `.git` boundary would miss ancestor configs (#441).
|
|
698
|
+
let start_dir = absolutize_start_dir(start_dir);
|
|
699
|
+
let start_dir = start_dir.as_path();
|
|
682
700
|
let boundary = project_boundary(start_dir);
|
|
683
701
|
let (mut cfg, source, extensions, chain) = if let Some(path) = explicit {
|
|
684
702
|
let (cfg, ext, chain) = read_config_with_chain(path).map_err(io::Error::from)?;
|
|
@@ -1522,7 +1522,7 @@ fn main() -> io::Result<()> {
|
|
|
1522
1522
|
} => {
|
|
1523
1523
|
if check {
|
|
1524
1524
|
eprintln!(
|
|
1525
|
-
"Warning:
|
|
1525
|
+
"Warning: the `--check` flag is deprecated; linting exits non-zero on \
|
|
1526
1526
|
violations by default. The flag is now a no-op."
|
|
1527
1527
|
);
|
|
1528
1528
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/blockquotes.rs
RENAMED
|
File without changes
|
{panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/code_blocks.rs
RENAMED
|
File without changes
|
{panache_cli-3.0.1 → panache_cli-3.0.2}/crates/panache-formatter/src/formatter/fenced_divs.rs
RENAMED
|
File without changes
|