mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-13 18:16:10 +00:00
Improve handling of custom LS-specific settings
This commit is contained in:
1 parent
4ac6d59e6c
commit
0a40f580dd
5 files changed
+19
-10
No files matched your search
@@ -248,8 +248,7 @@ class CSharpLanguageServer(SolidLanguageServer):
|
||||
Returns a tuple of (dotnet_path, language_server_dll_path).
|
||||
"""
|
||||
language_enum = cls.get_language_enum_instance()
|
||||
ls_specific_settings = solidlsp_settings.ls_specific_settings or {}
|
||||
language_specific_config = ls_specific_settings.get(language_enum, {})
|
||||
language_specific_config = solidlsp_settings.get_ls_specific_settings(cls.get_language_enum_instance())
|
||||
runtime_dependency_overrides = cast(list[dict[str, Any]], language_specific_config.get("runtime_dependencies", []))
|
||||
|
||||
logger.log("Resolving runtime dependencies", logging.DEBUG)
|
||||
@@ -448,7 +447,8 @@ class CSharpLanguageServer(SolidLanguageServer):
|
||||
logger.log("Downloading .NET 9 runtime...", logging.INFO)
|
||||
dotnet_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
custom_dotnet_runtime_url = solidlsp_settings.ls_specific_settings.get(cls.get_language_enum_instance(), {}).get(
|
||||
custom_settings = solidlsp_settings.get_ls_specific_settings(cls.get_language_enum_instance())
|
||||
custom_dotnet_runtime_url = custom_settings.get(
|
||||
"dotnet_runtime_url"
|
||||
)
|
||||
if custom_dotnet_runtime_url is not None:
|
||||
|
||||
@@ -343,7 +343,7 @@ class EclipseJDTLS(SolidLanguageServer):
|
||||
repo_uri = pathlib.Path(repository_absolute_path).as_uri()
|
||||
|
||||
# Load user's Maven and Gradle configuration paths from ls_specific_settings["java"]
|
||||
custom_java_settings = self._solidlsp_settings.ls_specific_settings.get(self.get_language_enum_instance(), {})
|
||||
custom_java_settings = self._custom_settings
|
||||
|
||||
# Maven settings: default to ~/.m2/settings.xml
|
||||
default_maven_settings = os.path.join(os.path.expanduser("~"), ".m2", "settings.xml")
|
||||
|
||||
@@ -26,8 +26,8 @@ class Intelephense(SolidLanguageServer):
|
||||
Provides PHP specific instantiation of the LanguageServer class using Intelephense.
|
||||
|
||||
You can pass the following entries in ls_specific_settings["php"]:
|
||||
- maxMemory
|
||||
- maxFileSize
|
||||
- maxMemory: sets intelephense.maxMemory
|
||||
- maxFileSize: sets intelephense.files.maxSize
|
||||
"""
|
||||
|
||||
@override
|
||||
@@ -130,9 +130,8 @@ class Intelephense(SolidLanguageServer):
|
||||
if license_key:
|
||||
initialization_options["licenceKey"] = license_key
|
||||
|
||||
custom_intelephense_settings = self._solidlsp_settings.ls_specific_settings.get(self.get_language_enum_instance(), {})
|
||||
max_memory = custom_intelephense_settings.get("maxMemory")
|
||||
max_file_size = custom_intelephense_settings.get("maxFileSize")
|
||||
max_memory = self._custom_settings.get("maxMemory")
|
||||
max_file_size = self._custom_settings.get("maxFileSize")
|
||||
if max_memory is not None:
|
||||
initialization_options["intelephense.maxMemory"] = max_memory
|
||||
if max_file_size is not None:
|
||||
|
||||
@@ -176,6 +176,7 @@ class SolidLanguageServer(ABC):
|
||||
as opposed to HTTP, TCP modes supported by some language servers.
|
||||
"""
|
||||
self._solidlsp_settings = solidlsp_settings
|
||||
self._custom_settings = solidlsp_settings.get_ls_specific_settings(self.get_language_enum_instance())
|
||||
self._encoding = config.encoding
|
||||
self.logger = logger
|
||||
self.repository_root_path: str = repository_root_path
|
||||
|
||||
@@ -23,7 +23,7 @@ class SolidLSPSettings:
|
||||
For instance, if this is ".solidlsp" and the project is located at "/home/user/myproject",
|
||||
then Solid-LSP will store project-specific data in "/home/user/myproject/.solidlsp".
|
||||
"""
|
||||
ls_specific_settings: dict["Language", Any] = field(default_factory=dict)
|
||||
ls_specific_settings: dict["Language", dict[str, Any]] = field(default_factory=dict)
|
||||
"""
|
||||
Advanced configuration option allowing to configure language server implementation specific options.
|
||||
Have a look at the docstring of the constructors of the corresponding LS implementations within solidlsp to see which options are available.
|
||||
@@ -37,3 +37,12 @@ class SolidLSPSettings:
|
||||
@property
|
||||
def ls_resources_dir(self):
|
||||
return os.path.join(str(self.solidlsp_dir), "language_servers", "static")
|
||||
|
||||
def get_ls_specific_settings(self, language: "Language") -> dict[str, Any]:
|
||||
"""
|
||||
Get the language server specific settings for the given language.
|
||||
|
||||
:param language: The programming language.
|
||||
:return: A dictionary of settings for the language server.
|
||||
"""
|
||||
return self.ls_specific_settings.get(language, {})
|
||||
Reference in new issue
Block a user