panache-cli 3.2.0__tar.gz → 3.3.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 (310) hide show
  1. {panache_cli-3.2.0 → panache_cli-3.3.0}/Cargo.lock +60 -38
  2. {panache_cli-3.2.0 → panache_cli-3.3.0}/Cargo.toml +5 -5
  3. {panache_cli-3.2.0 → panache_cli-3.3.0}/PKG-INFO +1 -1
  4. {panache_cli-3.2.0 → panache_cli-3.3.0}/build.rs +15 -17
  5. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/CHANGELOG.md +13 -0
  6. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/Cargo.toml +3 -3
  7. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/code_blocks.rs +73 -7
  8. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/core.rs +69 -5
  9. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/lists.rs +8 -8
  10. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/CHANGELOG.md +36 -0
  11. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/Cargo.toml +2 -2
  12. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/pandoc_ast.rs +826 -84
  13. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/block_dispatcher.rs +158 -55
  14. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/blockquotes.rs +14 -1
  15. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/code_blocks.rs +55 -47
  16. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/container_prefix.rs +286 -15
  17. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/definition_lists.rs +17 -13
  18. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/headings.rs +21 -0
  19. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/html_blocks.rs +9 -2
  20. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/line_blocks.rs +114 -6
  21. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/metadata.rs +1 -1
  22. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/paragraphs.rs +29 -1
  23. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tables.rs +7 -4
  24. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs +427 -0
  25. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/code_blocks.rs +80 -0
  26. panache_cli-3.3.0/crates/panache-parser/src/parser/blocks/tests/content_containers.rs +109 -0
  27. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/definition_lists.rs +78 -0
  28. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/headings.rs +441 -0
  29. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/lists.rs +18 -0
  30. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/losslessness.rs +331 -2
  31. panache_cli-3.3.0/crates/panache-parser/src/parser/blocks/tests/tables.rs +140 -0
  32. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks.rs +4 -0
  33. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/core.rs +921 -127
  34. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/core.rs +2 -7
  35. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/math.rs +49 -58
  36. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/sink.rs +45 -18
  37. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/attributes.rs +188 -3
  38. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/container_stack.rs +53 -2
  39. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/list_item_buffer.rs +41 -33
  40. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/text_buffer.rs +140 -143
  41. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser.rs +3 -3
  42. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/attributes.rs +88 -11
  43. panache_cli-3.3.0/crates/panache-parser/src/syntax/citations.rs +125 -0
  44. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/cli.rs +19 -14
  45. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters/jolars.rs +291 -22
  46. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters.rs +26 -0
  47. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters_sync.rs +32 -0
  48. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/citation_keys.rs +52 -7
  49. panache_cli-3.3.0/src/linter/rules/reversed_footnote_marker.rs +284 -0
  50. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/swallowed_list_marker.rs +10 -17
  51. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/undefined_references.rs +19 -0
  52. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules.rs +1 -0
  53. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter.rs +1 -0
  54. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/documents.rs +3 -4
  55. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/main.rs +23 -2
  56. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/salsa.rs +34 -2
  57. panache_cli-3.2.0/crates/panache-parser/src/syntax/citations.rs +0 -52
  58. {panache_cli-3.2.0 → panache_cli-3.3.0}/LICENSE +0 -0
  59. {panache_cli-3.2.0 → panache_cli-3.3.0}/README.md +0 -0
  60. {panache_cli-3.2.0 → panache_cli-3.3.0}/assets/quarto-schema/schema.json +0 -0
  61. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/README.md +0 -0
  62. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/config.rs +0 -0
  63. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/directives.rs +0 -0
  64. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/blockquotes.rs +0 -0
  65. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/fenced_divs.rs +0 -0
  66. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/hashpipe.rs +0 -0
  67. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/headings.rs +0 -0
  68. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/indent_utils.rs +0 -0
  69. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/inline.rs +0 -0
  70. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/inline_layout.rs +0 -0
  71. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/math/STYLE.md +0 -0
  72. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/math/linebreak.rs +0 -0
  73. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/math/operators.rs +0 -0
  74. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/math/render.rs +0 -0
  75. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/math.rs +0 -0
  76. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/metadata.rs +0 -0
  77. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/paragraphs.rs +0 -0
  78. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/sentence_wrap.rs +0 -0
  79. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/shortcodes.rs +0 -0
  80. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/smart.rs +0 -0
  81. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/tables.rs +0 -0
  82. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/utils.rs +0 -0
  83. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml/STYLE.md +0 -0
  84. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml/block_map.rs +0 -0
  85. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml/block_sequence.rs +0 -0
  86. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml/document.rs +0 -0
  87. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml/flow.rs +0 -0
  88. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml/options.rs +0 -0
  89. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml/scalar.rs +0 -0
  90. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter/yaml.rs +0 -0
  91. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/formatter.rs +0 -0
  92. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/lib.rs +0 -0
  93. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/parser.rs +0 -0
  94. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/syntax.rs +0 -0
  95. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/utils.rs +0 -0
  96. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-formatter/src/yaml_engine.rs +0 -0
  97. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/README.md +0 -0
  98. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/build.rs +0 -0
  99. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/grid_layout.rs +0 -0
  100. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/lib.rs +0 -0
  101. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/options.rs +0 -0
  102. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/admonitions.rs +0 -0
  103. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/fenced_divs.rs +0 -0
  104. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/figures.rs +0 -0
  105. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/horizontal_rules.rs +0 -0
  106. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/indented_code.rs +0 -0
  107. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/latex_envs.rs +0 -0
  108. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/lists.rs +0 -0
  109. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/myst_directives.rs +0 -0
  110. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/myst_targets.rs +0 -0
  111. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/raw_blocks.rs +0 -0
  112. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/reference_links.rs +0 -0
  113. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/blanklines.rs +0 -0
  114. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/figures.rs +0 -0
  115. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/helpers.rs +0 -0
  116. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/blocks/tests/metadata_guards.rs +0 -0
  117. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/diagnostics.rs +0 -0
  118. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/bookdown.rs +0 -0
  119. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/bracketed_spans.rs +0 -0
  120. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/citations.rs +0 -0
  121. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/code_spans.rs +0 -0
  122. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/emoji.rs +0 -0
  123. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/escapes.rs +0 -0
  124. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/inline_executable.rs +0 -0
  125. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/inline_footnotes.rs +0 -0
  126. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/inline_html.rs +0 -0
  127. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/inline_ir.rs +0 -0
  128. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/latex.rs +0 -0
  129. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/links.rs +0 -0
  130. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/mark.rs +0 -0
  131. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/myst_roles.rs +0 -0
  132. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/myst_substitutions.rs +0 -0
  133. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/native_spans.rs +0 -0
  134. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/raw_inline.rs +0 -0
  135. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/refdef_map.rs +0 -0
  136. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/shortcodes.rs +0 -0
  137. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/strikeout.rs +0 -0
  138. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/subscript.rs +0 -0
  139. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/superscript.rs +0 -0
  140. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/svelte.rs +0 -0
  141. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/tests.rs +0 -0
  142. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/uri-schemes.csv +0 -0
  143. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines/wikilinks.rs +0 -0
  144. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/inlines.rs +0 -0
  145. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/math.rs +0 -0
  146. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/chunk_options.rs +0 -0
  147. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/continuation.rs +0 -0
  148. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/helpers.rs +0 -0
  149. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/inline_emission.rs +0 -0
  150. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/marker_utils.rs +0 -0
  151. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/tree_copy.rs +0 -0
  152. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils/yaml_regions.rs +0 -0
  153. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/utils.rs +0 -0
  154. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml/cooking.rs +0 -0
  155. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml/events.rs +0 -0
  156. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml/model.rs +0 -0
  157. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml/parser.rs +0 -0
  158. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml/profile.rs +0 -0
  159. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml/scanner.rs +0 -0
  160. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml/validator.rs +0 -0
  161. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/parser/yaml.rs +0 -0
  162. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/range_utils.rs +0 -0
  163. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/alerts.rs +0 -0
  164. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/ast.rs +0 -0
  165. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/block_quotes.rs +0 -0
  166. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/blocks.rs +0 -0
  167. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/chunk_options.rs +0 -0
  168. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/code_blocks.rs +0 -0
  169. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/crossrefs.rs +0 -0
  170. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/definitions.rs +0 -0
  171. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/fenced_divs.rs +0 -0
  172. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/headings.rs +0 -0
  173. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/inlines.rs +0 -0
  174. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/kind.rs +0 -0
  175. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/links.rs +0 -0
  176. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/lists.rs +0 -0
  177. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/math.rs +0 -0
  178. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/myst.rs +0 -0
  179. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/raw_tex.rs +0 -0
  180. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/references.rs +0 -0
  181. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/shortcodes.rs +0 -0
  182. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/tables.rs +0 -0
  183. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/yaml.rs +0 -0
  184. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax/yaml_ast.rs +0 -0
  185. {panache_cli-3.2.0 → panache_cli-3.3.0}/crates/panache-parser/src/syntax.rs +0 -0
  186. {panache_cli-3.2.0 → panache_cli-3.3.0}/pyproject.toml +0 -0
  187. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bib/bibtex.rs +0 -0
  188. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bib/csl_json.rs +0 -0
  189. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bib/csl_yaml.rs +0 -0
  190. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bib/index.rs +0 -0
  191. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bib/preview.rs +0 -0
  192. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bib/ris.rs +0 -0
  193. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bib.rs +0 -0
  194. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/bin/distill_quarto_schema.rs +0 -0
  195. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/cache.rs +0 -0
  196. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/config/formatter_presets.rs +0 -0
  197. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/config/types/schema_helpers.rs +0 -0
  198. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/config/types.rs +0 -0
  199. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/config.rs +0 -0
  200. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/diagnostic_renderer.rs +0 -0
  201. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/directives.rs +0 -0
  202. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/external_formatters_common.rs +0 -0
  203. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/external_formatters_sync.rs +0 -0
  204. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/external_tools_common.rs +0 -0
  205. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/formatter.rs +0 -0
  206. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/includes.rs +0 -0
  207. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lib.rs +0 -0
  208. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/code_block_collector.rs +0 -0
  209. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/diagnostics.rs +0 -0
  210. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters/clippy.rs +0 -0
  211. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters/eslint.rs +0 -0
  212. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters/jarl.rs +0 -0
  213. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters/ruff.rs +0 -0
  214. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters/shellcheck.rs +0 -0
  215. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/external_linters/staticcheck.rs +0 -0
  216. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/fuzzy.rs +0 -0
  217. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/index.rs +0 -0
  218. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/metadata_diagnostics.rs +0 -0
  219. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/offsets.rs +0 -0
  220. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/project_index.rs +0 -0
  221. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/quarto_schema/distill.rs +0 -0
  222. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/quarto_schema/interp.rs +0 -0
  223. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/quarto_schema/model.rs +0 -0
  224. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/quarto_schema/report.rs +0 -0
  225. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/quarto_schema/value.rs +0 -0
  226. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/quarto_schema.rs +0 -0
  227. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/adjacent_footnote_refs.rs +0 -0
  228. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/chunk_label_spaces.rs +0 -0
  229. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/citation_nonbreaking_space.rs +0 -0
  230. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/consumer_divergence.rs +0 -0
  231. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/crossref_as_link_target.rs +0 -0
  232. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/duplicate_references.rs +0 -0
  233. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/duplicate_yaml_anchor.rs +0 -0
  234. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/emoji_aliases.rs +0 -0
  235. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/empty_list_item.rs +0 -0
  236. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/empty_values.rs +0 -0
  237. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/figure_crossref_captions.rs +0 -0
  238. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/footnote_after_image.rs +0 -0
  239. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/footnote_ref_in_footnote_def.rs +0 -0
  240. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/footnote_swallowed_by_bracket.rs +0 -0
  241. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/heading_eaten_attrs.rs +0 -0
  242. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/heading_hierarchy.rs +0 -0
  243. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/heading_strip_comments_residue.rs +0 -0
  244. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/html_entities.rs +0 -0
  245. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/link_text_is_url.rs +0 -0
  246. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/math_content.rs +0 -0
  247. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/missing_chunk_labels.rs +0 -0
  248. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/quarto_schema.rs +0 -0
  249. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/stray_fenced_div_markers.rs +0 -0
  250. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/undefined_anchor.rs +0 -0
  251. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/unspaced_citation.rs +0 -0
  252. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/unsupported_metadata_key.rs +0 -0
  253. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/unused_definitions.rs +0 -0
  254. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/rules/unused_yaml_anchor.rs +0 -0
  255. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/runner.rs +0 -0
  256. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/yaml_anchors.rs +0 -0
  257. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/linter/yaml_resolve.rs +0 -0
  258. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/config.rs +0 -0
  259. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/context.rs +0 -0
  260. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/conversions.rs +0 -0
  261. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/dispatch.rs +0 -0
  262. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/global_state.rs +0 -0
  263. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/code_actions.rs +0 -0
  264. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/completion.rs +0 -0
  265. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/configuration.rs +0 -0
  266. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/diagnostics.rs +0 -0
  267. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/document_highlight.rs +0 -0
  268. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/document_links.rs +0 -0
  269. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/document_symbols.rs +0 -0
  270. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/file_operations.rs +0 -0
  271. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/file_rename.rs +0 -0
  272. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/file_watcher.rs +0 -0
  273. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/folding_ranges.rs +0 -0
  274. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/footnote_conversion.rs +0 -0
  275. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/formatting.rs +0 -0
  276. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/goto_definition.rs +0 -0
  277. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/heading_link_conversion.rs +0 -0
  278. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/hover.rs +0 -0
  279. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/link_conversion.rs +0 -0
  280. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/linked_editing_range.rs +0 -0
  281. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/list_conversion.rs +0 -0
  282. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/prepare_rename.rs +0 -0
  283. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/references.rs +0 -0
  284. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/rename.rs +0 -0
  285. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/semantic_tokens.rs +0 -0
  286. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/shortcode_args.rs +0 -0
  287. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/workspace_folders.rs +0 -0
  288. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers/workspace_symbols.rs +0 -0
  289. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/handlers.rs +0 -0
  290. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/helpers.rs +0 -0
  291. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/line_index.rs +0 -0
  292. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/navigation.rs +0 -0
  293. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/symbols.rs +0 -0
  294. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/task_pool.rs +0 -0
  295. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/testing.rs +0 -0
  296. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp/uri_ext.rs +0 -0
  297. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/lsp.rs +0 -0
  298. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/metadata/bibliography.rs +0 -0
  299. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/metadata/citations.rs +0 -0
  300. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/metadata/project.rs +0 -0
  301. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/metadata/references.rs +0 -0
  302. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/metadata/yaml.rs +0 -0
  303. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/metadata.rs +0 -0
  304. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/parser.rs +0 -0
  305. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/range_utils.rs +0 -0
  306. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/syntax.rs +0 -0
  307. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/utils.rs +0 -0
  308. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/vfs.rs +0 -0
  309. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/yaml_engine.rs +0 -0
  310. {panache_cli-3.2.0 → panache_cli-3.3.0}/src/yaml_regions.rs +0 -0
@@ -189,28 +189,19 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
189
189
 
190
190
  [[package]]
191
191
  name = "clap"
192
- version = "4.6.5"
192
+ version = "4.6.6"
193
193
  source = "registry+https://github.com/rust-lang/crates.io-index"
194
- checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf"
194
+ checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca"
195
195
  dependencies = [
196
196
  "clap_builder",
197
197
  "clap_derive",
198
198
  ]
199
199
 
200
- [[package]]
201
- name = "clap-markdown"
202
- version = "0.1.5"
203
- source = "registry+https://github.com/rust-lang/crates.io-index"
204
- checksum = "d2a2617956a06d4885b490697b5307ebb09fec10b088afc18c81762d848c2339"
205
- dependencies = [
206
- "clap",
207
- ]
208
-
209
200
  [[package]]
210
201
  name = "clap_builder"
211
- version = "4.6.5"
202
+ version = "4.6.6"
212
203
  source = "registry+https://github.com/rust-lang/crates.io-index"
213
- checksum = "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078"
204
+ checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889"
214
205
  dependencies = [
215
206
  "anstream",
216
207
  "anstyle",
@@ -220,9 +211,9 @@ dependencies = [
220
211
 
221
212
  [[package]]
222
213
  name = "clap_complete"
223
- version = "4.6.8"
214
+ version = "4.6.9"
224
215
  source = "registry+https://github.com/rust-lang/crates.io-index"
225
- checksum = "b1f84a88507dbd05c695f2cb5e8558e747179134005e9893882dec964190ed89"
216
+ checksum = "3be2ad0423bdbbb0e25bc89add796f3559706d4a95e1bc98e4d9662a957b6a19"
226
217
  dependencies = [
227
218
  "clap",
228
219
  ]
@@ -247,14 +238,23 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
247
238
 
248
239
  [[package]]
249
240
  name = "clap_mangen"
250
- version = "0.3.0"
241
+ version = "0.3.2"
251
242
  source = "registry+https://github.com/rust-lang/crates.io-index"
252
- checksum = "d82842b45bf9f6a3be090dd860095ac30728042c08e0d6261ca7259b5d850f07"
243
+ checksum = "c630ddc90572b3d9abd3f887f0007b4e048faf5c5a59ae607f8ac1c5e3790873"
253
244
  dependencies = [
254
245
  "clap",
255
246
  "roff",
256
247
  ]
257
248
 
249
+ [[package]]
250
+ name = "clapdown"
251
+ version = "0.2.0"
252
+ source = "registry+https://github.com/rust-lang/crates.io-index"
253
+ checksum = "68bcefa13c36a119d957224c65214f792139033a34f8157297ac2a7fff5a343a"
254
+ dependencies = [
255
+ "clap",
256
+ ]
257
+
258
258
  [[package]]
259
259
  name = "colorchoice"
260
260
  version = "1.0.5"
@@ -927,9 +927,9 @@ dependencies = [
927
927
 
928
928
  [[package]]
929
929
  name = "jsonschema"
930
- version = "0.49.5"
930
+ version = "0.49.6"
931
931
  source = "registry+https://github.com/rust-lang/crates.io-index"
932
- checksum = "8da60094fc1968bbd091e2cfa004415cb7b19e25e592376e66a64aa832bb6039"
932
+ checksum = "7e17384278234b10419a63c93fc85695ac9fc2da0833e3c59167f9986499590c"
933
933
  dependencies = [
934
934
  "ahash",
935
935
  "bytecount",
@@ -956,18 +956,18 @@ dependencies = [
956
956
 
957
957
  [[package]]
958
958
  name = "jsonschema-regex"
959
- version = "0.49.5"
959
+ version = "0.49.6"
960
960
  source = "registry+https://github.com/rust-lang/crates.io-index"
961
- checksum = "36539f34ef9e5da418433fbbf7294522d8f930ecf6a540ccd1ec6481c9ff9056"
961
+ checksum = "ac634e339e73bf9629f6fb207f7b064d872253ae3b3f5c6e0ce8fd762b16e40f"
962
962
  dependencies = [
963
963
  "regex-syntax",
964
964
  ]
965
965
 
966
966
  [[package]]
967
967
  name = "jsonschema-value"
968
- version = "0.49.5"
968
+ version = "0.49.6"
969
969
  source = "registry+https://github.com/rust-lang/crates.io-index"
970
- checksum = "8bc513dfee68c6fe29498451df95a32951ea227801b476f4a1f236433986c891"
970
+ checksum = "92b8e258eb4515a3fc912a9c46e3987040dc07280592280097ea2085527870b8"
971
971
  dependencies = [
972
972
  "ahash",
973
973
  "bytecount",
@@ -1057,6 +1057,15 @@ version = "2.8.3"
1057
1057
  source = "registry+https://github.com/rust-lang/crates.io-index"
1058
1058
  checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
1059
1059
 
1060
+ [[package]]
1061
+ name = "memoffset"
1062
+ version = "0.9.1"
1063
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1064
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
1065
+ dependencies = [
1066
+ "autocfg",
1067
+ ]
1068
+
1060
1069
  [[package]]
1061
1070
  name = "micromap"
1062
1071
  version = "0.3.0"
@@ -1193,14 +1202,14 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
1193
1202
 
1194
1203
  [[package]]
1195
1204
  name = "panache"
1196
- version = "3.2.0"
1205
+ version = "3.3.0"
1197
1206
  dependencies = [
1198
1207
  "annotate-snippets",
1199
1208
  "assert_cmd",
1200
1209
  "clap",
1201
- "clap-markdown",
1202
1210
  "clap_complete",
1203
1211
  "clap_mangen",
1212
+ "clapdown",
1204
1213
  "crossbeam-channel",
1205
1214
  "dirs",
1206
1215
  "emojis",
@@ -1220,7 +1229,7 @@ dependencies = [
1220
1229
  "predicates",
1221
1230
  "rayon",
1222
1231
  "regex",
1223
- "rowan",
1232
+ "rowan 0.17.0",
1224
1233
  "salsa",
1225
1234
  "schemars",
1226
1235
  "serde",
@@ -1237,14 +1246,14 @@ dependencies = [
1237
1246
 
1238
1247
  [[package]]
1239
1248
  name = "panache-formatter"
1240
- version = "0.20.4"
1249
+ version = "0.20.5"
1241
1250
  dependencies = [
1242
1251
  "insta",
1243
1252
  "log",
1244
1253
  "panache-parser",
1245
1254
  "pretty_yaml",
1246
1255
  "pulldown-latex",
1247
- "rowan",
1256
+ "rowan 0.17.0",
1248
1257
  "schemars",
1249
1258
  "serde",
1250
1259
  "serde_json",
@@ -1255,13 +1264,13 @@ dependencies = [
1255
1264
 
1256
1265
  [[package]]
1257
1266
  name = "panache-parser"
1258
- version = "0.24.0"
1267
+ version = "0.25.0"
1259
1268
  dependencies = [
1260
1269
  "entities",
1261
1270
  "insta",
1262
1271
  "log",
1263
1272
  "memchr",
1264
- "rowan",
1273
+ "rowan 0.17.0",
1265
1274
  "schemars",
1266
1275
  "serde",
1267
1276
  "serde_json",
@@ -1398,7 +1407,7 @@ version = "0.6.0"
1398
1407
  source = "registry+https://github.com/rust-lang/crates.io-index"
1399
1408
  checksum = "6f5db2b0044c0dae209c173c6049f210c9449092b07304c9c8b8d555c606e93e"
1400
1409
  dependencies = [
1401
- "rowan",
1410
+ "rowan 0.16.1",
1402
1411
  "tiny_pretty",
1403
1412
  "yaml_parser",
1404
1413
  ]
@@ -1504,9 +1513,9 @@ dependencies = [
1504
1513
 
1505
1514
  [[package]]
1506
1515
  name = "referencing"
1507
- version = "0.49.5"
1516
+ version = "0.49.6"
1508
1517
  source = "registry+https://github.com/rust-lang/crates.io-index"
1509
- checksum = "05915176d843da9ec5c925e5e2631be9aa61b27430acfdd562e79cae8f559725"
1518
+ checksum = "42902112f88a27e9afd5683e2ba31956fed2a5d43395f166dd26775ae9c0dedb"
1510
1519
  dependencies = [
1511
1520
  "ahash",
1512
1521
  "fluent-uri 0.4.1",
@@ -1566,6 +1575,19 @@ dependencies = [
1566
1575
  "text-size",
1567
1576
  ]
1568
1577
 
1578
+ [[package]]
1579
+ name = "rowan"
1580
+ version = "0.17.0"
1581
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1582
+ checksum = "14b574c58582fa59fa43a2feb6608b8744184659f08a2e0117e4b8224d95ed61"
1583
+ dependencies = [
1584
+ "countme",
1585
+ "hashbrown 0.14.5",
1586
+ "memoffset",
1587
+ "rustc-hash 1.1.0",
1588
+ "text-size",
1589
+ ]
1590
+
1569
1591
  [[package]]
1570
1592
  name = "rustc-hash"
1571
1593
  version = "1.1.0"
@@ -2240,7 +2262,7 @@ version = "0.3.0"
2240
2262
  source = "registry+https://github.com/rust-lang/crates.io-index"
2241
2263
  checksum = "71ebb04c72edf699612d543f6c421142527b85ac180156017fa26be49dc0762f"
2242
2264
  dependencies = [
2243
- "rowan",
2265
+ "rowan 0.16.1",
2244
2266
  "winnow 0.7.15",
2245
2267
  ]
2246
2268
 
@@ -2269,18 +2291,18 @@ dependencies = [
2269
2291
 
2270
2292
  [[package]]
2271
2293
  name = "zerocopy"
2272
- version = "0.8.55"
2294
+ version = "0.8.56"
2273
2295
  source = "registry+https://github.com/rust-lang/crates.io-index"
2274
- checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb"
2296
+ checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"
2275
2297
  dependencies = [
2276
2298
  "zerocopy-derive",
2277
2299
  ]
2278
2300
 
2279
2301
  [[package]]
2280
2302
  name = "zerocopy-derive"
2281
- version = "0.8.55"
2303
+ version = "0.8.56"
2282
2304
  source = "registry+https://github.com/rust-lang/crates.io-index"
2283
- checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb"
2305
+ checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"
2284
2306
  dependencies = [
2285
2307
  "proc-macro2",
2286
2308
  "quote",
@@ -7,7 +7,7 @@ authors = ["Johan Larsson <johan@jolars.co>"]
7
7
 
8
8
  [package]
9
9
  name = "panache"
10
- version = "3.2.0"
10
+ version = "3.3.0"
11
11
  edition.workspace = true
12
12
  # `distill_quarto_schema` is a dev-only vendoring bin (src/bin/); keep bare
13
13
  # `cargo run` resolving to the CLI for tooling like the pre-commit format hook.
@@ -48,8 +48,8 @@ path = "src/main.rs"
48
48
  required-features = ["cli"]
49
49
 
50
50
  [dependencies]
51
- panache-formatter = { path = "crates/panache-formatter", version = "0.20.4" }
52
- panache-parser = { path = "crates/panache-parser", version = "0.24.0", features = [
51
+ panache-formatter = { path = "crates/panache-formatter", version = "0.20.5" }
52
+ panache-parser = { path = "crates/panache-parser", version = "0.25.0", features = [
53
53
  "serde",
54
54
  "schema",
55
55
  ] }
@@ -68,7 +68,7 @@ lsp-types = { version = "0.97.0", optional = true }
68
68
  num_cpus = { version = "1.17.0", optional = true }
69
69
  percent-encoding = { version = "2.3.2", optional = true }
70
70
  regex = "1.12.2"
71
- rowan = "0.16.1"
71
+ rowan = "0.17.0"
72
72
  salsa = "0.28.0"
73
73
  serde = { version = "1.0.228", features = ["derive"] }
74
74
  serde_json = "1.0.150"
@@ -106,7 +106,7 @@ lsp = [
106
106
  clap = { version = "4.6.1", features = ["derive", "env"] }
107
107
  clap_complete = "4.6.0"
108
108
  clap_mangen = "0.3.0"
109
- clap-markdown = "0.1.5"
109
+ clapdown = "0.2.0"
110
110
  flate2 = "1.1.9"
111
111
 
112
112
  [package.metadata.deb]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: panache-cli
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -69,24 +69,22 @@ fn generate_cli_markdown() -> Result<()> {
69
69
  return Ok(());
70
70
  }
71
71
 
72
- let opts = clap_markdown::MarkdownOptions::default()
73
- .show_footer(false)
74
- .show_table_of_contents(false);
75
-
76
- // Generate markdown documentation
77
- let markdown = clap_markdown::help_markdown_command_custom(&cmd, &opts);
78
-
79
- // // Build the complete document with frontmatter
80
- let mut document = String::new();
81
- document.push_str("---\n");
82
- document.push_str("title: CLI Reference\n");
83
- document.push_str("description: >\n Comprehensive reference for the Panache CLI, including all commands, options,\n and usage examples.\n");
84
- document.push_str("---\n\n");
85
- document.push_str(&markdown);
86
-
87
- // Write the document
72
+ // The Pandoc flavor emits the YAML metadata block itself (and drops the
73
+ // root command's duplicate `h1` in favor of the metadata title).
74
+ let options = clapdown::Options::new()
75
+ .flavor(clapdown::Flavor::Pandoc)
76
+ .title("CLI Reference")
77
+ .metadata_field(
78
+ "description",
79
+ "Comprehensive reference for the Panache CLI, including all commands, \
80
+ options, and usage examples.",
81
+ )
82
+ .footer(false)
83
+ .table_of_contents(false);
84
+ let markdown = clapdown::render(&cmd, &options);
85
+
88
86
  let output_path = docs_dir.join("cli.qmd");
89
- fs::write(&output_path, &document)?;
87
+ fs::write(&output_path, &markdown)?;
90
88
  println!("Generated CLI markdown: {:?}", output_path);
91
89
 
92
90
  Ok(())
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.20.5](https://github.com/jolars/panache/compare/panache-formatter-v0.20.4...panache-formatter-v0.20.5) (2026-08-07)
4
+
5
+ ### Bug Fixes
6
+ - strip a fenced block's own indent from its payload ([`290e3ab`](https://github.com/jolars/panache/commit/290e3abb1f04dbad29451c3abe70aa6a6f8738e0))
7
+ - **formatter:** drop a quoted fence's container indent ([`a7d4d4c`](https://github.com/jolars/panache/commit/a7d4d4c490d1d79a7772134a0ea3273855daaef6))
8
+ - **parser:** open a line block on a list-marker line ([`5f55d89`](https://github.com/jolars/panache/commit/5f55d89ab91d29ebfa41a9facf6fb469ed05e1ed))
9
+ - **parser:** fold a lazy line into its line block ([`7d732b9`](https://github.com/jolars/panache/commit/7d732b91ab4cecb48d6868edb73d78c0b7b6bf5c))
10
+ - **formatter:** keep a line block inside its blockquote ([`8bdf53c`](https://github.com/jolars/panache/commit/8bdf53cbed1f296c3e978cbfeb87903facb5b560))
11
+ - **formatter:** indent a line block inside a list item ([`35db18a`](https://github.com/jolars/panache/commit/35db18a5e8e2d135355355524057b2cd0e2ed1cc))
12
+
13
+ ### Dependencies
14
+ - updated crates/panache-parser to v0.25.0
15
+
3
16
  ## [0.20.4](https://github.com/jolars/panache/compare/panache-formatter-v0.20.3...panache-formatter-v0.20.4) (2026-08-05)
4
17
 
5
18
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "panache-formatter"
3
- version = "0.20.4"
3
+ version = "0.20.5"
4
4
  edition.workspace = true
5
5
  include = [
6
6
  "/src/**/*",
@@ -18,9 +18,9 @@ keywords = ["quarto", "pandoc", "markdown", "formatter"]
18
18
  categories = ["text-processing"]
19
19
 
20
20
  [dependencies]
21
- panache-parser = { path = "../panache-parser", version = "0.24.0" }
21
+ panache-parser = { path = "../panache-parser", version = "0.25.0" }
22
22
  log = { version = "0.4.31", features = ["release_max_level_debug"] }
23
- rowan = "0.16.1"
23
+ rowan = "0.17.0"
24
24
  serde = { version = "1.0.228", features = ["derive"], optional = true }
25
25
  schemars = { version = "1.2.1", optional = true }
26
26
  unicode-width = "0.2.2"
@@ -157,6 +157,17 @@ fn expand_tabs_with_width(text: &str, tab_width: usize) -> String {
157
157
  }
158
158
 
159
159
  fn strip_indent_columns(indent: &str, columns: usize) -> String {
160
+ strip_indent_columns_budget(indent, columns).0.to_string()
161
+ }
162
+
163
+ /// Peel up to `columns` columns of leading indentation off `indent`, returning
164
+ /// the tail and the columns left unspent.
165
+ ///
166
+ /// The leftover matters because a code line's strippable indent can be split
167
+ /// across two tokens: the emitter peels a container prefix into `WHITESPACE`
168
+ /// but leaves the opening fence's own indent inside the line's `TEXT`, so a
169
+ /// budget that outlives the `WHITESPACE` still has work to do.
170
+ fn strip_indent_columns_budget(indent: &str, columns: usize) -> (&str, usize) {
160
171
  let mut remaining = columns;
161
172
  let mut idx = 0;
162
173
  for (i, ch) in indent.char_indices() {
@@ -165,7 +176,7 @@ fn strip_indent_columns(indent: &str, columns: usize) -> String {
165
176
  }
166
177
  match ch {
167
178
  ' ' => {
168
- remaining = remaining.saturating_sub(1);
179
+ remaining -= 1;
169
180
  idx = i + 1;
170
181
  }
171
182
  '\t' => {
@@ -175,7 +186,17 @@ fn strip_indent_columns(indent: &str, columns: usize) -> String {
175
186
  _ => break,
176
187
  }
177
188
  }
178
- indent[idx..].to_string()
189
+ (&indent[idx..], remaining)
190
+ }
191
+
192
+ /// Spend a leftover indent budget against a code line's own leading spaces.
193
+ ///
194
+ /// Spaces only: a tab is worth four columns at a four-column stop but fewer
195
+ /// mid-stop, and dropping one for a smaller budget would delete code bytes the
196
+ /// formatter has no way to put back. Leaving it is the lossless direction.
197
+ fn strip_leading_spaces_budget(text: &str, columns: usize) -> &str {
198
+ let n = text.chars().take(columns).take_while(|&c| c == ' ').count();
199
+ &text[n..]
179
200
  }
180
201
 
181
202
  fn indent_columns(indent: &str) -> usize {
@@ -190,6 +211,25 @@ fn indent_columns(indent: &str) -> usize {
190
211
  cols
191
212
  }
192
213
 
214
+ /// A fenced code block whose immediate container is a blockquote — the one
215
+ /// place a line-start `WHITESPACE` inside `CODE_CONTENT` can be dropped
216
+ /// token-wise rather than by column.
217
+ ///
218
+ /// The parser re-emits each continuation line's container prefix inside
219
+ /// `CODE_CONTENT` for losslessness. Inside a blockquote that prefix is either a
220
+ /// marker's padding or pandoc's lazy-line gobble, both of which the emitter
221
+ /// reproduces exactly, so the whole token is container syntax. Everywhere else
222
+ /// the token boundary is not column-exact once tabs are involved (a `:\t`
223
+ /// definition marker at content column 4 peels `"\t\t"`, eight columns), so the
224
+ /// indent has to come off by column via [`strip_indent_columns`] instead.
225
+ ///
226
+ /// Mirrors `fenced_in_blockquote` in the pandoc-native projector
227
+ /// (`panache_parser::to_pandoc_ast`); the two must agree on what a code block's
228
+ /// payload is.
229
+ fn fenced_in_blockquote(node: &SyntaxNode, has_fence: bool) -> bool {
230
+ has_fence && node.parent().map(|p| p.kind()) == Some(SyntaxKind::BLOCK_QUOTE)
231
+ }
232
+
193
233
  fn extract_code_block_parts(node: &SyntaxNode) -> (Option<SyntaxNode>, Option<String>, String) {
194
234
  let mut info_node: Option<SyntaxNode> = None;
195
235
  let mut language: Option<String> = None;
@@ -197,12 +237,22 @@ fn extract_code_block_parts(node: &SyntaxNode) -> (Option<SyntaxNode>, Option<St
197
237
  let mut has_fence = false;
198
238
  let mut fence_indent = String::new();
199
239
  let mut fence_indent_cols = 0usize;
240
+ let drop_container_indent = fenced_in_blockquote(
241
+ node,
242
+ node.children()
243
+ .any(|child| child.kind() == SyntaxKind::CODE_FENCE_OPEN),
244
+ );
200
245
 
201
246
  for child in node.children_with_tokens() {
202
247
  match child {
203
248
  NodeOrToken::Token(t) => {
204
249
  if t.kind() == SyntaxKind::WHITESPACE && !has_fence {
205
- fence_indent = t.text().to_string();
250
+ // The pre-fence run is whatever host indent the parser left
251
+ // in the block followed by the fence's own indent (a list
252
+ // item at content column 2 whose fence is indented one
253
+ // further emits `" "` then `" "`). Both come off the
254
+ // payload, so accumulate rather than overwrite.
255
+ fence_indent.push_str(t.text());
206
256
  }
207
257
  }
208
258
  NodeOrToken::Node(n) => match n.kind() {
@@ -241,7 +291,14 @@ fn extract_code_block_parts(node: &SyntaxNode) -> (Option<SyntaxNode>, Option<St
241
291
  saw_blockquote_marker = true;
242
292
  }
243
293
  SyntaxKind::WHITESPACE if at_line_start => {
244
- if saw_blockquote_marker {
294
+ if drop_container_indent {
295
+ // Whole token is container syntax — see
296
+ // `fenced_in_blockquote`. Covers a lazy
297
+ // line gobbled into the quote, whose
298
+ // indent arrives with no marker of its
299
+ // own to hang the strip off.
300
+ saw_blockquote_marker = false;
301
+ } else if saw_blockquote_marker {
245
302
  let ws = t.text();
246
303
  if let Some(stripped) = ws.strip_prefix(' ') {
247
304
  line_indent.push_str(stripped);
@@ -258,15 +315,24 @@ fn extract_code_block_parts(node: &SyntaxNode) -> (Option<SyntaxNode>, Option<St
258
315
  if at_line_start && t.text().is_empty() {
259
316
  continue;
260
317
  }
318
+ let mut text = t.text();
261
319
  if at_line_start {
262
- line_content.push_str(&strip_indent_columns(
320
+ let (kept, budget) = strip_indent_columns_budget(
263
321
  &line_indent,
264
322
  base_indent_cols,
265
- ));
323
+ );
324
+ // Only once the prefix token is fully
325
+ // spent does the rest of the budget
326
+ // reach the fence indent still sitting
327
+ // in this line's own text.
328
+ if kept.is_empty() && budget > 0 {
329
+ text = strip_leading_spaces_budget(text, budget);
330
+ }
331
+ line_content.push_str(kept);
266
332
  line_indent.clear();
267
333
  at_line_start = false;
268
334
  }
269
- line_content.push_str(t.text());
335
+ line_content.push_str(text);
270
336
  }
271
337
  SyntaxKind::NEWLINE => {
272
338
  saw_blockquote_marker = false;
@@ -458,8 +458,12 @@ impl Formatter {
458
458
  self.output.push_str(content_prefix);
459
459
  if let Some(indent) = leading_indent
460
460
  && !indent.is_empty()
461
- && !line.starts_with([' ', '\t'])
462
461
  {
462
+ // Uniformly, including lines that already start indented.
463
+ // For a code block this indent is the opening fence's, and
464
+ // the payload is rendered relative to the fence — re-adding
465
+ // it to the fence lines alone would shift the payload two
466
+ // columns down the fence and lose them on the next parse.
463
467
  self.output.push_str(indent);
464
468
  }
465
469
  self.output.push_str(line);
@@ -1567,6 +1571,31 @@ impl Formatter {
1567
1571
  ctx.in_list_continuation = false;
1568
1572
  }
1569
1573
  }
1574
+ SyntaxKind::LINE_BLOCK => {
1575
+ // Format the line block to a temp buffer, then
1576
+ // re-emit each line behind the blockquote prefix.
1577
+ // Without this the lines escape the quote (dropping
1578
+ // the `>` prefix), which reparses as a top-level
1579
+ // line block -- a losslessness break, and inside a
1580
+ // list item an idempotency break as well.
1581
+ // `content_prefix` already carries `base_indent`,
1582
+ // so format at indent 0 to avoid double-indenting.
1583
+ let saved_output = self.output.clone();
1584
+ self.output.clear();
1585
+ self.format_node_sync(child, 0);
1586
+ let line_block_output = self.output.clone();
1587
+ self.output = saved_output;
1588
+
1589
+ self.append_blockquote_prefixed_block(
1590
+ &line_block_output,
1591
+ &content_prefix,
1592
+ &blank_prefix,
1593
+ None,
1594
+ );
1595
+ if let Some(ctx) = self.blockquote_context.as_mut() {
1596
+ ctx.in_list_continuation = false;
1597
+ }
1598
+ }
1570
1599
  SyntaxKind::DEFINITION_LIST => {
1571
1600
  // Format the definition list to a temp buffer, then
1572
1601
  // re-emit each line behind the blockquote prefix so
@@ -1962,6 +1991,12 @@ impl Formatter {
1962
1991
  self.output.push('\n');
1963
1992
  }
1964
1993
 
1994
+ // Every emitted line needs the container indent. Dropping it
1995
+ // lets a line block nested in a list item escape to column 0,
1996
+ // where it reparses as a top-level line block that swallows
1997
+ // the following line -- an idempotency break.
1998
+ let line_indent = " ".repeat(indent);
1999
+
1965
2000
  // Format each line preserving line breaks and leading spaces.
1966
2001
  // Walk LINE_BLOCK_LINE children-with-tokens so we can skip
1967
2002
  // leading container-prefix tokens (WHITESPACE,
@@ -1970,11 +2005,19 @@ impl Formatter {
1970
2005
  // outer LIST_ITEM / BLOCK_QUOTE walkers re-emit those
1971
2006
  // prefixes; if we left them in `content` they'd appear
1972
2007
  // twice in the output.
2008
+ // A LINE_BLOCK_LINE without a LINE_BLOCK_MARKER is a
2009
+ // continuation of the line above (`| a` + ` b` is the single
2010
+ // line `a b`). Re-emitting it with its own `| ` would split
2011
+ // one line into two, so fold it in — as pandoc's own writer
2012
+ // does. Collect the rendered lines first so the fold is a
2013
+ // plain append instead of surgery on `self.output`.
2014
+ let mut rendered: Vec<String> = Vec::new();
1973
2015
  for child in node.children() {
1974
2016
  if child.kind() != SyntaxKind::LINE_BLOCK_LINE {
1975
2017
  continue;
1976
2018
  }
1977
2019
  let mut content = String::new();
2020
+ let mut has_marker = false;
1978
2021
  let mut past_prefix = false;
1979
2022
  for elem in child.children_with_tokens() {
1980
2023
  let kind = elem.kind();
@@ -1988,7 +2031,10 @@ impl Formatter {
1988
2031
  }
1989
2032
  past_prefix = true;
1990
2033
  match kind {
1991
- SyntaxKind::LINE_BLOCK_MARKER => continue,
2034
+ SyntaxKind::LINE_BLOCK_MARKER => {
2035
+ has_marker = true;
2036
+ continue;
2037
+ }
1992
2038
  SyntaxKind::NEWLINE => break,
1993
2039
  _ => match &elem {
1994
2040
  NodeOrToken::Token(t) => content.push_str(t.text()),
@@ -1996,14 +2042,32 @@ impl Formatter {
1996
2042
  },
1997
2043
  }
1998
2044
  }
1999
- let content_trimmed = content.trim();
2000
- if content_trimmed.is_empty() {
2045
+ match rendered.last_mut() {
2046
+ Some(previous) if !has_marker => {
2047
+ let continuation = content.trim();
2048
+ if !continuation.is_empty() {
2049
+ if !previous.is_empty() {
2050
+ previous.push(' ');
2051
+ }
2052
+ previous.push_str(continuation);
2053
+ }
2054
+ }
2055
+ // Leading spaces after the marker are significant
2056
+ // (pandoc renders them as non-breaking spaces), so
2057
+ // only the trailing side is trimmed.
2058
+ _ => rendered.push(content.trim_end().to_string()),
2059
+ }
2060
+ }
2061
+
2062
+ for line in &rendered {
2063
+ self.output.push_str(&line_indent);
2064
+ if line.trim().is_empty() {
2001
2065
  // Empty line block line - just output "|"
2002
2066
  self.output.push('|');
2003
2067
  } else {
2004
2068
  // Normal line - output "| " followed by content
2005
2069
  self.output.push_str("| ");
2006
- self.output.push_str(content.trim_end());
2070
+ self.output.push_str(line);
2007
2071
  }
2008
2072
  self.output.push('\n');
2009
2073
  }