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;
}
fn didChangeConfigurationHandler(server: *Server, request: configuration.DidChangeConfigurationParams) Error!void {
fn didChangeConfigurationHandler(server: *Server, request: types.DidChangeConfigurationParams) Error!void {
var new_zig_exe = false;
// 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| {
if (@field(cfg, field.name)) |value| {
blk: {
@ -1474,7 +1475,7 @@ pub fn processMessage(server: *Server, message: Message) Error!void {
.{ "textDocument/references", referencesHandler },
.{ "textDocument/documentHighlight", documentHighlightHandler },
.{ "textDocument/codeAction", codeActionHandler },
.{ "workspace/didChangeConfiguration", didChangeConfigurationHandler }, // types.DidChangeConfigurationParams
.{ "workspace/didChangeConfiguration", didChangeConfigurationHandler },
.{ "textDocument/foldingRange", foldingRangeHandler },
.{ "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 DidChangeConfigurationParams = struct {
settings: ?Configuration,
};
// returns a Struct which is the same as `Config` except that every field is optional.
fn getConfigurationType() type {