Fix completion of builtins and a piece of slightly overcomplicated logic

This commit is contained in:
Jonathan Hähne 2021-03-24 22:40:15 +01:00
parent 4198edbdaa
commit 8d34232c7a
2 changed files with 14 additions and 14 deletions

View File

@ -381,27 +381,27 @@ fn refreshDocument(self: *DocumentStore, handle: *Handle, zig_lib_path: ?[]const
const std_uri = try stdUriFromLibPath(&arena.allocator, zig_lib_path); const std_uri = try stdUriFromLibPath(&arena.allocator, zig_lib_path);
for (import_strs.items) |str| { for (import_strs.items) |str| {
const uri = (try self.uriFromImportStr(&arena.allocator, handle.*, str)) orelse continue; const uri = (try self.uriFromImportStr(&arena.allocator, handle.*, str)) orelse continue;
exists_loop: for (still_exist) |*does_still_exist, i| {
if (does_still_exist.*) continue;
var idx: usize = 0; if (std.mem.eql(u8, handle.import_uris.items[i], uri)) {
exists_loop: while (idx < still_exist.len) : (idx += 1) { does_still_exist.* = true;
if (still_exist[idx]) continue;
if (std.mem.eql(u8, handle.import_uris.items[idx], uri)) {
still_exist[idx] = true;
break :exists_loop; break :exists_loop;
} }
} }
} }
// Go through still_exist, remove the items that are false and decrement their handle counts. // Go through still_exist, remove the items that are false and decrement their handle counts.
var offset: usize = 0;
var idx: usize = 0; var idx: usize = 0;
while (idx < still_exist.len) : (idx += 1) { for (still_exist) |does_still_exist| {
if (still_exist[idx]) continue; if (does_still_exist) {
idx += 1;
continue;
}
log.debug("Import removed: {s}", .{handle.import_uris.items[idx - offset]}); log.debug("Import removed: {s}", .{handle.import_uris.items[idx]});
const uri = handle.import_uris.orderedRemove(idx - offset); const uri = handle.import_uris.orderedRemove(idx);
offset += 1;
self.decrementCount(uri); self.decrementCount(uri);
self.allocator.free(uri); self.allocator.free(uri);

View File

@ -1027,10 +1027,10 @@ fn completeBuiltin(arena: *std.heap.ArenaAllocator, id: types.RequestId, config:
}; };
if (config.enable_snippets) { if (config.enable_snippets) {
builtin_completions.?[idx].insertText = builtin.snippet[1..]; builtin_completions.?[idx].insertText = builtin.snippet;
builtin_completions.?[idx].insertTextFormat = .Snippet; builtin_completions.?[idx].insertTextFormat = .Snippet;
} else { } else {
builtin_completions.?[idx].insertText = builtin.name[1..]; builtin_completions.?[idx].insertText = builtin.name;
} }
} }
} }