diff --git a/build.zig b/build.zig index 8e73488..c51ab40 100644 --- a/build.zig +++ b/build.zig @@ -49,7 +49,6 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-c/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-cpp/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-css/queries/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "queries/d/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-diff/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-dockerfile/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-elixir/queries/highlights.scm"); @@ -71,7 +70,7 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-julia/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-kdl/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-lua/queries/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-mail/queries/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-mail/queries/mail/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-make/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-markdown/tree-sitter-markdown/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-markdown/tree-sitter-markdown-inline/queries/highlights.scm"); @@ -93,10 +92,8 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-proto/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-python/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-purescript/queries/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-query/queries/query/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-regex/queries/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-rpmspec/rpmbash/queries/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-rpmspec/rpmspec/queries/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-rpmspec/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-ruby/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-rust/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-ssh-config/queries/highlights.scm"); @@ -116,20 +113,16 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-zig/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-ziggy/tree-sitter-ziggy/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-ziggy/tree-sitter-ziggy-schema/queries/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/systemverilog/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/comment/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/commonlisp/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/latex/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/llvm/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/hcl/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/hurl/highlights.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/rst/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/verilog/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/commonlisp/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/latex/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/hcl/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/rst/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "queries/cmake/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-asm/queries/asm/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-astro/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-cpp/queries/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "queries/d/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-elixir/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-elm/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-fsharp/queries/injections.scm"); @@ -154,8 +147,6 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-po/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-purescript/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-purescript/vim_queries/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-query/queries/query/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-rpmspec/rpmspec/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-rust/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-superhtml/tree-sitter-superhtml/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-swift/queries/injections.scm"); @@ -163,13 +154,11 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-uxntal/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-vim/queries/vim/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-zig/queries/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/systemverilog/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/commonlisp/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/latex/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/llvm/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/hcl/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/hurl/injections.scm"); - ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/runtime/queries/rst/injections.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/verilog/injections.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/commonlisp/injections.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/latex/injections.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/hcl/injections.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "nvim-treesitter/queries/rst/injections.scm"); const syntax_mod = b.addModule("syntax", .{ .root_source_file = b.path("src/syntax.zig"), diff --git a/build.zig.zon b/build.zig.zon index 0ac1327..aea837a 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -6,8 +6,8 @@ .dependencies = .{ .tree_sitter = .{ - .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-4f6c39ab6e313122b43957bc555377318bfa51f0/source.tar.gz", - .hash = "tree_sitter-0.26.7-z0LhyEjBnzDRrCtuKtQrrkdtSIO5v8dE8ildxwOrWcGt", + .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-772776d4a090b2d08b10834ab623d8d40c75a3b0/source.tar.gz", + .hash = "tree_sitter-0.22.4-150-g7e3f5726-z0LhyLF0iTBSKlZFqwf9kbYT1ENCbCFYp9XoKpZUrm2v", }, .cbor = .{ .url = "git+https://github.com/neurocyte/cbor?ref=master#7d2eeb68c8a2fb3f4d6baad6cc04c521b92974c0", diff --git a/src/file_types.zig b/src/file_types.zig index e74fe16..60ca3ea 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -54,14 +54,6 @@ pub const @"c-sharp" = .{ .comment = "//", }; -pub const comment = .{ - .description = "Comment tags", - .icon = "#", - .extensions = .{}, - .comment = "#", - .highlights = "nvim-treesitter/runtime/queries/comment/highlights.scm", -}; - pub const conf = .{ .description = "Config", .color = 0x000000, @@ -113,16 +105,6 @@ pub const css = .{ .comment = "//", }; -pub const d = .{ - .description = "D", - .color = 0xF54927, - .icon = "", - .extensions = .{ "d", "di" }, - .comment = "//", - .highlights = "queries/d/highlights.scm", - .injections = "queries/d/injections.scm", -}; - pub const diff = .{ .description = "Diff", .extensions = .{ "diff", "patch", "rej" }, @@ -232,8 +214,8 @@ pub const hcl = .{ .icon = "", .extensions = .{ "hcl", "tf", "tfvars" }, .comment = "#", - .highlights = "nvim-treesitter/runtime/queries/hcl/highlights.scm", - .injections = "nvim-treesitter/runtime/queries/hcl/injections.scm", + .highlights = "nvim-treesitter/queries/hcl/highlights.scm", + .injections = "nvim-treesitter/queries/hcl/injections.scm", }; pub const html = .{ @@ -261,8 +243,7 @@ pub const hurl = .{ .icon = "", .extensions = .{"hurl"}, .comment = "#", - .highlights = "nvim-treesitter/runtime/queries/hurl/highlights.scm", - .injections = "nvim-treesitter/runtime/queries/hurl/injections.scm", + .injections = "tree-sitter-hurl/queries/injections.scm", }; pub const java = .{ @@ -318,8 +299,8 @@ pub const latex = .{ .icon = "", .extensions = .{ "tex", "aux", "sty", "cls" }, .comment = "%", - .highlights = "nvim-treesitter/runtime/queries/latex/highlights.scm", - .injections = "nvim-treesitter/runtime/queries/latex/injections.scm", + .highlights = "nvim-treesitter/queries/latex/highlights.scm", + .injections = "nvim-treesitter/queries/latex/injections.scm", }; pub const commonlisp = .{ @@ -328,17 +309,8 @@ pub const commonlisp = .{ .icon = "", .extensions = .{ "lisp", "ls", "el" }, .comment = ";", - .highlights = "nvim-treesitter/runtime/queries/commonlisp/highlights.scm", - .injections = "nvim-treesitter/runtime/queries/commonlisp/injections.scm", -}; - -pub const llvm = .{ - .description = "Llvm", - .icon = "", - .extensions = .{ "llvm", "ll" }, - .comment = ";", - .highlights = "nvim-treesitter/runtime/queries/llvm/highlights.scm", - .injections = "nvim-treesitter/runtime/queries/llvm/injections.scm", + .highlights = "nvim-treesitter/queries/commonlisp/highlights.scm", + .injections = "nvim-treesitter/queries/commonlisp/injections.scm", }; pub const lua = .{ @@ -356,6 +328,7 @@ pub const mail = .{ .icon = "󰇮", .extensions = .{ "eml", "mbox" }, .comment = ">", + .highlights = "tree-sitter-mail/queries/mail/highlights.scm", .first_line_matches = FirstLineMatch{ .prefix = "From" }, }; @@ -562,31 +535,20 @@ pub const regex = .{ .comment = "#", }; -pub const rpmbash = .{ - .description = "RPM spec (bash)", - .color = 0xff0000, - .icon = "󱄛", - .extensions = .{}, - .comment = "#", - .highlights = "tree-sitter-rpmspec/rpmbash/queries/highlights.scm", -}; - pub const rpmspec = .{ .description = "RPM spec", .color = 0xff0000, .icon = "󱄛", .extensions = .{"spec"}, .comment = "#", - .highlights = "tree-sitter-rpmspec/rpmspec/queries/highlights.scm", - .injections = "tree-sitter-rpmspec/rpmspec/queries/injections.scm", }; pub const rst = .{ .description = "reStructuredText", .extensions = .{"rst"}, .comment = "..", - .highlights = "nvim-treesitter/runtime/queries/rst/highlights.scm", - .injections = "nvim-treesitter/runtime/queries/rst/injections.scm", + .highlights = "nvim-treesitter/queries/rst/highlights.scm", + .injections = "nvim-treesitter/queries/rst/injections.scm", }; pub const ruby = .{ @@ -606,17 +568,9 @@ pub const rust = .{ .injections = "tree-sitter-rust/queries/injections.scm", }; -pub const query = .{ - .description = "Query (tree-sitter)", - .extensions = .{"scm"}, - .comment = ";", - .highlights = "tree-sitter-query/queries/query/highlights.scm", - .injections = "tree-sitter-query/queries/query/injections.scm", -}; - pub const scheme = .{ .description = "Scheme", - .extensions = .{ "scm", "ss", "scheme" }, + .extensions = .{ "scm", "ss" }, .comment = ";", }; @@ -641,12 +595,12 @@ pub const swift = .{ .comment = "//", }; -pub const systemverilog = .{ +pub const verilog = .{ .description = "SystemVerilog", .extensions = .{ "sv", "svh", "v", "vh" }, .comment = "//", - .highlights = "nvim-treesitter/runtime/queries/systemverilog/highlights.scm", - .injections = "nvim-treesitter/runtime/queries/systemverilog/injections.scm", + .highlights = "nvim-treesitter/queries/verilog/highlights.scm", + .injections = "nvim-treesitter/queries/verilog/injections.scm", }; pub const toml = .{ diff --git a/src/ts_bin_query_gen.zig b/src/ts_bin_query_gen.zig index a265abe..a618a58 100644 --- a/src/ts_bin_query_gen.zig +++ b/src/ts_bin_query_gen.zig @@ -33,28 +33,10 @@ pub fn main() anyerror!void { for (file_types) |file_type| { const lang = file_type.lang_fn() orelse std.debug.panic("tree-sitter parser function failed for language: {s}", .{file_type.name}); - const lang_abi = lang.getLanguageAbiVersion(); - if (lang_abi < treez.TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION) - std.debug.panic("tree-sitter language '{s}' API is too old: {d} (our MIN API:{d})", .{ - lang.getLanguageName(), - lang_abi, - treez.TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION, - }); - if (lang_abi > treez.TREE_SITTER_LANGUAGE_VERSION) - std.debug.panic("tree-sitter language '{s}' API is too new: {d} (our API:{d})", .{ - lang.getLanguageName(), - lang_abi, - treez.TREE_SITTER_LANGUAGE_VERSION, - }); - try cbor.writeValue(writer, file_type.name); try cbor.writeMapHeader(writer, if (file_type.injections) |_| 3 else 2); - var error_offset: u32 = 0; - const highlights_in = treez.Query.create(lang, file_type.highlights, &error_offset) catch |e| switch (e) { - error.InvalidLanguage => std.debug.panic("tree-sitter invalid language error: {s}", .{file_type.name}), - else => |e_| std.debug.panic("tree-sitter failed to read highlights: {s} -> {t} at pos {d}", .{ file_type.name, e_, error_offset }), - }; + const highlights_in = try treez.Query.create(lang, file_type.highlights); const ts_highlights_in: *tss.TSQuery = @ptrCast(@alignCast(highlights_in)); const highlights_cb = try tss.toCbor(ts_highlights_in, allocator); @@ -65,7 +47,7 @@ pub fn main() anyerror!void { if (verbose) std.log.info("file_type {s} highlights {d} bytes", .{ file_type.name, highlights_cb.len }); - const errors_in = try treez.Query.create(lang, "(ERROR) @error", &error_offset); + const errors_in = try treez.Query.create(lang, "(ERROR) @error"); const ts_errors_in: *tss.TSQuery = @ptrCast(@alignCast(errors_in)); const errors_cb = try tss.toCbor(ts_errors_in, allocator); @@ -77,10 +59,7 @@ pub fn main() anyerror!void { std.log.info("file_type {s} errors {d} bytes", .{ file_type.name, errors_cb.len }); if (file_type.injections) |injections| { - const injections_in = treez.Query.create(lang, injections, &error_offset) catch |e| switch (e) { - error.InvalidLanguage => std.debug.panic("tree-sitter invalid language error: {s}", .{file_type.name}), - else => |e_| std.debug.panic("tree-sitter failed to read injections: {s} -> {t} at pos {d}", .{ file_type.name, e_, error_offset }), - }; + const injections_in = try treez.Query.create(lang, injections); const ts_injections_in: *tss.TSQuery = @ptrCast(@alignCast(injections_in)); const injections_cb = try tss.toCbor(ts_injections_in, allocator); diff --git a/src/ts_serializer.zig b/src/ts_serializer.zig index 79a1a70..02c6daa 100644 --- a/src/ts_serializer.zig +++ b/src/ts_serializer.zig @@ -171,12 +171,11 @@ pub const QueryStep = extern struct { // is_last_child: u1, // is_pass_through: u1, // is_dead_end: u1, - // is_inside_alternation: u1, + // alternative_is_immediate: u1, // contains_captures: u1, // root_pattern_guaranteed: u1, flags8: u8, // parent_pattern_guaranteed: u1, - // is_missing: u1, flags16: u8, pub fn cborEncode(self: *const @This(), writer: *Io.Writer) !void {