From fa23096f857c4ad0460564fcd1f28df7790a0407 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 31 Oct 2024 18:08:12 +0100 Subject: [PATCH] feat: make the language server request timeout a configurable option --- src/LSP.zig | 4 ++-- src/config.zig | 2 ++ src/tui/tui.zig | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/LSP.zig b/src/LSP.zig index 89625ba..8e9c0de 100644 --- a/src/LSP.zig +++ b/src/LSP.zig @@ -12,7 +12,6 @@ const Self = @This(); const module_name = @typeName(Self); const sp_tag = "child"; const debug_lsp = true; -const lsp_request_timeout = std.time.ns_per_s * 3; const OutOfMemoryError = error{OutOfMemory}; const SendError = error{SendFailed}; @@ -36,7 +35,8 @@ pub fn send_request(self: Self, allocator: std.mem.Allocator, method: []const u8 var cb = std.ArrayList(u8).init(self.allocator); defer cb.deinit(); try cbor.writeValue(cb.writer(), m); - return self.pid.call(allocator, lsp_request_timeout, .{ "REQ", method, cb.items }); + const request_timeout: u64 = @intCast(std.time.ns_per_s * tp.env.get().num("lsp-request-timeout")); + return self.pid.call(allocator, request_timeout, .{ "REQ", method, cb.items }); } pub fn send_response(self: Self, id: i32, m: anytype) SendError!tp.message { diff --git a/src/config.zig b/src/config.zig index 57194e1..28a4c44 100644 --- a/src/config.zig +++ b/src/config.zig @@ -23,3 +23,5 @@ tab_width: usize = 8, top_bar: []const u8 = "", bottom_bar: []const u8 = "mode file log selection diagnostics linenumber", + +lsp_request_timeout: usize = 3, diff --git a/src/tui/tui.zig b/src/tui/tui.zig index cd9b9a4..c26a1d2 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -92,6 +92,7 @@ fn init(allocator: Allocator) !*Self { if (frame_rate != 0) conf.frame_rate = frame_rate; tp.env.get().num_set("frame-rate", @intCast(conf.frame_rate)); + tp.env.get().num_set("lsp-request-timeout", @intCast(conf.lsp_request_timeout)); const frame_time = std.time.us_per_s / conf.frame_rate; const frame_clock = try tp.metronome.init(frame_time);