panache-cli 3.17.0__tar.gz → 3.17.1__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.
Files changed (397) hide show
  1. {panache_cli-3.17.0 → panache_cli-3.17.1}/Cargo.lock +29 -29
  2. {panache_cli-3.17.0 → panache_cli-3.17.1}/Cargo.toml +4 -4
  3. {panache_cli-3.17.0 → panache_cli-3.17.1}/PKG-INFO +1 -1
  4. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/CHANGELOG.md +10 -0
  5. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/Cargo.toml +2 -2
  6. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/raw.rs +9 -0
  7. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/CHANGELOG.md +8 -0
  8. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/Cargo.toml +1 -1
  9. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/block_dispatcher.rs +1 -9
  10. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/fenced_divs.rs +39 -3
  11. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/html_blocks.rs +100 -11
  12. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/core.rs +1 -1
  13. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/inline_html.rs +25 -3
  14. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/sink.rs +6 -0
  15. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/attributes.rs +43 -13
  16. panache_cli-3.17.1/crates/panache-parser/src/parser/utils/raw_html.rs +150 -0
  17. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils.rs +2 -0
  18. panache_cli-3.17.1/crates/panache-parser/src/syntax/ast.rs +44 -0
  19. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/attributes.rs +4 -5
  20. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/fenced_divs.rs +55 -0
  21. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/headings.rs +9 -3
  22. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/html.rs +169 -3
  23. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/inlines.rs +18 -2
  24. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/links.rs +80 -17
  25. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/references.rs +1 -1
  26. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/tables.rs +1 -3
  27. panache_cli-3.17.1/src/diagnostic_renderer.rs +57 -0
  28. panache_cli-3.17.1/src/linter/docs.rs +336 -0
  29. panache_cli-3.17.1/src/linter/external_linters/jarl.rs +696 -0
  30. panache_cli-3.17.1/src/linter/fix.rs +84 -0
  31. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/project_index.rs +2 -2
  32. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/quarto_schema/interp.rs +5 -0
  33. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/quarto_schema/report.rs +2 -2
  34. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/quarto_schema/value.rs +101 -18
  35. panache_cli-3.17.0/src/diagnostic_renderer.rs → panache_cli-3.17.1/src/linter/render.rs +65 -87
  36. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/adjacent_footnote_refs.rs +15 -0
  37. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/blank_line_in_display_math.rs +15 -0
  38. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/blank_line_in_inline_footnote.rs +15 -0
  39. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/chunk_label_spaces.rs +15 -0
  40. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/citation_keys.rs +47 -0
  41. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/citation_nonbreaking_space.rs +15 -0
  42. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/consumer_divergence.rs +10 -0
  43. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/crossref_as_link_target.rs +15 -0
  44. panache_cli-3.17.1/src/linter/rules/docs/adjacent-footnote-refs.md +4 -0
  45. panache_cli-3.17.1/src/linter/rules/docs/blank-line-in-display-math.md +5 -0
  46. panache_cli-3.17.1/src/linter/rules/docs/blank-line-in-inline-footnote.md +6 -0
  47. panache_cli-3.17.1/src/linter/rules/docs/chunk-label-spaces.md +5 -0
  48. panache_cli-3.17.1/src/linter/rules/docs/citation-keys.md +6 -0
  49. panache_cli-3.17.1/src/linter/rules/docs/citation-nonbreaking-space.md +7 -0
  50. panache_cli-3.17.1/src/linter/rules/docs/consumer-divergence.md +10 -0
  51. panache_cli-3.17.1/src/linter/rules/docs/crossref-as-link-target.md +5 -0
  52. panache_cli-3.17.1/src/linter/rules/docs/duplicate-reference-labels.md +7 -0
  53. panache_cli-3.17.1/src/linter/rules/docs/duplicate-yaml-anchor.md +5 -0
  54. panache_cli-3.17.1/src/linter/rules/docs/empty-list-item.md +4 -0
  55. panache_cli-3.17.1/src/linter/rules/docs/empty-values.md +9 -0
  56. panache_cli-3.17.1/src/linter/rules/docs/figure-crossref-captions.md +6 -0
  57. panache_cli-3.17.1/src/linter/rules/docs/footnote-after-image.md +7 -0
  58. panache_cli-3.17.1/src/linter/rules/docs/footnote-ref-in-footnote-def.md +6 -0
  59. panache_cli-3.17.1/src/linter/rules/docs/footnote-swallowed-by-bracket.md +7 -0
  60. panache_cli-3.17.1/src/linter/rules/docs/heading-eaten-attrs.md +6 -0
  61. panache_cli-3.17.1/src/linter/rules/docs/heading-hierarchy.md +5 -0
  62. panache_cli-3.17.1/src/linter/rules/docs/heading-strip-comments-residue.md +5 -0
  63. panache_cli-3.17.1/src/linter/rules/docs/html-entities.md +7 -0
  64. panache_cli-3.17.1/src/linter/rules/docs/html-unclosed-attribute.md +7 -0
  65. panache_cli-3.17.1/src/linter/rules/docs/inline-math-line-break.md +6 -0
  66. panache_cli-3.17.1/src/linter/rules/docs/link-text-is-url.md +6 -0
  67. panache_cli-3.17.1/src/linter/rules/docs/malformed-citation.md +7 -0
  68. panache_cli-3.17.1/src/linter/rules/docs/math-syntax.md +8 -0
  69. panache_cli-3.17.1/src/linter/rules/docs/missing-chunk-labels.md +6 -0
  70. panache_cli-3.17.1/src/linter/rules/docs/quarto-schema-unknown-key.md +9 -0
  71. panache_cli-3.17.1/src/linter/rules/docs/quarto-schema.md +11 -0
  72. panache_cli-3.17.1/src/linter/rules/docs/reversed-footnote-marker.md +7 -0
  73. panache_cli-3.17.1/src/linter/rules/docs/space-before-punctuation.md +9 -0
  74. panache_cli-3.17.1/src/linter/rules/docs/stray-fenced-div-markers.md +6 -0
  75. panache_cli-3.17.1/src/linter/rules/docs/swallowed-list-marker.md +8 -0
  76. panache_cli-3.17.1/src/linter/rules/docs/table-column-count.md +6 -0
  77. panache_cli-3.17.1/src/linter/rules/docs/undefined-anchor.md +11 -0
  78. panache_cli-3.17.1/src/linter/rules/docs/undefined-references.md +6 -0
  79. panache_cli-3.17.1/src/linter/rules/docs/unknown-emoji-alias.md +3 -0
  80. panache_cli-3.17.1/src/linter/rules/docs/unspaced-citation.md +7 -0
  81. panache_cli-3.17.1/src/linter/rules/docs/unspaced-list-marker.md +5 -0
  82. panache_cli-3.17.1/src/linter/rules/docs/unsupported-metadata-key.md +7 -0
  83. panache_cli-3.17.1/src/linter/rules/docs/unused-definitions.md +5 -0
  84. panache_cli-3.17.1/src/linter/rules/docs/unused-yaml-anchor.md +6 -0
  85. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/duplicate_references.rs +53 -0
  86. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/duplicate_yaml_anchor.rs +15 -0
  87. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/emoji_aliases.rs +15 -0
  88. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/empty_list_item.rs +15 -0
  89. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/empty_values.rs +10 -0
  90. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/figure_crossref_captions.rs +16 -0
  91. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/footnote_after_image.rs +15 -0
  92. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/footnote_ref_in_footnote_def.rs +15 -0
  93. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/footnote_swallowed_by_bracket.rs +24 -0
  94. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/heading_eaten_attrs.rs +15 -0
  95. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/heading_hierarchy.rs +15 -0
  96. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/heading_strip_comments_residue.rs +15 -0
  97. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/html_entities.rs +10 -0
  98. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/html_unclosed_attribute.rs +15 -0
  99. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/inline_math_line_break.rs +15 -0
  100. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/link_text_is_url.rs +15 -0
  101. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/malformed_citation.rs +10 -0
  102. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/math_content.rs +53 -0
  103. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/missing_chunk_labels.rs +15 -0
  104. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/quarto_schema.rs +117 -9
  105. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/reversed_footnote_marker.rs +16 -0
  106. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/space_before_punctuation.rs +16 -0
  107. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/stray_fenced_div_markers.rs +107 -30
  108. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/swallowed_list_marker.rs +15 -0
  109. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/table_column_count.rs +15 -0
  110. panache_cli-3.17.1/src/linter/rules/undefined_anchor.rs +812 -0
  111. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/undefined_references.rs +84 -2
  112. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/unspaced_citation.rs +15 -0
  113. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/unspaced_list_marker.rs +15 -0
  114. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/unsupported_metadata_key.rs +15 -0
  115. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/unused_definitions.rs +60 -0
  116. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules/unused_yaml_anchor.rs +15 -0
  117. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/rules.rs +20 -6
  118. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter.rs +7 -4
  119. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/document_links.rs +2 -2
  120. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/goto_definition.rs +4 -1
  121. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/heading_link_conversion.rs +36 -3
  122. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/hover.rs +3 -3
  123. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/helpers.rs +16 -2
  124. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/main.rs +1 -83
  125. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/metadata/bibliography.rs +20 -1
  126. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/salsa.rs +435 -23
  127. panache_cli-3.17.0/crates/panache-parser/src/syntax/ast.rs +0 -4
  128. panache_cli-3.17.0/src/linter/external_linters/jarl.rs +0 -139
  129. panache_cli-3.17.0/src/linter/rules/undefined_anchor.rs +0 -423
  130. {panache_cli-3.17.0 → panache_cli-3.17.1}/LICENSE +0 -0
  131. {panache_cli-3.17.0 → panache_cli-3.17.1}/README.md +0 -0
  132. {panache_cli-3.17.0 → panache_cli-3.17.1}/assets/quarto-schema/schema.json +0 -0
  133. {panache_cli-3.17.0 → panache_cli-3.17.1}/build.rs +0 -0
  134. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/README.md +0 -0
  135. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/config.rs +0 -0
  136. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/directives.rs +0 -0
  137. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/blockquotes.rs +0 -0
  138. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/blocks.rs +0 -0
  139. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/code_blocks.rs +0 -0
  140. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/containers.rs +0 -0
  141. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/core.rs +0 -0
  142. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/document.rs +0 -0
  143. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/fenced_divs.rs +0 -0
  144. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/hashpipe.rs +0 -0
  145. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/headings.rs +0 -0
  146. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/indent_utils.rs +0 -0
  147. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/inline.rs +0 -0
  148. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/inline_layout.rs +0 -0
  149. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/lists.rs +0 -0
  150. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/math/STYLE.md +0 -0
  151. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/math/ir.rs +0 -0
  152. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/math/lower.rs +0 -0
  153. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/math/printer.rs +0 -0
  154. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/math/render.rs +0 -0
  155. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/math.rs +0 -0
  156. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/metadata.rs +0 -0
  157. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/paragraphs.rs +0 -0
  158. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/preserve.rs +0 -0
  159. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/sentence_wrap.rs +0 -0
  160. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/shortcodes.rs +0 -0
  161. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/smart.rs +0 -0
  162. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/table_conversion.rs +0 -0
  163. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/tables.rs +0 -0
  164. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/utils.rs +0 -0
  165. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml/STYLE.md +0 -0
  166. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml/block_map.rs +0 -0
  167. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml/block_sequence.rs +0 -0
  168. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml/document.rs +0 -0
  169. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml/flow.rs +0 -0
  170. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml/options.rs +0 -0
  171. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml/scalar.rs +0 -0
  172. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter/yaml.rs +0 -0
  173. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/formatter.rs +0 -0
  174. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/lib.rs +0 -0
  175. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/parser.rs +0 -0
  176. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/syntax.rs +0 -0
  177. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/utils.rs +0 -0
  178. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-formatter/src/yaml_engine.rs +0 -0
  179. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/README.md +0 -0
  180. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/build.rs +0 -0
  181. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/data/math_symbols.json +0 -0
  182. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/data/unicode-math.LICENSE +0 -0
  183. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/data/unicode-math.NOTICE +0 -0
  184. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/grid_layout.rs +0 -0
  185. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/lib.rs +0 -0
  186. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/options.rs +0 -0
  187. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/pandoc_ast.rs +0 -0
  188. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/admonitions.rs +0 -0
  189. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/blockquotes.rs +0 -0
  190. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/code_blocks.rs +0 -0
  191. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/container_prefix.rs +0 -0
  192. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/definition_lists.rs +0 -0
  193. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/figures.rs +0 -0
  194. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/headings.rs +0 -0
  195. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/horizontal_rules.rs +0 -0
  196. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/hugo.rs +0 -0
  197. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/indented_code.rs +0 -0
  198. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/latex_envs.rs +0 -0
  199. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/line_blocks.rs +0 -0
  200. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/lists.rs +0 -0
  201. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/metadata.rs +0 -0
  202. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/myst_directives.rs +0 -0
  203. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/myst_targets.rs +0 -0
  204. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/paragraphs.rs +0 -0
  205. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/raw_blocks.rs +0 -0
  206. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/reference_links.rs +0 -0
  207. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tables.rs +0 -0
  208. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/blanklines.rs +0 -0
  209. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs +0 -0
  210. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/code_blocks.rs +0 -0
  211. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/content_containers.rs +0 -0
  212. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/definition_lists.rs +0 -0
  213. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/figures.rs +0 -0
  214. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/footnote_marker_line.rs +0 -0
  215. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/fragment_context.rs +0 -0
  216. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/frame_pinning.rs +0 -0
  217. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/headings.rs +0 -0
  218. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/helpers.rs +0 -0
  219. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/lists.rs +0 -0
  220. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/losslessness.rs +0 -0
  221. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/metadata_guards.rs +0 -0
  222. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks/tests/tables.rs +0 -0
  223. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/blocks.rs +0 -0
  224. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/core/blockquotes.rs +0 -0
  225. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/core/definition_lists.rs +0 -0
  226. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/core/html_interruptions.rs +0 -0
  227. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/core/list_items.rs +0 -0
  228. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/core.rs +0 -0
  229. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/diagnostics.rs +0 -0
  230. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/bookdown.rs +0 -0
  231. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/bracketed_spans.rs +0 -0
  232. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/citations.rs +0 -0
  233. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/code_spans.rs +0 -0
  234. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/emoji.rs +0 -0
  235. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/escapes.rs +0 -0
  236. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/hard_breaks.rs +0 -0
  237. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/hugo.rs +0 -0
  238. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/inline_executable.rs +0 -0
  239. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/inline_footnotes.rs +0 -0
  240. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/inline_ir.rs +0 -0
  241. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/latex.rs +0 -0
  242. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/links.rs +0 -0
  243. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/mark.rs +0 -0
  244. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/math.rs +0 -0
  245. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/myst_roles.rs +0 -0
  246. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/myst_substitutions.rs +0 -0
  247. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/native_spans.rs +0 -0
  248. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/raw_inline.rs +0 -0
  249. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/refdef_map.rs +0 -0
  250. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/shortcodes.rs +0 -0
  251. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/strikeout.rs +0 -0
  252. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/subscript.rs +0 -0
  253. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/superscript.rs +0 -0
  254. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/svelte.rs +0 -0
  255. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/tests.rs +0 -0
  256. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/uri-schemes.csv +0 -0
  257. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines/wikilinks.rs +0 -0
  258. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/inlines.rs +0 -0
  259. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/math.rs +0 -0
  260. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/reparse.rs +0 -0
  261. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/chunk_options.rs +0 -0
  262. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/container_stack.rs +0 -0
  263. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/continuation.rs +0 -0
  264. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/helpers.rs +0 -0
  265. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/inline_emission.rs +0 -0
  266. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/list_item_buffer.rs +0 -0
  267. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/marker_utils.rs +0 -0
  268. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/text_buffer.rs +0 -0
  269. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/tree_copy.rs +0 -0
  270. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/utils/yaml_regions.rs +0 -0
  271. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/verify.rs +0 -0
  272. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml/cooking.rs +0 -0
  273. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml/events.rs +0 -0
  274. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml/model.rs +0 -0
  275. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml/parser.rs +0 -0
  276. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml/profile.rs +0 -0
  277. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml/scanner.rs +0 -0
  278. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml/validator.rs +0 -0
  279. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser/yaml.rs +0 -0
  280. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/parser.rs +0 -0
  281. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/range_utils.rs +0 -0
  282. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/semantic/math.rs +0 -0
  283. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/semantic.rs +0 -0
  284. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/alerts.rs +0 -0
  285. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/block_quotes.rs +0 -0
  286. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/blocks.rs +0 -0
  287. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/chunk_options.rs +0 -0
  288. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/citations.rs +0 -0
  289. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/code_blocks.rs +0 -0
  290. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/code_span.rs +0 -0
  291. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/consumer.rs +0 -0
  292. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/crossrefs.rs +0 -0
  293. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/definitions.rs +0 -0
  294. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/hugo.rs +0 -0
  295. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/kind.rs +0 -0
  296. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/lists.rs +0 -0
  297. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/math.rs +0 -0
  298. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/myst.rs +0 -0
  299. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/raw_tex.rs +0 -0
  300. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/shortcodes.rs +0 -0
  301. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/yaml.rs +0 -0
  302. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax/yaml_ast.rs +0 -0
  303. {panache_cli-3.17.0 → panache_cli-3.17.1}/crates/panache-parser/src/syntax.rs +0 -0
  304. {panache_cli-3.17.0 → panache_cli-3.17.1}/pyproject.toml +0 -0
  305. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bib/bibtex.rs +0 -0
  306. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bib/csl_json.rs +0 -0
  307. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bib/csl_yaml.rs +0 -0
  308. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bib/index.rs +0 -0
  309. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bib/preview.rs +0 -0
  310. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bib/ris.rs +0 -0
  311. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bib.rs +0 -0
  312. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/bin/distill_quarto_schema.rs +0 -0
  313. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/cache.rs +0 -0
  314. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/cli.rs +0 -0
  315. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/config/formatter_presets.rs +0 -0
  316. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/config/types/schema_helpers.rs +0 -0
  317. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/config/types.rs +0 -0
  318. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/config.rs +0 -0
  319. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/directives.rs +0 -0
  320. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/external_formatters_common.rs +0 -0
  321. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/external_formatters_sync.rs +0 -0
  322. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/external_tools_common.rs +0 -0
  323. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/formatter.rs +0 -0
  324. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/includes.rs +0 -0
  325. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/incremental.rs +0 -0
  326. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/io_context.rs +0 -0
  327. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lib.rs +0 -0
  328. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/code_block_collector.rs +0 -0
  329. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/diagnostics.rs +0 -0
  330. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/execution_context.rs +0 -0
  331. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters/clippy.rs +0 -0
  332. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters/eslint.rs +0 -0
  333. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters/jolars.rs +0 -0
  334. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters/ruff.rs +0 -0
  335. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters/shellcheck.rs +0 -0
  336. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters/staticcheck.rs +0 -0
  337. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters.rs +0 -0
  338. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/external_linters_sync.rs +0 -0
  339. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/fuzzy.rs +0 -0
  340. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/index.rs +0 -0
  341. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/metadata_diagnostics.rs +0 -0
  342. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/offsets.rs +0 -0
  343. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/quarto_schema/distill.rs +0 -0
  344. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/quarto_schema/model.rs +0 -0
  345. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/quarto_schema.rs +0 -0
  346. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/runner.rs +0 -0
  347. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/yaml_anchors.rs +0 -0
  348. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/linter/yaml_resolve.rs +0 -0
  349. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/config.rs +0 -0
  350. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/context.rs +0 -0
  351. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/conversions.rs +0 -0
  352. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/dispatch.rs +0 -0
  353. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/documents.rs +0 -0
  354. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/global_state.rs +0 -0
  355. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/code_actions.rs +0 -0
  356. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/completion.rs +0 -0
  357. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/configuration.rs +0 -0
  358. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/diagnostics.rs +0 -0
  359. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/document_highlight.rs +0 -0
  360. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/document_symbols.rs +0 -0
  361. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/file_operations.rs +0 -0
  362. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/file_rename.rs +0 -0
  363. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/file_watcher.rs +0 -0
  364. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/folding_ranges.rs +0 -0
  365. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/footnote_conversion.rs +0 -0
  366. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/formatting.rs +0 -0
  367. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/link_conversion.rs +0 -0
  368. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/linked_editing_range.rs +0 -0
  369. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/list_conversion.rs +0 -0
  370. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/prepare_rename.rs +0 -0
  371. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/references.rs +0 -0
  372. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/rename.rs +0 -0
  373. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/semantic_tokens.rs +0 -0
  374. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/shortcode_args.rs +0 -0
  375. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/table_conversion.rs +0 -0
  376. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/workspace_folders.rs +0 -0
  377. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers/workspace_symbols.rs +0 -0
  378. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/handlers.rs +0 -0
  379. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/line_index.rs +0 -0
  380. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/navigation.rs +0 -0
  381. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/symbols.rs +0 -0
  382. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/task_pool.rs +0 -0
  383. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/testing.rs +0 -0
  384. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp/uri_ext.rs +0 -0
  385. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/lsp.rs +0 -0
  386. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/metadata/citations.rs +0 -0
  387. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/metadata/project.rs +0 -0
  388. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/metadata/references.rs +0 -0
  389. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/metadata/yaml.rs +0 -0
  390. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/metadata.rs +0 -0
  391. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/parser.rs +0 -0
  392. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/range_utils.rs +0 -0
  393. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/syntax.rs +0 -0
  394. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/utils.rs +0 -0
  395. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/vfs.rs +0 -0
  396. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/yaml_engine.rs +0 -0
  397. {panache_cli-3.17.0 → panache_cli-3.17.1}/src/yaml_regions.rs +0 -0
@@ -39,9 +39,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
39
39
 
40
40
  [[package]]
41
41
  name = "annotate-snippets"
42
- version = "0.12.16"
42
+ version = "0.12.17"
43
43
  source = "registry+https://github.com/rust-lang/crates.io-index"
44
- checksum = "f211a51805bc641f3ad5b7664c77d2547af685cc33b4cd8d31964027a46f13f1"
44
+ checksum = "b2a5b0a5ab8561c603f16c3b78c24a386b1f70e7fc1b1b1e8c15738828e4a176"
45
45
  dependencies = [
46
46
  "anstyle",
47
47
  "memchr",
@@ -326,9 +326,9 @@ checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636"
326
326
 
327
327
  [[package]]
328
328
  name = "crc32fast"
329
- version = "1.5.2"
329
+ version = "1.5.3"
330
330
  source = "registry+https://github.com/rust-lang/crates.io-index"
331
- checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78"
331
+ checksum = "0ba106e844045ddc02c20768ac4b0b7cb45f2cc2ecbd833ac9f5dacb183c2055"
332
332
  dependencies = [
333
333
  "cfg-if",
334
334
  ]
@@ -497,9 +497,9 @@ dependencies = [
497
497
 
498
498
  [[package]]
499
499
  name = "emojis"
500
- version = "0.9.0"
500
+ version = "0.9.1"
501
501
  source = "registry+https://github.com/rust-lang/crates.io-index"
502
- checksum = "0b1514ced566c94991ed9563258ecf61e311fd773bf0a3f20606830386bf66e3"
502
+ checksum = "589871e639330783bc20ad89d32ac1b049e02c273d96c907ca27478c8bc674a2"
503
503
  dependencies = [
504
504
  "phf 0.13.1",
505
505
  ]
@@ -850,9 +850,9 @@ dependencies = [
850
850
 
851
851
  [[package]]
852
852
  name = "jsonschema"
853
- version = "0.58.6"
853
+ version = "0.59.0"
854
854
  source = "registry+https://github.com/rust-lang/crates.io-index"
855
- checksum = "f622c574a29fb3034a0a90645afee194dfedc75fc124228801b6e77041075bd1"
855
+ checksum = "1b320ad34c177093d21622edc9215bb608294c2333ff296672c0c8265a5ee60c"
856
856
  dependencies = [
857
857
  "ahash",
858
858
  "bytecount",
@@ -878,18 +878,18 @@ dependencies = [
878
878
 
879
879
  [[package]]
880
880
  name = "jsonschema-regex"
881
- version = "0.58.6"
881
+ version = "0.59.0"
882
882
  source = "registry+https://github.com/rust-lang/crates.io-index"
883
- checksum = "a968fffd387b2ab005bf00c1851f5d26e90df05b6f7ad609ed0d620033cca5e7"
883
+ checksum = "1472f7be79026f79e01a9b172263311e829d7c210d57b39cb57037abc0ce0500"
884
884
  dependencies = [
885
885
  "regex-syntax",
886
886
  ]
887
887
 
888
888
  [[package]]
889
889
  name = "jsonschema-value"
890
- version = "0.58.6"
890
+ version = "0.59.0"
891
891
  source = "registry+https://github.com/rust-lang/crates.io-index"
892
- checksum = "39b7670345e5ce87371339d13705dbb9276b7e3e934bbe1efa2c6734a1f65a96"
892
+ checksum = "e5a7550a7a84787e715ead0b47e01fa8c6bb7c3413630f91a8f2094c06c2078a"
893
893
  dependencies = [
894
894
  "ahash",
895
895
  "bytecount",
@@ -903,9 +903,9 @@ dependencies = [
903
903
 
904
904
  [[package]]
905
905
  name = "libc"
906
- version = "0.2.190"
906
+ version = "0.2.191"
907
907
  source = "registry+https://github.com/rust-lang/crates.io-index"
908
- checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
908
+ checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
909
909
 
910
910
  [[package]]
911
911
  name = "libredox"
@@ -1114,7 +1114,7 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
1114
1114
 
1115
1115
  [[package]]
1116
1116
  name = "panache"
1117
- version = "3.17.0"
1117
+ version = "3.17.1"
1118
1118
  dependencies = [
1119
1119
  "annotate-snippets",
1120
1120
  "assert_cmd",
@@ -1147,7 +1147,7 @@ dependencies = [
1147
1147
  "schemars",
1148
1148
  "serde",
1149
1149
  "serde_json",
1150
- "similar 3.2.0",
1150
+ "similar 3.2.1",
1151
1151
  "similar-asserts",
1152
1152
  "tempfile",
1153
1153
  "toml",
@@ -1159,7 +1159,7 @@ dependencies = [
1159
1159
 
1160
1160
  [[package]]
1161
1161
  name = "panache-formatter"
1162
- version = "0.28.0"
1162
+ version = "0.28.1"
1163
1163
  dependencies = [
1164
1164
  "badness-formatter",
1165
1165
  "insta",
@@ -1179,7 +1179,7 @@ dependencies = [
1179
1179
 
1180
1180
  [[package]]
1181
1181
  name = "panache-parser"
1182
- version = "0.34.0"
1182
+ version = "0.34.1"
1183
1183
  dependencies = [
1184
1184
  "badness-parser",
1185
1185
  "entities",
@@ -1461,9 +1461,9 @@ dependencies = [
1461
1461
 
1462
1462
  [[package]]
1463
1463
  name = "referencing"
1464
- version = "0.58.6"
1464
+ version = "0.59.0"
1465
1465
  source = "registry+https://github.com/rust-lang/crates.io-index"
1466
- checksum = "558f3855529c0a7e78a48e409fa653456e55f1b167eab4109c16a255b7727e3f"
1466
+ checksum = "473f4dcca28ead7ee0f8e5b5d0bbae2549f4fc4c958fb20af328961b6c174be3"
1467
1467
  dependencies = [
1468
1468
  "ahash",
1469
1469
  "fluent-uri 0.4.1",
@@ -1738,9 +1738,9 @@ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
1738
1738
 
1739
1739
  [[package]]
1740
1740
  name = "similar"
1741
- version = "3.2.0"
1741
+ version = "3.2.1"
1742
1742
  source = "registry+https://github.com/rust-lang/crates.io-index"
1743
- checksum = "4f66ca1f7aca2474dc10c942eb22feffc897735f54cd1db90138c2fddb490987"
1743
+ checksum = "d2f8bec09ae8fae0f4f265a4559a9334be3929d8504e9b536df0a41302bd1733"
1744
1744
  dependencies = [
1745
1745
  "bstr",
1746
1746
  "unicode-segmentation",
@@ -1753,7 +1753,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1753
1753
  checksum = "997e6ca38e97437973fc9f7f50a50d1274cacd874341a4960fea90067291038c"
1754
1754
  dependencies = [
1755
1755
  "console",
1756
- "similar 3.2.0",
1756
+ "similar 3.2.1",
1757
1757
  ]
1758
1758
 
1759
1759
  [[package]]
@@ -1770,15 +1770,15 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
1770
1770
 
1771
1771
  [[package]]
1772
1772
  name = "smallvec"
1773
- version = "1.16.3"
1773
+ version = "1.16.4"
1774
1774
  source = "registry+https://github.com/rust-lang/crates.io-index"
1775
- checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b"
1775
+ checksum = "d0d5d4b1981b8bbbb7aed204cae5726d683d5d6ac7e74ec54122ea28f315e7c8"
1776
1776
 
1777
1777
  [[package]]
1778
1778
  name = "smol_str"
1779
- version = "0.3.6"
1779
+ version = "0.3.7"
1780
1780
  source = "registry+https://github.com/rust-lang/crates.io-index"
1781
- checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523"
1781
+ checksum = "eeb7109d23f319619d4cc0de5464613c8b7b1a09db2774a58101459cf6be2f10"
1782
1782
  dependencies = [
1783
1783
  "borsh",
1784
1784
  "serde_core",
@@ -1986,9 +1986,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1986
1986
 
1987
1987
  [[package]]
1988
1988
  name = "uuid"
1989
- version = "1.28.0"
1989
+ version = "1.29.0"
1990
1990
  source = "registry+https://github.com/rust-lang/crates.io-index"
1991
- checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606"
1991
+ checksum = "4a0e2d11620c50695fe12bbbfde96b3477fe606e7284c22d505c12ce51214514"
1992
1992
  dependencies = [
1993
1993
  "getrandom 0.4.3",
1994
1994
  "js-sys",
@@ -9,7 +9,7 @@ authors = ["Johan Larsson <johan@jolars.co>"]
9
9
 
10
10
  [package]
11
11
  name = "panache"
12
- version = "3.17.0"
12
+ version = "3.17.1"
13
13
  edition.workspace = true
14
14
  rust-version.workspace = true
15
15
  # `distill_quarto_schema` is a dev-only vendoring bin (src/bin/); keep bare
@@ -55,11 +55,11 @@ path = "src/main.rs"
55
55
  required-features = ["cli"]
56
56
 
57
57
  [dependencies]
58
- panache-formatter = { path = "crates/panache-formatter", version = "0.28.0", features = [
58
+ panache-formatter = { path = "crates/panache-formatter", version = "0.28.1", features = [
59
59
  "serde",
60
60
  "schema",
61
61
  ] }
62
- panache-parser = { path = "crates/panache-parser", version = "0.34.0", features = [
62
+ panache-parser = { path = "crates/panache-parser", version = "0.34.1", features = [
63
63
  "serde",
64
64
  "schema",
65
65
  ] }
@@ -95,7 +95,7 @@ similar-asserts = "2.0.0"
95
95
  insta = { version = "1.47.2", features = ["json"] }
96
96
  assert_cmd = "2.2.2"
97
97
  predicates = "3.1.4"
98
- jsonschema = { version = "0.58.5", default-features = false }
98
+ jsonschema = { version = "0.59.0", default-features = false }
99
99
 
100
100
  [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
101
101
  rayon = "1.10.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: panache-cli
3
- Version: 3.17.0
3
+ Version: 3.17.1
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.28.1](https://github.com/jolars/panache/compare/panache-formatter-v0.28.0...panache-formatter-v0.28.1) (2026-10-26)
4
+
5
+ ### Bug Fixes
6
+
7
+ - **parser:** expose IDs in raw CommonMark HTML ([`b076c95`](https://github.com/jolars/panache/commit/b076c955aa49d1a4ff9bb32cbc132e83d57b9a04))
8
+
9
+ ### Dependencies
10
+
11
+ - updated crates/panache-parser to v0.34.1
12
+
3
13
  ## [0.28.0](https://github.com/jolars/panache/compare/panache-formatter-v0.27.1...panache-formatter-v0.28.0) (2026-10-16)
4
14
 
5
15
  ### Features
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "panache-formatter"
3
- version = "0.28.0"
3
+ version = "0.28.1"
4
4
  edition.workspace = true
5
5
  rust-version.workspace = true
6
6
  include = [
@@ -19,7 +19,7 @@ keywords = ["quarto", "pandoc", "markdown", "formatter"]
19
19
  categories = ["text-processing"]
20
20
 
21
21
  [dependencies]
22
- panache-parser = { path = "../panache-parser", version = "0.34.0" }
22
+ panache-parser = { path = "../panache-parser", version = "0.34.1" }
23
23
  log = { version = "0.4.31", features = ["release_max_level_debug"] }
24
24
  rowan = "0.17.0"
25
25
  serde = { version = "1.0.228", features = ["derive"], optional = true }
@@ -48,6 +48,15 @@ impl Formatter {
48
48
  after_marker = false;
49
49
  text.push_str(token.text());
50
50
  }
51
+ // A prefix-only final line still belongs to the raw block without a
52
+ // source newline; the enclosing container must emit that blank line.
53
+ if text.ends_with('\n')
54
+ && node
55
+ .last_token()
56
+ .is_some_and(|token| token.kind() == SyntaxKind::LINE_PREFIX)
57
+ {
58
+ text.push('\n');
59
+ }
51
60
  let starts_on_marker_line = node
52
61
  .first_token()
53
62
  .and_then(|token| token.prev_token())
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.34.1](https://github.com/jolars/panache/compare/panache-parser-v0.34.0...panache-parser-v0.34.1) (2026-10-26)
4
+
5
+ ### Bug Fixes
6
+
7
+ - **parser:** reject trailing div attribute blocks ([`8f88555`](https://github.com/jolars/panache/commit/8f88555b61cc4edaaf2e2a8a74a6267953f47600)), refs [#584](https://github.com/jolars/panache/issues/584)
8
+ - **linter:** preserve html context and raw labels ([`1655cf0`](https://github.com/jolars/panache/commit/1655cf067c19b7dd4f8e6f8dde080e3e03275a63))
9
+ - **parser:** expose IDs in raw CommonMark HTML ([`b076c95`](https://github.com/jolars/panache/commit/b076c955aa49d1a4ff9bb32cbc132e83d57b9a04))
10
+
3
11
  ## [0.34.0](https://github.com/jolars/panache/compare/panache-parser-v0.33.0...panache-parser-v0.34.0) (2026-10-16)
4
12
 
5
13
  ### Features
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "panache-parser"
3
- version = "0.34.0"
3
+ version = "0.34.1"
4
4
  edition.workspace = true
5
5
  rust-version.workspace = true
6
6
  readme = "README.md"
@@ -2208,15 +2208,7 @@ impl BlockParser for FencedDivOpenParser {
2208
2208
 
2209
2209
  emit_div_info_node(builder, &div_fence.attributes);
2210
2210
 
2211
- let after_attrs = if div_fence.attributes.starts_with('{') {
2212
- if let Some(close_idx) = content_after_space.find('}') {
2213
- &content_after_space[close_idx + 1..]
2214
- } else {
2215
- ""
2216
- }
2217
- } else {
2218
- &content_after_space[div_fence.attributes.len()..]
2219
- };
2211
+ let after_attrs = &content_after_space[div_fence.attributes.len()..];
2220
2212
 
2221
2213
  if !after_attrs.is_empty() {
2222
2214
  let suffix_trimmed = after_attrs.trim_start();
@@ -1,6 +1,8 @@
1
1
  //! Fenced div parsing utilities.
2
2
 
3
- use crate::parser::utils::helpers::strip_leading_spaces;
3
+ use crate::parser::utils::{
4
+ attributes::find_matching_open_brace_for_trailing_block, helpers::strip_leading_spaces,
5
+ };
4
6
 
5
7
  /// Information about a detected div fence opening.
6
8
  #[derive(Debug, Clone, PartialEq, Eq)]
@@ -34,8 +36,13 @@ pub(crate) fn try_parse_div_fence_open(content: &str) -> Option<DivFenceInfo> {
34
36
  let after_colons = trimmed[colon_count..].trim_start();
35
37
 
36
38
  let attributes = if after_colons.starts_with('{') {
37
- let close_idx = after_colons.find('}')?;
38
- after_colons[..=close_idx].to_string()
39
+ let attributes = after_colons.trim_end().trim_end_matches(':').trim_end();
40
+ let open_brace = find_matching_open_brace_for_trailing_block(attributes)?;
41
+ // A second attribute block or other trailing text makes the whole line prose.
42
+ if open_brace != 0 {
43
+ return None;
44
+ }
45
+ attributes.to_string()
39
46
  } else if after_colons.is_empty() {
40
47
  return None;
41
48
  } else {
@@ -127,6 +134,35 @@ mod tests {
127
134
  assert_eq!(fence.attributes, "Warning");
128
135
  }
129
136
 
137
+ #[test]
138
+ fn rejects_trailing_content_after_attributes() {
139
+ for line in [
140
+ "::: {custom-style=\"AbstractTitle\" .abstract-title}{#en_abstract}",
141
+ "::: {.class} {#id}",
142
+ "::: {.class} text",
143
+ "::: {.class} ::: text",
144
+ "::: {.class} : : :",
145
+ ] {
146
+ assert!(try_parse_div_fence_open(line).is_none(), "{line}");
147
+ }
148
+ }
149
+
150
+ #[test]
151
+ fn accepts_empty_attributes() {
152
+ for line in ["::: {}", "::: { } :::"] {
153
+ assert!(try_parse_div_fence_open(line).is_some(), "{line}");
154
+ }
155
+ }
156
+
157
+ #[test]
158
+ fn accepts_attributes_with_optional_trailing_colons() {
159
+ for suffix in ["", " ", ":", " ::", " ::: "] {
160
+ let line = format!("::: {{title=\"a}}b\" #id}}{suffix}");
161
+ let fence = try_parse_div_fence_open(&line).unwrap();
162
+ assert_eq!(fence.attributes, "{title=\"a}b\" #id}");
163
+ }
164
+ }
165
+
130
166
  #[test]
131
167
  fn test_opening_fence_empty_attributes() {
132
168
  let line = ":::";
@@ -1202,6 +1202,16 @@ pub(crate) fn parse_html_block_with_wrapper(
1202
1202
  config: &ParserOptions,
1203
1203
  first_line_content: Option<&str>,
1204
1204
  ) -> usize {
1205
+ if config.dialect == crate::options::Dialect::CommonMark {
1206
+ return parse_commonmark_html_block(
1207
+ builder,
1208
+ lines,
1209
+ start_pos,
1210
+ &block_type,
1211
+ prefix,
1212
+ first_line_content,
1213
+ );
1214
+ }
1205
1215
  let bq_depth = prefix.bq_depth();
1206
1216
  if config.dialect == crate::options::Dialect::Pandoc
1207
1217
  && matches!(&block_type, HtmlBlockType::BlockTag {
@@ -1741,17 +1751,6 @@ pub(crate) fn parse_html_block_with_wrapper(
1741
1751
  break;
1742
1752
  }
1743
1753
 
1744
- // CommonMark §5.2: a non-blank line indented less than the list
1745
- // item's content column is not part of the item, and an HTML block
1746
- // takes no lazy continuation lines, so the block ends with the item.
1747
- if config.dialect == crate::options::Dialect::CommonMark
1748
- && prefix.list_content_col() > 0
1749
- && !inner.trim().is_empty()
1750
- && !prefix.resolve(line).reaches_frame()
1751
- {
1752
- break;
1753
- }
1754
-
1755
1754
  if blank_terminated && inner.trim().is_empty() {
1756
1755
  break;
1757
1756
  }
@@ -2021,6 +2020,96 @@ pub(crate) fn parse_html_block_with_wrapper(
2021
2020
  current_pos
2022
2021
  }
2023
2022
 
2023
+ fn parse_commonmark_html_block(
2024
+ builder: &mut GreenNodeBuilder<'static>,
2025
+ lines: &[&str],
2026
+ start_pos: usize,
2027
+ block_type: &HtmlBlockType,
2028
+ prefix: &ContainerPrefix,
2029
+ first_line_content: Option<&str>,
2030
+ ) -> usize {
2031
+ use crate::parser::inlines::sink::{InjectedMarker, InlineSink, MarkerInjectingSink};
2032
+ use crate::parser::utils::raw_html;
2033
+
2034
+ let (first, indent) = first_line_content.map_or_else(
2035
+ || prefix.strip_line_0_with_indent_emit(lines[start_pos]),
2036
+ |content| (content, None),
2037
+ );
2038
+ let mut source = first.to_string();
2039
+ let mut markers = Vec::new();
2040
+ let mut end_pos = start_pos + 1;
2041
+ let mut close_start = None;
2042
+ if !is_closing_marker(first, block_type) {
2043
+ while let Some(&line) = lines.get(end_pos) {
2044
+ let (depth, inner) = count_blockquote_markers(line);
2045
+ // Raw HTML accepts no lazy continuation outside its container.
2046
+ if depth < prefix.bq_depth()
2047
+ || (prefix.list_content_col() > 0
2048
+ && !inner.trim().is_empty()
2049
+ && !prefix.resolve(line).reaches_frame())
2050
+ || (ends_at_blank_line(block_type) && inner.trim().is_empty())
2051
+ {
2052
+ break;
2053
+ }
2054
+ // List indentation remains raw HTML content. The formatter needs
2055
+ // those bytes when it adjusts the enclosing list's indentation.
2056
+ let content = strip_n_blockquote_markers(line, prefix.bq_depth());
2057
+ let prefix_len = line.len() - content.len();
2058
+ for (offset, ch) in line[..prefix_len].char_indices() {
2059
+ markers.push((
2060
+ source.len(),
2061
+ InjectedMarker::Indent(&line[offset..offset + ch.len_utf8()]),
2062
+ ));
2063
+ }
2064
+ let closes = is_closing_marker(inner, block_type);
2065
+ if closes {
2066
+ close_start = Some(source.len());
2067
+ }
2068
+ source.push_str(content);
2069
+ end_pos += 1;
2070
+ if closes {
2071
+ break;
2072
+ }
2073
+ }
2074
+ }
2075
+
2076
+ let attributes = raw_html::attribute_ranges(&source);
2077
+ // Neither line boundary may divide a multiline tag's attribute region.
2078
+ let extend_fragment = |mut end| {
2079
+ for attrs in &attributes {
2080
+ if attrs.start < end && end < attrs.end {
2081
+ end = source[attrs.end..]
2082
+ .find('\n')
2083
+ .map_or(source.len(), |newline| attrs.end + newline + 1);
2084
+ }
2085
+ }
2086
+ end
2087
+ };
2088
+ let first_end = extend_fragment(first.len());
2089
+ let close_start = extend_fragment(close_start.unwrap_or(source.len())).max(first_end);
2090
+ builder.start_node(SyntaxKind::HTML_BLOCK.into());
2091
+ builder.start_node(SyntaxKind::HTML_BLOCK_TAG.into());
2092
+ if let Some(indent) = indent {
2093
+ builder.token(SyntaxKind::WHITESPACE.into(), indent);
2094
+ }
2095
+ let mut sink = MarkerInjectingSink::new(builder, &markers);
2096
+ raw_html::emit_fragment(&mut sink, &source, &attributes, 0..first_end);
2097
+ sink.finish_node();
2098
+ for (kind, range) in [
2099
+ (SyntaxKind::HTML_BLOCK_CONTENT, first_end..close_start),
2100
+ (SyntaxKind::HTML_BLOCK_TAG, close_start..source.len()),
2101
+ ] {
2102
+ if !range.is_empty() {
2103
+ sink.start_node_with_leading_markers(kind.into());
2104
+ raw_html::emit_fragment(&mut sink, &source, &attributes, range);
2105
+ sink.finish_node();
2106
+ }
2107
+ }
2108
+ sink.finish();
2109
+ builder.finish_node();
2110
+ end_pos
2111
+ }
2112
+
2024
2113
  /// Emit the collected inner content lines for an HTML block.
2025
2114
  ///
2026
2115
  /// For `HTML_BLOCK_DIV` under Pandoc with `lift_mode == true` (single-
@@ -1289,7 +1289,7 @@ fn parse_inline_range_impl(
1289
1289
  builder.token(SyntaxKind::TEXT.into(), &text[text_start..pos]);
1290
1290
  }
1291
1291
  log::trace!("Matched inline raw HTML at pos {}", pos);
1292
- emit_inline_html(builder, &text[pos..pos + len]);
1292
+ emit_inline_html(builder, &text[pos..pos + len], config.dialect);
1293
1293
  pos += len;
1294
1294
  text_start = pos;
1295
1295
  continue;
@@ -17,7 +17,7 @@
17
17
 
18
18
  use super::sink::InlineSink;
19
19
  use crate::options::Dialect;
20
- use crate::parser::utils::attributes::pandoc_html_attribute_names_valid;
20
+ use crate::parser::utils::attributes::{emit_html_attrs_node, pandoc_html_attribute_names_valid};
21
21
  use crate::syntax::SyntaxKind;
22
22
 
23
23
  /// Try to match an inline raw HTML span starting at `text[0]`.
@@ -78,12 +78,34 @@ pub(crate) fn inspect_inline_html(
78
78
  }
79
79
 
80
80
  /// Emit a single `INLINE_HTML` node holding the verbatim span.
81
- pub fn emit_inline_html(builder: &mut impl InlineSink, raw: &str) {
81
+ pub fn emit_inline_html(builder: &mut impl InlineSink, raw: &str, dialect: Dialect) {
82
82
  builder.start_node(SyntaxKind::INLINE_HTML.into());
83
- builder.token(SyntaxKind::INLINE_HTML_CONTENT.into(), raw);
83
+ if dialect == Dialect::CommonMark
84
+ && let Some(attrs) = open_tag_attribute_range(raw)
85
+ {
86
+ builder.token(SyntaxKind::INLINE_HTML_CONTENT.into(), &raw[..attrs.start]);
87
+ emit_html_attrs_node(builder, &raw[attrs.clone()]);
88
+ builder.token(SyntaxKind::INLINE_HTML_CONTENT.into(), &raw[attrs.end..]);
89
+ } else {
90
+ builder.token(SyntaxKind::INLINE_HTML_CONTENT.into(), raw);
91
+ }
84
92
  builder.finish_node();
85
93
  }
86
94
 
95
+ /// Locate attributes only after the raw HTML recognizer has accepted the tag.
96
+ pub(crate) fn open_tag_attribute_range(raw: &str) -> Option<std::ops::Range<usize>> {
97
+ let len = parse_open_tag(raw)?;
98
+ let name_end = 1 + raw.as_bytes()[1..]
99
+ .iter()
100
+ .take_while(|b| b.is_ascii_alphanumeric() || **b == b'-')
101
+ .count();
102
+ let attrs = name_end..len - 1;
103
+ raw[attrs.clone()]
104
+ .bytes()
105
+ .any(|b| !b.is_ascii_whitespace() && b != b'/')
106
+ .then_some(attrs)
107
+ }
108
+
87
109
  fn parse_html_comment(text: &str) -> Option<usize> {
88
110
  if !text.starts_with("<!--") {
89
111
  return None;
@@ -118,6 +118,12 @@ impl<'a, 'b> MarkerInjectingSink<'a, 'b> {
118
118
  }
119
119
  }
120
120
 
121
+ /// Keep a raw block's leading container prefixes inside its line wrapper.
122
+ pub(crate) fn start_node_with_leading_markers(&mut self, kind: rowan::SyntaxKind) {
123
+ self.inner.start_node(kind);
124
+ self.emit_markers_at_current();
125
+ }
126
+
121
127
  /// Flush any markers at or past the end of the emitted text. Must be called
122
128
  /// once after the inline parser finishes, to place trailing markers.
123
129
  pub(crate) fn finish(mut self) {