diff options
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r-- | crates/ra_lsp_server/src/cargo_target_spec.rs | 2 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main_loop/handlers.rs | 10 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/world.rs | 6 |
3 files changed, 12 insertions, 6 deletions
diff --git a/crates/ra_lsp_server/src/cargo_target_spec.rs b/crates/ra_lsp_server/src/cargo_target_spec.rs index c4a9e7101..594caffe2 100644 --- a/crates/ra_lsp_server/src/cargo_target_spec.rs +++ b/crates/ra_lsp_server/src/cargo_target_spec.rs | |||
@@ -63,7 +63,7 @@ impl CargoTargetSpec { | |||
63 | None => return Ok(None), | 63 | None => return Ok(None), |
64 | }; | 64 | }; |
65 | let file_id = world.analysis().crate_root(crate_id)?; | 65 | let file_id = world.analysis().crate_root(crate_id)?; |
66 | let path = world.vfs.read().file2path(ra_vfs::VfsFile(file_id.0)); | 66 | let path = world.file_id_to_path(file_id); |
67 | let res = world.workspaces.iter().find_map(|ws| match ws { | 67 | let res = world.workspaces.iter().find_map(|ws| match ws { |
68 | ProjectWorkspace::Cargo { cargo, .. } => { | 68 | ProjectWorkspace::Cargo { cargo, .. } => { |
69 | let tgt = cargo.target_by_root(&path)?; | 69 | let tgt = cargo.target_by_root(&path)?; |
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index 9e9964880..8e43f0575 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs | |||
@@ -681,10 +681,12 @@ pub fn handle_code_action( | |||
681 | continue; | 681 | continue; |
682 | } | 682 | } |
683 | 683 | ||
684 | let edits = vec![TextEdit::new(fix.location.range, fix.replacement.clone())]; | 684 | let edit = { |
685 | let mut edit_map = std::collections::HashMap::new(); | 685 | let edits = vec![TextEdit::new(fix.location.range, fix.replacement.clone())]; |
686 | edit_map.insert(fix.location.uri.clone(), edits); | 686 | let mut edit_map = std::collections::HashMap::new(); |
687 | let edit = WorkspaceEdit::new(edit_map); | 687 | edit_map.insert(fix.location.uri.clone(), edits); |
688 | WorkspaceEdit::new(edit_map) | ||
689 | }; | ||
688 | 690 | ||
689 | let action = CodeAction { | 691 | let action = CodeAction { |
690 | title: fix.title.clone(), | 692 | title: fix.title.clone(), |
diff --git a/crates/ra_lsp_server/src/world.rs b/crates/ra_lsp_server/src/world.rs index 7a3030a51..e7a0acfc7 100644 --- a/crates/ra_lsp_server/src/world.rs +++ b/crates/ra_lsp_server/src/world.rs | |||
@@ -62,9 +62,9 @@ pub struct WorldSnapshot { | |||
62 | pub options: Options, | 62 | pub options: Options, |
63 | pub workspaces: Arc<Vec<ProjectWorkspace>>, | 63 | pub workspaces: Arc<Vec<ProjectWorkspace>>, |
64 | pub analysis: Analysis, | 64 | pub analysis: Analysis, |
65 | pub vfs: Arc<RwLock<Vfs>>, | ||
66 | pub latest_requests: Arc<RwLock<LatestRequests>>, | 65 | pub latest_requests: Arc<RwLock<LatestRequests>>, |
67 | pub check_watcher: Arc<RwLock<CheckState>>, | 66 | pub check_watcher: Arc<RwLock<CheckState>>, |
67 | vfs: Arc<RwLock<Vfs>>, | ||
68 | } | 68 | } |
69 | 69 | ||
70 | impl WorldState { | 70 | impl WorldState { |
@@ -265,6 +265,10 @@ impl WorldSnapshot { | |||
265 | Ok(url) | 265 | Ok(url) |
266 | } | 266 | } |
267 | 267 | ||
268 | pub fn file_id_to_path(&self, id: FileId) -> PathBuf { | ||
269 | self.vfs.read().file2path(VfsFile(id.0)) | ||
270 | } | ||
271 | |||
268 | pub fn file_line_endings(&self, id: FileId) -> LineEndings { | 272 | pub fn file_line_endings(&self, id: FileId) -> LineEndings { |
269 | self.vfs.read().file_line_endings(VfsFile(id.0)) | 273 | self.vfs.read().file_line_endings(VfsFile(id.0)) |
270 | } | 274 | } |