From b31fb25478ab3052b4dbfdeff686872683471c8a Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sat, 12 Oct 2024 19:56:51 +0200 Subject: [PATCH 01/21] feat: make --no-syntax just disable syntax highlighting and not language server support --- src/syntax.zig | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/syntax.zig b/src/syntax.zig index 6737389..e85d859 100644 --- a/src/syntax.zig +++ b/src/syntax.zig @@ -26,7 +26,7 @@ query: *Query, injections: *Query, tree: ?*treez.Tree = null, -pub fn create(file_type: *const FileType, allocator: std.mem.Allocator, content: []const u8) !*Self { +pub fn create(file_type: *const FileType, allocator: std.mem.Allocator) !*Self { const self = try allocator.create(Self); self.* = .{ .allocator = allocator, @@ -38,18 +38,17 @@ pub fn create(file_type: *const FileType, allocator: std.mem.Allocator, content: }; errdefer self.destroy(); try self.parser.setLanguage(self.lang); - try self.refresh_full(content); return self; } -pub fn create_file_type(allocator: std.mem.Allocator, content: []const u8, lang_name: []const u8) !*Self { +pub fn create_file_type(allocator: std.mem.Allocator, lang_name: []const u8) !*Self { const file_type = FileType.get_by_name(lang_name) orelse return error.NotFound; - return create(file_type, allocator, content); + return create(file_type, allocator); } pub fn create_guess_file_type(allocator: std.mem.Allocator, content: []const u8, file_path: ?[]const u8) !*Self { const file_type = FileType.guess(file_path, content) orelse return error.NotFound; - return create(file_type, allocator, content); + return create(file_type, allocator); } pub fn destroy(self: *Self) void { From 57dfa2ee9fcff515820de357ab1664e313aacb67 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sat, 12 Oct 2024 20:26:40 +0200 Subject: [PATCH 02/21] feat: add command to toggle syntax highlighting (S-F10) --- src/syntax.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/syntax.zig b/src/syntax.zig index e85d859..41a3e18 100644 --- a/src/syntax.zig +++ b/src/syntax.zig @@ -58,8 +58,15 @@ pub fn destroy(self: *Self) void { self.allocator.destroy(self); } +pub fn reset(self: *Self) void { + if (self.tree) |tree| { + tree.destroy(); + self.tree = null; + } +} + pub fn refresh_full(self: *Self, content: []const u8) !void { - if (self.tree) |tree| tree.destroy(); + self.reset(); self.tree = try self.parser.parseString(null, content); } From 0498ae319459f60e4fba79c77c64e0ce5902a8d3 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 14 Oct 2024 12:16:00 +0200 Subject: [PATCH 03/21] refactor: zig fmt all source files --- src/file_types.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file_types.zig b/src/file_types.zig index 284c857..710e5f0 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -252,7 +252,7 @@ pub const nu = .{ .icon = ">", .extensions = .{ "nu", "nushell" }, .comment = "#", - .language_server = .{"nu", "--lsp"}, + .language_server = .{ "nu", "--lsp" }, .highlights = "tree-sitter-nu/queries/nu/highlights.scm", .injections = "tree-sitter-nu/queries/nu/injections.scm", }; From 71fdb494610eb6c9d1cf81f824cf4d0a59a48c83 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 14 Oct 2024 12:37:33 +0200 Subject: [PATCH 04/21] fix: prefer to treat .h files as c++ --- src/file_types.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file_types.zig b/src/file_types.zig index 710e5f0..7413d28 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -15,7 +15,7 @@ pub const bash = .{ pub const c = .{ .icon = "", - .extensions = .{ "c", "h" }, + .extensions = .{"c"}, .comment = "//", .formatter = .{"clang-format"}, .language_server = .{"clangd"}, From b2a2981683d531eb0ed345c6e75cb75b35c981f0 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 16 Oct 2024 11:31:57 +0200 Subject: [PATCH 05/21] fix: typo in first line match for file type python --- src/file_types.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file_types.zig b/src/file_types.zig index 7413d28..f2fc04f 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -302,7 +302,7 @@ pub const python = .{ .icon = "󰌠", .extensions = .{"py"}, .comment = "#", - .first_line_matches = .{ .prefix = "#!", .content = "/bin/bash" }, + .first_line_matches = .{ .prefix = "#!", .content = "python" }, .language_server = .{"pylsp"}, }; From d5fcdb136892b29f3147c9a0807889b368e434a2 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 16 Oct 2024 11:53:26 +0200 Subject: [PATCH 06/21] feat: add ruby lsp to file type config --- src/file_types.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/file_types.zig b/src/file_types.zig index f2fc04f..e8e190b 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -316,6 +316,7 @@ pub const ruby = .{ .icon = "󰴭", .extensions = .{"rb"}, .comment = "#", + .language_server = .{"ruby-lsp"}, }; pub const rust = .{ From dbdc9a8ce9df9aba5ab68890779b4fb56817d4d0 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 16 Oct 2024 12:37:17 +0200 Subject: [PATCH 07/21] feat: add go formatter to file types --- src/file_types.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/file_types.zig b/src/file_types.zig index e8e190b..a75b3e9 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -116,6 +116,7 @@ pub const go = .{ .extensions = .{"go"}, .comment = "//", .language_server = .{"gopls"}, + .formatter = .{ "gofmt" }, }; pub const haskell = .{ From b5c309f5483aaa2f06063828c3dcdb8a04edc976 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 21 Oct 2024 13:28:05 +0200 Subject: [PATCH 08/21] build: update tree-sitter for new zig parser and hare support --- build.zig.zon | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index 905ebd3..3d96ed4 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-6805196e3061de9324c09b2829a3ffd44ff51217/source.tar.gz", + .hash = "1220698603b3a7f18603872d906940a599c524e7ecb37562feaa07f995d9c3b38f84", }, }, .paths = .{ From dcfa5cdf3f1f48411dc3c7ab8be26b7561673850 Mon Sep 17 00:00:00 2001 From: xdBronch <51252236+xdBronch@users.noreply.github.com> Date: Thu, 17 Oct 2024 20:47:08 -0400 Subject: [PATCH 09/21] feat: add hare to syntax file types --- build.zig | 2 ++ src/file_types.zig | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/build.zig b/build.zig index e94b729..beff888 100644 --- a/build.zig +++ b/build.zig @@ -31,6 +31,7 @@ pub fn build(b: *std.Build) void { 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"), @@ -73,6 +74,7 @@ pub fn build(b: *std.Build) void { 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"), diff --git a/src/file_types.zig b/src/file_types.zig index a75b3e9..c07bcc8 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -116,7 +116,12 @@ pub const go = .{ .extensions = .{"go"}, .comment = "//", .language_server = .{"gopls"}, - .formatter = .{ "gofmt" }, + .formatter = .{"gofmt"}, +}; + +pub const hare = .{ + .extensions = .{"ha"}, + .comment = "//", }; pub const haskell = .{ From b0b6e4694f6d2e16a97e9eb5a66084c0c2a5f8eb Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 28 Oct 2024 18:46:04 +0100 Subject: [PATCH 10/21] feat: add support for the swift language --- build.zig | 2 ++ build.zig.zon | 4 ++-- src/file_types.zig | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/build.zig b/build.zig index beff888..0796fb6 100644 --- a/build.zig +++ b/build.zig @@ -60,6 +60,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"), @@ -90,6 +91,7 @@ pub fn build(b: *std.Build) void { 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 3d96ed4..111e848 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-6805196e3061de9324c09b2829a3ffd44ff51217/source.tar.gz", - .hash = "1220698603b3a7f18603872d906940a599c524e7ecb37562feaa07f995d9c3b38f84", + .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-74949eca4342fcf7c9edef0dd611f6fb7bfa662f/source.tar.gz", + .hash = "12207077255900fc581f9ee88bdb2f7baa7c2bce32ba0b3c2c5a5207c7168fb6f56e", }, }, .paths = .{ diff --git a/src/file_types.zig b/src/file_types.zig index c07bcc8..ba8395c 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -344,6 +344,15 @@ pub const @"ssh-config" = .{ .comment = "#", }; +pub const swift = .{ + .color = 0xf05138, + .icon = "󰛥", + .extensions = .{ "swift" }, + .comment = "//", + .language_server = .{"sourcekit-lsp"}, + .formatter = .{ "swift-format" }, +}; + pub const toml = .{ .extensions = .{ "toml", "ini" }, .comment = "#", From 812b66f5cb0f92379519417ecf13e91f4a28a01f Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 28 Oct 2024 19:25:29 +0100 Subject: [PATCH 11/21] fix: add swiftinterface as a swift file extension --- src/file_types.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file_types.zig b/src/file_types.zig index ba8395c..da5b4aa 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -347,7 +347,7 @@ pub const @"ssh-config" = .{ pub const swift = .{ .color = 0xf05138, .icon = "󰛥", - .extensions = .{ "swift" }, + .extensions = .{ "swift", "swiftinterface" }, .comment = "//", .language_server = .{"sourcekit-lsp"}, .formatter = .{ "swift-format" }, From e7401e05c9fa5b008cc7ec9bcdc3eb67ac8c6a08 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 29 Oct 2024 20:42:00 +0100 Subject: [PATCH 12/21] feat: add syntax.refresh_from_string utility function --- src/syntax.zig | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/syntax.zig b/src/syntax.zig index 41a3e18..c348c14 100644 --- a/src/syntax.zig +++ b/src/syntax.zig @@ -111,6 +111,47 @@ pub fn refresh_from_buffer(self: *Self, buffer: anytype, metrics: anytype) !void self.tree = try self.parser.parse(old_tree, input); } +pub fn refresh_from_string(self: *Self, content: [:0]const u8) !void { + const old_tree = self.tree; + defer if (old_tree) |tree| tree.destroy(); + + const State = struct { + content: @TypeOf(content), + }; + var state: State = .{ + .content = content, + }; + + const input: Input = .{ + .payload = &state, + .read = struct { + fn read(payload: ?*anyopaque, _: u32, position: treez.Point, bytes_read: *u32) callconv(.C) [*:0]const u8 { + bytes_read.* = 0; + const ctx: *State = @ptrCast(@alignCast(payload orelse return "")); + const pos = (find_line_begin(ctx.content, position.row) orelse return "") + position.column; + if (pos >= ctx.content.len) return ""; + bytes_read.* = @intCast(ctx.content.len - pos); + return ctx.content[pos..].ptr; + } + }.read, + .encoding = .utf_8, + }; + self.tree = try self.parser.parse(old_tree, input); +} + +fn find_line_begin(s: []const u8, line: usize) ?usize { + var idx: usize = 0; + var at_line: usize = 0; + while (idx < s.len) { + if (at_line == line) + return idx; + if (s[idx] == '\n') + at_line += 1; + idx += 1; + } + return null; +} + fn CallBack(comptime T: type) type { return fn (ctx: T, sel: Range, scope: []const u8, id: u32, capture_idx: usize, node: *const Node) error{Stop}!void; } From d91691c0a4baab0492483f1c1fadb22a252db0f7 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 30 Oct 2024 17:53:05 +0100 Subject: [PATCH 13/21] fix: remove obsolete and broken syntax.refresh function --- src/syntax.zig | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/syntax.zig b/src/syntax.zig index c348c14..9f9a21f 100644 --- a/src/syntax.zig +++ b/src/syntax.zig @@ -74,12 +74,6 @@ pub fn edit(self: *Self, ed: Edit) void { if (self.tree) |tree| tree.edit(&ed); } -pub fn refresh(self: *Self, content: []const u8) !void { - const old_tree = self.tree; - defer if (old_tree) |tree| tree.destroy(); - self.tree = try self.parser.parseString(old_tree, content); -} - pub fn refresh_from_buffer(self: *Self, buffer: anytype, metrics: anytype) !void { const old_tree = self.tree; defer if (old_tree) |tree| tree.destroy(); From 3673787e55d4ac7df519d3918a7f9dc8ae4cf1a0 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 31 Oct 2024 14:34:44 +0100 Subject: [PATCH 14/21] feat: add julia support closes #61 --- build.zig | 1 + src/file_types.zig | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/build.zig b/build.zig index 0796fb6..5064762 100644 --- a/build.zig +++ b/build.zig @@ -37,6 +37,7 @@ pub fn build(b: *std.Build) void { 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-make/queries/highlights.scm"), diff --git a/src/file_types.zig b/src/file_types.zig index da5b4aa..edeeda4 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -176,6 +176,14 @@ pub const json = .{ .formatter = .{ "hjson", "-j" }, }; +pub const julia = .{ + .color = 0x4D64AE, + .icon = "", + .extensions = .{"jl"}, + .comment = "#", + .language_server = .{ "julia", "-e", "using LanguageServer; runserver()" }, +}; + pub const kdl = .{ .color = 0x000000, .icon = "", @@ -350,7 +358,7 @@ pub const swift = .{ .extensions = .{ "swift", "swiftinterface" }, .comment = "//", .language_server = .{"sourcekit-lsp"}, - .formatter = .{ "swift-format" }, + .formatter = .{"swift-format"}, }; pub const toml = .{ From 66a5663064b5e24bcda0b6fb6e4435541671978b Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 14 Nov 2024 15:37:39 +0100 Subject: [PATCH 15/21] feat: update tree-sitter to add gleam support --- build.zig.zon | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index 111e848..6e68ca7 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-74949eca4342fcf7c9edef0dd611f6fb7bfa662f/source.tar.gz", - .hash = "12207077255900fc581f9ee88bdb2f7baa7c2bce32ba0b3c2c5a5207c7168fb6f56e", + .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-dd309424e01e47c9161ecaf727608a97151a0793/source.tar.gz", + .hash = "1220f4f30f40b55a2ad5f15152d123c67a4a1b6447408cf9884bc1de26439ace197e", }, }, .paths = .{ From 76c493d155ab4ebd195402736b2c386090d37c39 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 14 Nov 2024 15:38:05 +0100 Subject: [PATCH 16/21] feat: add gleam to file types --- build.zig | 1 + src/file_types.zig | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/build.zig b/build.zig index 5064762..8839167 100644 --- a/build.zig +++ b/build.zig @@ -28,6 +28,7 @@ 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"), diff --git a/src/file_types.zig b/src/file_types.zig index edeeda4..95d21d9 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -110,6 +110,14 @@ pub const gitcommit = .{ .injections = "tree-sitter-gitcommit/queries/injections.scm", }; +pub const gleam = .{ + .color = 0xffaff3, + .icon = "󰦥", + .extensions = .{ "gleam" }, + .comment = "//", + .language_server = .{"gleam", "lsp"}, +}; + pub const go = .{ .color = 0x00acd7, .icon = "󰟓", From 2345f2f3b1def47bbc9b34f1404cd4bc9a02c05e Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 14 Nov 2024 17:33:01 +0100 Subject: [PATCH 17/21] feat: add gleam formatter --- src/file_types.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/file_types.zig b/src/file_types.zig index 95d21d9..30b68ac 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -116,6 +116,7 @@ pub const gleam = .{ .extensions = .{ "gleam" }, .comment = "//", .language_server = .{"gleam", "lsp"}, + .formatter = .{"gleam", "format"}, }; pub const go = .{ From 9eb5c4c74daecec2a73654628c31b68d9908ec2e Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 14 Nov 2024 17:40:29 +0100 Subject: [PATCH 18/21] fix: add --stdin to gleam format --- src/file_types.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file_types.zig b/src/file_types.zig index 30b68ac..de1a26d 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -116,7 +116,7 @@ pub const gleam = .{ .extensions = .{ "gleam" }, .comment = "//", .language_server = .{"gleam", "lsp"}, - .formatter = .{"gleam", "format"}, + .formatter = .{"gleam", "format", "--stdin"}, }; pub const go = .{ From 3e42e08095ee4b30a7b97315e5b9c97ae56f20d4 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sun, 17 Nov 2024 20:47:25 +0100 Subject: [PATCH 19/21] refactor: run zig fmt --- src/file_types.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/file_types.zig b/src/file_types.zig index de1a26d..bdc567a 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -113,10 +113,10 @@ pub const gitcommit = .{ pub const gleam = .{ .color = 0xffaff3, .icon = "󰦥", - .extensions = .{ "gleam" }, + .extensions = .{"gleam"}, .comment = "//", - .language_server = .{"gleam", "lsp"}, - .formatter = .{"gleam", "format", "--stdin"}, + .language_server = .{ "gleam", "lsp" }, + .formatter = .{ "gleam", "format", "--stdin" }, }; pub const go = .{ From 40e4f7357182ad3be2b3d5db34f2d340da506c8a Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 25 Nov 2024 18:51:37 +0100 Subject: [PATCH 20/21] feat: add expand/shrink_selection and select_next/prev_sibling commands --- src/syntax.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/syntax.zig b/src/syntax.zig index 9f9a21f..0f8ff97 100644 --- a/src/syntax.zig +++ b/src/syntax.zig @@ -184,3 +184,9 @@ pub fn highlights_at_point(self: *const Self, ctx: anytype, comptime cb: CallBac } return; } + +pub fn node_at_point_range(self: *const Self, range: Range) error{Stop}!treez.Node { + const tree = self.tree orelse return error.Stop; + const root_node = tree.getRootNode(); + return treez.Node.externs.ts_node_descendant_for_point_range(root_node, range.start_point, range.end_point); +} From be71fff7bd22ef5731145a5953d98f8310082b72 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 26 Nov 2024 10:08:37 +0100 Subject: [PATCH 21/21] feat: add cmake support --- build.zig | 2 ++ build.zig.zon | 4 ++-- src/file_types.zig | 11 +++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/build.zig b/build.zig index 8839167..4b0c6af 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"), @@ -74,6 +75,7 @@ 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"), diff --git a/build.zig.zon b/build.zig.zon index 6e68ca7..9d4cc6c 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-dd309424e01e47c9161ecaf727608a97151a0793/source.tar.gz", - .hash = "1220f4f30f40b55a2ad5f15152d123c67a4a1b6447408cf9884bc1de26439ace197e", + .url = "https://github.com/neurocyte/tree-sitter/releases/download/master-c20cbdfcdb3b9650a873614b2c361a2a2aaeb068/source.tar.gz", + .hash = "122042464e2fd94116fe6f63e8939ddb59b5e55b53ed95945537753bee9b119a5089", }, }, .paths = .{ diff --git a/src/file_types.zig b/src/file_types.zig index bdc567a..ada91c1 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -38,6 +38,17 @@ pub const conf = .{ .parser = fish.parser, }; +pub const 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 = .{ .color = 0x9c033a, .icon = "",