aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-06-07 18:49:29 +0100
committerAleksey Kladov <[email protected]>2019-06-12 11:36:24 +0100
commitfed52706def9a9f5d33edc7dd9848a02ae475ba5 (patch)
treebe508002355e87b97bd98a64f1678f431ed4b3ae /crates/ra_lsp_server/src
parent15668119de40b97011a1f2e2d065d11f25a5833a (diff)
make LRU cache configurable
Diffstat (limited to 'crates/ra_lsp_server/src')
-rw-r--r--crates/ra_lsp_server/src/init.rs14
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs2
-rw-r--r--crates/ra_lsp_server/src/world.rs8
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
22impl Default for InitializationOptions { 24impl 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
48impl WorldState { 48impl 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,