diff --git a/build.zig.zon b/build.zig.zon index 07ac467..6c4f604 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -6,8 +6,8 @@ .dependencies = .{ .syntax = .{ - .url = "git+https://github.com/neurocyte/flow-syntax?ref=zig-0.14#9f430faf6c31cab2be13ebb5406f6a7476b7eb61", - .hash = "flow_syntax-0.1.0-X8jOoYsSAQCAPWeJEamG_eyMOYZFN_ZWZAdKnnGtUhBi", + .url = "git+https://github.com/neurocyte/flow-syntax?ref=zig-0.14#c9f6934ec7823223590a9ae44a581c0e385462d1", + .hash = "flow_syntax-0.1.0-X8jOoXQSAQAn5N_-91mSxpH3WJTOHonPaUbkePpBlV6o", }, .flags = .{ .url = "https://github.com/n0s4/flags/archive/372501d1576b5723829bcba98e41361132c7b618.tar.gz", diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 7f9eb55..1c4febb 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -187,7 +187,7 @@ pub const CurSel = struct { }; } - pub fn selection_from_node(node: syntax.Node, root: Buffer.Root, metrics: Buffer.Metrics) error{NotFound}!Selection { + fn selection_from_node(node: syntax.Node, root: Buffer.Root, metrics: Buffer.Metrics) error{NotFound}!Selection { return selection_from_range(node.getRange(), root, metrics); } diff --git a/src/tui/inspector_view.zig b/src/tui/inspector_view.zig index 1075f61..6d314d7 100644 --- a/src/tui/inspector_view.zig +++ b/src/tui/inspector_view.zig @@ -73,8 +73,7 @@ fn inspect_location(self: *Self, row: usize, col: usize) void { const syn = self.editor.syntax orelse return; const root = (self.editor.buffer orelse return).root; const col_pos = root.get_line_width_to_pos(row, col, self.editor.metrics) catch return; - if (!syn.highlights_at_point(self, dump_highlight, .{ .row = @intCast(row), .column = @intCast(col_pos) })) - self.ast_at_point(syn, row, col_pos, root); + syn.highlights_at_point(self, dump_highlight, .{ .row = @intCast(row), .column = @intCast(col_pos) }); } fn get_buffer_text(self: *Self, buf: []u8, sel: Buffer.Selection) ?[]const u8 { @@ -82,57 +81,9 @@ fn get_buffer_text(self: *Self, buf: []u8, sel: Buffer.Selection) ?[]const u8 { return root.get_range(sel, buf, null, null, self.plane.metrics(self.editor.tab_width)) catch return null; } -fn ast_at_point(self: *Self, syn: anytype, row: usize, col_pos: usize, root: Buffer.Root) void { - const node = syn.node_at_point_range(.{ - .start_point = .{ - .row = @intCast(row), - .column = @intCast(col_pos), - }, - .end_point = .{ - .row = @intCast(row), - .column = @intCast(col_pos), - }, - .start_byte = 0, - .end_byte = 0, - }) catch return; - if (node.isNull()) return; - - const sel = ed.CurSel.selection_from_node(node, root, self.editor.metrics) catch return; - - self.dump_ast_node(sel, &node); -} - fn dump_highlight(self: *Self, range: syntax.Range, scope: []const u8, id: u32, _: usize, ast_node: *const syntax.Node) error{Stop}!void { const sel = self.pos_cache.range_to_selection(range, self.editor.get_current_root() orelse return, self.editor.metrics) orelse return; - self.dump_ast_node(sel, ast_node); - - var buf: [1024]u8 = undefined; - const text = self.get_buffer_text(&buf, sel) orelse ""; - if (self.editor.style_lookup(self.theme, scope, id)) |token| { - if (text.len > 14) { - _ = self.plane.print("scope: {s} -> \"{s}...\" matched: {s}", .{ - scope, - text[0..15], - Widget.scopes[token.id], - }) catch {}; - } else { - _ = self.plane.print("scope: {s} -> \"{s}\" matched: {s}", .{ - scope, - text, - Widget.scopes[token.id], - }) catch {}; - } - self.show_color("fg", token.style.fg); - self.show_color("bg", token.style.bg); - self.show_font(token.style.fs); - _ = self.plane.print("\n", .{}) catch {}; - return; - } - _ = self.plane.print("scope: {s} -> \"{s}\"\n", .{ scope, text }) catch return; -} - -fn dump_ast_node(self: *Self, sel: Buffer.Selection, ast_node: *const syntax.Node) void { var update_match: enum { no, add, set } = .no; var match = ed.Match.from_selection(sel); if (self.theme) |theme| match.style = .{ .bg = theme.editor_gutter_modified.fg }; @@ -173,6 +124,30 @@ fn dump_ast_node(self: *Self, sel: Buffer.Selection, ast_node: *const syntax.Nod } } self.last_node = @intFromPtr(ast_node); + + var buf: [1024]u8 = undefined; + const text = self.get_buffer_text(&buf, sel) orelse ""; + if (self.editor.style_lookup(self.theme, scope, id)) |token| { + if (text.len > 14) { + _ = self.plane.print("scope: {s} -> \"{s}...\" matched: {s}", .{ + scope, + text[0..15], + Widget.scopes[token.id], + }) catch {}; + } else { + _ = self.plane.print("scope: {s} -> \"{s}\" matched: {s}", .{ + scope, + text, + Widget.scopes[token.id], + }) catch {}; + } + self.show_color("fg", token.style.fg); + self.show_color("bg", token.style.bg); + self.show_font(token.style.fs); + _ = self.plane.print("\n", .{}) catch {}; + return; + } + _ = self.plane.print("scope: {s} -> \"{s}\"\n", .{ scope, text }) catch return; } fn show_color(self: *Self, tag: []const u8, c_: ?Widget.Theme.Color) void { diff --git a/src/tui/tui.zig b/src/tui/tui.zig index 2355f71..2dfbca8 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -1504,7 +1504,6 @@ pub const fallbacks: []const FallBack = &[_]FallBack{ .{ .ts = "keyword.type", .tm = "keyword.structure" }, .{ .ts = "keyword.function", .tm = "storage.type.function" }, .{ .ts = "constant.builtin", .tm = "keyword.constant" }, - .{ .ts = "text.title", .tm = "entity.name.section" }, }; fn set_terminal_style(self: *Self) void {