From dac746d70c1d8e6d51a715726e7afe921a15cf1a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 5 Jul 2023 20:32:35 +0900 Subject: [PATCH] Reuse the latest result to keep SignatureHelp opened while typing --- lib/steep/server/interaction_worker.rb | 6 ++++-- sig/steep/server/interaction_worker.rbs | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/steep/server/interaction_worker.rb b/lib/steep/server/interaction_worker.rb index 3e38effa3..e7b5aea53 100644 --- a/lib/steep/server/interaction_worker.rb +++ b/lib/steep/server/interaction_worker.rb @@ -406,7 +406,8 @@ def process_signature_help(job) ) end - LSP::Interface::SignatureHelp.new( + @last_signature_help_line = job.line + @last_signature_help_result = LSP::Interface::SignatureHelp.new( signatures: signatures, active_signature: index ) @@ -414,7 +415,8 @@ def process_signature_help(job) end end rescue Parser::SyntaxError - # Ignore syntax error + # Reuse the latest result to keep SignatureHelp opened while typing + @last_signature_help_result if @last_signature_help_line == job.line end end end diff --git a/sig/steep/server/interaction_worker.rbs b/sig/steep/server/interaction_worker.rbs index 029b66ece..a29bff84d 100644 --- a/sig/steep/server/interaction_worker.rbs +++ b/sig/steep/server/interaction_worker.rbs @@ -52,6 +52,10 @@ module Steep module LSP = LanguageServer::Protocol + @last_signature_help_line: Integer + + @last_signature_help_result: LanguageServer::Protocol::Interface::SignatureHelp + attr_reader service: Services::TypeCheckService def initialize: (project: Project, reader: Reader, writer: Writer, ?queue: Queue) -> void