diff options
-rw-r--r-- | crates/ra_ide_api/src/imp.rs | 5 | ||||
-rw-r--r-- | crates/ra_ide_api/src/lib.rs | 2 | ||||
-rw-r--r-- | crates/ra_ide_api/src/rename.rs | 4 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main_loop/handlers.rs | 34 |
4 files changed, 5 insertions, 40 deletions
diff --git a/crates/ra_ide_api/src/imp.rs b/crates/ra_ide_api/src/imp.rs index b52a3f4d5..fa79908a1 100644 --- a/crates/ra_ide_api/src/imp.rs +++ b/crates/ra_ide_api/src/imp.rs | |||
@@ -19,7 +19,6 @@ use crate::{ | |||
19 | CrateId, db, Diagnostic, FileId, FilePosition, FileRange, FileSystemEdit, | 19 | CrateId, db, Diagnostic, FileId, FilePosition, FileRange, FileSystemEdit, |
20 | Query, RootChange, SourceChange, SourceFileEdit, | 20 | Query, RootChange, SourceChange, SourceFileEdit, |
21 | symbol_index::{FileSymbol, LibrarySymbolsQuery}, | 21 | symbol_index::{FileSymbol, LibrarySymbolsQuery}, |
22 | rename::rename | ||
23 | }; | 22 | }; |
24 | 23 | ||
25 | impl db::RootDatabase { | 24 | impl db::RootDatabase { |
@@ -232,10 +231,6 @@ impl db::RootDatabase { | |||
232 | .collect() | 231 | .collect() |
233 | } | 232 | } |
234 | 233 | ||
235 | pub(crate) fn rename(&self, position: FilePosition, new_name: &str) -> Option<SourceChange> { | ||
236 | rename(self, position, new_name) | ||
237 | } | ||
238 | |||
239 | pub(crate) fn index_resolve(&self, name_ref: &ast::NameRef) -> Vec<FileSymbol> { | 234 | pub(crate) fn index_resolve(&self, name_ref: &ast::NameRef) -> Vec<FileSymbol> { |
240 | let name = name_ref.text(); | 235 | let name = name_ref.text(); |
241 | let mut query = Query::new(name.to_string()); | 236 | let mut query = Query::new(name.to_string()); |
diff --git a/crates/ra_ide_api/src/lib.rs b/crates/ra_ide_api/src/lib.rs index 1845bf443..33bef178a 100644 --- a/crates/ra_ide_api/src/lib.rs +++ b/crates/ra_ide_api/src/lib.rs | |||
@@ -466,7 +466,7 @@ impl Analysis { | |||
466 | position: FilePosition, | 466 | position: FilePosition, |
467 | new_name: &str, | 467 | new_name: &str, |
468 | ) -> Cancelable<Option<SourceChange>> { | 468 | ) -> Cancelable<Option<SourceChange>> { |
469 | self.with_db(|db| db.rename(position, new_name)) | 469 | self.with_db(|db| rename::rename(db, position, new_name)) |
470 | } | 470 | } |
471 | 471 | ||
472 | fn with_db<F: FnOnce(&db::RootDatabase) -> T + std::panic::UnwindSafe, T>( | 472 | fn with_db<F: FnOnce(&db::RootDatabase) -> T + std::panic::UnwindSafe, T>( |
diff --git a/crates/ra_ide_api/src/rename.rs b/crates/ra_ide_api/src/rename.rs index 9f8a00ae7..9ab6f2a77 100644 --- a/crates/ra_ide_api/src/rename.rs +++ b/crates/ra_ide_api/src/rename.rs | |||
@@ -40,9 +40,7 @@ fn find_name_and_module_at_offset( | |||
40 | position: FilePosition, | 40 | position: FilePosition, |
41 | ) -> Option<(&ast::Name, &ast::Module)> { | 41 | ) -> Option<(&ast::Name, &ast::Module)> { |
42 | let ast_name = find_node_at_offset::<ast::Name>(syntax, position.offset); | 42 | let ast_name = find_node_at_offset::<ast::Name>(syntax, position.offset); |
43 | let ast_name_parent = ast_name | 43 | let ast_name_parent = ast::Module::cast(ast_name?.syntax().parent()?); |
44 | .and_then(|n| n.syntax().parent()) | ||
45 | .and_then(|p| ast::Module::cast(p)); | ||
46 | 44 | ||
47 | if let (Some(ast_module), Some(name)) = (ast_name_parent, ast_name) { | 45 | if let (Some(ast_module), Some(name)) = (ast_name_parent, ast_name) { |
48 | return Some((name, ast_module)); | 46 | return Some((name, ast_module)); |
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index c010a6ddf..9cdca82c4 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs | |||
@@ -5,7 +5,7 @@ use lsp_types::{ | |||
5 | FoldingRangeKind, FoldingRangeParams, Hover, HoverContents, Location, MarkupContent, | 5 | FoldingRangeKind, FoldingRangeParams, Hover, HoverContents, Location, MarkupContent, |
6 | MarkupKind, ParameterInformation, ParameterLabel, Position, PrepareRenameResponse, Range, | 6 | MarkupKind, ParameterInformation, ParameterLabel, Position, PrepareRenameResponse, Range, |
7 | RenameParams, SignatureInformation, SymbolInformation, TextDocumentIdentifier, TextEdit, | 7 | RenameParams, SignatureInformation, SymbolInformation, TextDocumentIdentifier, TextEdit, |
8 | WorkspaceEdit, DocumentChanges, TextDocumentEdit, DocumentChangeOperation, ResourceOp | 8 | WorkspaceEdit |
9 | }; | 9 | }; |
10 | use ra_ide_api::{ | 10 | use ra_ide_api::{ |
11 | FileId, FilePosition, FileRange, FoldKind, Query, RangeInfo, RunnableKind, Severity, | 11 | FileId, FilePosition, FileRange, FoldKind, Query, RangeInfo, RunnableKind, Severity, |
@@ -472,37 +472,9 @@ pub fn handle_rename(world: ServerWorld, params: RenameParams) -> Result<Option< | |||
472 | return Ok(None); | 472 | return Ok(None); |
473 | } | 473 | } |
474 | 474 | ||
475 | let mut source_change = change.unwrap(); | 475 | let source_change_req = change.unwrap().try_conv_with(&world)?; |
476 | let text_document_edits = source_change | ||
477 | .source_file_edits | ||
478 | .drain(..) | ||
479 | .into_iter() | ||
480 | .map(|e| e.try_conv_with(&world)) | ||
481 | .collect::<Result<Vec<TextDocumentEdit>>>(); | ||
482 | |||
483 | let text_document_ops = source_change | ||
484 | .file_system_edits | ||
485 | .drain(..) | ||
486 | .into_iter() | ||
487 | .map(|e| e.try_conv_with(&world)) | ||
488 | .collect::<Result<Vec<ResourceOp>>>(); | ||
489 | |||
490 | let mut document_changes = Vec::new(); | ||
491 | document_changes.extend( | ||
492 | text_document_edits? | ||
493 | .into_iter() | ||
494 | .map(DocumentChangeOperation::Edit), | ||
495 | ); | ||
496 | document_changes.extend( | ||
497 | text_document_ops? | ||
498 | .into_iter() | ||
499 | .map(DocumentChangeOperation::Op), | ||
500 | ); | ||
501 | 476 | ||
502 | Ok(Some(WorkspaceEdit { | 477 | Ok(Some(source_change_req.workspace_edit)) |
503 | changes: None, | ||
504 | document_changes: Some(DocumentChanges::Operations(document_changes)), | ||
505 | })) | ||
506 | } | 478 | } |
507 | 479 | ||
508 | pub fn handle_references( | 480 | pub fn handle_references( |