panache-cli 3.16.0__tar.gz → 3.17.0__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 (349) hide show
  1. {panache_cli-3.16.0 → panache_cli-3.17.0}/Cargo.lock +37 -37
  2. {panache_cli-3.16.0 → panache_cli-3.17.0}/Cargo.toml +3 -3
  3. {panache_cli-3.16.0 → panache_cli-3.17.0}/PKG-INFO +1 -1
  4. {panache_cli-3.16.0 → panache_cli-3.17.0}/build.rs +2 -2
  5. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/CHANGELOG.md +19 -0
  6. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/Cargo.toml +3 -3
  7. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/blockquotes.rs +11 -1
  8. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/blocks.rs +19 -10
  9. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/containers.rs +11 -7
  10. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/core.rs +78 -25
  11. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/document.rs +2 -3
  12. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/headings.rs +9 -3
  13. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/inline.rs +97 -34
  14. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/inline_layout.rs +68 -40
  15. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/lists.rs +28 -10
  16. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/math/STYLE.md +11 -10
  17. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/math/lower.rs +32 -4
  18. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/math.rs +1 -1
  19. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/paragraphs.rs +15 -5
  20. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/preserve.rs +66 -23
  21. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/raw.rs +75 -6
  22. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter.rs +1 -1
  23. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/utils.rs +3 -0
  24. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/CHANGELOG.md +21 -0
  25. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/Cargo.toml +2 -2
  26. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/lib.rs +2 -1
  27. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/options.rs +38 -5
  28. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/pandoc_ast.rs +2 -1
  29. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/block_dispatcher.rs +68 -24
  30. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/container_prefix.rs +18 -1
  31. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/definition_lists.rs +11 -3
  32. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/headings.rs +37 -3
  33. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/html_blocks.rs +119 -29
  34. panache_cli-3.17.0/crates/panache-parser/src/parser/blocks/hugo.rs +388 -0
  35. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/lists.rs +46 -27
  36. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/reference_links.rs +33 -3
  37. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tables.rs +29 -8
  38. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/frame_pinning.rs +1 -1
  39. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/lists.rs +189 -1
  40. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks.rs +1 -0
  41. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/core/blockquotes.rs +2 -1
  42. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/core/definition_lists.rs +43 -1
  43. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/core/html_interruptions.rs +6 -0
  44. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/core/list_items.rs +222 -0
  45. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/core.rs +177 -12
  46. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/core.rs +27 -4
  47. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/escapes.rs +14 -2
  48. panache_cli-3.17.0/crates/panache-parser/src/parser/inlines/hugo.rs +317 -0
  49. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/inline_html.rs +98 -36
  50. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/inline_ir.rs +79 -9
  51. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/links.rs +104 -14
  52. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/refdef_map.rs +33 -9
  53. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/strikeout.rs +18 -2
  54. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines.rs +1 -0
  55. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/reparse.rs +94 -21
  56. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/attributes.rs +21 -1
  57. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/container_stack.rs +7 -0
  58. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/continuation.rs +18 -12
  59. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/list_item_buffer.rs +167 -5
  60. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/text_buffer.rs +65 -0
  61. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml/profile.rs +4 -2
  62. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser.rs +4 -4
  63. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/range_utils.rs +2 -0
  64. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/consumer.rs +5 -0
  65. panache_cli-3.17.0/crates/panache-parser/src/syntax/html.rs +235 -0
  66. panache_cli-3.17.0/crates/panache-parser/src/syntax/hugo.rs +74 -0
  67. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/kind.rs +13 -0
  68. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax.rs +4 -0
  69. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/cache.rs +7 -2
  70. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/cli.rs +2 -0
  71. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/config/types/schema_helpers.rs +1 -0
  72. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/config/types.rs +56 -3
  73. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/config.rs +44 -0
  74. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/formatter.rs +1 -1
  75. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/incremental.rs +4 -6
  76. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/execution_context.rs +35 -18
  77. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters.rs +77 -21
  78. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters_sync.rs +60 -3
  79. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/html_entities.rs +2 -0
  80. panache_cli-3.17.0/src/linter/rules/html_unclosed_attribute.rs +102 -0
  81. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules.rs +4 -0
  82. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/runner.rs +7 -13
  83. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter.rs +1 -0
  84. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/dispatch.rs +19 -2
  85. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/code_actions.rs +2 -9
  86. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/diagnostics.rs +22 -10
  87. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/main.rs +29 -34
  88. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/parser.rs +1 -1
  89. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/salsa.rs +8 -2
  90. {panache_cli-3.16.0 → panache_cli-3.17.0}/LICENSE +0 -0
  91. {panache_cli-3.16.0 → panache_cli-3.17.0}/README.md +0 -0
  92. {panache_cli-3.16.0 → panache_cli-3.17.0}/assets/quarto-schema/schema.json +0 -0
  93. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/README.md +0 -0
  94. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/config.rs +0 -0
  95. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/directives.rs +0 -0
  96. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/code_blocks.rs +0 -0
  97. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/fenced_divs.rs +0 -0
  98. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/hashpipe.rs +0 -0
  99. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/indent_utils.rs +0 -0
  100. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/math/ir.rs +0 -0
  101. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/math/printer.rs +0 -0
  102. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/math/render.rs +0 -0
  103. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/metadata.rs +0 -0
  104. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/sentence_wrap.rs +0 -0
  105. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/shortcodes.rs +0 -0
  106. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/smart.rs +0 -0
  107. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/table_conversion.rs +0 -0
  108. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/tables.rs +0 -0
  109. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/utils.rs +0 -0
  110. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml/STYLE.md +0 -0
  111. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml/block_map.rs +0 -0
  112. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml/block_sequence.rs +0 -0
  113. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml/document.rs +0 -0
  114. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml/flow.rs +0 -0
  115. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml/options.rs +0 -0
  116. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml/scalar.rs +0 -0
  117. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/formatter/yaml.rs +0 -0
  118. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/lib.rs +0 -0
  119. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/parser.rs +0 -0
  120. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/syntax.rs +0 -0
  121. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-formatter/src/yaml_engine.rs +0 -0
  122. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/README.md +0 -0
  123. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/build.rs +0 -0
  124. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/data/math_symbols.json +0 -0
  125. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/data/unicode-math.LICENSE +0 -0
  126. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/data/unicode-math.NOTICE +0 -0
  127. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/grid_layout.rs +0 -0
  128. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/admonitions.rs +0 -0
  129. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/blockquotes.rs +0 -0
  130. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/code_blocks.rs +0 -0
  131. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/fenced_divs.rs +0 -0
  132. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/figures.rs +0 -0
  133. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/horizontal_rules.rs +0 -0
  134. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/indented_code.rs +0 -0
  135. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/latex_envs.rs +0 -0
  136. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/line_blocks.rs +0 -0
  137. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/metadata.rs +0 -0
  138. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/myst_directives.rs +0 -0
  139. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/myst_targets.rs +0 -0
  140. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/paragraphs.rs +0 -0
  141. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/raw_blocks.rs +0 -0
  142. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/blanklines.rs +0 -0
  143. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs +0 -0
  144. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/code_blocks.rs +0 -0
  145. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/content_containers.rs +0 -0
  146. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/definition_lists.rs +0 -0
  147. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/figures.rs +0 -0
  148. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/footnote_marker_line.rs +0 -0
  149. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/fragment_context.rs +0 -0
  150. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/headings.rs +0 -0
  151. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/helpers.rs +0 -0
  152. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/losslessness.rs +0 -0
  153. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/metadata_guards.rs +0 -0
  154. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/blocks/tests/tables.rs +0 -0
  155. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/diagnostics.rs +0 -0
  156. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/bookdown.rs +0 -0
  157. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/bracketed_spans.rs +0 -0
  158. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/citations.rs +0 -0
  159. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/code_spans.rs +0 -0
  160. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/emoji.rs +0 -0
  161. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/hard_breaks.rs +0 -0
  162. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/inline_executable.rs +0 -0
  163. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/inline_footnotes.rs +0 -0
  164. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/latex.rs +0 -0
  165. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/mark.rs +0 -0
  166. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/math.rs +0 -0
  167. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/myst_roles.rs +0 -0
  168. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/myst_substitutions.rs +0 -0
  169. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/native_spans.rs +0 -0
  170. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/raw_inline.rs +0 -0
  171. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/shortcodes.rs +0 -0
  172. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/sink.rs +0 -0
  173. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/subscript.rs +0 -0
  174. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/superscript.rs +0 -0
  175. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/svelte.rs +0 -0
  176. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/tests.rs +0 -0
  177. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/uri-schemes.csv +0 -0
  178. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/inlines/wikilinks.rs +0 -0
  179. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/math.rs +0 -0
  180. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/chunk_options.rs +0 -0
  181. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/helpers.rs +0 -0
  182. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/inline_emission.rs +0 -0
  183. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/marker_utils.rs +0 -0
  184. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/tree_copy.rs +0 -0
  185. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils/yaml_regions.rs +0 -0
  186. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/utils.rs +0 -0
  187. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/verify.rs +0 -0
  188. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml/cooking.rs +0 -0
  189. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml/events.rs +0 -0
  190. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml/model.rs +0 -0
  191. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml/parser.rs +0 -0
  192. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml/scanner.rs +0 -0
  193. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml/validator.rs +0 -0
  194. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/parser/yaml.rs +0 -0
  195. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/semantic/math.rs +0 -0
  196. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/semantic.rs +0 -0
  197. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/alerts.rs +0 -0
  198. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/ast.rs +0 -0
  199. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/attributes.rs +0 -0
  200. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/block_quotes.rs +0 -0
  201. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/blocks.rs +0 -0
  202. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/chunk_options.rs +0 -0
  203. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/citations.rs +0 -0
  204. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/code_blocks.rs +0 -0
  205. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/code_span.rs +0 -0
  206. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/crossrefs.rs +0 -0
  207. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/definitions.rs +0 -0
  208. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/fenced_divs.rs +0 -0
  209. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/headings.rs +0 -0
  210. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/inlines.rs +0 -0
  211. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/links.rs +0 -0
  212. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/lists.rs +0 -0
  213. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/math.rs +0 -0
  214. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/myst.rs +0 -0
  215. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/raw_tex.rs +0 -0
  216. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/references.rs +0 -0
  217. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/shortcodes.rs +0 -0
  218. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/tables.rs +0 -0
  219. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/yaml.rs +0 -0
  220. {panache_cli-3.16.0 → panache_cli-3.17.0}/crates/panache-parser/src/syntax/yaml_ast.rs +0 -0
  221. {panache_cli-3.16.0 → panache_cli-3.17.0}/pyproject.toml +0 -0
  222. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bib/bibtex.rs +0 -0
  223. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bib/csl_json.rs +0 -0
  224. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bib/csl_yaml.rs +0 -0
  225. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bib/index.rs +0 -0
  226. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bib/preview.rs +0 -0
  227. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bib/ris.rs +0 -0
  228. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bib.rs +0 -0
  229. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/bin/distill_quarto_schema.rs +0 -0
  230. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/config/formatter_presets.rs +0 -0
  231. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/diagnostic_renderer.rs +0 -0
  232. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/directives.rs +0 -0
  233. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/external_formatters_common.rs +0 -0
  234. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/external_formatters_sync.rs +0 -0
  235. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/external_tools_common.rs +0 -0
  236. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/includes.rs +0 -0
  237. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/io_context.rs +0 -0
  238. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lib.rs +0 -0
  239. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/code_block_collector.rs +0 -0
  240. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/diagnostics.rs +0 -0
  241. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters/clippy.rs +0 -0
  242. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters/eslint.rs +0 -0
  243. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters/jarl.rs +0 -0
  244. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters/jolars.rs +0 -0
  245. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters/ruff.rs +0 -0
  246. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters/shellcheck.rs +0 -0
  247. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/external_linters/staticcheck.rs +0 -0
  248. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/fuzzy.rs +0 -0
  249. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/index.rs +0 -0
  250. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/metadata_diagnostics.rs +0 -0
  251. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/offsets.rs +0 -0
  252. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/project_index.rs +0 -0
  253. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/quarto_schema/distill.rs +0 -0
  254. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/quarto_schema/interp.rs +0 -0
  255. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/quarto_schema/model.rs +0 -0
  256. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/quarto_schema/report.rs +0 -0
  257. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/quarto_schema/value.rs +0 -0
  258. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/quarto_schema.rs +0 -0
  259. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/adjacent_footnote_refs.rs +0 -0
  260. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/blank_line_in_display_math.rs +0 -0
  261. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/blank_line_in_inline_footnote.rs +0 -0
  262. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/chunk_label_spaces.rs +0 -0
  263. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/citation_keys.rs +0 -0
  264. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/citation_nonbreaking_space.rs +0 -0
  265. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/consumer_divergence.rs +0 -0
  266. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/crossref_as_link_target.rs +0 -0
  267. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/duplicate_references.rs +0 -0
  268. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/duplicate_yaml_anchor.rs +0 -0
  269. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/emoji_aliases.rs +0 -0
  270. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/empty_list_item.rs +0 -0
  271. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/empty_values.rs +0 -0
  272. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/figure_crossref_captions.rs +0 -0
  273. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/footnote_after_image.rs +0 -0
  274. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/footnote_ref_in_footnote_def.rs +0 -0
  275. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/footnote_swallowed_by_bracket.rs +0 -0
  276. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/heading_eaten_attrs.rs +0 -0
  277. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/heading_hierarchy.rs +0 -0
  278. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/heading_strip_comments_residue.rs +0 -0
  279. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/inline_math_line_break.rs +0 -0
  280. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/link_text_is_url.rs +0 -0
  281. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/malformed_citation.rs +0 -0
  282. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/math_content.rs +0 -0
  283. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/missing_chunk_labels.rs +0 -0
  284. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/quarto_schema.rs +0 -0
  285. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/reversed_footnote_marker.rs +0 -0
  286. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/space_before_punctuation.rs +0 -0
  287. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/stray_fenced_div_markers.rs +0 -0
  288. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/swallowed_list_marker.rs +0 -0
  289. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/table_column_count.rs +0 -0
  290. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/undefined_anchor.rs +0 -0
  291. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/undefined_references.rs +0 -0
  292. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/unspaced_citation.rs +0 -0
  293. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/unspaced_list_marker.rs +0 -0
  294. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/unsupported_metadata_key.rs +0 -0
  295. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/unused_definitions.rs +0 -0
  296. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/rules/unused_yaml_anchor.rs +0 -0
  297. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/yaml_anchors.rs +0 -0
  298. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/linter/yaml_resolve.rs +0 -0
  299. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/config.rs +0 -0
  300. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/context.rs +0 -0
  301. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/conversions.rs +0 -0
  302. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/documents.rs +0 -0
  303. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/global_state.rs +0 -0
  304. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/completion.rs +0 -0
  305. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/configuration.rs +0 -0
  306. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/document_highlight.rs +0 -0
  307. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/document_links.rs +0 -0
  308. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/document_symbols.rs +0 -0
  309. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/file_operations.rs +0 -0
  310. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/file_rename.rs +0 -0
  311. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/file_watcher.rs +0 -0
  312. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/folding_ranges.rs +0 -0
  313. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/footnote_conversion.rs +0 -0
  314. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/formatting.rs +0 -0
  315. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/goto_definition.rs +0 -0
  316. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/heading_link_conversion.rs +0 -0
  317. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/hover.rs +0 -0
  318. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/link_conversion.rs +0 -0
  319. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/linked_editing_range.rs +0 -0
  320. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/list_conversion.rs +0 -0
  321. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/prepare_rename.rs +0 -0
  322. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/references.rs +0 -0
  323. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/rename.rs +0 -0
  324. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/semantic_tokens.rs +0 -0
  325. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/shortcode_args.rs +0 -0
  326. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/table_conversion.rs +0 -0
  327. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/workspace_folders.rs +0 -0
  328. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers/workspace_symbols.rs +0 -0
  329. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/handlers.rs +0 -0
  330. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/helpers.rs +0 -0
  331. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/line_index.rs +0 -0
  332. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/navigation.rs +0 -0
  333. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/symbols.rs +0 -0
  334. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/task_pool.rs +0 -0
  335. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/testing.rs +0 -0
  336. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp/uri_ext.rs +0 -0
  337. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/lsp.rs +0 -0
  338. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/metadata/bibliography.rs +0 -0
  339. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/metadata/citations.rs +0 -0
  340. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/metadata/project.rs +0 -0
  341. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/metadata/references.rs +0 -0
  342. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/metadata/yaml.rs +0 -0
  343. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/metadata.rs +0 -0
  344. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/range_utils.rs +0 -0
  345. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/syntax.rs +0 -0
  346. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/utils.rs +0 -0
  347. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/vfs.rs +0 -0
  348. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/yaml_engine.rs +0 -0
  349. {panache_cli-3.16.0 → panache_cli-3.17.0}/src/yaml_regions.rs +0 -0
@@ -121,9 +121,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
121
121
 
122
122
  [[package]]
123
123
  name = "badness-formatter"
124
- version = "0.10.0"
124
+ version = "0.10.2"
125
125
  source = "registry+https://github.com/rust-lang/crates.io-index"
126
- checksum = "3124da73e1d99986961f6e5ac369ff1bcc65a86f3f2de9f770011976b2160f9e"
126
+ checksum = "b174164ae9bb3abaa0115a64ecb11a54cdee5c93c9104c1cdf2c5da282039d76"
127
127
  dependencies = [
128
128
  "badness-parser",
129
129
  "rowan 0.17.0",
@@ -131,9 +131,9 @@ dependencies = [
131
131
 
132
132
  [[package]]
133
133
  name = "badness-parser"
134
- version = "0.10.0"
134
+ version = "0.11.1"
135
135
  source = "registry+https://github.com/rust-lang/crates.io-index"
136
- checksum = "9818b1f73c3f4e17ef49d85f4ea26e143beefda5b6c524139ece958d5b5a1f67"
136
+ checksum = "32b45795e07c88249e867c1f2dd84ca0d5d78062753fb5fa75c8eb1ece8e202b"
137
137
  dependencies = [
138
138
  "phf 0.14.0",
139
139
  "phf_codegen",
@@ -273,7 +273,7 @@ dependencies = [
273
273
  "heck",
274
274
  "proc-macro2",
275
275
  "quote",
276
- "syn 3.0.8",
276
+ "syn 3.0.9",
277
277
  ]
278
278
 
279
279
  [[package]]
@@ -418,9 +418,9 @@ checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
418
418
 
419
419
  [[package]]
420
420
  name = "defmt"
421
- version = "1.1.1"
421
+ version = "1.2.0"
422
422
  source = "registry+https://github.com/rust-lang/crates.io-index"
423
- checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1"
423
+ checksum = "e4a0795ac740cb54d7b3775c9c17345f6aaecf884c01733b39d6017738e0e3e1"
424
424
  dependencies = [
425
425
  "bitflags 1.3.2",
426
426
  "defmt-macros",
@@ -428,21 +428,21 @@ dependencies = [
428
428
 
429
429
  [[package]]
430
430
  name = "defmt-macros"
431
- version = "1.1.1"
431
+ version = "1.2.0"
432
432
  source = "registry+https://github.com/rust-lang/crates.io-index"
433
- checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8"
433
+ checksum = "840bb056bd99c495c9188198a258ab787c79f306d864db3e6e8451442d6d8366"
434
434
  dependencies = [
435
435
  "defmt-parser",
436
436
  "proc-macro2",
437
437
  "quote",
438
- "syn 2.0.119",
438
+ "syn 3.0.9",
439
439
  ]
440
440
 
441
441
  [[package]]
442
442
  name = "defmt-parser"
443
- version = "1.0.0"
443
+ version = "1.1.0"
444
444
  source = "registry+https://github.com/rust-lang/crates.io-index"
445
- checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
445
+ checksum = "71958f69fb2de856c5dd51ac9377e986ca1aa5919f931bf5395a807277f889a0"
446
446
  dependencies = [
447
447
  "thiserror",
448
448
  ]
@@ -541,9 +541,9 @@ dependencies = [
541
541
 
542
542
  [[package]]
543
543
  name = "equivalent"
544
- version = "1.0.2"
544
+ version = "1.0.3"
545
545
  source = "registry+https://github.com/rust-lang/crates.io-index"
546
- checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
546
+ checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826"
547
547
 
548
548
  [[package]]
549
549
  name = "errno"
@@ -1114,7 +1114,7 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
1114
1114
 
1115
1115
  [[package]]
1116
1116
  name = "panache"
1117
- version = "3.16.0"
1117
+ version = "3.17.0"
1118
1118
  dependencies = [
1119
1119
  "annotate-snippets",
1120
1120
  "assert_cmd",
@@ -1159,7 +1159,7 @@ dependencies = [
1159
1159
 
1160
1160
  [[package]]
1161
1161
  name = "panache-formatter"
1162
- version = "0.27.1"
1162
+ version = "0.28.0"
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.33.0"
1182
+ version = "0.34.0"
1183
1183
  dependencies = [
1184
1184
  "badness-parser",
1185
1185
  "entities",
@@ -1456,7 +1456,7 @@ checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a"
1456
1456
  dependencies = [
1457
1457
  "proc-macro2",
1458
1458
  "quote",
1459
- "syn 3.0.8",
1459
+ "syn 3.0.9",
1460
1460
  ]
1461
1461
 
1462
1462
  [[package]]
@@ -1607,7 +1607,7 @@ checksum = "69dd77f86ec10e72e314f4ddf7c44c8d349e73cdff1aad524ba9668603fb0549"
1607
1607
  dependencies = [
1608
1608
  "proc-macro2",
1609
1609
  "quote",
1610
- "syn 3.0.8",
1610
+ "syn 3.0.9",
1611
1611
  ]
1612
1612
 
1613
1613
  [[package]]
@@ -1621,9 +1621,9 @@ dependencies = [
1621
1621
 
1622
1622
  [[package]]
1623
1623
  name = "schemars"
1624
- version = "1.2.2"
1624
+ version = "1.2.3"
1625
1625
  source = "registry+https://github.com/rust-lang/crates.io-index"
1626
- checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a"
1626
+ checksum = "ab508826f74a77ca9d5aba6ff19b522583ee3eaf28a19384ff3d0e5835fadf6e"
1627
1627
  dependencies = [
1628
1628
  "dyn-clone",
1629
1629
  "ref-cast",
@@ -1634,14 +1634,14 @@ dependencies = [
1634
1634
 
1635
1635
  [[package]]
1636
1636
  name = "schemars_derive"
1637
- version = "1.2.2"
1637
+ version = "1.2.3"
1638
1638
  source = "registry+https://github.com/rust-lang/crates.io-index"
1639
- checksum = "d98c67716b46af2f0b8cf752abc930f6f9aecfbf671ecfb531db8a31dbe4e2ba"
1639
+ checksum = "e1c3a92094fa7d61aa124645844facb6b554dfc797136d0f5fd1f890e2bffc69"
1640
1640
  dependencies = [
1641
1641
  "proc-macro2",
1642
1642
  "quote",
1643
1643
  "serde_derive_internals",
1644
- "syn 3.0.8",
1644
+ "syn 3.0.9",
1645
1645
  ]
1646
1646
 
1647
1647
  [[package]]
@@ -1677,7 +1677,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
1677
1677
  dependencies = [
1678
1678
  "proc-macro2",
1679
1679
  "quote",
1680
- "syn 3.0.8",
1680
+ "syn 3.0.9",
1681
1681
  ]
1682
1682
 
1683
1683
  [[package]]
@@ -1688,7 +1688,7 @@ checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd"
1688
1688
  dependencies = [
1689
1689
  "proc-macro2",
1690
1690
  "quote",
1691
- "syn 3.0.8",
1691
+ "syn 3.0.9",
1692
1692
  ]
1693
1693
 
1694
1694
  [[package]]
@@ -1712,7 +1712,7 @@ checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906"
1712
1712
  dependencies = [
1713
1713
  "proc-macro2",
1714
1714
  "quote",
1715
- "syn 3.0.8",
1715
+ "syn 3.0.9",
1716
1716
  ]
1717
1717
 
1718
1718
  [[package]]
@@ -1824,9 +1824,9 @@ dependencies = [
1824
1824
 
1825
1825
  [[package]]
1826
1826
  name = "syn"
1827
- version = "3.0.8"
1827
+ version = "3.0.9"
1828
1828
  source = "registry+https://github.com/rust-lang/crates.io-index"
1829
- checksum = "01016da373cd8f7ef12624f796309f5c31ba8d646dd08856c02cd741d823c622"
1829
+ checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
1830
1830
  dependencies = [
1831
1831
  "proc-macro2",
1832
1832
  "quote",
@@ -1881,7 +1881,7 @@ checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524"
1881
1881
  dependencies = [
1882
1882
  "proc-macro2",
1883
1883
  "quote",
1884
- "syn 3.0.8",
1884
+ "syn 3.0.9",
1885
1885
  ]
1886
1886
 
1887
1887
  [[package]]
@@ -2077,7 +2077,7 @@ dependencies = [
2077
2077
  "bumpalo",
2078
2078
  "proc-macro2",
2079
2079
  "quote",
2080
- "syn 3.0.8",
2080
+ "syn 3.0.9",
2081
2081
  "wasm-bindgen-shared",
2082
2082
  ]
2083
2083
 
@@ -2110,9 +2110,9 @@ dependencies = [
2110
2110
 
2111
2111
  [[package]]
2112
2112
  name = "wincode"
2113
- version = "0.6.2"
2113
+ version = "0.6.3"
2114
2114
  source = "registry+https://github.com/rust-lang/crates.io-index"
2115
- checksum = "1d4abae4bfc30e59d97d3ea4924e5c5e7fede946390bffbd52c076c081b87a6c"
2115
+ checksum = "063b5affe63fb4e584a33101d8808f01f2348b4f533db6223bf27263a0fdb9e9"
2116
2116
  dependencies = [
2117
2117
  "pastey",
2118
2118
  "proc-macro2",
@@ -2181,18 +2181,18 @@ dependencies = [
2181
2181
 
2182
2182
  [[package]]
2183
2183
  name = "zerocopy"
2184
- version = "0.8.62"
2184
+ version = "0.8.63"
2185
2185
  source = "registry+https://github.com/rust-lang/crates.io-index"
2186
- checksum = "86502bf56ac7c77571a32e2647bb2a15894565e981fb2a48d7bde2d91c965a9d"
2186
+ checksum = "e5fe1f8f1b06191a00962174c61aa5005e0bb391a6d80d07e24d115c01a92ed8"
2187
2187
  dependencies = [
2188
2188
  "zerocopy-derive",
2189
2189
  ]
2190
2190
 
2191
2191
  [[package]]
2192
2192
  name = "zerocopy-derive"
2193
- version = "0.8.62"
2193
+ version = "0.8.63"
2194
2194
  source = "registry+https://github.com/rust-lang/crates.io-index"
2195
- checksum = "5457206954b06561e2608c7e19cf58b1926586d999c246eebe4502f7e2039d1a"
2195
+ checksum = "863ad3ac83293fb4d740aedbfdc9240dd8d1a50c1099acd76ce80ce7c7230c7f"
2196
2196
  dependencies = [
2197
2197
  "proc-macro2",
2198
2198
  "quote",
@@ -9,7 +9,7 @@ authors = ["Johan Larsson <johan@jolars.co>"]
9
9
 
10
10
  [package]
11
11
  name = "panache"
12
- version = "3.16.0"
12
+ version = "3.17.0"
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.27.1", features = [
58
+ panache-formatter = { path = "crates/panache-formatter", version = "0.28.0", features = [
59
59
  "serde",
60
60
  "schema",
61
61
  ] }
62
- panache-parser = { path = "crates/panache-parser", version = "0.33.0", features = [
62
+ panache-parser = { path = "crates/panache-parser", version = "0.34.0", features = [
63
63
  "serde",
64
64
  "schema",
65
65
  ] }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: panache-cli
3
- Version: 3.16.0
3
+ Version: 3.17.0
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -140,14 +140,14 @@ fn extract_field_list(block: &str, field: &str) -> Option<Vec<String>> {
140
140
  let marker_slice = format!("{field}: &[");
141
141
  if let Some(start) = block.find(&marker_slice) {
142
142
  let after = &block[start + marker_slice.len()..];
143
- let end = after.find("],")?;
143
+ let end = after.find(']')?;
144
144
  return Some(extract_quoted_strings(&after[..end]));
145
145
  }
146
146
 
147
147
  let marker_vec = format!("{field}: vec![");
148
148
  let start = block.find(&marker_vec)?;
149
149
  let after = &block[start + marker_vec.len()..];
150
- let end = after.find("],")?;
150
+ let end = after.find(']')?;
151
151
  Some(extract_quoted_strings(&after[..end]))
152
152
  }
153
153
 
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.28.0](https://github.com/jolars/panache/compare/panache-formatter-v0.27.1...panache-formatter-v0.28.0) (2026-10-16)
4
+
5
+ ### Features
6
+
7
+ - add Hugo flavor and syntax preservation (#570) ([`7247d79`](https://github.com/jolars/panache/commit/7247d79e8b78f74404fc1f258d89bcf5fe382f91)), closes [#558](https://github.com/jolars/panache/issues/558)
8
+
9
+ ### Bug Fixes
10
+
11
+ - preserve definition bodies when formatting ([`4e95495`](https://github.com/jolars/panache/commit/4e95495554b9b832279b117562bbbdb9c9e2f463)), fixes [#576](https://github.com/jolars/panache/issues/576)
12
+ - **formatter:** normalize unnumbered headings ([`4fe2f30`](https://github.com/jolars/panache/commit/4fe2f308b5e3d8a8c0e7571228ff1465172f748a)), closes [#463](https://github.com/jolars/panache/issues/463)
13
+ - **parser:** start HTML blocks after list markers ([`598fd82`](https://github.com/jolars/panache/commit/598fd82deaa627a1a9a76694a8900a2b2e0f736d)), fixes [#559](https://github.com/jolars/panache/issues/559)
14
+ - **parser:** require paragraph context for lazy list lines ([`a39a6e7`](https://github.com/jolars/panache/commit/a39a6e7d10437c69421b67cd0e276ff52bf89afe)), fixes [#561](https://github.com/jolars/panache/issues/561)
15
+ - **parser:** retain blocks after empty list markers ([`f6d117b`](https://github.com/jolars/panache/commit/f6d117becbf668b6ce4ee1f92643068d64300094)), fixes [#560](https://github.com/jolars/panache/issues/560)
16
+ - **parser:** detect HTML blocks at a nested list item's content column (#566) ([`d271057`](https://github.com/jolars/panache/commit/d27105781a8d103a2383ab5e09661435531cf0df))
17
+
18
+ ### Dependencies
19
+
20
+ - updated crates/panache-parser to v0.34.0
21
+
3
22
  ## [0.27.1](https://github.com/jolars/panache/compare/panache-formatter-v0.27.0...panache-formatter-v0.27.1) (2026-10-12)
4
23
 
5
24
  ### Dependencies
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "panache-formatter"
3
- version = "0.27.1"
3
+ version = "0.28.0"
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.33.0" }
22
+ panache-parser = { path = "../panache-parser", version = "0.34.0" }
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 }
@@ -32,7 +32,7 @@ serde = ["dep:serde", "panache-parser/serde"]
32
32
  schema = ["serde", "dep:schemars", "panache-parser/schema"]
33
33
 
34
34
  [dev-dependencies]
35
- badness-formatter = "=0.10.0"
35
+ badness-formatter = "=0.10.2"
36
36
  serde_json = "1.0.150"
37
37
  insta = { version = "1.47.2", features = ["json"] }
38
38
  # TEMPORARY: cross-validation oracle only (tests/yaml_cross_validation.rs).
@@ -154,7 +154,7 @@ impl Formatter {
154
154
  self.output.push('\n');
155
155
  }
156
156
  SyntaxKind::HEADING => {
157
- let heading_text = self.format_heading(child);
157
+ let heading_text = self.format_heading(child, 0);
158
158
  for line in heading_text.lines() {
159
159
  self.output.push_str(&content_prefix);
160
160
  self.output.push_str(line);
@@ -210,6 +210,16 @@ impl Formatter {
210
210
  ctx.in_list_continuation = false;
211
211
  }
212
212
  }
213
+ SyntaxKind::HUGO_SHORTCODE_BLOCK => {
214
+ let rendered = crate::syntax::text_without_line_prefixes(child);
215
+ for line in rendered.split_inclusive('\n') {
216
+ self.output.push_str(&content_prefix);
217
+ self.output.push_str(line);
218
+ }
219
+ if !self.output.ends_with('\n') {
220
+ self.output.push('\n');
221
+ }
222
+ }
213
223
  SyntaxKind::TEX_BLOCK => {
214
224
  let tex_output = self.render_to_buffer(child, indent, 0);
215
225
 
@@ -1,5 +1,5 @@
1
1
  use crate::config::WrapMode;
2
- use crate::formatter::preserve::preserve_lines_normalized;
2
+ use crate::formatter::preserve::{preserve_lines_normalized, preserve_lines_unprefixed_normalized};
3
3
  use crate::formatter::smart::normalize_smart_punctuation;
4
4
  use crate::formatter::utils::is_block_element;
5
5
  use crate::formatter::{Formatter, paragraphs};
@@ -217,20 +217,29 @@ impl Formatter {
217
217
  && !self.output.ends_with(": ");
218
218
  match wrap_mode {
219
219
  WrapMode::Preserve => {
220
- for (i, line) in preserve_lines_normalized(node, &self.config)
221
- .iter()
222
- .enumerate()
223
- {
220
+ let in_definition = self.output.ends_with(": ");
221
+ let lines = if in_definition {
222
+ // The normalized marker sets a new content column, so
223
+ // rebuild container indentation around opaque payloads.
224
+ preserve_lines_unprefixed_normalized(node, &self.config)
225
+ } else {
226
+ preserve_lines_normalized(node, &self.config)
227
+ };
228
+ for (i, line) in lines.iter().enumerate() {
224
229
  if needs_indent {
225
230
  self.output.push_str(&" ".repeat(indent));
226
231
  } else if i > 0 {
227
232
  self.output.push('\n');
233
+ if in_definition {
234
+ self.output.push_str(&" ".repeat(indent));
235
+ }
228
236
  }
229
- self.output.push_str(if needs_indent {
230
- paragraphs::trim_prose_indent(node, line)
231
- } else {
232
- line
233
- });
237
+ self.output
238
+ .push_str(if needs_indent || (in_definition && i > 0) {
239
+ paragraphs::trim_prose_indent(node, line)
240
+ } else {
241
+ line
242
+ });
234
243
  if needs_indent {
235
244
  self.output.push('\n');
236
245
  }
@@ -1,7 +1,7 @@
1
1
  use crate::config::WrapMode;
2
2
  use crate::formatter::Formatter;
3
3
  use crate::formatter::paragraphs::trim_prose_indent;
4
- use crate::formatter::preserve::preserve_lines_normalized;
4
+ use crate::formatter::preserve::preserve_lines_unprefixed_normalized;
5
5
  use crate::syntax::{SyntaxKind, SyntaxNode};
6
6
  use rowan::NodeOrToken;
7
7
 
@@ -64,10 +64,12 @@ impl Formatter {
64
64
  let para_start = self.output.len();
65
65
  let available_width = self.config.line_width.saturating_sub(child_indent);
66
66
  let lines = match wrap_mode {
67
- WrapMode::Preserve => preserve_lines_normalized(child, &self.config)
68
- .iter()
69
- .map(|line| trim_prose_indent(child, line).to_string())
70
- .collect(),
67
+ WrapMode::Preserve => {
68
+ preserve_lines_unprefixed_normalized(child, &self.config)
69
+ .iter()
70
+ .map(|line| trim_prose_indent(child, line).to_string())
71
+ .collect()
72
+ }
71
73
  WrapMode::Reflow => {
72
74
  self.wrapped_lines_for_paragraph(child, available_width)
73
75
  }
@@ -142,7 +144,9 @@ impl Formatter {
142
144
  let rest_width = self.config.line_width.saturating_sub(child_indent);
143
145
  let widths = [first_width, rest_width];
144
146
  let lines = match wrap_mode {
145
- WrapMode::Preserve => preserve_lines_normalized(child, &self.config),
147
+ WrapMode::Preserve => {
148
+ preserve_lines_unprefixed_normalized(child, &self.config)
149
+ }
146
150
  WrapMode::Reflow => {
147
151
  self.wrapped_lines_for_paragraph_with_widths(child, &widths)
148
152
  }
@@ -180,7 +184,7 @@ impl Formatter {
180
184
  let available_width = self.config.line_width.saturating_sub(child_indent);
181
185
  match wrap_mode {
182
186
  WrapMode::Preserve => {
183
- for line in preserve_lines_normalized(child, &self.config) {
187
+ for line in preserve_lines_unprefixed_normalized(child, &self.config) {
184
188
  self.output.push_str(&" ".repeat(child_indent));
185
189
  self.output.push_str(trim_prose_indent(child, &line));
186
190
  self.output.push('\n');
@@ -1,6 +1,8 @@
1
1
  use crate::config::{Config, HorizontalRuleStyle, WrapMode};
2
2
  use crate::directives::DirectiveTracker;
3
- use crate::syntax::{ExampleListMarker, SyntaxKind, SyntaxNode};
3
+ use crate::syntax::{
4
+ AstNode, Definition, ExampleListMarker, ListItem, SyntaxKind, SyntaxNode, TomlMetadata,
5
+ };
4
6
  use panache_parser::parser::blocks::definition_lists::try_parse_definition_marker;
5
7
  use panache_parser::parser::blocks::headings::try_parse_atx_heading;
6
8
  use panache_parser::parser::blocks::horizontal_rules::try_parse_horizontal_rule;
@@ -63,6 +65,18 @@ impl Formatter {
63
65
  }
64
66
  pub fn format(mut self, node: &SyntaxNode) -> String {
65
67
  self.format_node_sync(node, 0);
68
+ if node.kind() == SyntaxKind::DOCUMENT {
69
+ // An unfinished opaque block owns the document's final whitespace.
70
+ let preserve_ending = node
71
+ .children()
72
+ .last()
73
+ .and_then(TomlMetadata::cast)
74
+ .is_some_and(|metadata| !metadata.is_closed());
75
+ if !preserve_ending {
76
+ self.output.truncate(self.output.trim_end().len());
77
+ self.output.push('\n');
78
+ }
79
+ }
66
80
  self.output
67
81
  }
68
82
 
@@ -143,8 +157,13 @@ impl Formatter {
143
157
  )
144
158
  }
145
159
 
146
- pub(super) fn format_heading(&self, node: &SyntaxNode) -> String {
147
- headings::format_heading(node, &self.config)
160
+ pub(super) fn format_heading(&self, node: &SyntaxNode, continuation_indent: usize) -> String {
161
+ let heading = headings::format_heading(node, &self.config);
162
+ if continuation_indent == 0 || !heading.contains('\n') {
163
+ heading
164
+ } else {
165
+ heading.replace('\n', &format!("\n{}", " ".repeat(continuation_indent)))
166
+ }
148
167
  }
149
168
 
150
169
  pub(super) fn contains_latex_command(&self, node: &SyntaxNode) -> bool {
@@ -409,7 +428,7 @@ impl Formatter {
409
428
  let indent_str = " ".repeat(indent);
410
429
 
411
430
  let strip_content_columns = (!is_fenced)
412
- .then(|| Self::container_content_offset(node))
431
+ .then(|| self.container_content_offset(node))
413
432
  .filter(|cols| *cols > 0);
414
433
  self.format_container_code_block(
415
434
  node,
@@ -434,13 +453,13 @@ impl Formatter {
434
453
  /// `list_item_content_offset` in the pandoc-native projector
435
454
  /// (`panache_parser::to_pandoc_ast`); the two must agree on what a code
436
455
  /// block's payload is.
437
- pub(super) fn container_content_offset(node: &SyntaxNode) -> usize {
456
+ pub(super) fn container_content_offset(&self, node: &SyntaxNode) -> usize {
438
457
  let Some(parent) = node.parent() else {
439
458
  return 0;
440
459
  };
441
460
  match parent.kind() {
442
461
  SyntaxKind::DEFINITION => {
443
- Self::marker_content_offset(&parent, SyntaxKind::DEFINITION_MARKER)
462
+ self.marker_content_offset(&parent, SyntaxKind::DEFINITION_MARKER)
444
463
  }
445
464
  SyntaxKind::LIST_ITEM => {
446
465
  let parent_ws = match parent.prev_sibling_or_token() {
@@ -449,28 +468,41 @@ impl Formatter {
449
468
  }
450
469
  _ => 0,
451
470
  };
452
- parent_ws + Self::marker_content_offset(&parent, SyntaxKind::LIST_MARKER)
471
+ parent_ws + self.marker_content_offset(&parent, SyntaxKind::LIST_MARKER)
453
472
  }
454
473
  _ => 0,
455
474
  }
456
475
  }
457
476
 
458
- fn marker_content_offset(container: &SyntaxNode, marker: SyntaxKind) -> usize {
477
+ fn marker_content_offset(&self, container: &SyntaxNode, marker: SyntaxKind) -> usize {
459
478
  let mut col = 0usize;
460
479
  let mut saw_marker = false;
480
+ let mut marker_end_col = 0usize;
461
481
  for el in container.children_with_tokens() {
462
482
  match el {
463
483
  NodeOrToken::Token(t) if t.kind() == marker => {
464
484
  col = Self::advance_col(col, t.text());
485
+ marker_end_col = col;
465
486
  saw_marker = true;
466
487
  }
467
488
  NodeOrToken::Token(t) if t.kind() == SyntaxKind::WHITESPACE => {
468
489
  col = Self::advance_col(col, t.text());
469
- if saw_marker {
470
- return col;
490
+ }
491
+ el if saw_marker => {
492
+ let first_token = match el {
493
+ NodeOrToken::Token(t) => Some(t),
494
+ NodeOrToken::Node(n) => n.first_token(),
495
+ };
496
+ // Empty CommonMark markers have one logical space of
497
+ // padding even when their source padding differs.
498
+ if marker == SyntaxKind::LIST_MARKER
499
+ && self.config.dialect() == panache_parser::Dialect::CommonMark
500
+ && first_token.is_some_and(|t| t.kind() == SyntaxKind::NEWLINE)
501
+ {
502
+ return marker_end_col + 1;
471
503
  }
504
+ return col;
472
505
  }
473
- _ if saw_marker => return col,
474
506
  _ => {}
475
507
  }
476
508
  }
@@ -587,17 +619,13 @@ impl Formatter {
587
619
  let trimmed_line = line.trim_start();
588
620
  let starts_with_list_marker = Self::starts_with_list_marker(trimmed_line)
589
621
  && !tables::is_partial_grid_separator(trimmed_line);
590
- if trimmed_line.is_empty() {
622
+ // Rendered blank lines are empty. Whitespace in nonempty lines
623
+ // can belong to an opaque payload and must survive re-prefixing.
624
+ if line.is_empty() {
591
625
  self.output.push_str(blank_prefix);
592
626
  in_list_item_continuation = false;
593
627
  } else if line.starts_with("> ") {
594
628
  let trimmed_rest = line.trim_start_matches("> ").trim_start();
595
- if trimmed_rest.is_empty() {
596
- self.output.push_str(blank_prefix);
597
- in_list_item_continuation = false;
598
- self.output.push('\n');
599
- continue;
600
- }
601
629
  self.output.push_str(base_indent);
602
630
  self.output.push_str(line);
603
631
  in_list_item_continuation = Self::starts_with_list_marker(trimmed_rest)
@@ -799,7 +827,18 @@ impl Formatter {
799
827
  SyntaxKind::FOOTNOTE_DEFINITION => self.format_footnote_definition(node, indent),
800
828
 
801
829
  SyntaxKind::HTML_BLOCK | SyntaxKind::HTML_BLOCK_RAW | SyntaxKind::HTML_BLOCK_DIV => {
802
- self.format_html_block(node)
830
+ // Continuation HTML must move with its container's content
831
+ // column so it cannot detach the blocks that follow it.
832
+ let continues_container = node.parent().is_some_and(|parent| {
833
+ ListItem::can_cast(parent.kind()) || Definition::can_cast(parent.kind())
834
+ }) && node
835
+ .first_token()
836
+ .and_then(|token| token.prev_token())
837
+ .is_some_and(|prev| prev.text().ends_with('\n'));
838
+ let reindent = continues_container
839
+ .then(|| (self.container_content_offset(node), indent))
840
+ .filter(|(from, to)| from != to);
841
+ self.format_html_block_reindented(node, reindent)
803
842
  }
804
843
  SyntaxKind::COMMENT => self.format_comment(node),
805
844
  SyntaxKind::LATEX_COMMAND => self.format_latex_command(node),
@@ -872,7 +911,22 @@ impl Formatter {
872
911
  SyntaxKind::MYST_TARGET
873
912
  | SyntaxKind::MYST_COMMENT
874
913
  | SyntaxKind::MYST_BLOCK_BREAK
875
- | SyntaxKind::SVELTE_BLOCK => self.format_raw_block(node),
914
+ | SyntaxKind::SVELTE_BLOCK
915
+ | SyntaxKind::TOML_METADATA => self.format_raw_block(node),
916
+
917
+ SyntaxKind::HUGO_SHORTCODE_BLOCK => {
918
+ let text = crate::syntax::text_without_line_prefixes(node);
919
+ for line in text.split_inclusive('\n') {
920
+ if indent > 0 && (self.output.is_empty() || self.output.ends_with('\n')) {
921
+ self.output.push_str(&" ".repeat(indent));
922
+ }
923
+ self.output.push_str(line);
924
+ }
925
+ if !self.output.ends_with('\n') {
926
+ self.output.push('\n');
927
+ }
928
+ self.consecutive_blank_lines = 0;
929
+ }
876
930
 
877
931
  _ => {
878
932
  self.output.push_str(&node.text().to_string());
@@ -884,11 +938,9 @@ impl Formatter {
884
938
  /// Rewrite a Pandoc `{...}` attribute block in canonical form: id first, then
885
939
  /// classes in source order, then key/value pairs with quoted values.
886
940
  ///
887
- /// Components are rendered from their *source* slices rather than from derived
888
- /// semantics, so a bare `-` (pandoc's shorthand for `.unnumbered`) survives as
889
- /// `-` instead of being expanded — the shorthand is the preferred spelling in
890
- /// non-English documents, and expanding it would rewrite the author's source.
891
- pub(super) fn normalize_attribute_text(attr_text: &str) -> String {
941
+ /// Expand bare `-` components only for headings in Pandoc-derived flavors;
942
+ /// other dialects can treat them as literal text rather than a class.
943
+ pub(super) fn normalize_attribute_text(attr_text: &str, expand_unnumbered: bool) -> String {
892
944
  let Some(inner) = attr_text
893
945
  .strip_prefix('{')
894
946
  .and_then(|s| s.strip_suffix('}'))
@@ -905,6 +957,7 @@ pub(super) fn normalize_attribute_text(attr_text: &str) -> String {
905
957
  for comp in &spans.components {
906
958
  match comp {
907
959
  AttrComponent::Id(r) => id = inner[r.clone()].to_string(),
960
+ AttrComponent::Unnumbered(_) if expand_unnumbered => classes.push(".unnumbered"),
908
961
  AttrComponent::Class(r) | AttrComponent::Unnumbered(r) => {
909
962
  classes.push(&inner[r.clone()])
910
963
  }