From ac172dcab6e6d1782454388ddcd88b55b96dfdc2 Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Sat, 21 Jun 2025 15:36:32 +0200 Subject: [PATCH] Add global flag USE_SOLID_LSP to switch from multilspy to solidlsp --- src/serena/agent.py | 15 +++++++++++---- src/serena/constants.py | 2 ++ test/conftest.py | 9 ++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/serena/agent.py b/src/serena/agent.py index 31fc9b44..6ef76ef2 100644 --- a/src/serena/agent.py +++ b/src/serena/agent.py @@ -39,7 +39,14 @@ from multilspy.multilspy_logger import MultilspyLogger from multilspy.multilspy_types import SymbolKind from serena import serena_version from serena.config import SerenaAgentContext, SerenaAgentMode -from serena.constants import DEFAULT_ENCODING, PROJECT_TEMPLATE_FILE, REPO_ROOT, SELENA_CONFIG_TEMPLATE_FILE, SERENA_MANAGED_DIR_NAME +from serena.constants import ( + DEFAULT_ENCODING, + PROJECT_TEMPLATE_FILE, + REPO_ROOT, + SELENA_CONFIG_TEMPLATE_FILE, + SERENA_MANAGED_DIR_NAME, + USE_SOLID_LSP, +) from serena.dashboard import MemoryLogHandler, SerenaDashboardAPI from serena.prompt_factory import PromptFactory, SerenaPromptFactory from serena.symbol import SymbolManager @@ -671,14 +678,14 @@ def create_ls_for_project( ) ls_logger = MultilspyLogger(log_level=log_level) log.info(f"Creating language server instance for {project_instance.project_root}.") - use_solid_ls = True - if use_solid_ls: - return SolidLanguageServer.create( + if USE_SOLID_LSP: + ls = SolidLanguageServer.create( multilspy_config, ls_logger, project_instance.project_root, timeout=ls_timeout, ) + return cast(SyncLanguageServer, ls) # TODO: Fix type else: return SyncLanguageServer.create( multilspy_config, diff --git a/src/serena/constants.py b/src/serena/constants.py index 4cbf39ab..86c1b31f 100644 --- a/src/serena/constants.py +++ b/src/serena/constants.py @@ -18,3 +18,5 @@ DEFAULT_MODES = ("interactive", "editing") PROJECT_TEMPLATE_FILE = str(_serena_pkg_path / "resources" / "project.template.yml") SELENA_CONFIG_TEMPLATE_FILE = str(_serena_pkg_path / "resources" / "serena_config.template.yml") + +USE_SOLID_LSP = True diff --git a/test/conftest.py b/test/conftest.py index 994034e2..75bc8c74 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,5 +1,6 @@ import logging from pathlib import Path +from typing import cast import pytest from sensai.util.logging import configure @@ -7,7 +8,9 @@ from sensai.util.logging import configure from multilspy.language_server import SyncLanguageServer from multilspy.multilspy_config import Language, MultilspyConfig from multilspy.multilspy_logger import MultilspyLogger +from serena.constants import USE_SOLID_LSP from serena.util.file_system import GitignoreParser +from solidlsp.ls import SolidLanguageServer configure(level=logging.DEBUG) @@ -43,7 +46,11 @@ def create_ls( config = MultilspyConfig(code_language=language, ignored_paths=ignored_paths, trace_lsp_communication=trace_lsp_communication) logger = MultilspyLogger(log_level=log_level) - return SyncLanguageServer.create(config, logger, repo_path) + if USE_SOLID_LSP: + ls = SolidLanguageServer.create(config, logger, repo_path) + return cast(SyncLanguageServer, ls) # TODO: Fix type + else: + return SyncLanguageServer.create(config, logger, repo_path) def create_default_ls(language: Language) -> SyncLanguageServer: