panache-cli 3.15.0__tar.gz → 3.16.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 (344) hide show
  1. {panache_cli-3.15.0 → panache_cli-3.16.0}/Cargo.lock +22 -22
  2. {panache_cli-3.15.0 → panache_cli-3.16.0}/Cargo.toml +3 -3
  3. {panache_cli-3.15.0 → panache_cli-3.16.0}/PKG-INFO +1 -1
  4. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/CHANGELOG.md +6 -0
  5. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/Cargo.toml +2 -2
  6. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/CHANGELOG.md +10 -0
  7. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/Cargo.toml +1 -1
  8. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tables.rs +6 -0
  9. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/citations.rs +79 -0
  10. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/links.rs +5 -0
  11. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/cli.rs +12 -0
  12. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/config/types.rs +98 -46
  13. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/config.rs +136 -5
  14. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/diagnostic_renderer.rs +13 -7
  15. panache_cli-3.16.0/src/linter/rules/malformed_citation.rs +294 -0
  16. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/math_content.rs +1 -1
  17. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/undefined_references.rs +6 -0
  18. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules.rs +2 -1
  19. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter.rs +1 -0
  20. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/config.rs +15 -12
  21. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/main.rs +49 -91
  22. {panache_cli-3.15.0 → panache_cli-3.16.0}/LICENSE +0 -0
  23. {panache_cli-3.15.0 → panache_cli-3.16.0}/README.md +0 -0
  24. {panache_cli-3.15.0 → panache_cli-3.16.0}/assets/quarto-schema/schema.json +0 -0
  25. {panache_cli-3.15.0 → panache_cli-3.16.0}/build.rs +0 -0
  26. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/README.md +0 -0
  27. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/config.rs +0 -0
  28. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/directives.rs +0 -0
  29. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/blockquotes.rs +0 -0
  30. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/blocks.rs +0 -0
  31. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/code_blocks.rs +0 -0
  32. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/containers.rs +0 -0
  33. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/core.rs +0 -0
  34. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/document.rs +0 -0
  35. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/fenced_divs.rs +0 -0
  36. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/hashpipe.rs +0 -0
  37. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/headings.rs +0 -0
  38. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/indent_utils.rs +0 -0
  39. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/inline.rs +0 -0
  40. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/inline_layout.rs +0 -0
  41. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/lists.rs +0 -0
  42. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/math/STYLE.md +0 -0
  43. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/math/ir.rs +0 -0
  44. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/math/lower.rs +0 -0
  45. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/math/printer.rs +0 -0
  46. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/math/render.rs +0 -0
  47. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/math.rs +0 -0
  48. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/metadata.rs +0 -0
  49. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/paragraphs.rs +0 -0
  50. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/preserve.rs +0 -0
  51. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/raw.rs +0 -0
  52. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/sentence_wrap.rs +0 -0
  53. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/shortcodes.rs +0 -0
  54. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/smart.rs +0 -0
  55. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/table_conversion.rs +0 -0
  56. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/tables.rs +0 -0
  57. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/utils.rs +0 -0
  58. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml/STYLE.md +0 -0
  59. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml/block_map.rs +0 -0
  60. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml/block_sequence.rs +0 -0
  61. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml/document.rs +0 -0
  62. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml/flow.rs +0 -0
  63. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml/options.rs +0 -0
  64. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml/scalar.rs +0 -0
  65. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter/yaml.rs +0 -0
  66. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/formatter.rs +0 -0
  67. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/lib.rs +0 -0
  68. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/parser.rs +0 -0
  69. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/syntax.rs +0 -0
  70. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/utils.rs +0 -0
  71. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-formatter/src/yaml_engine.rs +0 -0
  72. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/README.md +0 -0
  73. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/build.rs +0 -0
  74. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/data/math_symbols.json +0 -0
  75. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/data/unicode-math.LICENSE +0 -0
  76. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/data/unicode-math.NOTICE +0 -0
  77. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/grid_layout.rs +0 -0
  78. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/lib.rs +0 -0
  79. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/options.rs +0 -0
  80. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/pandoc_ast.rs +0 -0
  81. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/block_dispatcher.rs +0 -0
  82. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/admonitions.rs +0 -0
  83. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/blockquotes.rs +0 -0
  84. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/code_blocks.rs +0 -0
  85. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/container_prefix.rs +0 -0
  86. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/definition_lists.rs +0 -0
  87. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/fenced_divs.rs +0 -0
  88. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/figures.rs +0 -0
  89. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/headings.rs +0 -0
  90. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/horizontal_rules.rs +0 -0
  91. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/html_blocks.rs +0 -0
  92. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/indented_code.rs +0 -0
  93. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/latex_envs.rs +0 -0
  94. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/line_blocks.rs +0 -0
  95. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/lists.rs +0 -0
  96. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/metadata.rs +0 -0
  97. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/myst_directives.rs +0 -0
  98. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/myst_targets.rs +0 -0
  99. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/paragraphs.rs +0 -0
  100. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/raw_blocks.rs +0 -0
  101. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/reference_links.rs +0 -0
  102. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/blanklines.rs +0 -0
  103. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs +0 -0
  104. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/code_blocks.rs +0 -0
  105. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/content_containers.rs +0 -0
  106. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/definition_lists.rs +0 -0
  107. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/figures.rs +0 -0
  108. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/footnote_marker_line.rs +0 -0
  109. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/fragment_context.rs +0 -0
  110. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/frame_pinning.rs +0 -0
  111. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/headings.rs +0 -0
  112. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/helpers.rs +0 -0
  113. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/lists.rs +0 -0
  114. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/losslessness.rs +0 -0
  115. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/metadata_guards.rs +0 -0
  116. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks/tests/tables.rs +0 -0
  117. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/blocks.rs +0 -0
  118. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/core/blockquotes.rs +0 -0
  119. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/core/definition_lists.rs +0 -0
  120. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/core/html_interruptions.rs +0 -0
  121. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/core/list_items.rs +0 -0
  122. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/core.rs +0 -0
  123. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/diagnostics.rs +0 -0
  124. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/bookdown.rs +0 -0
  125. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/bracketed_spans.rs +0 -0
  126. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/citations.rs +0 -0
  127. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/code_spans.rs +0 -0
  128. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/core.rs +0 -0
  129. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/emoji.rs +0 -0
  130. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/escapes.rs +0 -0
  131. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/hard_breaks.rs +0 -0
  132. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/inline_executable.rs +0 -0
  133. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/inline_footnotes.rs +0 -0
  134. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/inline_html.rs +0 -0
  135. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/inline_ir.rs +0 -0
  136. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/latex.rs +0 -0
  137. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/links.rs +0 -0
  138. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/mark.rs +0 -0
  139. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/math.rs +0 -0
  140. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/myst_roles.rs +0 -0
  141. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/myst_substitutions.rs +0 -0
  142. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/native_spans.rs +0 -0
  143. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/raw_inline.rs +0 -0
  144. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/refdef_map.rs +0 -0
  145. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/shortcodes.rs +0 -0
  146. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/sink.rs +0 -0
  147. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/strikeout.rs +0 -0
  148. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/subscript.rs +0 -0
  149. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/superscript.rs +0 -0
  150. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/svelte.rs +0 -0
  151. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/tests.rs +0 -0
  152. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/uri-schemes.csv +0 -0
  153. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines/wikilinks.rs +0 -0
  154. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/inlines.rs +0 -0
  155. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/math.rs +0 -0
  156. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/reparse.rs +0 -0
  157. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/attributes.rs +0 -0
  158. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/chunk_options.rs +0 -0
  159. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/container_stack.rs +0 -0
  160. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/continuation.rs +0 -0
  161. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/helpers.rs +0 -0
  162. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/inline_emission.rs +0 -0
  163. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/list_item_buffer.rs +0 -0
  164. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/marker_utils.rs +0 -0
  165. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/text_buffer.rs +0 -0
  166. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/tree_copy.rs +0 -0
  167. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils/yaml_regions.rs +0 -0
  168. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/utils.rs +0 -0
  169. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/verify.rs +0 -0
  170. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml/cooking.rs +0 -0
  171. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml/events.rs +0 -0
  172. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml/model.rs +0 -0
  173. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml/parser.rs +0 -0
  174. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml/profile.rs +0 -0
  175. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml/scanner.rs +0 -0
  176. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml/validator.rs +0 -0
  177. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser/yaml.rs +0 -0
  178. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/parser.rs +0 -0
  179. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/range_utils.rs +0 -0
  180. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/semantic/math.rs +0 -0
  181. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/semantic.rs +0 -0
  182. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/alerts.rs +0 -0
  183. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/ast.rs +0 -0
  184. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/attributes.rs +0 -0
  185. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/block_quotes.rs +0 -0
  186. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/blocks.rs +0 -0
  187. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/chunk_options.rs +0 -0
  188. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/code_blocks.rs +0 -0
  189. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/code_span.rs +0 -0
  190. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/consumer.rs +0 -0
  191. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/crossrefs.rs +0 -0
  192. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/definitions.rs +0 -0
  193. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/fenced_divs.rs +0 -0
  194. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/headings.rs +0 -0
  195. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/inlines.rs +0 -0
  196. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/kind.rs +0 -0
  197. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/lists.rs +0 -0
  198. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/math.rs +0 -0
  199. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/myst.rs +0 -0
  200. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/raw_tex.rs +0 -0
  201. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/references.rs +0 -0
  202. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/shortcodes.rs +0 -0
  203. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/tables.rs +0 -0
  204. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/yaml.rs +0 -0
  205. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax/yaml_ast.rs +0 -0
  206. {panache_cli-3.15.0 → panache_cli-3.16.0}/crates/panache-parser/src/syntax.rs +0 -0
  207. {panache_cli-3.15.0 → panache_cli-3.16.0}/pyproject.toml +0 -0
  208. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bib/bibtex.rs +0 -0
  209. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bib/csl_json.rs +0 -0
  210. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bib/csl_yaml.rs +0 -0
  211. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bib/index.rs +0 -0
  212. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bib/preview.rs +0 -0
  213. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bib/ris.rs +0 -0
  214. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bib.rs +0 -0
  215. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/bin/distill_quarto_schema.rs +0 -0
  216. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/cache.rs +0 -0
  217. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/config/formatter_presets.rs +0 -0
  218. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/config/types/schema_helpers.rs +0 -0
  219. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/directives.rs +0 -0
  220. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/external_formatters_common.rs +0 -0
  221. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/external_formatters_sync.rs +0 -0
  222. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/external_tools_common.rs +0 -0
  223. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/formatter.rs +0 -0
  224. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/includes.rs +0 -0
  225. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/incremental.rs +0 -0
  226. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/io_context.rs +0 -0
  227. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lib.rs +0 -0
  228. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/code_block_collector.rs +0 -0
  229. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/diagnostics.rs +0 -0
  230. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/execution_context.rs +0 -0
  231. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters/clippy.rs +0 -0
  232. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters/eslint.rs +0 -0
  233. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters/jarl.rs +0 -0
  234. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters/jolars.rs +0 -0
  235. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters/ruff.rs +0 -0
  236. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters/shellcheck.rs +0 -0
  237. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters/staticcheck.rs +0 -0
  238. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters.rs +0 -0
  239. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/external_linters_sync.rs +0 -0
  240. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/fuzzy.rs +0 -0
  241. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/index.rs +0 -0
  242. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/metadata_diagnostics.rs +0 -0
  243. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/offsets.rs +0 -0
  244. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/project_index.rs +0 -0
  245. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/quarto_schema/distill.rs +0 -0
  246. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/quarto_schema/interp.rs +0 -0
  247. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/quarto_schema/model.rs +0 -0
  248. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/quarto_schema/report.rs +0 -0
  249. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/quarto_schema/value.rs +0 -0
  250. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/quarto_schema.rs +0 -0
  251. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/adjacent_footnote_refs.rs +0 -0
  252. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/blank_line_in_display_math.rs +0 -0
  253. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/blank_line_in_inline_footnote.rs +0 -0
  254. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/chunk_label_spaces.rs +0 -0
  255. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/citation_keys.rs +0 -0
  256. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/citation_nonbreaking_space.rs +0 -0
  257. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/consumer_divergence.rs +0 -0
  258. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/crossref_as_link_target.rs +0 -0
  259. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/duplicate_references.rs +0 -0
  260. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/duplicate_yaml_anchor.rs +0 -0
  261. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/emoji_aliases.rs +0 -0
  262. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/empty_list_item.rs +0 -0
  263. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/empty_values.rs +0 -0
  264. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/figure_crossref_captions.rs +0 -0
  265. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/footnote_after_image.rs +0 -0
  266. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/footnote_ref_in_footnote_def.rs +0 -0
  267. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/footnote_swallowed_by_bracket.rs +0 -0
  268. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/heading_eaten_attrs.rs +0 -0
  269. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/heading_hierarchy.rs +0 -0
  270. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/heading_strip_comments_residue.rs +0 -0
  271. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/html_entities.rs +0 -0
  272. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/inline_math_line_break.rs +0 -0
  273. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/link_text_is_url.rs +0 -0
  274. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/missing_chunk_labels.rs +0 -0
  275. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/quarto_schema.rs +0 -0
  276. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/reversed_footnote_marker.rs +0 -0
  277. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/space_before_punctuation.rs +0 -0
  278. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/stray_fenced_div_markers.rs +0 -0
  279. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/swallowed_list_marker.rs +0 -0
  280. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/table_column_count.rs +0 -0
  281. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/undefined_anchor.rs +0 -0
  282. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/unspaced_citation.rs +0 -0
  283. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/unspaced_list_marker.rs +0 -0
  284. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/unsupported_metadata_key.rs +0 -0
  285. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/unused_definitions.rs +0 -0
  286. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/rules/unused_yaml_anchor.rs +0 -0
  287. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/runner.rs +0 -0
  288. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/yaml_anchors.rs +0 -0
  289. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/linter/yaml_resolve.rs +0 -0
  290. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/context.rs +0 -0
  291. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/conversions.rs +0 -0
  292. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/dispatch.rs +0 -0
  293. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/documents.rs +0 -0
  294. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/global_state.rs +0 -0
  295. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/code_actions.rs +0 -0
  296. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/completion.rs +0 -0
  297. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/configuration.rs +0 -0
  298. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/diagnostics.rs +0 -0
  299. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/document_highlight.rs +0 -0
  300. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/document_links.rs +0 -0
  301. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/document_symbols.rs +0 -0
  302. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/file_operations.rs +0 -0
  303. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/file_rename.rs +0 -0
  304. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/file_watcher.rs +0 -0
  305. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/folding_ranges.rs +0 -0
  306. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/footnote_conversion.rs +0 -0
  307. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/formatting.rs +0 -0
  308. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/goto_definition.rs +0 -0
  309. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/heading_link_conversion.rs +0 -0
  310. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/hover.rs +0 -0
  311. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/link_conversion.rs +0 -0
  312. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/linked_editing_range.rs +0 -0
  313. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/list_conversion.rs +0 -0
  314. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/prepare_rename.rs +0 -0
  315. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/references.rs +0 -0
  316. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/rename.rs +0 -0
  317. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/semantic_tokens.rs +0 -0
  318. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/shortcode_args.rs +0 -0
  319. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/table_conversion.rs +0 -0
  320. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/workspace_folders.rs +0 -0
  321. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers/workspace_symbols.rs +0 -0
  322. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/handlers.rs +0 -0
  323. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/helpers.rs +0 -0
  324. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/line_index.rs +0 -0
  325. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/navigation.rs +0 -0
  326. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/symbols.rs +0 -0
  327. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/task_pool.rs +0 -0
  328. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/testing.rs +0 -0
  329. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp/uri_ext.rs +0 -0
  330. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/lsp.rs +0 -0
  331. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/metadata/bibliography.rs +0 -0
  332. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/metadata/citations.rs +0 -0
  333. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/metadata/project.rs +0 -0
  334. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/metadata/references.rs +0 -0
  335. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/metadata/yaml.rs +0 -0
  336. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/metadata.rs +0 -0
  337. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/parser.rs +0 -0
  338. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/range_utils.rs +0 -0
  339. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/salsa.rs +0 -0
  340. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/syntax.rs +0 -0
  341. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/utils.rs +0 -0
  342. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/vfs.rs +0 -0
  343. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/yaml_engine.rs +0 -0
  344. {panache_cli-3.15.0 → panache_cli-3.16.0}/src/yaml_regions.rs +0 -0
@@ -273,7 +273,7 @@ dependencies = [
273
273
  "heck",
274
274
  "proc-macro2",
275
275
  "quote",
276
- "syn 3.0.6",
276
+ "syn 3.0.8",
277
277
  ]
278
278
 
279
279
  [[package]]
@@ -1114,7 +1114,7 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
1114
1114
 
1115
1115
  [[package]]
1116
1116
  name = "panache"
1117
- version = "3.15.0"
1117
+ version = "3.16.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.0"
1162
+ version = "0.27.1"
1163
1163
  dependencies = [
1164
1164
  "badness-formatter",
1165
1165
  "insta",
@@ -1179,7 +1179,7 @@ dependencies = [
1179
1179
 
1180
1180
  [[package]]
1181
1181
  name = "panache-parser"
1182
- version = "0.32.0"
1182
+ version = "0.33.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.6",
1459
+ "syn 3.0.8",
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.6",
1610
+ "syn 3.0.8",
1611
1611
  ]
1612
1612
 
1613
1613
  [[package]]
@@ -1641,7 +1641,7 @@ dependencies = [
1641
1641
  "proc-macro2",
1642
1642
  "quote",
1643
1643
  "serde_derive_internals",
1644
- "syn 3.0.6",
1644
+ "syn 3.0.8",
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.6",
1680
+ "syn 3.0.8",
1681
1681
  ]
1682
1682
 
1683
1683
  [[package]]
@@ -1688,14 +1688,14 @@ checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd"
1688
1688
  dependencies = [
1689
1689
  "proc-macro2",
1690
1690
  "quote",
1691
- "syn 3.0.6",
1691
+ "syn 3.0.8",
1692
1692
  ]
1693
1693
 
1694
1694
  [[package]]
1695
1695
  name = "serde_json"
1696
- version = "1.0.151"
1696
+ version = "1.0.154"
1697
1697
  source = "registry+https://github.com/rust-lang/crates.io-index"
1698
- checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
1698
+ checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
1699
1699
  dependencies = [
1700
1700
  "itoa",
1701
1701
  "memchr",
@@ -1712,7 +1712,7 @@ checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906"
1712
1712
  dependencies = [
1713
1713
  "proc-macro2",
1714
1714
  "quote",
1715
- "syn 3.0.6",
1715
+ "syn 3.0.8",
1716
1716
  ]
1717
1717
 
1718
1718
  [[package]]
@@ -1770,9 +1770,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
1770
1770
 
1771
1771
  [[package]]
1772
1772
  name = "smallvec"
1773
- version = "1.16.2"
1773
+ version = "1.16.3"
1774
1774
  source = "registry+https://github.com/rust-lang/crates.io-index"
1775
- checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e"
1775
+ checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b"
1776
1776
 
1777
1777
  [[package]]
1778
1778
  name = "smol_str"
@@ -1824,9 +1824,9 @@ dependencies = [
1824
1824
 
1825
1825
  [[package]]
1826
1826
  name = "syn"
1827
- version = "3.0.6"
1827
+ version = "3.0.8"
1828
1828
  source = "registry+https://github.com/rust-lang/crates.io-index"
1829
- checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
1829
+ checksum = "01016da373cd8f7ef12624f796309f5c31ba8d646dd08856c02cd741d823c622"
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.6",
1884
+ "syn 3.0.8",
1885
1885
  ]
1886
1886
 
1887
1887
  [[package]]
@@ -1962,9 +1962,9 @@ checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f"
1962
1962
 
1963
1963
  [[package]]
1964
1964
  name = "unicode-ident"
1965
- version = "1.0.26"
1965
+ version = "1.0.27"
1966
1966
  source = "registry+https://github.com/rust-lang/crates.io-index"
1967
- checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
1967
+ checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563"
1968
1968
 
1969
1969
  [[package]]
1970
1970
  name = "unicode-segmentation"
@@ -1986,9 +1986,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1986
1986
 
1987
1987
  [[package]]
1988
1988
  name = "uuid"
1989
- version = "1.27.0"
1989
+ version = "1.28.0"
1990
1990
  source = "registry+https://github.com/rust-lang/crates.io-index"
1991
- checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a"
1991
+ checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606"
1992
1992
  dependencies = [
1993
1993
  "getrandom 0.4.3",
1994
1994
  "js-sys",
@@ -2077,7 +2077,7 @@ dependencies = [
2077
2077
  "bumpalo",
2078
2078
  "proc-macro2",
2079
2079
  "quote",
2080
- "syn 3.0.6",
2080
+ "syn 3.0.8",
2081
2081
  "wasm-bindgen-shared",
2082
2082
  ]
2083
2083
 
@@ -9,7 +9,7 @@ authors = ["Johan Larsson <johan@jolars.co>"]
9
9
 
10
10
  [package]
11
11
  name = "panache"
12
- version = "3.15.0"
12
+ version = "3.16.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.0", features = [
58
+ panache-formatter = { path = "crates/panache-formatter", version = "0.27.1", features = [
59
59
  "serde",
60
60
  "schema",
61
61
  ] }
62
- panache-parser = { path = "crates/panache-parser", version = "0.32.0", features = [
62
+ panache-parser = { path = "crates/panache-parser", version = "0.33.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.15.0
3
+ Version: 3.16.0
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.27.1](https://github.com/jolars/panache/compare/panache-formatter-v0.27.0...panache-formatter-v0.27.1) (2026-10-12)
4
+
5
+ ### Dependencies
6
+
7
+ - updated crates/panache-parser to v0.33.0
8
+
3
9
  ## [0.27.0](https://github.com/jolars/panache/compare/panache-formatter-v0.26.1...panache-formatter-v0.27.0) (2026-10-09)
4
10
 
5
11
  ### Features
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "panache-formatter"
3
- version = "0.27.0"
3
+ version = "0.27.1"
4
4
  edition.workspace = true
5
5
  rust-version.workspace = true
6
6
  include = [
@@ -19,7 +19,7 @@ keywords = ["quarto", "pandoc", "markdown", "formatter"]
19
19
  categories = ["text-processing"]
20
20
 
21
21
  [dependencies]
22
- panache-parser = { path = "../panache-parser", version = "0.32.0" }
22
+ panache-parser = { path = "../panache-parser", version = "0.33.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 }
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.33.0](https://github.com/jolars/panache/compare/panache-parser-v0.32.0...panache-parser-v0.33.0) (2026-10-12)
4
+
5
+ ### Features
6
+
7
+ - **lint:** detect malformed citations ([`b8598d1`](https://github.com/jolars/panache/commit/b8598d1d94c886f80bbac8867e1aae1ded404c85))
8
+
9
+ ### Bug Fixes
10
+
11
+ - **parser:** keep headerless tables separate ([`835e8bb`](https://github.com/jolars/panache/commit/835e8bbd34a94689ab065118e742108c6d552258)), fixes [#557](https://github.com/jolars/panache/issues/557)
12
+
3
13
  ## [0.32.0](https://github.com/jolars/panache/compare/panache-parser-v0.31.1...panache-parser-v0.32.0) (2026-10-09)
4
14
 
5
15
  ### Features
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "panache-parser"
3
- version = "0.32.0"
3
+ version = "0.33.0"
4
4
  edition.workspace = true
5
5
  rust-version.workspace = true
6
6
  readme = "README.md"
@@ -3011,6 +3011,12 @@ fn scan_multiline_table(
3011
3011
  column_sep_pos = pos;
3012
3012
  has_header = pos > start_pos + 1; // Has header if there's content before column sep
3013
3013
  pos += 1;
3014
+ // Pandoc requires the first body row immediately after the header
3015
+ // separator. Otherwise a simple table's footer can become a header
3016
+ // separator and pull later paragraphs into the table.
3017
+ if pos >= lines.len() || window.line(pos).trim().is_empty() {
3018
+ return None;
3019
+ }
3014
3020
  continue;
3015
3021
  }
3016
3022
 
@@ -25,6 +25,22 @@ impl AstNode for Citation {
25
25
  }
26
26
 
27
27
  impl Citation {
28
+ /// Whether the citation has its own enclosing square brackets.
29
+ pub fn is_bracketed(&self) -> bool {
30
+ self.0
31
+ .first_token()
32
+ .is_some_and(|token| token.kind() == SyntaxKind::LINK_START)
33
+ }
34
+
35
+ /// Every key marker, including markers whose braced key is empty.
36
+ pub fn markers(&self) -> impl Iterator<Item = CitationMarker> {
37
+ self.0
38
+ .children_with_tokens()
39
+ .filter_map(|element| element.into_token())
40
+ .filter(|token| token.kind() == SyntaxKind::CITATION_MARKER)
41
+ .map(CitationMarker)
42
+ }
43
+
28
44
  pub fn keys(&self) -> Vec<CitationKey> {
29
45
  self.0
30
46
  .children_with_tokens()
@@ -39,6 +55,46 @@ impl Citation {
39
55
  }
40
56
  }
41
57
 
58
+ pub struct CitationMarker(SyntaxToken);
59
+
60
+ impl CitationMarker {
61
+ /// Range of just the `@` or `-@` marker.
62
+ pub fn marker_range(&self) -> rowan::TextRange {
63
+ self.0.text_range()
64
+ }
65
+
66
+ pub fn key(&self) -> Option<CitationKey> {
67
+ let mut next = self.0.next_sibling_or_token()?.into_token()?;
68
+ if next.kind() == SyntaxKind::CITATION_BRACE_OPEN {
69
+ next = next.next_sibling_or_token()?.into_token()?;
70
+ }
71
+ (next.kind() == SyntaxKind::CITATION_KEY).then_some(CitationKey(next))
72
+ }
73
+
74
+ /// Range of the marker and its key, including any enclosing braces.
75
+ pub fn text_range(&self) -> rowan::TextRange {
76
+ if let Some(key) = self.key() {
77
+ return key.marked_range();
78
+ }
79
+ let mut end = self.0.text_range().end();
80
+ let next = self
81
+ .0
82
+ .next_sibling_or_token()
83
+ .and_then(|it| it.into_token());
84
+ if let Some(open) = next
85
+ && open.kind() == SyntaxKind::CITATION_BRACE_OPEN
86
+ {
87
+ end = open.text_range().end();
88
+ if let Some(close) = open.next_sibling_or_token().and_then(|it| it.into_token())
89
+ && close.kind() == SyntaxKind::CITATION_BRACE_CLOSE
90
+ {
91
+ end = close.text_range().end();
92
+ }
93
+ }
94
+ rowan::TextRange::new(self.0.text_range().start(), end)
95
+ }
96
+ }
97
+
42
98
  pub struct CitationKey(SyntaxToken);
43
99
 
44
100
  impl CitationKey {
@@ -122,4 +178,27 @@ mod tests {
122
178
  fn marked_range_covers_braced_keys() {
123
179
  assert_eq!(marked_spans("A [@{weird key}].\n"), vec!["@{weird key}"]);
124
180
  }
181
+
182
+ #[test]
183
+ fn markers_include_empty_keys() {
184
+ let input = "[@a; -@{}] @{}\n";
185
+ let citations: Vec<_> = parse(input, None)
186
+ .descendants()
187
+ .filter_map(Citation::cast)
188
+ .collect();
189
+ assert!(citations[0].is_bracketed());
190
+ assert!(!citations[1].is_bracketed());
191
+ let markers: Vec<_> = citations.iter().flat_map(Citation::markers).collect();
192
+ let spans: Vec<_> = markers
193
+ .iter()
194
+ .map(|marker| {
195
+ let range = marker.text_range();
196
+ &input[usize::from(range.start())..usize::from(range.end())]
197
+ })
198
+ .collect();
199
+ assert_eq!(spans, ["@a", "-@{}", "@{}"]);
200
+ assert_eq!(markers[0].key().unwrap().text(), "a");
201
+ assert!(markers[1].key().is_none());
202
+ assert_eq!(markers[2].key().unwrap().text(), "");
203
+ }
125
204
  }
@@ -528,6 +528,11 @@ impl AstNode for UnresolvedReference {
528
528
  }
529
529
 
530
530
  impl UnresolvedReference {
531
+ /// The link's bracket text as parsed inline children, excluding images.
532
+ pub fn text_node(&self) -> Option<LinkText> {
533
+ support::child(&self.0)
534
+ }
535
+
531
536
  /// `true` if this is an image-shape reference (`![alt]...`),
532
537
  /// `false` for a link-shape reference (`[text]...`). Determined
533
538
  /// from the leading byte of the node's source text.
@@ -341,6 +341,18 @@ For editor configuration examples, see: https://github.com/jolars/panache#editor
341
341
  )]
342
342
  files: Vec<PathBuf>,
343
343
 
344
+ /// Rule names to enable instead of the configured defaults
345
+ #[arg(long, value_delimiter = ',')]
346
+ select: Option<Vec<String>>,
347
+
348
+ /// Additional rule names to enable alongside the configured selection
349
+ #[arg(long, value_delimiter = ',')]
350
+ extend_select: Vec<String>,
351
+
352
+ /// Rule names to disable, replacing configured ignores
353
+ #[arg(long, value_delimiter = ',')]
354
+ ignore: Option<Vec<String>>,
355
+
344
356
  /// Apply auto-fixes
345
357
  #[arg(long)]
346
358
  #[arg(help = "Automatically fix violations where possible")]
@@ -385,11 +385,19 @@ pub struct ExperimentalConfig {
385
385
  pub format_math: Option<bool>,
386
386
  }
387
387
 
388
- /// Linter configuration.
389
- /// Preferred shape is `[lint.rules] rule-name = true/false`.
390
- /// Legacy `[lint] rule-name = true/false` is still supported (deprecated).
388
+ /// Linter configuration with exact rule-name selection.
391
389
  #[derive(Debug, Clone, Serialize, PartialEq, Default)]
390
+ #[serde(rename_all = "kebab-case")]
392
391
  pub struct LintConfig {
392
+ /// Replace the default rule set when supplied, including an empty list.
393
+ pub select: Option<Vec<String>>,
394
+ /// Add rules to the defaults or explicit selection.
395
+ pub extend_select: Vec<String>,
396
+ /// Disable rules after applying selection and additions.
397
+ pub ignore: Vec<String>,
398
+ /// Deprecated boolean overrides, retained for configuration compatibility.
399
+ // TODO: Remove `[lint.rules]` boolean tables in the next major release on
400
+ // or after 2027-04-12, at least six months after their deprecation.
393
401
  pub rules: HashMap<String, bool>,
394
402
  /// Resolved Quarto compatibility target for the `quarto-schema` rule.
395
403
  ///
@@ -411,20 +419,57 @@ impl LintConfig {
411
419
  .into_iter()
412
420
  .map(|(name, enabled)| (Self::normalize_rule_name(&name), enabled))
413
421
  .collect();
422
+ for names in self
423
+ .select
424
+ .iter_mut()
425
+ .chain([&mut self.extend_select, &mut self.ignore])
426
+ {
427
+ for name in names {
428
+ *name = Self::normalize_rule_name(name);
429
+ }
430
+ }
414
431
  self
415
432
  }
416
433
 
417
- pub fn is_rule_enabled(&self, rule_name: &str) -> bool {
434
+ fn enabled_with_default(&self, rule_name: &str, default: bool) -> bool {
418
435
  let normalized = Self::normalize_rule_name(rule_name);
419
- self.rules.get(&normalized).copied().unwrap_or(true)
436
+ let base = match &self.select {
437
+ Some(selected) => selected.contains(&normalized),
438
+ None => self.rules.get(&normalized).copied().unwrap_or(default),
439
+ };
440
+ (base || self.extend_select.contains(&normalized)) && !self.ignore.contains(&normalized)
420
441
  }
421
442
 
422
- /// Like `is_rule_enabled`, but the default is `false` when the rule is
423
- /// absent from the user's config. Use for opt-in rules whose default
424
- /// behavior would generate noise for most users.
443
+ pub fn is_rule_enabled(&self, rule_name: &str) -> bool {
444
+ self.enabled_with_default(rule_name, true)
445
+ }
446
+
447
+ /// Check selection for an opt-in rule whose default is off.
425
448
  pub fn is_rule_explicitly_enabled(&self, rule_name: &str) -> bool {
426
- let normalized = Self::normalize_rule_name(rule_name);
427
- self.rules.get(&normalized).copied().unwrap_or(false)
449
+ self.enabled_with_default(rule_name, false)
450
+ }
451
+
452
+ /// Apply command-line settings before linting or computing cache keys.
453
+ pub fn apply_overrides(
454
+ &mut self,
455
+ select: Option<&[String]>,
456
+ extend_select: &[String],
457
+ ignore: Option<&[String]>,
458
+ ) {
459
+ let normalize = |names: &[String]| {
460
+ names
461
+ .iter()
462
+ .filter(|name| !name.trim().is_empty())
463
+ .map(|name| Self::normalize_rule_name(name))
464
+ .collect::<Vec<_>>()
465
+ };
466
+ if let Some(select) = select {
467
+ self.select = Some(normalize(select));
468
+ }
469
+ self.extend_select.extend(normalize(extend_select));
470
+ if let Some(ignore) = ignore {
471
+ self.ignore = normalize(ignore);
472
+ }
428
473
  }
429
474
  }
430
475
 
@@ -434,23 +479,35 @@ impl JsonSchema for LintConfig {
434
479
  }
435
480
 
436
481
  fn json_schema(_generator: &mut schemars::SchemaGenerator) -> schemars::Schema {
437
- // Two accepted shapes:
438
- // [lint.rules] my-rule = true (preferred)
439
- // [lint] my-rule = true (legacy, deprecated)
440
- // Modelled as an object whose `rules` field is a string→bool map and
441
- // whose additionalProperties are also bools (for the legacy shape).
442
482
  schemars::json_schema!({
443
483
  "type": "object",
444
484
  "description": "Linter configuration.",
445
485
  "properties": {
486
+ "select": {
487
+ "type": "array",
488
+ "items": { "type": "string" },
489
+ "description": "Rule names to enable instead of the defaults. An empty list disables the defaults.",
490
+ },
491
+ "extend-select": {
492
+ "type": "array",
493
+ "items": { "type": "string" },
494
+ "description": "Additional rule names to enable alongside the defaults or select.",
495
+ "default": [],
496
+ },
497
+ "ignore": {
498
+ "type": "array",
499
+ "items": { "type": "string" },
500
+ "description": "Rule names to disable, including those in extend-select.",
501
+ "default": [],
502
+ },
446
503
  "rules": {
447
504
  "type": "object",
448
- "description": "Map of lint rule names to enabled/disabled. \
449
- Preferred over the legacy flat `[lint]` shape.",
505
+ "description": "Deprecated boolean overrides for the default rule set.",
506
+ "deprecated": true,
450
507
  "additionalProperties": { "type": "boolean" },
451
508
  },
452
509
  },
453
- "additionalProperties": { "type": "boolean" },
510
+ "additionalProperties": false,
454
511
  })
455
512
  }
456
513
  }
@@ -461,16 +518,11 @@ impl<'de> Deserialize<'de> for LintConfig {
461
518
  D: Deserializer<'de>,
462
519
  {
463
520
  let value = toml::Value::deserialize(deserializer)?;
464
- let mut rules = HashMap::new();
465
-
466
- let mut table = value
521
+ let table = value
467
522
  .as_table()
468
523
  .cloned()
469
524
  .ok_or_else(|| serde::de::Error::custom("expected [lint] table"))?;
470
525
 
471
- // `quarto-version` moved to `[compat] quarto`. Catch the old key with a
472
- // pointed migration error rather than the generic "use [lint.rules]"
473
- // message the legacy bool loop would otherwise emit.
474
526
  if table.contains_key("quarto-version") {
475
527
  return Err(serde::de::Error::custom(
476
528
  "[lint] quarto-version moved to [compat] quarto; \
@@ -478,34 +530,34 @@ impl<'de> Deserialize<'de> for LintConfig {
478
530
  ));
479
531
  }
480
532
 
481
- // Rules live under [lint.rules]. The legacy flat `[lint] rule = true`
482
- // shape was removed in 3.0.
483
- if let Some(rules_value) = table.remove("rules") {
484
- let rules_table = rules_value
485
- .as_table()
486
- .ok_or_else(|| serde::de::Error::custom("[lint.rules] must be a table"))?;
487
- for (name, enabled) in rules_table {
488
- let enabled = enabled.as_bool().ok_or_else(|| {
489
- serde::de::Error::custom(format!(
490
- "[lint.rules] entry '{}' must be true or false",
491
- name
492
- ))
493
- })?;
494
- rules.insert(name.clone(), enabled);
495
- }
533
+ #[derive(Default, Deserialize)]
534
+ #[serde(default, deny_unknown_fields, rename_all = "kebab-case")]
535
+ struct Selection {
536
+ select: Option<Vec<String>>,
537
+ extend_select: Vec<String>,
538
+ ignore: Vec<String>,
539
+ rules: HashMap<String, bool>,
496
540
  }
497
-
498
- // Any remaining top-level key is the removed flat shape.
499
- if let Some((name, _)) = table.iter().next() {
541
+ // The flat `[lint] rule = true` shape was already removed in 3.0.
542
+ if let Some(name) = table.keys().find(|name| {
543
+ !matches!(
544
+ name.as_str(),
545
+ "select" | "extend-select" | "ignore" | "rules"
546
+ )
547
+ }) {
500
548
  return Err(serde::de::Error::custom(format!(
501
- "Unsupported [lint] key '{}'; put rule toggles under [lint.rules]",
549
+ "Unsupported [lint] key '{}'; use select, extend-select, or ignore",
502
550
  name
503
551
  )));
504
552
  }
505
-
553
+ let selection: Selection = toml::Value::Table(table)
554
+ .try_into()
555
+ .map_err(serde::de::Error::custom)?;
506
556
  Ok(Self {
507
- rules,
508
- // Populated later from `[compat] quarto` during finalization.
557
+ select: selection.select,
558
+ extend_select: selection.extend_select,
559
+ ignore: selection.ignore,
560
+ rules: selection.rules,
509
561
  quarto_version: None,
510
562
  }
511
563
  .normalize())