aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-12-19 12:04:15 +0000
committerAleksey Kladov <[email protected]>2018-12-20 09:15:38 +0000
commita5ef8ad05b7c1f7148c59814b55d641fd75aff75 (patch)
treedf6c46378d81dc7cb3242ff7f57d836353bde5ed /crates/ra_analysis/src
parent6a755ed83a583d1f70a5fbcff2d4933b52628cfe (diff)
swtich lsp server to vfs
Diffstat (limited to 'crates/ra_analysis/src')
-rw-r--r--crates/ra_analysis/src/imp.rs9
-rw-r--r--crates/ra_analysis/src/lib.rs8
2 files changed, 12 insertions, 5 deletions
diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs
index 51bcd5a73..54f38b285 100644
--- a/crates/ra_analysis/src/imp.rs
+++ b/crates/ra_analysis/src/imp.rs
@@ -43,14 +43,17 @@ impl AnalysisHostImpl {
43 pub fn apply_change(&mut self, change: AnalysisChange) { 43 pub fn apply_change(&mut self, change: AnalysisChange) {
44 log::info!("apply_change {:?}", change); 44 log::info!("apply_change {:?}", change);
45 // self.gc_syntax_trees(); 45 // self.gc_syntax_trees();
46 for root_id in change.new_roots {
47 self.db
48 .query_mut(ra_db::SourceRootQuery)
49 .set(root_id, Default::default());
50 }
46 51
47 for (root_id, root_change) in change.roots_changed { 52 for (root_id, root_change) in change.roots_changed {
48 self.apply_root_change(root_id, root_change); 53 self.apply_root_change(root_id, root_change);
49 } 54 }
50 for (file_id, text) in change.files_changed { 55 for (file_id, text) in change.files_changed {
51 self.db 56 self.db.query_mut(ra_db::FileTextQuery).set(file_id, text)
52 .query_mut(ra_db::FileTextQuery)
53 .set(file_id, Arc::new(text))
54 } 57 }
55 if !change.libraries_added.is_empty() { 58 if !change.libraries_added.is_empty() {
56 let mut libraries = Vec::clone(&self.db.libraries()); 59 let mut libraries = Vec::clone(&self.db.libraries());
diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs
index b806c974d..8882feca3 100644
--- a/crates/ra_analysis/src/lib.rs
+++ b/crates/ra_analysis/src/lib.rs
@@ -44,8 +44,9 @@ pub use ra_db::{
44 44
45#[derive(Default)] 45#[derive(Default)]
46pub struct AnalysisChange { 46pub struct AnalysisChange {
47 new_roots: Vec<SourceRootId>,
47 roots_changed: FxHashMap<SourceRootId, RootChange>, 48 roots_changed: FxHashMap<SourceRootId, RootChange>,
48 files_changed: Vec<(FileId, String)>, 49 files_changed: Vec<(FileId, Arc<String>)>,
49 libraries_added: Vec<LibraryData>, 50 libraries_added: Vec<LibraryData>,
50 crate_graph: Option<CrateGraph>, 51 crate_graph: Option<CrateGraph>,
51} 52}
@@ -93,6 +94,9 @@ impl AnalysisChange {
93 pub fn new() -> AnalysisChange { 94 pub fn new() -> AnalysisChange {
94 AnalysisChange::default() 95 AnalysisChange::default()
95 } 96 }
97 pub fn add_root(&mut self, root_id: SourceRootId) {
98 self.new_roots.push(root_id);
99 }
96 pub fn add_file( 100 pub fn add_file(
97 &mut self, 101 &mut self,
98 root_id: SourceRootId, 102 root_id: SourceRootId,
@@ -111,7 +115,7 @@ impl AnalysisChange {
111 .added 115 .added
112 .push(file); 116 .push(file);
113 } 117 }
114 pub fn change_file(&mut self, file_id: FileId, new_text: String) { 118 pub fn change_file(&mut self, file_id: FileId, new_text: Arc<String>) {
115 self.files_changed.push((file_id, new_text)) 119 self.files_changed.push((file_id, new_text))
116 } 120 }
117 pub fn remove_file(&mut self, root_id: SourceRootId, file_id: FileId, path: RelativePathBuf) { 121 pub fn remove_file(&mut self, root_id: SourceRootId, file_id: FileId, path: RelativePathBuf) {