Correctly pass zig_exe_path to document_store initialization
This commit is contained in:
parent
cfae9b4d13
commit
5e8e14fc08
@ -237,7 +237,7 @@ fn newDocument(self: *DocumentStore, uri: []const u8, text: []u8) anyerror!*Hand
|
||||
defer build_file.close();
|
||||
|
||||
// Calculate build file's URI
|
||||
var candidate_path = try std.mem.concat(self.allocator, u8, &[_][]const u8{ curr_path, "build.zig" });
|
||||
var candidate_path = try std.mem.concat(self.allocator, u8, &.{ curr_path, "build.zig" });
|
||||
defer self.allocator.free(candidate_path);
|
||||
const build_file_uri = try URI.fromPath(self.allocator, candidate_path);
|
||||
errdefer self.allocator.free(build_file_uri);
|
||||
@ -569,13 +569,22 @@ pub fn resolveImport(self: *DocumentStore, handle: *Handle, import_str: []const
|
||||
return self.getHandle(final_uri).?;
|
||||
}
|
||||
}
|
||||
|
||||
// The URI must be somewhere in the import_uris
|
||||
const handle_uri = for (handle.import_uris) |uri| {
|
||||
if (std.mem.eql(u8, uri, final_uri)) {
|
||||
break uri;
|
||||
// The URI must be somewhere in the import_uris or the package uris
|
||||
const handle_uri = find_uri: {
|
||||
for (handle.import_uris) |uri| {
|
||||
if (std.mem.eql(u8, uri, final_uri)) {
|
||||
break :find_uri uri;
|
||||
}
|
||||
}
|
||||
} else return null;
|
||||
if (handle.associated_build_file) |bf| {
|
||||
for (bf.packages.items) |pkg| {
|
||||
if (std.mem.eql(u8, pkg.uri, final_uri)) {
|
||||
break :find_uri pkg.uri;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
// New import.
|
||||
// Check if the import is already opened by others.
|
||||
@ -597,16 +606,15 @@ pub fn resolveImport(self: *DocumentStore, handle: *Handle, import_str: []const
|
||||
};
|
||||
|
||||
defer file.close();
|
||||
const size = std.math.cast(usize, try file.getEndPos()) catch std.math.maxInt(usize);
|
||||
|
||||
{
|
||||
const file_contents = try allocator.alloc(u8, size);
|
||||
errdefer allocator.free(file_contents);
|
||||
|
||||
file.reader().readNoEof(file_contents) catch {
|
||||
log.debug("Could not read from file {s}", .{file_path});
|
||||
return null;
|
||||
const file_contents = file.readToEndAlloc(allocator, std.math.maxInt(usize)) catch |err| switch (err) {
|
||||
error.OutOfMemory => return error.OutOfMemory,
|
||||
else => {
|
||||
log.debug("Could not read from file {s}", .{file_path});
|
||||
return null;
|
||||
},
|
||||
};
|
||||
errdefer allocator.free(file_contents);
|
||||
|
||||
// Add to import table of current handle.
|
||||
try handle.imports_used.append(self.allocator, handle_uri);
|
||||
|
11
src/main.zig
11
src/main.zig
@ -1719,7 +1719,6 @@ pub fn main() anyerror!void {
|
||||
// Read the configuration, if any.
|
||||
const config_parse_options = std.json.ParseOptions{ .allocator = allocator };
|
||||
var config = Config{};
|
||||
var config_had_null_zig_path = config.zig_exe_path == null;
|
||||
defer std.json.parseFree(Config, config, config_parse_options);
|
||||
|
||||
config_read: {
|
||||
@ -1742,8 +1741,6 @@ pub fn main() anyerror!void {
|
||||
}
|
||||
|
||||
// Find the zig executable in PATH
|
||||
var zig_exe_path: ?[]const u8 = null;
|
||||
|
||||
find_zig: {
|
||||
if (config.zig_exe_path) |exe_path| {
|
||||
if (std.fs.path.isAbsolute(exe_path)) not_valid: {
|
||||
@ -1827,7 +1824,13 @@ pub fn main() anyerror!void {
|
||||
break :blk try std.fs.path.resolve(allocator, &[_][]const u8{ cache_dir_path, "zls" });
|
||||
};
|
||||
|
||||
try document_store.init(allocator, zig_exe_path, build_runner_path, build_runner_cache_path, config.zig_lib_path);
|
||||
try document_store.init(
|
||||
allocator,
|
||||
config.zig_exe_path,
|
||||
build_runner_path,
|
||||
build_runner_cache_path,
|
||||
config.zig_lib_path,
|
||||
);
|
||||
defer document_store.deinit();
|
||||
|
||||
// This JSON parser is passed to processJsonRpc and reset.
|
||||
|
Loading…
Reference in New Issue
Block a user