diff --git a/src/solidlsp/language_servers/pyright_server.py b/src/solidlsp/language_servers/pyright_server.py index 649dad24..6780e60d 100644 --- a/src/solidlsp/language_servers/pyright_server.py +++ b/src/solidlsp/language_servers/pyright_server.py @@ -10,11 +10,9 @@ import threading from typing import cast from overrides import override - -from solidlsp.ls import SolidLanguageServer +from solidlsp.ls import LanguageServerDependencyProvider, LanguageServerDependencyProviderSinglePath, SolidLanguageServer from solidlsp.ls_config import LanguageServerConfig from solidlsp.lsp_protocol_handler.lsp_types import InitializeParams -from solidlsp.lsp_protocol_handler.server import ProcessLaunchInfo from solidlsp.settings import SolidLSPSettings log = logging.getLogger(__name__) @@ -34,7 +32,7 @@ class PyrightServer(SolidLanguageServer): super().__init__( config, repository_root_path, - ProcessLaunchInfo(cmd="python -m pyright.langserver --stdio", cwd=repository_root_path), + None, "python", solidlsp_settings, ) @@ -43,6 +41,16 @@ class PyrightServer(SolidLanguageServer): self.analysis_complete = threading.Event() self.found_source_files = False + def _create_dependency_provider(self) -> LanguageServerDependencyProvider: + return self.DependencyProvider(self._custom_settings, self._ls_resources_dir) + + class DependencyProvider(LanguageServerDependencyProviderSinglePath): + def _get_or_install_core_dependency(self) -> str: + return "python" + + def _create_launch_command(self, core_path: str) -> list[str]: + return [core_path, "-m", "pyright.langserver", "--stdio"] + @override def is_ignored_dirname(self, dirname: str) -> bool: return super().is_ignored_dirname(dirname) or dirname in ["venv", "__pycache__"]