@@ -1550,7 +1550,6 @@ fn openDocumentHandler(server: *Server, _: std.mem.Allocator, notification: type
1550
1550
return error .InternalError ;
1551
1551
}
1552
1552
1553
- try server .document_store .trigramIndexUri (notification .textDocument .uri , server .offset_encoding );
1554
1553
try server .document_store .openDocument (notification .textDocument .uri , notification .textDocument .text );
1555
1554
1556
1555
if (server .client_capabilities .supports_publish_diagnostics ) {
@@ -1932,21 +1931,28 @@ fn selectionRangeHandler(server: *Server, arena: std.mem.Allocator, request: typ
1932
1931
fn workspaceSymbolHandler (server : * Server , arena : std.mem.Allocator , request : types.WorkspaceSymbolParams ) Error ! lsp. ResultType ("workspace/symbol" ) {
1933
1932
if (request .query .len < 3 ) return null ;
1934
1933
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
+ }
1950
1956
1951
1957
var symbols : std .ArrayListUnmanaged (types .WorkspaceSymbol ) = .empty ;
1952
1958
var declaration_buffer : std .ArrayListUnmanaged (TrigramStore .Declaration .Index ) = .empty ;
@@ -1977,60 +1983,6 @@ fn workspaceSymbolHandler(server: *Server, arena: std.mem.Allocator, request: ty
1977
1983
}
1978
1984
}
1979
1985
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
-
2034
1986
return .{ .array_of_WorkspaceSymbol = symbols .items };
2035
1987
}
2036
1988
0 commit comments