Skip to content

Conversation

@mgouz
Copy link

@mgouz mgouz commented Oct 21, 2025

Publish diagnostics to the frontend. I've never programmed Zig before so let me know if I did anything heinous here. Also did have Claude help me here so might be a bit sloppy. I cleaned up the major issues I saw it produce (e.g. parsing the tree multiple times in a row to publish the diagnostics). Was thinking of just having the Notification just be a specialized id: null field of Request but that appears to be discouraged by the spec.

This should resolve issue 63. I did see you mention a queueing system for the notifs that I didn't get around to implementing. Let me know if that's necessary

What it looks like in Emacs:
image

Copy link
Owner

@nolanderc nolanderc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot, and great work for your first time in Zig!
I might spend some time testing how well this works in VSCode and neovim as well before merging.

src/main.zig Outdated
Comment on lines 416 to 422
var tree = parse.parse(self.allocator, document.source(), .{
.diagnostics = &parse_diagnostics,
}) catch |err| {
std.log.warn("failed to re-parse for diagnostics: {}", .{err});
return;
};
defer tree.deinit(self.allocator);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See if you can use the Document.parseTree function here instead. It caches the parsed tree, so that we don't have to redo the parsing next time the document is used (such as when triggering completions).

@nolanderc
Copy link
Owner

Did not mean to perform that merge into your branch, sorry about that :(

@mgouz
Copy link
Author

mgouz commented Nov 10, 2025

All good! Sorry for the delay, I'll make the changes this week

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants