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();
|
defer build_file.close();
|
||||||
|
|
||||||
// Calculate build file's URI
|
// 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);
|
defer self.allocator.free(candidate_path);
|
||||||
const build_file_uri = try URI.fromPath(self.allocator, candidate_path);
|
const build_file_uri = try URI.fromPath(self.allocator, candidate_path);
|
||||||
errdefer self.allocator.free(build_file_uri);
|
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).?;
|
return self.getHandle(final_uri).?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// The URI must be somewhere in the import_uris or the package uris
|
||||||
// The URI must be somewhere in the import_uris
|
const handle_uri = find_uri: {
|
||||||
const handle_uri = for (handle.import_uris) |uri| {
|
for (handle.import_uris) |uri| {
|
||||||
if (std.mem.eql(u8, uri, final_uri)) {
|
if (std.mem.eql(u8, uri, final_uri)) {
|
||||||
break 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.
|
// New import.
|
||||||
// Check if the import is already opened by others.
|
// 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();
|
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);
|
const file_contents = file.readToEndAlloc(allocator, std.math.maxInt(usize)) catch |err| switch (err) {
|
||||||
errdefer allocator.free(file_contents);
|
error.OutOfMemory => return error.OutOfMemory,
|
||||||
|
else => {
|
||||||
file.reader().readNoEof(file_contents) catch {
|
|
||||||
log.debug("Could not read from file {s}", .{file_path});
|
log.debug("Could not read from file {s}", .{file_path});
|
||||||
return null;
|
return null;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
errdefer allocator.free(file_contents);
|
||||||
|
|
||||||
// Add to import table of current handle.
|
// Add to import table of current handle.
|
||||||
try handle.imports_used.append(self.allocator, handle_uri);
|
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.
|
// Read the configuration, if any.
|
||||||
const config_parse_options = std.json.ParseOptions{ .allocator = allocator };
|
const config_parse_options = std.json.ParseOptions{ .allocator = allocator };
|
||||||
var config = Config{};
|
var config = Config{};
|
||||||
var config_had_null_zig_path = config.zig_exe_path == null;
|
|
||||||
defer std.json.parseFree(Config, config, config_parse_options);
|
defer std.json.parseFree(Config, config, config_parse_options);
|
||||||
|
|
||||||
config_read: {
|
config_read: {
|
||||||
@ -1742,8 +1741,6 @@ pub fn main() anyerror!void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Find the zig executable in PATH
|
// Find the zig executable in PATH
|
||||||
var zig_exe_path: ?[]const u8 = null;
|
|
||||||
|
|
||||||
find_zig: {
|
find_zig: {
|
||||||
if (config.zig_exe_path) |exe_path| {
|
if (config.zig_exe_path) |exe_path| {
|
||||||
if (std.fs.path.isAbsolute(exe_path)) not_valid: {
|
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" });
|
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();
|
defer document_store.deinit();
|
||||||
|
|
||||||
// This JSON parser is passed to processJsonRpc and reset.
|
// This JSON parser is passed to processJsonRpc and reset.
|
||||||
|
Loading…
Reference in New Issue
Block a user