diff --git a/scripts/demo_run_tools.py b/scripts/demo_run_tools.py index 5d2b3358..d382dc32 100644 --- a/scripts/demo_run_tools.py +++ b/scripts/demo_run_tools.py @@ -7,6 +7,8 @@ import json from pathlib import Path from pprint import pprint +from toon_format import encode + from serena.agent import SerenaAgent from serena.config.serena_config import SerenaConfig from serena.constants import REPO_ROOT @@ -24,7 +26,7 @@ if __name__ == "__main__": serena_config = SerenaConfig.from_config_file() serena_config.web_dashboard = False # project = Path(REPO_ROOT).parent / "serena-jetbrains-plugin-copy" - project = Path(REPO_ROOT) / "test/resources/repos/python/test_repo" + project = Path(REPO_ROOT) agent = SerenaAgent(project=str(project), serena_config=serena_config) # apply a tool @@ -37,11 +39,12 @@ if __name__ == "__main__": inline_symbol = agent.get_tool(JetBrainsInlineSymbol) result = agent.execute_task( - lambda: inline_symbol.apply( - relative_path="test_repo/nested.py", - name_path="OuterClass/NestedClass", - keep_definition=True, + lambda: overview_tool.apply( + # name_path_pattern="SerenaAgent", + relative_path="src/serena/agent.py", + depth=2, + # keep_definition=True, ) ) - pprint(json.loads(result)) + pprint(encode(json.loads(result))) # input("Press Enter to continue...") diff --git a/src/solidlsp/language_servers/ccls_language_server.py b/src/solidlsp/language_servers/ccls_language_server.py index b9897172..252839ab 100644 --- a/src/solidlsp/language_servers/ccls_language_server.py +++ b/src/solidlsp/language_servers/ccls_language_server.py @@ -34,6 +34,8 @@ import pathlib import threading from typing import Any, cast +from overrides import override + from solidlsp.ls import ( LanguageServerDependencyProvider, LanguageServerDependencyProviderSinglePath, @@ -67,6 +69,13 @@ class CCLS(SolidLanguageServer): def _create_dependency_provider(self) -> LanguageServerDependencyProvider: return self.DependencyProvider(self._custom_settings, self._ls_resources_dir) + @override + def is_ignored_dirname(self, dirname: str) -> bool: + ignored_dirs = [ + ".ccls-cache", + ] + return super().is_ignored_dirname(dirname) or dirname in ignored_dirs + class DependencyProvider(LanguageServerDependencyProviderSinglePath): def _get_or_install_core_dependency(self) -> str: """ diff --git a/src/solidlsp/language_servers/clangd_language_server.py b/src/solidlsp/language_servers/clangd_language_server.py index c5488810..0210e7d5 100644 --- a/src/solidlsp/language_servers/clangd_language_server.py +++ b/src/solidlsp/language_servers/clangd_language_server.py @@ -5,6 +5,8 @@ import pathlib import threading from typing import Any, cast +from overrides import override + from solidlsp.ls import LanguageServerDependencyProvider, LanguageServerDependencyProviderSinglePath, ProcessLaunchInfo, SolidLanguageServer from solidlsp.ls_config import LanguageServerConfig from solidlsp.lsp_protocol_handler.lsp_types import InitializeParams @@ -40,6 +42,13 @@ class ClangdLanguageServer(SolidLanguageServer): self.initialize_searcher_command_available = threading.Event() self.resolve_main_method_available = threading.Event() + @override + def is_ignored_dirname(self, dirname: str) -> bool: + ignored_dirs = [ + ".ccls-cache", + ] + return super().is_ignored_dirname(dirname) or dirname in ignored_dirs + def _prepare_compile_commands(self) -> str | None: """ Prepare clangd compilation database with absolute directory paths. diff --git a/src/solidlsp/language_servers/clojure_lsp.py b/src/solidlsp/language_servers/clojure_lsp.py index 3fe17de1..4fdc3ce9 100644 --- a/src/solidlsp/language_servers/clojure_lsp.py +++ b/src/solidlsp/language_servers/clojure_lsp.py @@ -10,6 +10,8 @@ import subprocess import threading from typing import cast +from overrides import override + from solidlsp.ls import LanguageServerDependencyProvider, LanguageServerDependencyProviderSinglePath, SolidLanguageServer from solidlsp.ls_config import LanguageServerConfig from solidlsp.lsp_protocol_handler.lsp_types import InitializeParams @@ -59,6 +61,11 @@ class ClojureLSP(SolidLanguageServer): CLOJURE_LSP_VERSION = CLOJURE_LSP_VERSION CLOJURE_LSP_ALLOWED_HOSTS = CLOJURE_LSP_ALLOWED_HOSTS + @override + def is_ignored_dirname(self, dirname: str) -> bool: + ignored_dirs = [".clj-kondo", ".lsp", ".cpcache"] + return super().is_ignored_dirname(dirname) or dirname in ignored_dirs + @classmethod def _runtime_dependencies(cls, version: str) -> RuntimeDependencyCollection: clojure_lsp_releases = f"https://github.com/clojure-lsp/clojure-lsp/releases/download/{version}" diff --git a/src/solidlsp/language_servers/ruby_lsp.py b/src/solidlsp/language_servers/ruby_lsp.py index 7bd56256..fd72b289 100644 --- a/src/solidlsp/language_servers/ruby_lsp.py +++ b/src/solidlsp/language_servers/ruby_lsp.py @@ -67,6 +67,7 @@ class RubyLsp(SolidLanguageServer): "public/packs", # Webpacker output "public/webpack", # Webpack output "public/assets", # Rails compiled assets + ".ruby-lsp", ] return super().is_ignored_dirname(dirname) or dirname in ruby_ignored_dirs diff --git a/src/solidlsp/language_servers/solargraph.py b/src/solidlsp/language_servers/solargraph.py index 62a77749..f42f0854 100644 --- a/src/solidlsp/language_servers/solargraph.py +++ b/src/solidlsp/language_servers/solargraph.py @@ -67,6 +67,7 @@ class Solargraph(SolidLanguageServer): "doc", # Generated documentation "node_modules", # Node modules (for Rails with JS) "storage", # Active Storage files (Rails) + ".ruby-lsp", ] return super().is_ignored_dirname(dirname) or dirname in ruby_ignored_dirs diff --git a/src/solidlsp/language_servers/taplo_server.py b/src/solidlsp/language_servers/taplo_server.py index a832e13e..410edde1 100644 --- a/src/solidlsp/language_servers/taplo_server.py +++ b/src/solidlsp/language_servers/taplo_server.py @@ -14,6 +14,8 @@ import shutil import stat from typing import Any +from overrides import override + from solidlsp.ls import LanguageServerDependencyProvider, LanguageServerDependencyProviderSinglePath, SolidLanguageServer from solidlsp.ls_config import LanguageServerConfig from solidlsp.ls_utils import FileUtils, PathUtils @@ -266,6 +268,10 @@ class TaploServer(SolidLanguageServer): log.info("Taplo server initialization complete") + @override def is_ignored_dirname(self, dirname: str) -> bool: - """Define TOML-specific directories to ignore.""" - return super().is_ignored_dirname(dirname) or dirname in ["target", ".cargo", "node_modules"] + if dirname == ".vscode": + # special case, one might want to analyze toml files in .vscode + return False + dirnames_to_ignore = ["target", ".cargo", "node_modules"] + return dirname in dirnames_to_ignore or super().is_ignored_dirname(dirname) diff --git a/src/solidlsp/ls.py b/src/solidlsp/ls.py index 9dda6f33..4a1f5986 100644 --- a/src/solidlsp/ls.py +++ b/src/solidlsp/ls.py @@ -371,6 +371,7 @@ class SolidLanguageServer(ABC): ".nox", # test runners ".idea", # IDE internals ".serena", # serena's own data + ".vscode", # Doesn't contain symbols } )