From 81052f7e9f6862b8d53c50c518704d2667902660 Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Sun, 9 Nov 2025 22:11:04 +0100 Subject: [PATCH] EclipseJDTLS: Remove type information from names, e.g. converting 'myMethod(int) ' to just 'myMethod' handling overloads via SolidLSP's newly introduced overload_idx instead Fixes #578 --- .../language_servers/eclipse_jdtls.py | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/solidlsp/language_servers/eclipse_jdtls.py b/src/solidlsp/language_servers/eclipse_jdtls.py index cb4fba44..8ade5b70 100644 --- a/src/solidlsp/language_servers/eclipse_jdtls.py +++ b/src/solidlsp/language_servers/eclipse_jdtls.py @@ -13,7 +13,7 @@ from pathlib import PurePath from overrides import override -from solidlsp.ls import SolidLanguageServer +from solidlsp.ls import GenericDocumentSymbol, SolidLanguageServer from solidlsp.ls_config import LanguageServerConfig from solidlsp.ls_logger import LanguageServerLogger from solidlsp.ls_utils import FileUtils, PlatformUtils @@ -788,3 +788,23 @@ class EclipseJDTLS(SolidLanguageServer): # TODO: Add comments about why we wait here, and how this can be optimized self.service_ready_event.wait() + + def _request_document_symbols(self, relative_file_path: str, include_body: bool = False) -> list[GenericDocumentSymbol]: + result = super()._request_document_symbols(relative_file_path, include_body) + + # JDTLS sometimes returns symbol names with type information to handle overloads, + # e.g. "myMethod(int) ", but we want overloads to be handled via overload_idx, + # which requires the name to be just "myMethod". + + def fix_name(symbol: GenericDocumentSymbol): + if "(" in symbol["name"]: + symbol["name"] = symbol["name"][: symbol["name"].index("(")] + children = symbol.get("children") + if children: + for child in children: + fix_name(child) + + for root_symbol in result: + fix_name(root_symbol) + + return result