diff --git a/src/multilspy/language_servers/rust_analyzer/rust_analyzer.py b/src/multilspy/language_servers/rust_analyzer/rust_analyzer.py index 1a95eec..d51c907 100644 --- a/src/multilspy/language_servers/rust_analyzer/rust_analyzer.py +++ b/src/multilspy/language_servers/rust_analyzer/rust_analyzer.py @@ -43,6 +43,12 @@ def setup_runtime_dependencies(self, logger: MultilspyLogger, config: MultilspyC """ Setup runtime dependencies for rust_analyzer. """ + + if config.custom_lsp_binary: + path = os.path.abspath(config.custom_lsp_binary) + assert os.path.exists(path) + return path + platform_id = PlatformUtils.get_platform_id() with open(os.path.join(os.path.dirname(__file__), "runtime_dependencies.json"), "r") as f: diff --git a/src/multilspy/multilspy_config.py b/src/multilspy/multilspy_config.py index 86c6a6c..ec86199 100644 --- a/src/multilspy/multilspy_config.py +++ b/src/multilspy/multilspy_config.py @@ -4,6 +4,7 @@ from enum import Enum from dataclasses import dataclass +from typing import Optional class Language(str, Enum): """ @@ -33,6 +34,8 @@ class MultilspyConfig: code_language: Language trace_lsp_communication: bool = False start_independent_lsp_process: bool = True + # Only works for Rust Analyzer + custom_lsp_binary: Optional[str] = None @classmethod def from_dict(cls, env: dict):