Only start the language server if in LS mode (not JetBrains mode)

This commit is contained in:
Dominik Jain
2025-07-10 01:52:08 +02:00
committed by Dominik Jain
parent 8c36377dc2
commit f20733fbfa
3 changed files with 16 additions and 6 deletions
+9 -2
View File
@@ -361,6 +361,12 @@ class SerenaAgent:
future = self.issue_task(task)
return future.result()
def is_using_language_server(self) -> bool:
"""
:return: whether this agent uses language server-based code analysis
"""
return not self.serena_config.jetbrains
def _activate_project(self, project: Project) -> None:
log.info(f"Activating {project.project_name} at {project.project_root}")
self._active_project = project
@@ -376,8 +382,9 @@ class SerenaAgent:
self.reset_language_server()
assert self.language_server is not None
# initialize the language server in the background
self.issue_task(init_language_server)
# initialize the language server in the background (if in language server mode)
if self.is_using_language_server():
self.issue_task(init_language_server)
if self._project_activation_callback is not None:
self._project_activation_callback()
@@ -7,6 +7,7 @@ excluded_tools:
- find_symbol
- find_referencing_symbols
- get_symbols_overview
- restart_language_server
included_optional_tools:
- jet_brains_find_symbol
- jet_brains_find_symbol_references
+6 -4
View File
@@ -46,6 +46,8 @@ class Component(ABC):
return self.agent.memories_manager
def create_language_server_symbol_retriever(self) -> LanguageServerSymbolRetriever:
if not self.agent.is_using_language_server():
raise Exception("Cannot create LanguageServerSymbolRetriever; agent is not in language server mode.")
language_server = self.agent.language_server
assert language_server is not None
return LanguageServerSymbolRetriever(language_server, agent=self.agent)
@@ -57,10 +59,10 @@ class Component(ABC):
def create_code_editor(self) -> "CodeEditor":
from ..code_editor import JetBrainsCodeEditor, LanguageServerCodeEditor
if self.agent.serena_config.jetbrains:
return JetBrainsCodeEditor(project=self.project, agent=self.agent)
else:
if self.agent.is_using_language_server():
return LanguageServerCodeEditor(self.create_language_server_symbol_retriever(), agent=self.agent)
else:
return JetBrainsCodeEditor(project=self.project, agent=self.agent)
@property
def lines_read(self) -> "LinesRead":
@@ -223,7 +225,7 @@ class Tool(Component):
"Error: No active project. Ask to user to select a project from this list: "
+ f"{self.agent.serena_config.project_names}"
)
if not self.agent.is_language_server_running():
if self.agent.is_using_language_server() and not self.agent.is_language_server_running():
log.info("Language server is not running. Starting it ...")
self.agent.reset_language_server()