From 7e9b58a4fc5d834223416b7741b1f3f39c46b431 Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 27 Mar 2024 16:45:48 +0800 Subject: [PATCH] src/Palete/LanguageClientVala.vala --- src/Palete/LanguageClientVala.vala | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/Palete/LanguageClientVala.vala b/src/Palete/LanguageClientVala.vala index ef5bd01c3..66df26396 100644 --- a/src/Palete/LanguageClientVala.vala +++ b/src/Palete/LanguageClientVala.vala @@ -650,6 +650,20 @@ namespace Palete { } + async int hover_queue() + { + var cb = hover_queue.callback; + hover_call_count++; + var call_id = hover_call_count; + + GLib.Timeout.add(1000, () => { + GLib.Idle.add(cb); + return false; + }); + + yield; + return call_id; + } static int hover_call_count = 1; @@ -664,17 +678,8 @@ namespace Palete { if (!this.isReady()) { return ret; } - var callback = hover.callback; - // try and block multiple calls - better than a big timeout loop? - hover_call_count++; - var call_id = hover_call_count; - GLib.debug("get hover call=%d count=%d", call_id, hover_call_count); - - GLib.Timeout.add(1000, () => { - GLib.Idle.add(callback); - return false; - }); - yield; + var call_id = hover_queue(); + GLib.debug("end hover call=%d count=%d", call_id, hover_call_count); if (call_id != hover_call_count) { GLib.debug("get hover CANCELLED %s %d %d", file.relpath, (int)line, (int)offset); -- 2.39.2