fix: hover does not process a list of results correctly

see #411

Not a fix, but related.
This commit is contained in:
CJ van den Berg 2025-12-03 14:33:53 +01:00
parent 6c012d090b
commit 35aa99f57f
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -1718,25 +1718,13 @@ fn send_contents(
if (try cbor.matchValue(&iter, cbor.extract(&value))) if (try cbor.matchValue(&iter, cbor.extract(&value)))
return send_content_msg(to, tag, file_path, row, col, kind, value, range); return send_content_msg(to, tag, file_path, row, col, kind, value, range);
var is_list = true; var list_size = cbor.decodeArrayHeader(&iter) catch blk: {
var len = cbor.decodeArrayHeader(&iter) catch blk: {
is_list = false;
iter = result; iter = result;
break :blk cbor.decodeMapHeader(&iter) catch return; break :blk 1;
}; };
if (is_list) { while (list_size > 0) : (list_size -= 1) {
var content: std.Io.Writer.Allocating = .init(std.heap.c_allocator); var len = cbor.decodeMapHeader(&iter) catch return;
defer content.deinit();
while (len > 0) : (len -= 1) {
if (try cbor.matchValue(&iter, cbor.extract(&value))) {
try content.writer.writeAll(value);
if (len > 1) try content.writer.writeAll("\n");
}
}
return send_content_msg(to, tag, file_path, row, col, kind, content.written(), range);
}
while (len > 0) : (len -= 1) { while (len > 0) : (len -= 1) {
var field_name: []const u8 = undefined; var field_name: []const u8 = undefined;
if (!(try cbor.matchString(&iter, &field_name))) return error.InvalidMessage; if (!(try cbor.matchString(&iter, &field_name))) return error.InvalidMessage;
@ -1748,7 +1736,8 @@ fn send_contents(
try cbor.skipValue(&iter); try cbor.skipValue(&iter);
} }
} }
return send_content_msg(to, tag, file_path, row, col, kind, value, range); try send_content_msg(to, tag, file_path, row, col, kind, value, range);
}
} }
fn send_content_msg( fn send_content_msg(