From 4688a4877097f5df73d252256002e3a6c2afca2b Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Mon, 17 Nov 2025 15:46:01 +0100 Subject: [PATCH] Use a single loop over source files to index project Resolves #765 --- src/serena/cli.py | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/serena/cli.py b/src/serena/cli.py index 178d643d..017f0d5a 100644 --- a/src/serena/cli.py +++ b/src/serena/cli.py @@ -529,23 +529,20 @@ class ProjectCommands(AutoRegisteringGroup): files = proj.gather_source_files() - servers = list(ls_mgr.iter_language_servers()) - for k, ls in enumerate(servers, start=1): - click.echo(f"Indexing for language {ls.language.value} ({k}/{len(servers)}) …") - collected_exceptions: list[Exception] = [] - files_failed = [] - for i, f in enumerate(tqdm(files, desc="Indexing")): - try: - ls.request_document_symbols(f, include_body=False) - ls.request_document_symbols(f, include_body=True) - except Exception as e: - log.error(f"Failed to index {f}, continuing.") - collected_exceptions.append(e) - files_failed.append(f) - if (i + 1) % 10 == 0: - ls.save_cache() - ls.save_cache() - click.echo(f"Symbols saved to {ls.cache_path}") + collected_exceptions: list[Exception] = [] + files_failed = [] + for i, f in enumerate(tqdm(files, desc="Indexing")): + try: + ls = ls_mgr.get_language_server(f) + ls.request_document_symbols(f, include_body=False) + ls.request_document_symbols(f, include_body=True) + except Exception as e: + log.error(f"Failed to index {f}, continuing.") + collected_exceptions.append(e) + files_failed.append(f) + if (i + 1) % 10 == 0: + ls_mgr.save_all_caches() + ls_mgr.save_all_caches() if len(files_failed) > 0: os.makedirs(os.path.dirname(log_file), exist_ok=True)