compatible with the settings.zls in didChangeConfigurationHandler

Signed-off-by: Ye Sijun <junnplus@gmail.com>
This commit is contained in:
Ye Sijun 2023-05-30 15:54:26 +09:00
parent 905f531a08
commit 643496922d
No known key found for this signature in database
GPG Key ID: 0582626C83FA9CD0
2 changed files with 4 additions and 6 deletions

View File

@ -946,11 +946,12 @@ pub fn formattingHandler(server: *Server, request: types.DocumentFormattingParam
return if (diff.edits(allocator, handle.text, formatted, server.offset_encoding)) |text_edits| text_edits.items else |_| null; return if (diff.edits(allocator, handle.text, formatted, server.offset_encoding)) |text_edits| text_edits.items else |_| null;
} }
fn didChangeConfigurationHandler(server: *Server, request: configuration.DidChangeConfigurationParams) Error!void { fn didChangeConfigurationHandler(server: *Server, request: types.DidChangeConfigurationParams) Error!void {
var new_zig_exe = false; var new_zig_exe = false;
// NOTE: VS Code seems to always respond with null // NOTE: VS Code seems to always respond with null
if (request.settings) |cfg| { if (request.settings != .null) {
const cfg = tres.parse(configuration.Configuration, request.settings.object.get("zls") orelse request.settings, null) catch return;
inline for (std.meta.fields(configuration.Configuration)) |field| { inline for (std.meta.fields(configuration.Configuration)) |field| {
if (@field(cfg, field.name)) |value| { if (@field(cfg, field.name)) |value| {
blk: { blk: {
@ -1474,7 +1475,7 @@ pub fn processMessage(server: *Server, message: Message) Error!void {
.{ "textDocument/references", referencesHandler }, .{ "textDocument/references", referencesHandler },
.{ "textDocument/documentHighlight", documentHighlightHandler }, .{ "textDocument/documentHighlight", documentHighlightHandler },
.{ "textDocument/codeAction", codeActionHandler }, .{ "textDocument/codeAction", codeActionHandler },
.{ "workspace/didChangeConfiguration", didChangeConfigurationHandler }, // types.DidChangeConfigurationParams .{ "workspace/didChangeConfiguration", didChangeConfigurationHandler },
.{ "textDocument/foldingRange", foldingRangeHandler }, .{ "textDocument/foldingRange", foldingRangeHandler },
.{ "textDocument/selectionRange", selectionRangeHandler }, .{ "textDocument/selectionRange", selectionRangeHandler },
}; };

View File

@ -214,9 +214,6 @@ pub fn getZigEnv(allocator: std.mem.Allocator, zig_exe_path: []const u8) ?Env {
} }
pub const Configuration = getConfigurationType(); pub const Configuration = getConfigurationType();
pub const DidChangeConfigurationParams = struct {
settings: ?Configuration,
};
// returns a Struct which is the same as `Config` except that every field is optional. // returns a Struct which is the same as `Config` except that every field is optional.
fn getConfigurationType() type { fn getConfigurationType() type {