diff options
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r-- | crates/ra_lsp_server/src/init.rs | 14 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main_loop.rs | 2 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/world.rs | 8 |
3 files changed, 18 insertions, 6 deletions
diff --git a/crates/ra_lsp_server/src/init.rs b/crates/ra_lsp_server/src/init.rs index 1b77e0312..b894b449d 100644 --- a/crates/ra_lsp_server/src/init.rs +++ b/crates/ra_lsp_server/src/init.rs | |||
@@ -17,11 +17,17 @@ pub struct InitializationOptions { | |||
17 | /// Defaults to `true` | 17 | /// Defaults to `true` |
18 | #[serde(deserialize_with = "nullable_bool_true")] | 18 | #[serde(deserialize_with = "nullable_bool_true")] |
19 | pub show_workspace_loaded: bool, | 19 | pub show_workspace_loaded: bool, |
20 | |||
21 | pub lru_capacity: Option<usize>, | ||
20 | } | 22 | } |
21 | 23 | ||
22 | impl Default for InitializationOptions { | 24 | impl Default for InitializationOptions { |
23 | fn default() -> InitializationOptions { | 25 | fn default() -> InitializationOptions { |
24 | InitializationOptions { publish_decorations: false, show_workspace_loaded: true } | 26 | InitializationOptions { |
27 | publish_decorations: false, | ||
28 | show_workspace_loaded: true, | ||
29 | lru_capacity: None, | ||
30 | } | ||
25 | } | 31 | } |
26 | } | 32 | } |
27 | 33 | ||
@@ -54,8 +60,10 @@ mod test { | |||
54 | assert_eq!(default, serde_json::from_str(r#"{}"#).unwrap()); | 60 | assert_eq!(default, serde_json::from_str(r#"{}"#).unwrap()); |
55 | assert_eq!( | 61 | assert_eq!( |
56 | default, | 62 | default, |
57 | serde_json::from_str(r#"{"publishDecorations":null, "showWorkspaceLoaded":null}"#) | 63 | serde_json::from_str( |
58 | .unwrap() | 64 | r#"{"publishDecorations":null, "showWorkspaceLoaded":null, "lruCapacity":null}"# |
65 | ) | ||
66 | .unwrap() | ||
59 | ); | 67 | ); |
60 | } | 68 | } |
61 | } | 69 | } |
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs index 090fb9b1b..0790ea472 100644 --- a/crates/ra_lsp_server/src/main_loop.rs +++ b/crates/ra_lsp_server/src/main_loop.rs | |||
@@ -73,7 +73,7 @@ pub fn main_loop( | |||
73 | loaded_workspaces | 73 | loaded_workspaces |
74 | }; | 74 | }; |
75 | 75 | ||
76 | let mut state = WorldState::new(ws_roots, workspaces); | 76 | let mut state = WorldState::new(ws_roots, workspaces, options.lru_capacity); |
77 | 77 | ||
78 | let pool = ThreadPool::new(THREADPOOL_SIZE); | 78 | let pool = ThreadPool::new(THREADPOOL_SIZE); |
79 | let (task_sender, task_receiver) = unbounded::<Task>(); | 79 | let (task_sender, task_receiver) = unbounded::<Task>(); |
diff --git a/crates/ra_lsp_server/src/world.rs b/crates/ra_lsp_server/src/world.rs index cd8df4fdb..f9ce570ca 100644 --- a/crates/ra_lsp_server/src/world.rs +++ b/crates/ra_lsp_server/src/world.rs | |||
@@ -46,7 +46,11 @@ pub struct WorldSnapshot { | |||
46 | } | 46 | } |
47 | 47 | ||
48 | impl WorldState { | 48 | impl WorldState { |
49 | pub fn new(folder_roots: Vec<PathBuf>, workspaces: Vec<ProjectWorkspace>) -> WorldState { | 49 | pub fn new( |
50 | folder_roots: Vec<PathBuf>, | ||
51 | workspaces: Vec<ProjectWorkspace>, | ||
52 | lru_capacity: Option<usize>, | ||
53 | ) -> WorldState { | ||
50 | let mut change = AnalysisChange::new(); | 54 | let mut change = AnalysisChange::new(); |
51 | 55 | ||
52 | let mut roots = Vec::new(); | 56 | let mut roots = Vec::new(); |
@@ -74,7 +78,7 @@ impl WorldState { | |||
74 | } | 78 | } |
75 | change.set_crate_graph(crate_graph); | 79 | change.set_crate_graph(crate_graph); |
76 | 80 | ||
77 | let mut analysis_host = AnalysisHost::default(); | 81 | let mut analysis_host = AnalysisHost::new(lru_capacity); |
78 | analysis_host.apply_change(change); | 82 | analysis_host.apply_change(change); |
79 | WorldState { | 83 | WorldState { |
80 | roots_to_scan, | 84 | roots_to_scan, |