panache 3.2.0

Language server, formatter, and linter for Markdown, Quarto, and R Markdown
[workspace.package]
edition = "2024"
license = "MIT"
repository = "https://github.com/jolars/panache"
homepage = "https://panache.bz"
authors = ["Johan Larsson <johan@jolars.co>"]

[package]
name = "panache"
version = "3.2.0"
edition.workspace = true
# `distill_quarto_schema` is a dev-only vendoring bin (src/bin/); keep bare
# `cargo run` resolving to the CLI for tooling like the pre-commit format hook.
default-run = "panache"
readme = "README.md"
description = "Language server, formatter, and linter for Markdown, Quarto, and R Markdown"
license.workspace = true
repository.workspace = true
homepage = "https://panache.bz"
include = [
    "/src/**/*",
    "/build.rs",
    "/README.md",
    "/LICENSE",
    # Read by build.rs (`compress_quarto_schema`) and embedded via
    # `include_bytes!`; must be packaged or `cargo install` fails in the
    # build script with `NotFound`.
    "/assets/quarto-schema/schema.json",
]
keywords = ["quarto", "pandoc", "markdown", "formatter", "language-server"]
categories = [
    "command-line-utilities",
    "text-processing",
    "parsing",
    "parser-implementations",
]
authors.workspace = true

[workspace]
members = [
    "crates/panache-parser",
    "crates/panache-formatter",
    "crates/panache-wasm",
]

[lib]
doctest = false

[[bin]]
name = "panache"
path = "src/main.rs"
required-features = ["cli"]

[dependencies]
panache-formatter = { path = "crates/panache-formatter", version = "0.20.4" }
panache-parser = { path = "crates/panache-parser", version = "0.24.0", features = [
    "serde",
    "schema",
] }
annotate-snippets = "0.12.15"
clap = { version = "4.6.1", features = ["derive", "env"], optional = true }
dirs = "6.0.0"
env_logger = "0.11.10"
emojis = "0.9.0"
flate2 = "1.1.9"
crossbeam-channel = { version = "0.5.15", optional = true }
globset = "0.4.19"
ignore = { version = "0.4.29", optional = true }
log = { version = "0.4.31", features = ["release_max_level_debug"] }
lsp-server = { version = "0.10.0", optional = true }
lsp-types = { version = "0.97.0", optional = true }
num_cpus = { version = "1.17.0", optional = true }
percent-encoding = { version = "2.3.2", optional = true }
regex = "1.12.2"
rowan = "0.16.1"
salsa = "0.28.0"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
schemars = "1.2.1"
wincode = { version = "0.6.0", features = ["derive"] }
similar = { version = "3.0.0", features = ["text"] }
tempfile = "3.27.0"
toml = "1.1.2"
unicode-width = "0.2.2"

[dev-dependencies]
similar-asserts = "2.0.0"
insta = { version = "1.47.2", features = ["json"] }
assert_cmd = "2.2.2"
predicates = "3.1.4"
jsonschema = { version = "0.49.2", default-features = false }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
rayon = "1.10.0"
which = "8.0.5"
uuid = { version = "1.23.0", features = ["v4"] }

[features]
default = ["cli", "lsp"]
cli = ["dep:clap", "dep:ignore"]
lsp = [
    "dep:lsp-server",
    "dep:lsp-types",
    "dep:crossbeam-channel",
    "dep:num_cpus",
    "dep:percent-encoding",
]

[build-dependencies]
clap = { version = "4.6.1", features = ["derive", "env"] }
clap_complete = "4.6.0"
clap_mangen = "0.3.0"
clap-markdown = "0.1.5"
flate2 = "1.1.9"

[package.metadata.deb]
maintainer = "Johan Larsson <johan@jolars.co>"
copyright = "2026, Johan Larsson <johan@jolars.co>"
license-file = ["LICENSE", "4"]
extended-description = """\
A CLI formatter for Quarto, Pandoc, and Markdown files. Supports Quarto-specific \
syntax like fenced divs, tables, and math formatting that other formatters struggle \
with. Provides intelligent line wrapping, consistent formatting, and an integrated \
language server for editor support."""
depends = "$auto"
section = "text"
priority = "optional"
assets = [
    [
        "target/release/panache",
        "usr/bin/",
        "755",
    ],
    [
        "README.md",
        "usr/share/doc/panache/",
        "644",
    ],
    [
        "LICENSE",
        "usr/share/doc/panache/",
        "644",
    ],
    [
        "target/man/*.1",
        "usr/share/man/man1/",
        "644",
    ],
    [
        "target/completions/panache.bash",
        "usr/share/bash-completion/completions/panache",
        "644",
    ],
    [
        "target/completions/panache.fish",
        "usr/share/fish/vendor_completions.d/panache.fish",
        "644",
    ],
    [
        "target/completions/_panache",
        "usr/share/zsh/vendor-completions/_panache",
        "644",
    ],
    [
        "examples/*",
        "usr/share/doc/panache/examples/",
        "644",
    ],
]

[package.metadata.generate-rpm]
assets = [
    { source = "target/release/panache", dest = "/usr/bin/panache", mode = "755" },
    { source = "README.md", dest = "/usr/share/doc/panache/README.md", mode = "644", doc = true },
    { source = "LICENSE", dest = "/usr/share/doc/panache/LICENSE", mode = "644", doc = true },
    { source = "target/man/*.1", dest = "/usr/share/man/man1/", mode = "644" },
    { source = "target/completions/panache.bash", dest = "/usr/share/bash-completion/completions/panache", mode = "644" },
    { source = "target/completions/panache.fish", dest = "/usr/share/fish/vendor_completions.d/panache.fish", mode = "644" },
    { source = "target/completions/_panache", dest = "/usr/share/zsh/vendor-completions/_panache", mode = "644" },
    { source = "examples/*", dest = "/usr/share/doc/panache/examples/", mode = "644", doc = true },
]

[[bench]]
name = "formatting"
harness = false

[[bench]]
name = "lsp_incremental"
harness = false

[[bench]]
name = "cli_cache"
harness = false

[[bench]]
name = "linting"
harness = false

[[bench]]
name = "lsp_relint"
harness = false
required-features = ["lsp"]