fix: add support for integer codes in LSP diagnostics
This fixes vscode-json-language-server and possibly others.
This commit is contained in:
parent
ff8b849015
commit
45669cad31
1 changed files with 8 additions and 1 deletions
|
|
@ -1517,6 +1517,8 @@ pub fn publish_diagnostics(self: *Self, to: tp.pid_ref, params_cb: []const u8) (
|
|||
fn send_diagnostic(_: *Self, to: tp.pid_ref, file_path: []const u8, diagnostic: []const u8) (ClientError || InvalidMessageError || cbor.Error)!void {
|
||||
var source: []const u8 = "unknown";
|
||||
var code: []const u8 = "none";
|
||||
var code_int: i64 = 0;
|
||||
var code_int_buf: [64]u8 = undefined;
|
||||
var message: []const u8 = "empty";
|
||||
var severity: i64 = 1;
|
||||
var range: ?Range = null;
|
||||
|
|
@ -1528,7 +1530,12 @@ fn send_diagnostic(_: *Self, to: tp.pid_ref, file_path: []const u8, diagnostic:
|
|||
if (std.mem.eql(u8, field_name, "source") or std.mem.eql(u8, field_name, "uri")) {
|
||||
if (!(try cbor.matchValue(&iter, cbor.extract(&source)))) return error.InvalidMessageField;
|
||||
} else if (std.mem.eql(u8, field_name, "code")) {
|
||||
if (!(try cbor.matchValue(&iter, cbor.extract(&code)))) return error.InvalidMessageField;
|
||||
if (try cbor.matchValue(&iter, cbor.extract(&code_int))) {
|
||||
var writer = std.Io.Writer.fixed(&code_int_buf);
|
||||
try writer.print("{}", .{code_int});
|
||||
code = writer.buffered();
|
||||
} else if (!(try cbor.matchValue(&iter, cbor.extract(&code))))
|
||||
return error.InvalidMessageField;
|
||||
} else if (std.mem.eql(u8, field_name, "message")) {
|
||||
if (!(try cbor.matchValue(&iter, cbor.extract(&message)))) return error.InvalidMessageField;
|
||||
} else if (std.mem.eql(u8, field_name, "severity")) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue