aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/ide_db/symbol_index.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide/src/ide_db/symbol_index.rs')
-rw-r--r--crates/ra_ide/src/ide_db/symbol_index.rs42
1 files changed, 41 insertions, 1 deletions
diff --git a/crates/ra_ide/src/ide_db/symbol_index.rs b/crates/ra_ide/src/ide_db/symbol_index.rs
index 4ceb5e66f..c66eeb8e2 100644
--- a/crates/ra_ide/src/ide_db/symbol_index.rs
+++ b/crates/ra_ide/src/ide_db/symbol_index.rs
@@ -40,7 +40,47 @@ use ra_syntax::{
40#[cfg(not(feature = "wasm"))] 40#[cfg(not(feature = "wasm"))]
41use rayon::prelude::*; 41use rayon::prelude::*;
42 42
43use crate::{ide_db::RootDatabase, Query}; 43use crate::ide_db::RootDatabase;
44
45#[derive(Debug)]
46pub struct Query {
47 query: String,
48 lowercased: String,
49 only_types: bool,
50 libs: bool,
51 exact: bool,
52 limit: usize,
53}
54
55impl Query {
56 pub fn new(query: String) -> Query {
57 let lowercased = query.to_lowercase();
58 Query {
59 query,
60 lowercased,
61 only_types: false,
62 libs: false,
63 exact: false,
64 limit: usize::max_value(),
65 }
66 }
67
68 pub fn only_types(&mut self) {
69 self.only_types = true;
70 }
71
72 pub fn libs(&mut self) {
73 self.libs = true;
74 }
75
76 pub fn exact(&mut self) {
77 self.exact = true;
78 }
79
80 pub fn limit(&mut self, limit: usize) {
81 self.limit = limit
82 }
83}
44 84
45#[salsa::query_group(SymbolsDatabaseStorage)] 85#[salsa::query_group(SymbolsDatabaseStorage)]
46pub(crate) trait SymbolsDatabase: hir::db::HirDatabase { 86pub(crate) trait SymbolsDatabase: hir::db::HirDatabase {