mirror of
https://github.com/tiennm99/serena.git
synced 2026-08-18 04:28:14 +00:00
Only start the language server if in LS mode (not JetBrains mode)
This commit is contained in:
committed by
Dominik Jain
parent
8c36377dc2
commit
f20733fbfa
+9
-2
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user