Skip to content

Commit 9cc600a

Browse files
committed
Vyq, fix linux history
1 parent 0f7354b commit 9cc600a

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

src/history.zig

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,29 @@ const Allocator = std.mem.Allocator;
33
const Keywords = @import("token.zig").Keywords;
44

55
// Doplnění v REPL (jen v linuxu)
6-
pub fn completion(text: ?[*:0]const u8, start: c_int, end: c_int) callconv(.C) ?[*:null]?[*:0]u8 {
6+
pub fn completion(text_in: [*c]const u8, start: c_int, end: c_int) callconv(.c) [*c][*c]u8 {
77
_ = end;
88
_ = start;
99

10-
const alloc = std.heap.raw_c_allocator;
11-
const arr = Keywords.kvs;
12-
var result = std.ArrayList(?[*:0]u8).init(alloc);
10+
const alloc = std.heap.c_allocator;
11+
const arr = Keywords.keys();
12+
const buf = std.mem.span(text_in);
13+
var result = std.ArrayList([*c]u8){};
1314

14-
const buf = std.mem.span(text) orelse @panic("Něco se nepodařilo, prosím zkuste znova");
15-
16-
for (arr) |kv| {
17-
if (std.mem.startsWith(u8, kv.key, buf)) {
18-
const duped = alloc.dupeZ(u8, kv.key) catch @panic("Něco se nepodařilo, prosím zkuste znova");
19-
result.append(duped.ptr) catch @panic("Něco se nepodařilo, prosím zkuste znova");
15+
for (arr) |key| {
16+
if (std.mem.startsWith(u8, key, buf)) {
17+
const duped = alloc.dupeZ(u8, key) catch @panic("Něco se nepodařilo, prosím zkuste znova");
18+
result.append(alloc, duped.ptr) catch @panic("Něco se nepodařilo, prosím zkuste znova");
2019
}
2120
}
2221

23-
const ownedSlice = result.toOwnedSliceSentinel(null) catch @panic("Něco se nepodařilo, prosím zkuste znova");
24-
return if (ownedSlice.len != 0) ownedSlice.ptr else null;
22+
result.append(alloc, null) catch @panic("Něco se nepodařilo, prosím zkuste znova");
23+
24+
const ownedSlice = result.toOwnedSlice(alloc) catch @panic("Něco se nepodařilo, prosím zkuste znova");
25+
26+
if (ownedSlice.len > 1) {
27+
return @ptrCast(ownedSlice.ptr);
28+
} else {
29+
return null;
30+
}
2531
}

vyq

16.1 MB
Binary file not shown.

0 commit comments

Comments
 (0)