panache-cli 3.6.0__tar.gz → 3.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. {panache_cli-3.6.0 → panache_cli-3.6.1}/Cargo.lock +5 -5
  2. {panache_cli-3.6.0 → panache_cli-3.6.1}/Cargo.toml +3 -3
  3. {panache_cli-3.6.0 → panache_cli-3.6.1}/PKG-INFO +16 -12
  4. {panache_cli-3.6.0 → panache_cli-3.6.1}/README.md +15 -11
  5. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/CHANGELOG.md +11 -0
  6. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/Cargo.toml +2 -2
  7. panache_cli-3.6.1/crates/panache-formatter/src/formatter/blockquotes.rs +306 -0
  8. panache_cli-3.6.1/crates/panache-formatter/src/formatter/blocks.rs +391 -0
  9. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/code_blocks.rs +15 -0
  10. panache_cli-3.6.1/crates/panache-formatter/src/formatter/containers.rs +306 -0
  11. panache_cli-3.6.1/crates/panache-formatter/src/formatter/core.rs +931 -0
  12. panache_cli-3.6.1/crates/panache-formatter/src/formatter/document.rs +107 -0
  13. panache_cli-3.6.1/crates/panache-formatter/src/formatter/fenced_divs.rs +164 -0
  14. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/inline.rs +23 -0
  15. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/inline_layout.rs +148 -8
  16. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/lists.rs +336 -2
  17. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/math/STYLE.md +27 -5
  18. panache_cli-3.6.1/crates/panache-formatter/src/formatter/math/layout.rs +277 -0
  19. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/math/linebreak.rs +27 -2
  20. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/math/operators.rs +6 -0
  21. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/math/render.rs +247 -2
  22. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/math.rs +270 -1
  23. panache_cli-3.6.1/crates/panache-formatter/src/formatter/raw.rs +191 -0
  24. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/sentence_wrap.rs +5 -1
  25. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/tables.rs +42 -0
  26. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter.rs +4 -0
  27. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/CHANGELOG.md +5 -0
  28. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/Cargo.toml +1 -1
  29. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/citations.rs +29 -1
  30. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/cli.rs +3 -2
  31. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/config.rs +69 -18
  32. panache_cli-3.6.0/crates/panache-formatter/src/formatter/blockquotes.rs +0 -1
  33. panache_cli-3.6.0/crates/panache-formatter/src/formatter/core.rs +0 -3019
  34. panache_cli-3.6.0/crates/panache-formatter/src/formatter/fenced_divs.rs +0 -1
  35. {panache_cli-3.6.0 → panache_cli-3.6.1}/LICENSE +0 -0
  36. {panache_cli-3.6.0 → panache_cli-3.6.1}/assets/quarto-schema/schema.json +0 -0
  37. {panache_cli-3.6.0 → panache_cli-3.6.1}/build.rs +0 -0
  38. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/README.md +0 -0
  39. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/config.rs +0 -0
  40. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/directives.rs +0 -0
  41. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/hashpipe.rs +0 -0
  42. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/headings.rs +0 -0
  43. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/indent_utils.rs +0 -0
  44. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/metadata.rs +0 -0
  45. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/paragraphs.rs +0 -0
  46. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/preserve.rs +0 -0
  47. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/shortcodes.rs +0 -0
  48. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/smart.rs +0 -0
  49. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/utils.rs +0 -0
  50. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml/STYLE.md +0 -0
  51. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml/block_map.rs +0 -0
  52. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml/block_sequence.rs +0 -0
  53. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml/document.rs +0 -0
  54. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml/flow.rs +0 -0
  55. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml/options.rs +0 -0
  56. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml/scalar.rs +0 -0
  57. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/formatter/yaml.rs +0 -0
  58. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/lib.rs +0 -0
  59. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/parser.rs +0 -0
  60. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/syntax.rs +0 -0
  61. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/utils.rs +0 -0
  62. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-formatter/src/yaml_engine.rs +0 -0
  63. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/README.md +0 -0
  64. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/build.rs +0 -0
  65. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/grid_layout.rs +0 -0
  66. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/lib.rs +0 -0
  67. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/options.rs +0 -0
  68. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/pandoc_ast.rs +0 -0
  69. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/block_dispatcher.rs +0 -0
  70. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/admonitions.rs +0 -0
  71. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/blockquotes.rs +0 -0
  72. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/code_blocks.rs +0 -0
  73. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/container_prefix.rs +0 -0
  74. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/definition_lists.rs +0 -0
  75. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/fenced_divs.rs +0 -0
  76. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/figures.rs +0 -0
  77. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/headings.rs +0 -0
  78. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/horizontal_rules.rs +0 -0
  79. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/html_blocks.rs +0 -0
  80. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/indented_code.rs +0 -0
  81. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/latex_envs.rs +0 -0
  82. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/line_blocks.rs +0 -0
  83. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/lists.rs +0 -0
  84. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/metadata.rs +0 -0
  85. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/myst_directives.rs +0 -0
  86. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/myst_targets.rs +0 -0
  87. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/paragraphs.rs +0 -0
  88. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/raw_blocks.rs +0 -0
  89. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/reference_links.rs +0 -0
  90. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tables.rs +0 -0
  91. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/blanklines.rs +0 -0
  92. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/blockquotes.rs +0 -0
  93. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/code_blocks.rs +0 -0
  94. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/content_containers.rs +0 -0
  95. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/definition_lists.rs +0 -0
  96. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/figures.rs +0 -0
  97. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/footnote_marker_line.rs +0 -0
  98. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/fragment_context.rs +0 -0
  99. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/frame_pinning.rs +0 -0
  100. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/headings.rs +0 -0
  101. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/helpers.rs +0 -0
  102. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/lists.rs +0 -0
  103. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/losslessness.rs +0 -0
  104. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/metadata_guards.rs +0 -0
  105. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks/tests/tables.rs +0 -0
  106. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/blocks.rs +0 -0
  107. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/core.rs +0 -0
  108. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/diagnostics.rs +0 -0
  109. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/bookdown.rs +0 -0
  110. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/bracketed_spans.rs +0 -0
  111. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/code_spans.rs +0 -0
  112. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/core.rs +0 -0
  113. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/emoji.rs +0 -0
  114. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/escapes.rs +0 -0
  115. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/hard_breaks.rs +0 -0
  116. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/inline_executable.rs +0 -0
  117. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/inline_footnotes.rs +0 -0
  118. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/inline_html.rs +0 -0
  119. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/inline_ir.rs +0 -0
  120. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/latex.rs +0 -0
  121. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/links.rs +0 -0
  122. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/mark.rs +0 -0
  123. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/math.rs +0 -0
  124. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/myst_roles.rs +0 -0
  125. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/myst_substitutions.rs +0 -0
  126. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/native_spans.rs +0 -0
  127. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/raw_inline.rs +0 -0
  128. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/refdef_map.rs +0 -0
  129. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/shortcodes.rs +0 -0
  130. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/sink.rs +0 -0
  131. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/strikeout.rs +0 -0
  132. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/subscript.rs +0 -0
  133. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/superscript.rs +0 -0
  134. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/svelte.rs +0 -0
  135. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/tests.rs +0 -0
  136. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/uri-schemes.csv +0 -0
  137. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines/wikilinks.rs +0 -0
  138. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/inlines.rs +0 -0
  139. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/math.rs +0 -0
  140. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/reparse.rs +0 -0
  141. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/attributes.rs +0 -0
  142. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/chunk_options.rs +0 -0
  143. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/container_stack.rs +0 -0
  144. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/continuation.rs +0 -0
  145. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/helpers.rs +0 -0
  146. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/inline_emission.rs +0 -0
  147. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/list_item_buffer.rs +0 -0
  148. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/marker_utils.rs +0 -0
  149. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/text_buffer.rs +0 -0
  150. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/tree_copy.rs +0 -0
  151. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils/yaml_regions.rs +0 -0
  152. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/utils.rs +0 -0
  153. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/verify.rs +0 -0
  154. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml/cooking.rs +0 -0
  155. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml/events.rs +0 -0
  156. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml/model.rs +0 -0
  157. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml/parser.rs +0 -0
  158. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml/profile.rs +0 -0
  159. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml/scanner.rs +0 -0
  160. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml/validator.rs +0 -0
  161. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser/yaml.rs +0 -0
  162. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/parser.rs +0 -0
  163. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/range_utils.rs +0 -0
  164. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/alerts.rs +0 -0
  165. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/ast.rs +0 -0
  166. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/attributes.rs +0 -0
  167. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/block_quotes.rs +0 -0
  168. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/blocks.rs +0 -0
  169. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/chunk_options.rs +0 -0
  170. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/citations.rs +0 -0
  171. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/code_blocks.rs +0 -0
  172. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/code_span.rs +0 -0
  173. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/crossrefs.rs +0 -0
  174. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/definitions.rs +0 -0
  175. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/fenced_divs.rs +0 -0
  176. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/headings.rs +0 -0
  177. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/inlines.rs +0 -0
  178. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/kind.rs +0 -0
  179. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/links.rs +0 -0
  180. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/lists.rs +0 -0
  181. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/math.rs +0 -0
  182. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/myst.rs +0 -0
  183. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/raw_tex.rs +0 -0
  184. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/references.rs +0 -0
  185. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/shortcodes.rs +0 -0
  186. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/tables.rs +0 -0
  187. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/yaml.rs +0 -0
  188. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax/yaml_ast.rs +0 -0
  189. {panache_cli-3.6.0 → panache_cli-3.6.1}/crates/panache-parser/src/syntax.rs +0 -0
  190. {panache_cli-3.6.0 → panache_cli-3.6.1}/pyproject.toml +0 -0
  191. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bib/bibtex.rs +0 -0
  192. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bib/csl_json.rs +0 -0
  193. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bib/csl_yaml.rs +0 -0
  194. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bib/index.rs +0 -0
  195. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bib/preview.rs +0 -0
  196. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bib/ris.rs +0 -0
  197. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bib.rs +0 -0
  198. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/bin/distill_quarto_schema.rs +0 -0
  199. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/cache.rs +0 -0
  200. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/config/formatter_presets.rs +0 -0
  201. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/config/types/schema_helpers.rs +0 -0
  202. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/config/types.rs +0 -0
  203. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/diagnostic_renderer.rs +0 -0
  204. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/directives.rs +0 -0
  205. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/external_formatters_common.rs +0 -0
  206. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/external_formatters_sync.rs +0 -0
  207. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/external_tools_common.rs +0 -0
  208. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/formatter.rs +0 -0
  209. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/includes.rs +0 -0
  210. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/incremental.rs +0 -0
  211. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/io_context.rs +0 -0
  212. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lib.rs +0 -0
  213. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/code_block_collector.rs +0 -0
  214. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/diagnostics.rs +0 -0
  215. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters/clippy.rs +0 -0
  216. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters/eslint.rs +0 -0
  217. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters/jarl.rs +0 -0
  218. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters/jolars.rs +0 -0
  219. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters/ruff.rs +0 -0
  220. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters/shellcheck.rs +0 -0
  221. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters/staticcheck.rs +0 -0
  222. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters.rs +0 -0
  223. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/external_linters_sync.rs +0 -0
  224. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/fuzzy.rs +0 -0
  225. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/index.rs +0 -0
  226. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/metadata_diagnostics.rs +0 -0
  227. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/offsets.rs +0 -0
  228. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/project_index.rs +0 -0
  229. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/quarto_schema/distill.rs +0 -0
  230. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/quarto_schema/interp.rs +0 -0
  231. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/quarto_schema/model.rs +0 -0
  232. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/quarto_schema/report.rs +0 -0
  233. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/quarto_schema/value.rs +0 -0
  234. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/quarto_schema.rs +0 -0
  235. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/adjacent_footnote_refs.rs +0 -0
  236. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/blank_line_in_inline_footnote.rs +0 -0
  237. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/chunk_label_spaces.rs +0 -0
  238. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/citation_keys.rs +0 -0
  239. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/citation_nonbreaking_space.rs +0 -0
  240. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/consumer_divergence.rs +0 -0
  241. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/crossref_as_link_target.rs +0 -0
  242. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/duplicate_references.rs +0 -0
  243. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/duplicate_yaml_anchor.rs +0 -0
  244. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/emoji_aliases.rs +0 -0
  245. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/empty_list_item.rs +0 -0
  246. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/empty_values.rs +0 -0
  247. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/figure_crossref_captions.rs +0 -0
  248. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/footnote_after_image.rs +0 -0
  249. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/footnote_ref_in_footnote_def.rs +0 -0
  250. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/footnote_swallowed_by_bracket.rs +0 -0
  251. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/heading_eaten_attrs.rs +0 -0
  252. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/heading_hierarchy.rs +0 -0
  253. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/heading_strip_comments_residue.rs +0 -0
  254. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/html_entities.rs +0 -0
  255. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/link_text_is_url.rs +0 -0
  256. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/math_content.rs +0 -0
  257. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/missing_chunk_labels.rs +0 -0
  258. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/quarto_schema.rs +0 -0
  259. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/reversed_footnote_marker.rs +0 -0
  260. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/stray_fenced_div_markers.rs +0 -0
  261. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/swallowed_list_marker.rs +0 -0
  262. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/table_column_count.rs +0 -0
  263. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/undefined_anchor.rs +0 -0
  264. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/undefined_references.rs +0 -0
  265. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/unspaced_citation.rs +0 -0
  266. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/unsupported_metadata_key.rs +0 -0
  267. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/unused_definitions.rs +0 -0
  268. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules/unused_yaml_anchor.rs +0 -0
  269. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/rules.rs +0 -0
  270. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/runner.rs +0 -0
  271. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/yaml_anchors.rs +0 -0
  272. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter/yaml_resolve.rs +0 -0
  273. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/linter.rs +0 -0
  274. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/config.rs +0 -0
  275. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/context.rs +0 -0
  276. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/conversions.rs +0 -0
  277. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/dispatch.rs +0 -0
  278. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/documents.rs +0 -0
  279. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/global_state.rs +0 -0
  280. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/code_actions.rs +0 -0
  281. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/completion.rs +0 -0
  282. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/configuration.rs +0 -0
  283. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/diagnostics.rs +0 -0
  284. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/document_highlight.rs +0 -0
  285. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/document_links.rs +0 -0
  286. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/document_symbols.rs +0 -0
  287. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/file_operations.rs +0 -0
  288. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/file_rename.rs +0 -0
  289. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/file_watcher.rs +0 -0
  290. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/folding_ranges.rs +0 -0
  291. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/footnote_conversion.rs +0 -0
  292. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/formatting.rs +0 -0
  293. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/goto_definition.rs +0 -0
  294. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/heading_link_conversion.rs +0 -0
  295. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/hover.rs +0 -0
  296. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/link_conversion.rs +0 -0
  297. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/linked_editing_range.rs +0 -0
  298. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/list_conversion.rs +0 -0
  299. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/prepare_rename.rs +0 -0
  300. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/references.rs +0 -0
  301. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/rename.rs +0 -0
  302. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/semantic_tokens.rs +0 -0
  303. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/shortcode_args.rs +0 -0
  304. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/workspace_folders.rs +0 -0
  305. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers/workspace_symbols.rs +0 -0
  306. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/handlers.rs +0 -0
  307. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/helpers.rs +0 -0
  308. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/line_index.rs +0 -0
  309. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/navigation.rs +0 -0
  310. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/symbols.rs +0 -0
  311. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/task_pool.rs +0 -0
  312. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/testing.rs +0 -0
  313. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp/uri_ext.rs +0 -0
  314. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/lsp.rs +0 -0
  315. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/main.rs +0 -0
  316. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/metadata/bibliography.rs +0 -0
  317. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/metadata/citations.rs +0 -0
  318. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/metadata/project.rs +0 -0
  319. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/metadata/references.rs +0 -0
  320. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/metadata/yaml.rs +0 -0
  321. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/metadata.rs +0 -0
  322. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/parser.rs +0 -0
  323. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/range_utils.rs +0 -0
  324. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/salsa.rs +0 -0
  325. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/syntax.rs +0 -0
  326. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/utils.rs +0 -0
  327. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/vfs.rs +0 -0
  328. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/yaml_engine.rs +0 -0
  329. {panache_cli-3.6.0 → panache_cli-3.6.1}/src/yaml_regions.rs +0 -0
@@ -447,9 +447,9 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
447
447
 
448
448
  [[package]]
449
449
  name = "either"
450
- version = "1.17.0"
450
+ version = "1.18.0"
451
451
  source = "registry+https://github.com/rust-lang/crates.io-index"
452
- checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d"
452
+ checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
453
453
 
454
454
  [[package]]
455
455
  name = "email_address"
@@ -1203,7 +1203,7 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
1203
1203
 
1204
1204
  [[package]]
1205
1205
  name = "panache"
1206
- version = "3.6.0"
1206
+ version = "3.6.1"
1207
1207
  dependencies = [
1208
1208
  "annotate-snippets",
1209
1209
  "assert_cmd",
@@ -1248,7 +1248,7 @@ dependencies = [
1248
1248
 
1249
1249
  [[package]]
1250
1250
  name = "panache-formatter"
1251
- version = "0.21.2"
1251
+ version = "0.21.3"
1252
1252
  dependencies = [
1253
1253
  "insta",
1254
1254
  "log",
@@ -1266,7 +1266,7 @@ dependencies = [
1266
1266
 
1267
1267
  [[package]]
1268
1268
  name = "panache-parser"
1269
- version = "0.27.1"
1269
+ version = "0.27.2"
1270
1270
  dependencies = [
1271
1271
  "entities",
1272
1272
  "insta",
@@ -10,7 +10,7 @@ authors = ["Johan Larsson <johan@jolars.co>"]
10
10
 
11
11
  [package]
12
12
  name = "panache"
13
- version = "3.6.0"
13
+ version = "3.6.1"
14
14
  edition.workspace = true
15
15
  rust-version.workspace = true
16
16
  # `distill_quarto_schema` is a dev-only vendoring bin (src/bin/); keep bare
@@ -52,8 +52,8 @@ path = "src/main.rs"
52
52
  required-features = ["cli"]
53
53
 
54
54
  [dependencies]
55
- panache-formatter = { path = "crates/panache-formatter", version = "0.21.2" }
56
- panache-parser = { path = "crates/panache-parser", version = "0.27.1", features = [
55
+ panache-formatter = { path = "crates/panache-formatter", version = "0.21.3" }
56
+ panache-parser = { path = "crates/panache-parser", version = "0.27.2", features = [
57
57
  "serde",
58
58
  "schema",
59
59
  ] }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: panache-cli
3
- Version: 3.6.0
3
+ Version: 3.6.1
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -67,21 +67,20 @@ Panache is available from several sources:
67
67
  ### Install Script
68
68
 
69
69
  The installer scripts pick the right release artifact for your platform and
70
- install to a user-local directory by default. They are fetched from the latest
71
- release and then download the matching Panache CLI release asset. If you prefer,
72
- download and inspect the script before running it.
70
+ install to a user-local directory by default. They download the matching Panache
71
+ CLI release asset. If you prefer, download and inspect the script before running
72
+ it.
73
73
 
74
74
  For macOS and Linux:
75
75
 
76
76
  ```sh
77
- curl --proto '=https' --tlsv1.2 -LsSf \
78
- https://github.com/jolars/panache/releases/latest/download/panache-installer.sh | sh
77
+ curl --proto '=https' --tlsv1.2 -sSf https://panache.bz/install | sh
79
78
  ```
80
79
 
81
80
  For Windows PowerShell:
82
81
 
83
82
  ```powershell
84
- powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://github.com/jolars/panache/releases/latest/download/panache-installer.ps1 | iex"
83
+ powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://panache.bz/install.ps1 | iex"
85
84
  ```
86
85
 
87
86
  Set `PANACHE_INSTALL_DIR` to change the destination and `PANACHE_TAG` to pin a
@@ -203,9 +202,14 @@ The list of LSP features supported by Panache includes, among others:
203
202
 
204
203
  Panache looks for a configuration in:
205
204
 
206
- 1. `.panache.toml` or `panache.toml` in current directory or parent directories
207
- 2. `$XDG_CONFIG_HOME/panache/config.toml` (usually
208
- `~/.config/panache/config.toml`)
205
+ 1. An explicit `--config <path>`
206
+ 2. `.panache.toml`, `panache.toml`, or `.config/panache.toml` in the current
207
+ directory or a parent directory
208
+ 3. The user configuration directory:
209
+ - Linux: `$XDG_CONFIG_HOME/panache/config.toml` or
210
+ `~/.config/panache/config.toml`
211
+ - macOS: `~/Library/Application Support/panache/config.toml`
212
+ - Windows: `%APPDATA%\panache\config.toml`
209
213
 
210
214
  ### Example
211
215
 
@@ -236,8 +240,8 @@ julia = "fatou" # Enable Julia linting
236
240
  python = "ruff"
237
241
  ```
238
242
 
239
- See [examples/panache.toml](./examples/panache.toml) for a complete
240
- configuration reference.
243
+ See [the configuration reference](https://panache.bz/guide/configuration) for a
244
+ complete list of configuration options and their defaults.
241
245
 
242
246
  ## Integrations
243
247
 
@@ -41,21 +41,20 @@ Panache is available from several sources:
41
41
  ### Install Script
42
42
 
43
43
  The installer scripts pick the right release artifact for your platform and
44
- install to a user-local directory by default. They are fetched from the latest
45
- release and then download the matching Panache CLI release asset. If you prefer,
46
- download and inspect the script before running it.
44
+ install to a user-local directory by default. They download the matching Panache
45
+ CLI release asset. If you prefer, download and inspect the script before running
46
+ it.
47
47
 
48
48
  For macOS and Linux:
49
49
 
50
50
  ```sh
51
- curl --proto '=https' --tlsv1.2 -LsSf \
52
- https://github.com/jolars/panache/releases/latest/download/panache-installer.sh | sh
51
+ curl --proto '=https' --tlsv1.2 -sSf https://panache.bz/install | sh
53
52
  ```
54
53
 
55
54
  For Windows PowerShell:
56
55
 
57
56
  ```powershell
58
- powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://github.com/jolars/panache/releases/latest/download/panache-installer.ps1 | iex"
57
+ powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://panache.bz/install.ps1 | iex"
59
58
  ```
60
59
 
61
60
  Set `PANACHE_INSTALL_DIR` to change the destination and `PANACHE_TAG` to pin a
@@ -177,9 +176,14 @@ The list of LSP features supported by Panache includes, among others:
177
176
 
178
177
  Panache looks for a configuration in:
179
178
 
180
- 1. `.panache.toml` or `panache.toml` in current directory or parent directories
181
- 2. `$XDG_CONFIG_HOME/panache/config.toml` (usually
182
- `~/.config/panache/config.toml`)
179
+ 1. An explicit `--config <path>`
180
+ 2. `.panache.toml`, `panache.toml`, or `.config/panache.toml` in the current
181
+ directory or a parent directory
182
+ 3. The user configuration directory:
183
+ - Linux: `$XDG_CONFIG_HOME/panache/config.toml` or
184
+ `~/.config/panache/config.toml`
185
+ - macOS: `~/Library/Application Support/panache/config.toml`
186
+ - Windows: `%APPDATA%\panache\config.toml`
183
187
 
184
188
  ### Example
185
189
 
@@ -210,8 +214,8 @@ julia = "fatou" # Enable Julia linting
210
214
  python = "ruff"
211
215
  ```
212
216
 
213
- See [examples/panache.toml](./examples/panache.toml) for a complete
214
- configuration reference.
217
+ See [the configuration reference](https://panache.bz/guide/configuration) for a
218
+ complete list of configuration options and their defaults.
215
219
 
216
220
  ## Integrations
217
221
 
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.21.3](https://github.com/jolars/panache/compare/panache-formatter-v0.21.2...panache-formatter-v0.21.3) (2026-08-20)
4
+
5
+ ### Bug Fixes
6
+ - **formatter:** keep trailing citations with sentences ([`9accb4f`](https://github.com/jolars/panache/commit/9accb4f5e7a7db2960ab5787d4be536a5e4b54fc)), fixes [#505](https://github.com/jolars/panache/issues/505)
7
+ - **formatter:** compose embedded math environments ([`43a3b80`](https://github.com/jolars/panache/commit/43a3b801dd463d9f76f7bf759315d2f54f0b2061))
8
+ - **formatter:** preserve starred math commands ([`8e73a5c`](https://github.com/jolars/panache/commit/8e73a5c2ab642d5268825f1c456b3ddd3b491f9c))
9
+ - **formatter:** escape tildes contextually ([`74d82ad`](https://github.com/jolars/panache/commit/74d82ad309869a79d7b0ce96aed0ad0948ccac10)), fixes [#501](https://github.com/jolars/panache/issues/501)
10
+
11
+ ### Dependencies
12
+ - updated crates/panache-parser to v0.27.2
13
+
3
14
  ## [0.21.2](https://github.com/jolars/panache/compare/panache-formatter-v0.21.1...panache-formatter-v0.21.2) (2026-08-20)
4
15
 
5
16
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "panache-formatter"
3
- version = "0.21.2"
3
+ version = "0.21.3"
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.27.1" }
22
+ panache-parser = { path = "../panache-parser", version = "0.27.2" }
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 }
@@ -0,0 +1,306 @@
1
+ use crate::config::WrapMode;
2
+ use crate::formatter::Formatter;
3
+ use crate::formatter::core::BlockquoteContext;
4
+ use crate::formatter::preserve::{preserve_lines, preserve_lines_unprefixed};
5
+ use crate::formatter::utils::is_block_element;
6
+ use crate::syntax::{SyntaxKind, SyntaxNode};
7
+
8
+ impl Formatter {
9
+ pub(super) fn format_block_quote(&mut self, node: &SyntaxNode, indent: usize) {
10
+ log::trace!("Formatting blockquote");
11
+ let depth = node
12
+ .ancestors()
13
+ .take_while(|ancestor| ancestor.kind() != SyntaxKind::LIST_ITEM)
14
+ .filter(|ancestor| ancestor.kind() == SyntaxKind::BLOCK_QUOTE)
15
+ .count()
16
+ .max(1);
17
+
18
+ let base_indent = " ".repeat(indent);
19
+ let content_prefix = format!("{}{}", base_indent, "> ".repeat(depth)); // includes trailing space
20
+ let blank_prefix = content_prefix.trim_end().to_string(); // no trailing space
21
+
22
+ let wrap_mode = self.config.wrap.clone().unwrap_or(WrapMode::Reflow);
23
+ let blockquote_children: Vec<_> = node.children().collect();
24
+ let saved_blockquote_context = self.blockquote_context.clone();
25
+ self.blockquote_context = Some(BlockquoteContext {
26
+ in_list_continuation: false,
27
+ });
28
+
29
+ for child in &blockquote_children {
30
+ match child.kind() {
31
+ SyntaxKind::BLOCK_QUOTE_MARKER => continue,
32
+
33
+ SyntaxKind::PARAGRAPH | SyntaxKind::PLAIN => {
34
+ let para_start = self.output.len();
35
+ match wrap_mode {
36
+ WrapMode::Preserve => {
37
+ let escaped = self.config.formatter_extensions.escaped_line_breaks;
38
+ for line in preserve_lines_unprefixed(child, escaped) {
39
+ if line.is_empty() {
40
+ self.output.push_str(content_prefix.trim_end());
41
+ } else {
42
+ self.output.push_str(&content_prefix);
43
+ self.output.push_str(&line);
44
+ }
45
+ self.output.push('\n');
46
+ }
47
+ }
48
+ WrapMode::Reflow => {
49
+ let width = self.config.line_width.saturating_sub(content_prefix.len());
50
+ let lines = self.wrapped_lines_for_paragraph(child, width);
51
+ for line in lines {
52
+ self.output.push_str(&content_prefix);
53
+ self.output.push_str(&line);
54
+ self.output.push('\n');
55
+ }
56
+ }
57
+ WrapMode::Sentence | WrapMode::Semantic => {
58
+ let lines = if matches!(wrap_mode, WrapMode::Semantic) {
59
+ self.semantic_lines_for_paragraph(child)
60
+ } else {
61
+ self.sentence_lines_for_paragraph(child)
62
+ };
63
+ for line in lines {
64
+ self.output.push_str(&content_prefix);
65
+ self.output.push_str(&line);
66
+ self.output.push('\n');
67
+ }
68
+ }
69
+ }
70
+ self.guard_definition_marker_start(para_start, 0);
71
+ }
72
+ SyntaxKind::ALERT => {
73
+ let marker = child
74
+ .children_with_tokens()
75
+ .filter_map(|item| item.into_token())
76
+ .find(|tok| tok.kind() == SyntaxKind::ALERT_MARKER)
77
+ .map(|tok| tok.text().to_string())
78
+ .unwrap_or_else(|| "[!NOTE]".to_string());
79
+
80
+ self.output.push_str(&content_prefix);
81
+ self.output.push_str(&marker);
82
+ self.output.push('\n');
83
+
84
+ for alert_child in child.children() {
85
+ match alert_child.kind() {
86
+ SyntaxKind::PARAGRAPH => match wrap_mode {
87
+ WrapMode::Preserve => {
88
+ let escaped =
89
+ self.config.formatter_extensions.escaped_line_breaks;
90
+ for line in preserve_lines(&alert_child, escaped) {
91
+ if line.is_empty() {
92
+ self.output.push_str(content_prefix.trim_end());
93
+ } else {
94
+ self.output.push_str(&content_prefix);
95
+ self.output.push_str(&line);
96
+ }
97
+ self.output.push('\n');
98
+ }
99
+ }
100
+ WrapMode::Reflow => {
101
+ let width =
102
+ self.config.line_width.saturating_sub(content_prefix.len());
103
+ for line in
104
+ self.wrapped_lines_for_paragraph(&alert_child, width)
105
+ {
106
+ self.output.push_str(&content_prefix);
107
+ self.output.push_str(&line);
108
+ self.output.push('\n');
109
+ }
110
+ }
111
+ WrapMode::Sentence | WrapMode::Semantic => {
112
+ let lines = if matches!(wrap_mode, WrapMode::Semantic) {
113
+ self.semantic_lines_for_paragraph(&alert_child)
114
+ } else {
115
+ self.sentence_lines_for_paragraph(&alert_child)
116
+ };
117
+ for line in lines {
118
+ self.output.push_str(&content_prefix);
119
+ self.output.push_str(&line);
120
+ self.output.push('\n');
121
+ }
122
+ }
123
+ },
124
+ SyntaxKind::BLANK_LINE => {
125
+ self.output.push_str(&blank_prefix);
126
+ self.output.push('\n');
127
+ }
128
+ _ => {
129
+ let rendered = self.render_to_buffer(
130
+ &alert_child,
131
+ indent,
132
+ content_prefix.len(),
133
+ );
134
+ self.append_blockquote_prefixed_nested_block(
135
+ &rendered,
136
+ &base_indent,
137
+ &content_prefix,
138
+ &blank_prefix,
139
+ );
140
+ }
141
+ }
142
+ }
143
+ }
144
+ SyntaxKind::BLANK_LINE => {
145
+ self.output.push_str(&blank_prefix);
146
+ self.output.push('\n');
147
+ }
148
+ SyntaxKind::HORIZONTAL_RULE => {
149
+ self.output.push_str(&content_prefix);
150
+ let available_width =
151
+ self.config.line_width.saturating_sub(content_prefix.len());
152
+ self.output
153
+ .push_str(&self.horizontal_rule_text(available_width));
154
+ self.output.push('\n');
155
+ }
156
+ SyntaxKind::HEADING => {
157
+ let heading_text = self.format_heading(child);
158
+ for line in heading_text.lines() {
159
+ self.output.push_str(&content_prefix);
160
+ self.output.push_str(line);
161
+ self.output.push('\n');
162
+ }
163
+ if let Some(next) = child.next_sibling()
164
+ && next.kind() != SyntaxKind::BLANK_LINE
165
+ && is_block_element(next.kind())
166
+ {
167
+ self.output.push_str(&blank_prefix);
168
+ self.output.push('\n');
169
+ }
170
+ }
171
+ SyntaxKind::LIST => {
172
+ let list_output = self.render_to_buffer(child, 0, content_prefix.len());
173
+
174
+ let ends_in_list_continuation = self.append_blockquote_prefixed_list_output(
175
+ &list_output,
176
+ &base_indent,
177
+ &content_prefix,
178
+ &blank_prefix,
179
+ );
180
+ if let Some(ctx) = self.blockquote_context.as_mut() {
181
+ ctx.in_list_continuation = ends_in_list_continuation;
182
+ }
183
+ }
184
+ SyntaxKind::CODE_BLOCK => {
185
+ let code_block_leading_indent = Self::code_block_leading_indent(child);
186
+ let code_output = self.render_to_buffer(child, indent, 0);
187
+
188
+ self.append_blockquote_prefixed_block(
189
+ &code_output,
190
+ &content_prefix,
191
+ &blank_prefix,
192
+ Some(&code_block_leading_indent),
193
+ );
194
+ if let Some(ctx) = self.blockquote_context.as_mut() {
195
+ ctx.in_list_continuation = false;
196
+ }
197
+ }
198
+ SyntaxKind::HTML_BLOCK
199
+ | SyntaxKind::HTML_BLOCK_RAW
200
+ | SyntaxKind::HTML_BLOCK_DIV => {
201
+ let html_output = self.render_to_buffer(child, indent, 0);
202
+
203
+ self.append_blockquote_prefixed_block(
204
+ &html_output,
205
+ &content_prefix,
206
+ &blank_prefix,
207
+ None,
208
+ );
209
+ if let Some(ctx) = self.blockquote_context.as_mut() {
210
+ ctx.in_list_continuation = false;
211
+ }
212
+ }
213
+ SyntaxKind::TEX_BLOCK => {
214
+ let tex_output = self.render_to_buffer(child, indent, 0);
215
+
216
+ self.append_blockquote_prefixed_block(
217
+ &tex_output,
218
+ &content_prefix,
219
+ &blank_prefix,
220
+ None,
221
+ );
222
+ }
223
+ SyntaxKind::PIPE_TABLE
224
+ | SyntaxKind::GRID_TABLE
225
+ | SyntaxKind::SIMPLE_TABLE
226
+ | SyntaxKind::MULTILINE_TABLE => {
227
+ let table_output = self.render_to_buffer(child, 0, 0);
228
+
229
+ let min_indent = table_output
230
+ .lines()
231
+ .filter(|line| !line.trim().is_empty())
232
+ .map(|line| line.len() - line.trim_start().len())
233
+ .min()
234
+ .unwrap_or(0);
235
+ let dedented: String = table_output
236
+ .lines()
237
+ .map(|line| {
238
+ if line.trim().is_empty() {
239
+ String::new()
240
+ } else {
241
+ line[min_indent..].to_string()
242
+ }
243
+ })
244
+ .collect::<Vec<_>>()
245
+ .join("\n");
246
+
247
+ self.append_blockquote_prefixed_block(
248
+ &dedented,
249
+ &content_prefix,
250
+ &blank_prefix,
251
+ None,
252
+ );
253
+ if let Some(ctx) = self.blockquote_context.as_mut() {
254
+ ctx.in_list_continuation = false;
255
+ }
256
+ }
257
+ SyntaxKind::LINE_BLOCK => {
258
+ let line_block_output = self.render_to_buffer(child, 0, 0);
259
+
260
+ self.append_blockquote_prefixed_block(
261
+ &line_block_output,
262
+ &content_prefix,
263
+ &blank_prefix,
264
+ None,
265
+ );
266
+ if let Some(ctx) = self.blockquote_context.as_mut() {
267
+ ctx.in_list_continuation = false;
268
+ }
269
+ }
270
+ SyntaxKind::DEFINITION_LIST => {
271
+ let def_output = self.render_to_buffer(child, indent, 0);
272
+
273
+ self.append_blockquote_prefixed_block(
274
+ &def_output,
275
+ &content_prefix,
276
+ &blank_prefix,
277
+ None,
278
+ );
279
+ if let Some(ctx) = self.blockquote_context.as_mut() {
280
+ ctx.in_list_continuation = false;
281
+ }
282
+ }
283
+ SyntaxKind::BLOCK_QUOTE => {
284
+ self.format_node_sync(child, indent);
285
+ if let Some(ctx) = self.blockquote_context.as_mut() {
286
+ ctx.in_list_continuation = false;
287
+ }
288
+ }
289
+ _ => {
290
+ let rendered = self.render_to_buffer(child, 0, content_prefix.len());
291
+
292
+ self.append_blockquote_prefixed_nested_block(
293
+ &rendered,
294
+ &base_indent,
295
+ &content_prefix,
296
+ &blank_prefix,
297
+ );
298
+ if let Some(ctx) = self.blockquote_context.as_mut() {
299
+ ctx.in_list_continuation = false;
300
+ }
301
+ }
302
+ }
303
+ }
304
+ self.blockquote_context = saved_blockquote_context;
305
+ }
306
+ }