diff --git a/build.zig b/build.zig index b67031e..8e73488 100644 --- a/build.zig +++ b/build.zig @@ -2,6 +2,7 @@ const std = @import("std"); pub fn build(b: *std.Build) void { const use_tree_sitter = b.option(bool, "use_tree_sitter", "Enable tree-sitter (default: yes)") orelse true; + const use_llvm = b.option(bool, "use_llvm", "Enable llvm backend (default: none)"); const options = b.addOptions(); options.addOption(bool, "use_tree_sitter", use_tree_sitter); const options_mod = options.createModule(); @@ -29,6 +30,10 @@ pub fn build(b: *std.Build) void { .optimize = .Debug, }), }); + if (use_llvm) |value| { + ts_bin_query_gen.use_llvm = value; + ts_bin_query_gen.use_lld = value; + } ts_bin_query_gen.linkLibC(); ts_bin_query_gen.root_module.addImport("cbor", cbor_dep.module("cbor")); ts_bin_query_gen.root_module.addImport("treez", tree_sitter_host_dep.module("treez")); @@ -36,6 +41,7 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "queries/cmake/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-agda/queries/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-asm/queries/asm/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-astro/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-awk/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-bash/queries/highlights.scm"); @@ -43,6 +49,7 @@ 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"); @@ -64,7 +71,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/mail/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-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"); @@ -74,6 +81,7 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-ninja/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-nix/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-nu/queries/nu/highlights.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-objc/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-ocaml/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-odin/queries/highlights.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-openscad/queries/highlights.scm"); @@ -85,8 +93,10 @@ 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/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-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"); @@ -106,15 +116,20 @@ 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/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, "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, "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"); @@ -131,6 +146,7 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-nickel/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-nix/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-nu/queries/nu/injections.scm"); + ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-objc/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-odin/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-openscad/queries/injections.scm"); ts_queryfile(b, tree_sitter_dep, ts_bin_query_gen, "tree-sitter-perl/queries/injections.scm"); @@ -138,6 +154,8 @@ 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"); @@ -145,11 +163,13 @@ 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/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"); + 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"); 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 7bb39ac..9dfb24c 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,13 +1,13 @@ .{ .name = .flow_syntax, - .version = "0.6.0", + .version = "0.7.2", .fingerprint = 0x3ba2584ea1cec85f, .minimum_zig_version = "0.15.2", .dependencies = .{ .tree_sitter = .{ - .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-6e2827ee231e220467bf04d2a2746faff5cb204a/source.tar.gz", - .hash = "tree_sitter-0.22.4-150-g7e3f5726-z0LhyGeG1y67PeOltaplVkxRNT2jMMexQhbUlrh0vdxM", + .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-8019244129e071aaefc4d2eeccd94abbc8858319/source.tar.gz", + .hash = "tree_sitter-0.26.7-z0LhyJlMmjAIlq51UWa5D5S-xDgnlqcDBLLt6UURMhtm", }, .cbor = .{ .url = "git+https://github.com/neurocyte/cbor?ref=master#7d2eeb68c8a2fb3f4d6baad6cc04c521b92974c0", diff --git a/src/QueryCache.zig b/src/QueryCache.zig index 7b011d5..24f6436 100644 --- a/src/QueryCache.zig +++ b/src/QueryCache.zig @@ -190,6 +190,6 @@ fn deserialize_query(query_bin: []const u8, language: ?*const treez.Language, al var ts_query_out, const arena = try tss.fromCbor(query_bin, allocator); ts_query_out.language = @intFromPtr(language); - const query_out: *Query = @alignCast(@ptrCast(ts_query_out)); + const query_out: *Query = @ptrCast(@alignCast(ts_query_out)); return .{ query_out, arena }; } diff --git a/src/file_types.zig b/src/file_types.zig index 8bd7055..e74fe16 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -7,6 +7,15 @@ pub const agda = .{ .comment = "--", }; +pub const @"asm" = .{ + .description = "Assembly (asm)", + .icon = "", + .extensions = .{ "s", "asm", "assembly" }, + .comment = "#", + .highlights = "tree-sitter-asm/queries/asm/highlights.scm", + .injections = "tree-sitter-asm/queries/asm/injections.scm", +}; + pub const astro = .{ .description = "Astro", .icon = "", @@ -17,7 +26,7 @@ pub const astro = .{ pub const awk = .{ .description = "Awk", .icon = "", - .extensions = .{"awk", "gawk"}, + .extensions = .{ "awk", "gawk" }, .comment = "#", }; @@ -45,6 +54,14 @@ 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, @@ -96,6 +113,16 @@ 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" }, @@ -131,7 +158,7 @@ pub const elm = .{ .description = "Elm", .color = 0x0e76ad, .icon = "", - .extensions = .{ "elm" }, + .extensions = .{"elm"}, .comment = "--", .injections = "tree-sitter-elm/queries/injections.scm", }; @@ -205,8 +232,8 @@ pub const hcl = .{ .icon = "", .extensions = .{ "hcl", "tf", "tfvars" }, .comment = "#", - .highlights = "nvim-treesitter/queries/hcl/highlights.scm", - .injections = "nvim-treesitter/queries/hcl/injections.scm", + .highlights = "nvim-treesitter/runtime/queries/hcl/highlights.scm", + .injections = "nvim-treesitter/runtime/queries/hcl/injections.scm", }; pub const html = .{ @@ -234,7 +261,8 @@ pub const hurl = .{ .icon = "", .extensions = .{"hurl"}, .comment = "#", - .injections = "tree-sitter-hurl/queries/injections.scm", + .highlights = "nvim-treesitter/runtime/queries/hurl/highlights.scm", + .injections = "nvim-treesitter/runtime/queries/hurl/injections.scm", }; pub const java = .{ @@ -254,6 +282,14 @@ pub const javascript = .{ .injections = "tree-sitter-javascript/queries/injections.scm", }; +pub const jsdoc = .{ + .description = "JSDoc", + .color = 0xf0db4f, + .icon = "󰌞", + .extensions = .{}, + .comment = "//", +}; + pub const json = .{ .description = "JSON", .extensions = .{"json"}, @@ -282,8 +318,8 @@ pub const latex = .{ .icon = "", .extensions = .{ "tex", "aux", "sty", "cls" }, .comment = "%", - .highlights = "nvim-treesitter/queries/latex/highlights.scm", - .injections = "nvim-treesitter/queries/latex/injections.scm", + .highlights = "nvim-treesitter/runtime/queries/latex/highlights.scm", + .injections = "nvim-treesitter/runtime/queries/latex/injections.scm", }; pub const commonlisp = .{ @@ -292,8 +328,17 @@ pub const commonlisp = .{ .icon = "", .extensions = .{ "lisp", "ls", "el" }, .comment = ";", - .highlights = "nvim-treesitter/queries/commonlisp/highlights.scm", - .injections = "nvim-treesitter/queries/commonlisp/injections.scm", + .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", }; pub const lua = .{ @@ -311,7 +356,6 @@ pub const mail = .{ .icon = "󰇮", .extensions = .{ "eml", "mbox" }, .comment = ">", - .highlights = "tree-sitter-mail/queries/mail/highlights.scm", .first_line_matches = FirstLineMatch{ .prefix = "From" }, }; @@ -325,7 +369,7 @@ pub const markdown = .{ .description = "Markdown", .color = 0x000000, .icon = "󰍔", - .extensions = .{"md", "smd"}, + .extensions = .{ "md", "smd" }, .comment = "