@@ -1550,7 +1550,6 @@ fn openDocumentHandler(server: *Server, _: std.mem.Allocator, notification: type
15501550 return error .InternalError ;
15511551 }
15521552
1553- try server .document_store .trigramIndexUri (notification .textDocument .uri , server .offset_encoding );
15541553 try server .document_store .openDocument (notification .textDocument .uri , notification .textDocument .text );
15551554
15561555 if (server .client_capabilities .supports_publish_diagnostics ) {
@@ -1932,21 +1931,28 @@ fn selectionRangeHandler(server: *Server, arena: std.mem.Allocator, request: typ
19321931fn workspaceSymbolHandler (server : * Server , arena : std.mem.Allocator , request : types.WorkspaceSymbolParams ) Error ! lsp. ResultType ("workspace/symbol" ) {
19331932 if (request .query .len < 3 ) return null ;
19341933
1935- // for (server.client_capabilities.workspace_folders) |workspace_folder| {
1936- // const path = URI.parse(arena, workspace_folder) catch return error.InternalError;
1937- // var dir = std.fs.cwd().openDir(path, .{ .iterate = true }) catch return error.InternalError;
1938- // defer dir.close();
1939-
1940- // var walker = try dir.walk(arena);
1941- // defer walker.deinit();
1942-
1943- // while (walker.next() catch return error.InternalError) |entry| {
1944- // if (std.mem.eql(u8, std.fs.path.extension(entry.basename), ".zig")) {
1945- // const uri = URI.pathRelative(arena, workspace_folder, entry.path) catch return error.InternalError;
1946- // _ = try server.document_store.getOrConstructTrigramStore(uri);
1947- // }
1948- // }
1949- // }
1934+ for (server .workspaces .items ) | workspace | {
1935+ const path = Uri .parse (arena , workspace .uri ) catch return error .InternalError ;
1936+ var dir = std .fs .cwd ().openDir (path , .{ .iterate = true }) catch return error .InternalError ;
1937+ defer dir .close ();
1938+
1939+ var walker = try dir .walk (arena );
1940+ defer walker .deinit ();
1941+
1942+ while (walker .next () catch return error .InternalError ) | entry | {
1943+ if (std .mem .eql (u8 , std .fs .path .extension (entry .basename ), ".zig" )) {
1944+ const uri = Uri .fromPath (
1945+ arena ,
1946+ std .fs .path .join (arena , &.{ path , entry .path }) catch return error .InternalError ,
1947+ ) catch return error .InternalError ;
1948+
1949+ server .document_store .trigramIndexUri (
1950+ uri ,
1951+ server .offset_encoding ,
1952+ ) catch return error .InternalError ;
1953+ }
1954+ }
1955+ }
19501956
19511957 var symbols : std .ArrayListUnmanaged (types .WorkspaceSymbol ) = .empty ;
19521958 var declaration_buffer : std .ArrayListUnmanaged (TrigramStore .Declaration .Index ) = .empty ;
@@ -1977,60 +1983,6 @@ fn workspaceSymbolHandler(server: *Server, arena: std.mem.Allocator, request: ty
19771983 }
19781984 }
19791985
1980- // var symbols = std.ArrayListUnmanaged(types.WorkspaceSymbol){};
1981- // var candidate_decls_buffer = std.ArrayListUnmanaged(Analyser.Declaration.Index){};
1982-
1983- // doc_loop: for (server.document_store.trigram_stores.keys(), server.document_store.trigram_stores.values()) |uri, trigram_store| {
1984- // const handle = server.document_store.getOrLoadHandle(uri) orelse continue;
1985-
1986- // const tree = handle.tree;
1987- // const doc_scope = try handle.getDocumentScope();
1988-
1989- // for (trigrams.items) |trigram| {
1990- // if (!trigram_store.filter.contain(@bitCast(trigram))) continue :doc_loop;
1991- // }
1992-
1993- // candidate_decls_buffer.clearRetainingCapacity();
1994-
1995- // const first = trigram_store.getDeclarationsForTrigram(trigrams.items[0]) orelse continue;
1996-
1997- // try candidate_decls_buffer.resize(arena, first.len * 2);
1998-
1999- // var len = first.len;
2000-
2001- // @memcpy(candidate_decls_buffer.items[0..len], first);
2002- // @memcpy(candidate_decls_buffer.items[len..], first);
2003-
2004- // for (trigrams.items[1..]) |trigram| {
2005- // len = workspace_symbols.mergeIntersection(
2006- // trigram_store.getDeclarationsForTrigram(trigram) orelse continue :doc_loop,
2007- // candidate_decls_buffer.items[len..],
2008- // candidate_decls_buffer.items[0..len],
2009- // );
2010- // candidate_decls_buffer.items.len = len * 2;
2011- // @memcpy(candidate_decls_buffer.items[len..], candidate_decls_buffer.items[0..len]);
2012- // }
2013-
2014- // candidate_decls_buffer.items.len = len;
2015-
2016- // for (candidate_decls_buffer.items) |decl_idx| {
2017- // const decl = doc_scope.declarations.get(@intFromEnum(decl_idx));
2018- // const name_token = decl.nameToken(tree);
2019-
2020- // // TODO: integrate with document_symbol.zig for right kind info
2021- // try symbols.append(arena, .{
2022- // .name = tree.tokenSlice(name_token),
2023- // .kind = .Variable,
2024- // .location = .{
2025- // .Location = .{
2026- // .uri = handle.uri,
2027- // .range = offsets.tokenToRange(tree, name_token, server.offset_encoding),
2028- // },
2029- // },
2030- // });
2031- // }
2032- // }
2033-
20341986 return .{ .array_of_WorkspaceSymbol = symbols .items };
20351987}
20361988
0 commit comments