show better zig/zls version mismatch messages (#917)
* show better zig/zls version mismatch messages * always show message if versions don't match * ignore patch
This commit is contained in:
parent
af85a9550d
commit
9e74afada6
@ -188,6 +188,12 @@ fn showMessage(
|
|||||||
args: anytype,
|
args: anytype,
|
||||||
) void {
|
) void {
|
||||||
const message = std.fmt.allocPrint(server.arena.allocator(), fmt, args) catch return;
|
const message = std.fmt.allocPrint(server.arena.allocator(), fmt, args) catch return;
|
||||||
|
switch (message_type) {
|
||||||
|
.Error => log.err("{s}", .{message}),
|
||||||
|
.Warning => log.warn("{s}", .{message}),
|
||||||
|
.Info => log.info("{s}", .{message}),
|
||||||
|
.Log => log.debug("{s}", .{message}),
|
||||||
|
}
|
||||||
server.sendNotification("window/showMessage", types.ShowMessageParams{
|
server.sendNotification("window/showMessage", types.ShowMessageParams{
|
||||||
.type = message_type,
|
.type = message_type,
|
||||||
.message = message,
|
.message = message,
|
||||||
@ -1757,12 +1763,32 @@ fn initializeHandler(server: *Server, request: types.InitializeParams) Error!typ
|
|||||||
const env = configuration.getZigEnv(server.allocator, exe_path) orelse break :blk;
|
const env = configuration.getZigEnv(server.allocator, exe_path) orelse break :blk;
|
||||||
defer std.json.parseFree(configuration.Env, env, .{ .allocator = server.allocator });
|
defer std.json.parseFree(configuration.Env, env, .{ .allocator = server.allocator });
|
||||||
|
|
||||||
const zig_exe_version = std.SemanticVersion.parse(env.version) catch break :blk;
|
const zig_version = std.SemanticVersion.parse(env.version) catch break :blk;
|
||||||
|
const zls_version = comptime std.SemanticVersion.parse(build_options.version) catch unreachable;
|
||||||
|
|
||||||
if (zig_builtin.zig_version.order(zig_exe_version) == .gt) {
|
const zig_version_simple = std.SemanticVersion{
|
||||||
|
.major = zig_version.major,
|
||||||
|
.minor = zig_version.minor,
|
||||||
|
.patch = 0,
|
||||||
|
};
|
||||||
|
const zls_version_simple = std.SemanticVersion{
|
||||||
|
.major = zls_version.major,
|
||||||
|
.minor = zls_version.minor,
|
||||||
|
.patch = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
switch (zig_version_simple.order(zls_version_simple)) {
|
||||||
|
.lt => {
|
||||||
server.showMessage(.Warning,
|
server.showMessage(.Warning,
|
||||||
\\ZLS was built with Zig {}, but your Zig version is {s}. Update Zig to avoid unexpected behavior.
|
\\Zig `{}` is older than ZLS `{}`. Update Zig to avoid unexpected behavior.
|
||||||
, .{ zig_builtin.zig_version, env.version });
|
, .{ zig_version, zls_version });
|
||||||
|
},
|
||||||
|
.eq => {},
|
||||||
|
.gt => {
|
||||||
|
server.showMessage(.Warning,
|
||||||
|
\\Zig `{}` is newer than ZLS `{}`. Update ZLS to avoid unexpected behavior.
|
||||||
|
, .{ zig_version, zls_version });
|
||||||
|
},
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
server.showMessage(.Warning,
|
server.showMessage(.Warning,
|
||||||
|
Loading…
Reference in New Issue
Block a user