From 0caecb431113209c4c91ec88f7d9d1001b3c0cb6 Mon Sep 17 00:00:00 2001 From: dalthviz <16781833+dalthviz@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:30:41 -0500 Subject: [PATCH] Editor/Completion: Enable showing calltip widget even with signatures without parameters --- .../editor/widgets/codeeditor/lsp_mixin.py | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/spyder/plugins/editor/widgets/codeeditor/lsp_mixin.py b/spyder/plugins/editor/widgets/codeeditor/lsp_mixin.py index 98657acecfc..2f9ead039c2 100644 --- a/spyder/plugins/editor/widgets/codeeditor/lsp_mixin.py +++ b/spyder/plugins/editor/widgets/codeeditor/lsp_mixin.py @@ -813,10 +813,7 @@ def process_signatures(self, params): try: signature_params = params["params"] - if ( - signature_params is not None - and "activeParameter" in signature_params - ): + if signature_params is not None: self.sig_signature_invoked.emit(signature_params) signature_data = signature_params["signatures"] documentation = signature_data["documentation"] @@ -828,12 +825,17 @@ def process_signatures(self, params): # spaces defined as `\xa0` documentation = documentation.replace("\xa0", " ") - parameter_idx = signature_params["activeParameter"] - parameters = signature_data["parameters"] + # Enable parsing signature's active parameter if available + # while allowing to show calltip for signatures without + # parameters. + # See spyder-ide/spyder#21660 parameter = None - if len(parameters) > 0 and parameter_idx < len(parameters): - parameter_data = parameters[parameter_idx] - parameter = parameter_data["label"] + if "activeParameter" in signature_params: + parameter_idx = signature_params["activeParameter"] + parameters = signature_data["parameters"] + if len(parameters) > 0 and parameter_idx < len(parameters): + parameter_data = parameters[parameter_idx] + parameter = parameter_data["label"] signature = signature_data["label"]