From 7fc91f41d8bd948cef3085d7c0d0ec92d1b2bc53 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 13 Aug 2018 16:07:05 +0300 Subject: Generalize query --- crates/server/src/main_loop/handlers.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'crates/server/src/main_loop') diff --git a/crates/server/src/main_loop/handlers.rs b/crates/server/src/main_loop/handlers.rs index bd0e6825b..f51909280 100644 --- a/crates/server/src/main_loop/handlers.rs +++ b/crates/server/src/main_loop/handlers.rs @@ -5,7 +5,7 @@ use languageserver_types::{ Command, TextDocumentIdentifier, WorkspaceEdit, SymbolInformation, Location, }; -use libanalysis::{World}; +use libanalysis::{World, Query}; use libeditor; use libsyntax2::TextUnit; use serde_json::{to_value, from_value}; @@ -100,7 +100,20 @@ pub fn handle_workspace_symbol( params: req::WorkspaceSymbolParams, ) -> Result>> { let mut acc = Vec::new(); - for (path, symbol) in world.world_symbols(¶ms.query).take(128) { + + let query = { + let all_symbols = params.query.contains("#"); + let query: String = params.query.chars() + .filter(|&c| c != '#') + .collect(); + let mut q = Query::new(query); + if !all_symbols { + q.only_types(); + } + q + }; + + for (path, symbol) in world.world_symbols(query).take(128) { let line_index = world.file_line_index(path)?; let info = SymbolInformation { -- cgit v1.2.3