aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r--crates/ra_lsp_server/Cargo.toml2
-rw-r--r--crates/ra_lsp_server/src/conv.rs2
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs2
-rw-r--r--crates/ra_lsp_server/src/world.rs10
4 files changed, 10 insertions, 6 deletions
diff --git a/crates/ra_lsp_server/Cargo.toml b/crates/ra_lsp_server/Cargo.toml
index afeac0d8a..e271c257b 100644
--- a/crates/ra_lsp_server/Cargo.toml
+++ b/crates/ra_lsp_server/Cargo.toml
@@ -16,7 +16,7 @@ lsp-types = { version = "0.60.0", features = ["proposed"] }
16rustc-hash = "1.0" 16rustc-hash = "1.0"
17parking_lot = "0.9.0" 17parking_lot = "0.9.0"
18 18
19ra_vfs = "0.2.7" 19ra_vfs = "0.3.0"
20thread_worker = { path = "../thread_worker" } 20thread_worker = { path = "../thread_worker" }
21ra_syntax = { path = "../ra_syntax" } 21ra_syntax = { path = "../ra_syntax" }
22ra_text_edit = { path = "../ra_text_edit" } 22ra_text_edit = { path = "../ra_text_edit" }
diff --git a/crates/ra_lsp_server/src/conv.rs b/crates/ra_lsp_server/src/conv.rs
index 0ad2ea10f..5fa52ec1b 100644
--- a/crates/ra_lsp_server/src/conv.rs
+++ b/crates/ra_lsp_server/src/conv.rs
@@ -42,7 +42,7 @@ impl Conv for SyntaxKind {
42 SyntaxKind::TRAIT_DEF => SymbolKind::Interface, 42 SyntaxKind::TRAIT_DEF => SymbolKind::Interface,
43 SyntaxKind::MODULE => SymbolKind::Module, 43 SyntaxKind::MODULE => SymbolKind::Module,
44 SyntaxKind::TYPE_ALIAS_DEF => SymbolKind::TypeParameter, 44 SyntaxKind::TYPE_ALIAS_DEF => SymbolKind::TypeParameter,
45 SyntaxKind::NAMED_FIELD_DEF => SymbolKind::Field, 45 SyntaxKind::RECORD_FIELD_DEF => SymbolKind::Field,
46 SyntaxKind::STATIC_DEF => SymbolKind::Constant, 46 SyntaxKind::STATIC_DEF => SymbolKind::Constant,
47 SyntaxKind::CONST_DEF => SymbolKind::Constant, 47 SyntaxKind::CONST_DEF => SymbolKind::Constant,
48 SyntaxKind::IMPL_BLOCK => SymbolKind::Object, 48 SyntaxKind::IMPL_BLOCK => SymbolKind::Object,
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs
index ce25ff162..45bd52769 100644
--- a/crates/ra_lsp_server/src/main_loop.rs
+++ b/crates/ra_lsp_server/src/main_loop.rs
@@ -217,7 +217,7 @@ fn main_loop_inner(
217 Err(RecvError) => Err("client exited without shutdown")?, 217 Err(RecvError) => Err("client exited without shutdown")?,
218 }, 218 },
219 recv(task_receiver) -> task => Event::Task(task.unwrap()), 219 recv(task_receiver) -> task => Event::Task(task.unwrap()),
220 recv(state.vfs.read().task_receiver()) -> task => match task { 220 recv(state.task_receiver) -> task => match task {
221 Ok(task) => Event::Vfs(task), 221 Ok(task) => Event::Vfs(task),
222 Err(RecvError) => Err("vfs died")?, 222 Err(RecvError) => Err("vfs died")?,
223 }, 223 },
diff --git a/crates/ra_lsp_server/src/world.rs b/crates/ra_lsp_server/src/world.rs
index 6696dff71..cc7964469 100644
--- a/crates/ra_lsp_server/src/world.rs
+++ b/crates/ra_lsp_server/src/world.rs
@@ -3,6 +3,7 @@ use std::{
3 sync::Arc, 3 sync::Arc,
4}; 4};
5 5
6use crossbeam_channel::{unbounded, Receiver};
6use gen_lsp_server::ErrorCode; 7use gen_lsp_server::ErrorCode;
7use lsp_types::Url; 8use lsp_types::Url;
8use parking_lot::RwLock; 9use parking_lot::RwLock;
@@ -10,7 +11,7 @@ use ra_ide_api::{
10 Analysis, AnalysisChange, AnalysisHost, CrateGraph, FeatureFlags, FileId, LibraryData, 11 Analysis, AnalysisChange, AnalysisHost, CrateGraph, FeatureFlags, FileId, LibraryData,
11 SourceRootId, 12 SourceRootId,
12}; 13};
13use ra_vfs::{LineEndings, RootEntry, Vfs, VfsChange, VfsFile, VfsRoot}; 14use ra_vfs::{LineEndings, RootEntry, Vfs, VfsChange, VfsFile, VfsRoot, VfsTask};
14use ra_vfs_glob::{Glob, RustPackageFilterBuilder}; 15use ra_vfs_glob::{Glob, RustPackageFilterBuilder};
15use relative_path::RelativePathBuf; 16use relative_path::RelativePathBuf;
16 17
@@ -39,6 +40,7 @@ pub struct WorldState {
39 pub workspaces: Arc<Vec<ProjectWorkspace>>, 40 pub workspaces: Arc<Vec<ProjectWorkspace>>,
40 pub analysis_host: AnalysisHost, 41 pub analysis_host: AnalysisHost,
41 pub vfs: Arc<RwLock<Vfs>>, 42 pub vfs: Arc<RwLock<Vfs>>,
43 pub task_receiver: Receiver<VfsTask>,
42 pub latest_requests: Arc<RwLock<LatestRequests>>, 44 pub latest_requests: Arc<RwLock<LatestRequests>>,
43} 45}
44 46
@@ -80,8 +82,9 @@ impl WorldState {
80 RootEntry::new(pkg_root.path().clone(), filter.into_vfs_filter()) 82 RootEntry::new(pkg_root.path().clone(), filter.into_vfs_filter())
81 })); 83 }));
82 } 84 }
83 85 let (task_sender, task_receiver) = unbounded();
84 let (mut vfs, vfs_roots) = Vfs::new(roots); 86 let task_sender = Box::new(move |t| task_sender.send(t).unwrap());
87 let (mut vfs, vfs_roots) = Vfs::new(roots, task_sender);
85 let roots_to_scan = vfs_roots.len(); 88 let roots_to_scan = vfs_roots.len();
86 for r in vfs_roots { 89 for r in vfs_roots {
87 let vfs_root_path = vfs.root2path(r); 90 let vfs_root_path = vfs.root2path(r);
@@ -109,6 +112,7 @@ impl WorldState {
109 workspaces: Arc::new(workspaces), 112 workspaces: Arc::new(workspaces),
110 analysis_host, 113 analysis_host,
111 vfs: Arc::new(RwLock::new(vfs)), 114 vfs: Arc::new(RwLock::new(vfs)),
115 task_receiver,
112 latest_requests: Default::default(), 116 latest_requests: Default::default(),
113 } 117 }
114 } 118 }