From 42ca1900fa6d6b740344892cc470908bdf644acf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sat, 10 Aug 2024 21:43:32 -0300 Subject: [PATCH] Display signature help if avialable and not symbol info is available when pressing lsp-symbol-info (F1). --- .../plugins/autocomplete/autocompleteplugin.cpp | 5 +++++ src/tools/ecode/plugins/lsp/lspclientplugin.cpp | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp index 14fe5b6f9..cab723a26 100644 --- a/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp +++ b/src/tools/ecode/plugins/autocomplete/autocompleteplugin.cpp @@ -784,6 +784,11 @@ PluginRequestHandle AutoCompletePlugin::processResponse( const PluginMessage& ms } } return processCodeCompletion( msg.asCodeCompletion() ); + } else if ( msg.isRequest() && msg.type == PluginMessageType::SignatureHelp ) { + if ( getManager() && getManager()->getSplitter() && + getManager()->getSplitter()->curEditorIsNotNull() ) { + requestSignatureHelp( getManager()->getSplitter()->getCurEditor() ); + } } else if ( msg.isResponse() && msg.type == PluginMessageType::SignatureHelp ) { return processSignatureHelp( msg.asSignatureHelp() ); } else if ( msg.isBroadcast() && msg.type == PluginMessageType::LanguageServerCapabilities ) { diff --git a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp index 783d04cb1..d8280b040 100644 --- a/src/tools/ecode/plugins/lsp/lspclientplugin.cpp +++ b/src/tools/ecode/plugins/lsp/lspclientplugin.cpp @@ -27,6 +27,15 @@ namespace ecode { #define LSPCLIENT_THREADED 0 #endif +static json getURIAndPositionJSON( UICodeEditor* editor ) { + json data; + auto doc = editor->getDocumentRef(); + auto sel = doc->getSelection(); + data["uri"] = doc->getURI().toString(); + data["position"] = { { "line", sel.start().line() }, { "character", sel.start().column() } }; + return data; +} + class LSPLocationModel : public Model { public: enum CustomInfo { URI, TextRange }; @@ -1386,6 +1395,10 @@ void LSPClientPlugin::getSymbolInfo( UICodeEditor* editor ) { editor->getScreenPosition( editor->getDocument().getSelection().start() ) .getPosition() ); } ); + } else { + json data = getURIAndPositionJSON( editor ); + mManager->sendRequest( PluginMessageType::SignatureHelp, PluginMessageFormat::JSON, + &data ); } } ); }