From bdfae74f944771f0252dde6e41492e81fe6d8e74 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 12 Dec 2024 17:56:50 +0100 Subject: [PATCH] Squashed 'src/syntax/' changes from d5b5da5..ba10d89 ba10d89 Merge remote-tracking branch 'origin/master' 0b0cb14 feat: add mail file type support eda5f22 feat: add descriptive names for file types 5be7cbf feat: add xml formatter 2dd75f9 feat: add pyi to python file extensions cba2de6 Merge remote-tracking branch 'origin/master' 017c727 feat: add odin support 78f312e feat: add cmake support be71fff feat: add cmake support 40e4f73 feat: add expand/shrink_selection and select_next/prev_sibling commands 3e42e08 refactor: run zig fmt 9eb5c4c fix: add --stdin to gleam format 2345f2f feat: add gleam formatter 76c493d feat: add gleam to file types 66a5663 feat: update tree-sitter to add gleam support 3673787 feat: add julia support d91691c fix: remove obsolete and broken syntax.refresh function e7401e0 feat: add syntax.refresh_from_string utility function 812b66f fix: add swiftinterface as a swift file extension b0b6e46 feat: add support for the swift language dcfa5cd feat: add hare to syntax file types b5c309f build: update tree-sitter for new zig parser and hare support dbdc9a8 feat: add go formatter to file types d5fcdb1 feat: add ruby lsp to file type config b2a2981 fix: typo in first line match for file type python 71fdb49 fix: prefer to treat .h files as c++ 0498ae3 refactor: zig fmt all source files 57dfa2e feat: add command to toggle syntax highlighting (S-F10) b31fb25 feat: make --no-syntax just disable syntax highlighting and not language server support git-subtree-dir: src/syntax git-subtree-split: ba10d89670e19004bd3b958a407afc087c33ca9f --- build.zig | 11 ++++ build.zig.zon | 4 +- src/file_type.zig | 2 + src/file_types.zig | 129 +++++++++++++++++++++++++++++++++++++++++++-- src/syntax.zig | 71 ++++++++++++++++++++----- 5 files changed, 199 insertions(+), 18 deletions(-) diff --git a/build.zig b/build.zig index e94b729..81ce4d5 100644 --- a/build.zig +++ b/build.zig @@ -17,6 +17,7 @@ pub fn build(b: *std.Build) void { const imports: []const std.Build.Module.Import = if (use_tree_sitter) &.{ .{ .name = "build_options", .module = options_mod }, .{ .name = "treez", .module = tree_sitter_dep.module("treez") }, + ts_queryfile(b, tree_sitter_dep, "queries/cmake/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-agda/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-bash/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-c-sharp/queries/highlights.scm"), @@ -28,16 +29,20 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, "tree-sitter-elixir/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-git-rebase/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-gitcommit/queries/highlights.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-gleam/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-go/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-fish/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-haskell/queries/highlights.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-hare/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-html/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-java/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-javascript/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-jsdoc/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-json/queries/highlights.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-julia/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-kdl/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-lua/queries/highlights.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-mail/queries/mail/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-make/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-markdown/tree-sitter-markdown/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-markdown/tree-sitter-markdown-inline/queries/highlights.scm"), @@ -47,6 +52,7 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, "tree-sitter-nix/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-nu/queries/nu/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-ocaml/queries/highlights.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-odin/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-openscad/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-org/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-php/queries/highlights.scm"), @@ -59,6 +65,7 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, "tree-sitter-scala/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-scheme/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-superhtml/tree-sitter-superhtml/queries/highlights.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-swift/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-toml/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-typescript/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-typst/queries/typst/highlights.scm"), @@ -70,9 +77,11 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, "tree-sitter-ziggy/tree-sitter-ziggy/queries/highlights.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-ziggy/tree-sitter-ziggy-schema/queries/highlights.scm"), + ts_queryfile(b, tree_sitter_dep, "queries/cmake/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-cpp/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-elixir/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-gitcommit/queries/injections.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-hare/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-html/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-javascript/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-kdl/queries/injections.scm"), @@ -82,12 +91,14 @@ pub fn build(b: *std.Build) void { ts_queryfile(b, tree_sitter_dep, "tree-sitter-nasm/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-nix/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-nu/queries/nu/injections.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-odin/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-openscad/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-php/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-purescript/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-purescript/vim_queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-rust/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-superhtml/tree-sitter-superhtml/queries/injections.scm"), + ts_queryfile(b, tree_sitter_dep, "tree-sitter-swift/queries/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-typst/queries/typst/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-vim/queries/vim/injections.scm"), ts_queryfile(b, tree_sitter_dep, "tree-sitter-zig/queries/injections.scm"), diff --git a/build.zig.zon b/build.zig.zon index 905ebd3..d5171f5 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -4,8 +4,8 @@ .dependencies = .{ .@"tree-sitter" = .{ - .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-876cc5a125cb822d44a9f94f6bde64fac66272ce/source.tar.gz", - .hash = "12208efbfead8c57adeabbd2293d6ed19e00f769e1d8aba0d544270479587c9f694a", + .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-aea6072c6178d5cd0c97fff33e130f632f355bc2/source.tar.gz", + .hash = "12204c99c6093230023380068f386f7eb32ab83df9a8eb8b586ffe5aa44afa34ff0e", }, }, .paths = .{ diff --git a/src/file_type.zig b/src/file_type.zig index b27a0f9..dfecb1b 100644 --- a/src/file_type.zig +++ b/src/file_type.zig @@ -11,6 +11,7 @@ pub const FileType = @This(); color: u24, icon: []const u8, name: []const u8, +description: []const u8, lang_fn: LangFn, extensions: []const []const u8, highlights: [:0]const u8, @@ -119,6 +120,7 @@ fn load_file_types(comptime Namespace: type) []const FileType { .color = if (@hasField(@TypeOf(args), "color")) args.color else 0xffffff, .icon = if (@hasField(@TypeOf(args), "icon")) args.icon else "󱀫", .name = lang, + .description = args.description, .lang_fn = if (@hasField(@TypeOf(args), "parser")) args.parser else get_parser(lang), .extensions = vec(args.extensions), .comment = args.comment, diff --git a/src/file_types.zig b/src/file_types.zig index 284c857..c0b47c3 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -1,9 +1,11 @@ pub const agda = .{ + .description = "Agda", .extensions = .{"agda"}, .comment = "--", }; pub const bash = .{ + .description = "Bash", .color = 0x3e474a, .icon = "󱆃", .extensions = .{ "sh", "bash", ".profile" }, @@ -14,14 +16,16 @@ pub const bash = .{ }; pub const c = .{ + .description = "C", .icon = "", - .extensions = .{ "c", "h" }, + .extensions = .{"c"}, .comment = "//", .formatter = .{"clang-format"}, .language_server = .{"clangd"}, }; pub const @"c-sharp" = .{ + .description = "C#", .color = 0x68217a, .icon = "󰌛", .extensions = .{"cs"}, @@ -30,6 +34,7 @@ pub const @"c-sharp" = .{ }; pub const conf = .{ + .description = "Config", .color = 0x000000, .icon = "", .extensions = .{ "conf", "config", ".gitconfig" }, @@ -38,7 +43,20 @@ pub const conf = .{ .parser = fish.parser, }; +pub const cmake = .{ + .description = "CMake", + .color = 0x004078, + .icon = "", + .extensions = .{ "CMakeLists.txt", "cmake", "cmake.in" }, + .comment = "#", + .highlights = "queries/cmake/highlights.scm", + .injections = "queries/cmake/injections.scm", + .formatter = .{"cmake-format"}, + .language_server = .{"cmake-language-server"}, +}; + pub const cpp = .{ + .description = "C++", .color = 0x9c033a, .icon = "", .extensions = .{ "cc", "cpp", "cxx", "hpp", "hxx", "h", "ipp", "ixx" }, @@ -53,6 +71,7 @@ pub const cpp = .{ }; pub const css = .{ + .description = "CSS", .color = 0x3d8fc6, .icon = "󰌜", .extensions = .{"css"}, @@ -60,11 +79,13 @@ pub const css = .{ }; pub const diff = .{ + .description = "Diff", .extensions = .{ "diff", "patch" }, .comment = "#", }; pub const dockerfile = .{ + .description = "Docker", .color = 0x019bc6, .icon = "", .extensions = .{ "Dockerfile", "dockerfile", "docker", "Containerfile", "container" }, @@ -72,6 +93,7 @@ pub const dockerfile = .{ }; pub const dtd = .{ + .description = "DTD", .icon = "󰗀", .extensions = .{"dtd"}, .comment = "