[package]
name = "lumis"
version = "0.7.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
authors.workspace = true

description = "Syntax Highlighter powered by Tree-sitter and Neovim themes"
keywords = ["lumis", "syntax-highlighter", "tree-sitter", "neovim"]
categories = ["text-processing"]
include = [
    "/build.rs",
    "/languages.toml",
    "/src/",
    "/vendored_parsers/tree-sitter-*/src/tree_sitter/*.h",
    "/vendored_parsers/tree-sitter-*/src/*.h",
    "/vendored_parsers/tree-sitter-*/src/*.c",
    "/vendored_parsers/tree-sitter-*/src/*.cc",
    "/vendored_parsers/tree-sitter-*/src/*.xz",
    "/vendored_parsers/tree-sitter-comment/src/tree_sitter_comment/*.h",
    "/vendored_parsers/tree-sitter-comment/src/tree_sitter_comment/*.c",
    "/queries/overrides/**/highlights.scm",
    "/queries/overrides/**/injections.scm",
    "/queries/overrides/**/locals.scm",
    "/queries/processed/**/highlights.scm",
    "/queries/processed/**/injections.scm",
    "/queries/processed/**/locals.scm",
    "/css/*.css",
    "/themes/*.json",
    "/LICENSE",
    "/README.md",
    "/CHANGELOG.md",
]

[package.metadata.docs.rs]
rustdoc-args = ["--generate-link-to-definition"]
no-default-features = true

[features]
dev = []
default = ["all-languages"]

all-languages = [
    "lang-arduino",
    "lang-angular",
    "lang-asm",
    "lang-astro",
    "lang-bash",
    "lang-bicep",
    "lang-c",
    "lang-caddy",
    "lang-clojure",
    "lang-cmake",
    "lang-comment",
    "lang-commonlisp",
    "lang-cpp",
    "lang-csharp",
    "lang-css",
    "lang-csv",
    "lang-d",
    "lang-dart",
    "lang-diff",
    "lang-dockerfile",
    "lang-dot",
    "lang-eex",
    "lang-ejs",
    "lang-elixir",
    "lang-elm",
    "lang-editorconfig",
    "lang-erb",
    "lang-erlang",
    "lang-fish",
    "lang-fortran",
    "lang-fsharp",
    "lang-gitattributes",
    "lang-gitignore",
    "lang-gleam",
    "lang-glimmer",
    "lang-glsl",
    "lang-go",
    "lang-graphql",
    "lang-haskell",
    "lang-hcl",
    "lang-heex",
    "lang-html",
    "lang-http",
    "lang-iex",
    "lang-ini",
    "lang-java",
    "lang-javascript",
    "lang-json",
    "lang-json5",
    "lang-jinja",
    "lang-jinja-inline",
    "lang-just",
    "lang-javadoc",
    "lang-jq",
    "lang-julia",
    "lang-kdl",
    "lang-kotlin",
    "lang-latex",
    "lang-liquid",
    "lang-llvm",
    "lang-lua",
    "lang-luadoc",
    "lang-make",
    "lang-matlab",
    "lang-mermaid",
    "lang-markdown",
    "lang-markdown-inline",
    "lang-nginx",
    "lang-nim",
    "lang-nix",
    "lang-nushell",
    "lang-objc",
    "lang-ocaml",
    "lang-pascal",
    "lang-perl",
    "lang-php",
    "lang-powershell",
    "lang-prisma",
    "lang-protobuf",
    "lang-puppet",
    "lang-python",
    "lang-qmljs",
    "lang-r",
    "lang-racket",
    "lang-regex",
    "lang-rst",
    "lang-ruby",
    "lang-rust",
    "lang-scala",
    "lang-scss",
    "lang-scheme",
    "lang-sql",
    "lang-solidity",
    "lang-surface",
    "lang-svelte",
    "lang-swift",
    "lang-systemverilog",
    "lang-tcl",
    "lang-terraform",
    "lang-toml",
    "lang-tsx",
    "lang-typescript",
    "lang-typst",
    "lang-vim",
    "lang-vhdl",
    "lang-vue",
    "lang-wat",
    "lang-wgsl",
    "lang-xml",
    "lang-yaml",
    "lang-zig",
    "lang-zsh",
]

# Do not edit. Auto-generated by `just cargo-update-features`.
lang-bundle-web = ["lang-css", "lang-html", "lang-javascript", "lang-json", "lang-tsx", "lang-typescript", "lumis-core/lang-bundle-web"]
lang-bundle-web-extra = ["lang-angular", "lang-astro", "lang-dart", "lang-eex", "lang-ejs", "lang-elm", "lang-erb", "lang-glimmer", "lang-graphql", "lang-heex", "lang-markdown", "lang-markdown-inline", "lang-php", "lang-prisma", "lang-scss", "lang-surface", "lang-svelte", "lang-vue", "lang-xml", "lumis-core/lang-bundle-web-extra"]
lang-bundle-system = ["lang-asm", "lang-bash", "lang-c", "lang-cmake", "lang-cpp", "lang-go", "lang-llvm", "lang-make", "lang-rust", "lang-wat", "lang-zig", "lang-zsh", "lumis-core/lang-bundle-system"]
lang-bundle-backend = ["lang-csharp", "lang-elixir", "lang-erlang", "lang-go", "lang-java", "lang-javadoc", "lang-javascript", "lang-kotlin", "lang-php", "lang-protobuf", "lang-python", "lang-ruby", "lang-rust", "lang-scala", "lang-sql", "lang-typescript", "lumis-core/lang-bundle-backend"]
lang-bundle-full = ["all-languages", "lumis-core/lang-bundle-full"]

lang-arduino = ["dep:tree-sitter-arduino", "lumis-core/lang-arduino"]
lang-angular = ["lumis-core/lang-angular"]
lang-asm = ["dep:tree-sitter-asm", "lumis-core/lang-asm"]
lang-astro = ["lumis-core/lang-astro"]
lang-bash = ["dep:tree-sitter-bash", "lumis-core/lang-bash"]
lang-bicep = ["dep:tree-sitter-bicep", "lumis-core/lang-bicep"]
lang-c = ["dep:tree-sitter-c", "lumis-core/lang-c"]
lang-caddy = ["dep:tree-sitter-caddy", "lumis-core/lang-caddy"]
lang-clojure = ["dep:tree-sitter-clojure-orchard", "lumis-core/lang-clojure"]
lang-cmake = ["dep:tree-sitter-cmake", "lumis-core/lang-cmake"]
lang-comment = ["dep:tree-sitter-comment", "lumis-core/lang-comment"]
lang-commonlisp = ["dep:tree-sitter-commonlisp", "lumis-core/lang-commonlisp"]
lang-cpp = ["dep:tree-sitter-cpp", "lumis-core/lang-cpp"]
lang-csharp = ["dep:tree-sitter-c-sharp", "lumis-core/lang-csharp"]
lang-css = ["dep:tree-sitter-css", "lumis-core/lang-css"]
lang-csv = ["lumis-core/lang-csv"]
lang-d = ["dep:tree-sitter-d", "lumis-core/lang-d"]
lang-dart = ["lumis-core/lang-dart"]
lang-diff = []
lang-dockerfile = ["lumis-core/lang-dockerfile"]
lang-dot = ["lumis-core/lang-dot"]
lang-eex = ["lumis-core/lang-eex"]
lang-ejs = ["dep:tree-sitter-embedded-template", "lumis-core/lang-ejs"]
lang-elixir = ["dep:tree-sitter-elixir", "lumis-core/lang-elixir"]
lang-elm = ["dep:tree-sitter-elm", "lumis-core/lang-elm"]
lang-editorconfig = ["lumis-core/lang-editorconfig"]
lang-erb = ["dep:tree-sitter-embedded-template", "lumis-core/lang-erb"]
lang-erlang = ["dep:tree-sitter-erlang", "lumis-core/lang-erlang"]
lang-fish = ["dep:tree-sitter-fish", "lumis-core/lang-fish"]
lang-fortran = ["dep:tree-sitter-fortran", "lumis-core/lang-fortran"]
lang-fsharp = ["dep:tree-sitter-fsharp", "lumis-core/lang-fsharp"]
lang-gitattributes = ["lumis-core/lang-gitattributes"]
lang-gitignore = ["lumis-core/lang-gitignore"]
lang-gleam = ["dep:tree-sitter-gleam", "lumis-core/lang-gleam"]
lang-glimmer = ["lumis-core/lang-glimmer"]
lang-glsl = ["dep:tree-sitter-glsl", "lumis-core/lang-glsl"]
lang-go = ["dep:tree-sitter-go", "lumis-core/lang-go"]
lang-graphql = ["dep:tree-sitter-graphql", "lumis-core/lang-graphql"]
lang-haskell = ["dep:tree-sitter-haskell", "lumis-core/lang-haskell"]
lang-hcl = ["dep:tree-sitter-hcl", "lumis-core/lang-hcl"]
lang-heex = ["dep:tree-sitter-heex", "lumis-core/lang-heex"]
lang-html = ["dep:tree-sitter-html", "lumis-core/lang-html"]
lang-http = ["lumis-core/lang-http"]
lang-iex = ["lumis-core/lang-iex"]
lang-ini = ["dep:tree-sitter-ini", "lumis-core/lang-ini"]
lang-java = ["dep:tree-sitter-java", "lumis-core/lang-java"]
lang-javascript = ["dep:tree-sitter-javascript", "lumis-core/lang-javascript"]
lang-json = ["dep:tree-sitter-json", "lumis-core/lang-json"]
lang-json5 = ["lumis-core/lang-json5"]
lang-jinja = ["dep:tree-sitter-jinja", "lumis-core/lang-jinja"]
lang-jinja-inline = ["lumis-core/lang-jinja-inline"]
lang-just = ["lumis-core/lang-just"]
lang-javadoc = ["dep:tree-sitter-javadoc", "lumis-core/lang-javadoc"]
lang-jq = ["lumis-core/lang-jq"]
lang-julia = ["dep:tree-sitter-julia", "lumis-core/lang-julia"]
lang-kdl = ["lumis-core/lang-kdl"]
lang-kotlin = ["lumis-core/lang-kotlin"]
lang-latex = ["lumis-core/lang-latex"]
lang-liquid = ["lumis-core/lang-liquid"]
lang-llvm = ["dep:tree-sitter-llvm", "lumis-core/lang-llvm"]
lang-lua = ["dep:tree-sitter-lua", "lumis-core/lang-lua"]
lang-luadoc = ["lumis-core/lang-luadoc"]
lang-make = ["dep:tree-sitter-make", "lumis-core/lang-make"]
lang-matlab = ["dep:tree-sitter-matlab", "lumis-core/lang-matlab"]
lang-mermaid = ["lumis-core/lang-mermaid"]
lang-markdown = ["dep:tree-sitter-md", "lumis-core/lang-markdown"]
lang-markdown-inline = ["dep:tree-sitter-md", "lumis-core/lang-markdown-inline"]
lang-nginx = ["dep:tree-sitter-nginx", "lumis-core/lang-nginx"]
lang-nim = ["lumis-core/lang-nim"]
lang-nix = ["dep:tree-sitter-nix", "lumis-core/lang-nix"]
lang-nushell = ["lumis-core/lang-nushell"]
lang-objc = ["dep:tree-sitter-objc", "lumis-core/lang-objc"]
lang-ocaml = ["dep:tree-sitter-ocaml", "lumis-core/lang-ocaml"]
lang-pascal = ["dep:tree-sitter-pascal", "lumis-core/lang-pascal"]
lang-perl = ["lumis-core/lang-perl"]
lang-php = ["dep:tree-sitter-php", "lumis-core/lang-php"]
lang-powershell = ["dep:tree-sitter-powershell", "lumis-core/lang-powershell"]
lang-prisma = ["lumis-core/lang-prisma"]
lang-protobuf = ["lumis-core/lang-protobuf"]
lang-puppet = ["dep:tree-sitter-puppet", "lumis-core/lang-puppet"]
lang-python = ["dep:tree-sitter-python", "lumis-core/lang-python"]
lang-qmljs = ["dep:tree-sitter-qmljs", "lumis-core/lang-qmljs"]
lang-r = ["dep:tree-sitter-r", "lumis-core/lang-r"]
lang-racket = ["dep:tree-sitter-racket", "lumis-core/lang-racket"]
lang-regex = ["dep:tree-sitter-regex", "lumis-core/lang-regex"]
lang-rst = ["dep:tree-sitter-rst", "lumis-core/lang-rst"]
lang-ruby = ["dep:tree-sitter-ruby", "lumis-core/lang-ruby"]
lang-rust = ["dep:tree-sitter-rust", "lumis-core/lang-rust"]
lang-scala = ["dep:tree-sitter-scala", "lumis-core/lang-scala"]
lang-scss = ["lumis-core/lang-scss"]
lang-scheme = ["dep:tree-sitter-scheme", "lumis-core/lang-scheme"]
lang-sql = ["dep:tree-sitter-sequel", "lumis-core/lang-sql"]
lang-solidity = ["dep:tree-sitter-solidity", "lumis-core/lang-solidity"]
lang-surface = ["lumis-core/lang-surface"]
lang-svelte = ["dep:tree-sitter-svelte-ng", "lumis-core/lang-svelte"]
lang-swift = ["dep:tree-sitter-swift", "lumis-core/lang-swift"]
lang-systemverilog = ["dep:tree-sitter-systemverilog", "lumis-core/lang-systemverilog"]
lang-tcl = ["lumis-core/lang-tcl"]
lang-terraform = ["lumis-core/lang-terraform"]
lang-toml = ["dep:tree-sitter-toml-ng", "lumis-core/lang-toml"]
lang-tsx = ["dep:tree-sitter-typescript", "lumis-core/lang-tsx"]
lang-typescript = ["dep:tree-sitter-typescript", "lumis-core/lang-typescript"]
lang-typst = ["dep:codebook-tree-sitter-typst", "lumis-core/lang-typst"]
lang-vim = ["lumis-core/lang-vim"]
lang-vhdl = ["dep:tree-sitter-vhdl", "lumis-core/lang-vhdl"]
lang-vue = ["lumis-core/lang-vue"]
lang-wat = ["lumis-core/lang-wat"]
lang-wgsl = ["lumis-core/lang-wgsl"]
lang-xml = ["dep:tree-sitter-xml", "lumis-core/lang-xml"]
lang-yaml = ["dep:tree-sitter-yaml", "lumis-core/lang-yaml"]
lang-zig = ["dep:tree-sitter-zig", "lumis-core/lang-zig"]
lang-zsh = ["dep:tree-sitter-zsh", "lumis-core/lang-zsh"]

[dependencies]
lumis-core = { path = "../lumis-core", version = ">=0.0.1", default-features = false }
anyhow = "1.0"
derive_builder = "0.20"
glob = "0.3"
regex = "1.12"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
smol_str = "0.3"
streaming-iterator = "0.1"
termcolor = "1.4"
thiserror = "2"
tree-sitter = "^0.26"
tree-sitter-asm = { version = "0.24.0", optional = true }
tree-sitter-arduino = { version = "0.24.0", optional = true }
tree-sitter-bash = { version = "0.25.1", optional = true }
tree-sitter-bicep = { version = "1.1.0", optional = true }
tree-sitter-c = { version = "0.24.1", optional = true }
tree-sitter-caddy = { version = "0.1.0", optional = true }
tree-sitter-clojure-orchard = { version = "0.2.5", optional = true }
tree-sitter-commonlisp = { version = "0.4.1", optional = true }
tree-sitter-c-sharp = { version = "0.23.1", optional = true }
tree-sitter-cmake = { version = "0.7.1", optional = true }
tree-sitter-comment = { version = "0.3.0", optional = true }
tree-sitter-cpp = { version = "0.23.4", optional = true }
tree-sitter-css = { version = "0.25.0", optional = true }
tree-sitter-d = { version = "0.8.2", optional = true }
tree-sitter-diff = "0.1.0"
tree-sitter-elixir = { version = "0.3.5", optional = true }
tree-sitter-elm = { version = "5.9.0", optional = true }
tree-sitter-embedded-template = { version = "0.25.0", optional = true }
tree-sitter-erlang = { version = "0.15.0", optional = true }
tree-sitter-fish = { version = "3.6.0", optional = true }
tree-sitter-fsharp = { version = "0.2.2", optional = true }
tree-sitter-fortran = { version = "0.5.1", optional = true }
tree-sitter-gleam = { version = "1.0.0", optional = true }
tree-sitter-go = { version = "0.25.0", optional = true }
tree-sitter-glsl = { version = "0.2.0", optional = true }
tree-sitter-graphql = { version = "0.1.0", optional = true }
tree-sitter-haskell = { version = "0.23.1", optional = true }
tree-sitter-hcl = { version = "1.1.0", optional = true }
tree-sitter-heex = { version = "0.8.1", optional = true }
tree-sitter-highlight = "^0.26"
tree-sitter-html = { version = "0.23.2", optional = true }
tree-sitter-ini = { version = "1.4.0", optional = true }
tree-sitter-java = { version = "0.23.5", optional = true }
tree-sitter-javascript = { version = "0.25.0", optional = true }
tree-sitter-javadoc = { version = "0.3.1", optional = true }
tree-sitter-jinja = { version = "0.11.1", optional = true }
tree-sitter-json = { version = "0.24.8", optional = true }
tree-sitter-julia = { version = "0.23.1", optional = true }
tree-sitter-language = "0.1.7"
tree-sitter-llvm = { version = "1.1.0", optional = true }
tree-sitter-lua = { version = "0.5.0", optional = true }
tree-sitter-make = { version = "1.1.1", optional = true }
tree-sitter-matlab = { version = "1.3.0", optional = true }
tree-sitter-md = { version = "0.5.3", optional = true }
tree-sitter-nix = { version = "0.3.0", optional = true }
tree-sitter-nginx = { version = "1.0.1", optional = true }
tree-sitter-objc = { version = "3.0.2", optional = true }
tree-sitter-ocaml = { version = "0.24.2", optional = true }
tree-sitter-pascal = { version = "0.10.2", optional = true }
tree-sitter-php = { version = "0.24.2", optional = true }
tree-sitter-powershell = { version = "0.26.3", optional = true }
tree-sitter-puppet = { version = "1.3.0", optional = true }
codebook-tree-sitter-typst = { version = "0.12.1", optional = true }

tree-sitter-python = { version = "0.25.0", optional = true }
tree-sitter-qmljs = { version = "0.3.0", optional = true }
tree-sitter-r = { version = "1.2.0", optional = true }
tree-sitter-racket = { version = "0.24.7", optional = true }
tree-sitter-regex = { version = "0.25.0", optional = true }
tree-sitter-rst = { version = "0.2.0", optional = true }
tree-sitter-ruby = { version = "0.23.1", optional = true }
tree-sitter-rust = { version = "0.24.2", optional = true }
tree-sitter-scala = { version = "0.25.0", optional = true }
tree-sitter-scheme = { version = "0.24.7", optional = true }
tree-sitter-sequel = { version = "0.3.11", optional = true }

tree-sitter-solidity = { version = "1.2.13", optional = true }
tree-sitter-svelte-ng = { version = "1.0.2", optional = true }
tree-sitter-swift = { version = "0.7.1", optional = true }
tree-sitter-systemverilog = { version = "0.3.1", optional = true }
tree-sitter-toml-ng = { version = "0.7.0", optional = true }
tree-sitter-typescript = { version = "0.23.2", optional = true }
tree-sitter-vhdl = { version = "1.4.0", optional = true }
tree-sitter-xml = { version = "0.7.0", optional = true }
tree-sitter-yaml = { version = "0.7.2", optional = true }

tree-sitter-zig = { version = "1.1.2", optional = true }
tree-sitter-zsh = { version = "0.63.1", optional = true }
v_htmlescape = "0.15"

[build-dependencies]
cc = "1"
glob = "0.3"
lumis-build = { path = "../lumis-build", version = "0.0.1" }
prettyplease = "0.2"
proc-macro2 = "1"
quote = "1"
rayon = "1"
serde = { version = "1", features = ["derive"] }
syn = { version = "2.0", features = ["full", "parsing"] }
toml = "1.1"
xz2 = "0.1"

[dev-dependencies]
pretty_assertions = "1.4"
