diff options
Diffstat (limited to 'support/texlab/crates/texlab/src/features/rename.rs')
-rw-r--r-- | support/texlab/crates/texlab/src/features/rename.rs | 42 |
1 files changed, 7 insertions, 35 deletions
diff --git a/support/texlab/crates/texlab/src/features/rename.rs b/support/texlab/crates/texlab/src/features/rename.rs index 297547e7e5..b905a7105b 100644 --- a/support/texlab/crates/texlab/src/features/rename.rs +++ b/support/texlab/crates/texlab/src/features/rename.rs @@ -1,50 +1,22 @@ -use std::collections::HashMap; +use base_db::Workspace; -use base_db::{FeatureParams, Workspace}; -use rename::RenameParams; - -use crate::util::line_index_ext::LineIndexExt; +use crate::util::{from_proto, line_index_ext::LineIndexExt, to_proto}; pub fn prepare_rename_all( workspace: &Workspace, - params: &lsp_types::TextDocumentPositionParams, + params: lsp_types::TextDocumentPositionParams, ) -> Option<lsp_types::Range> { - let params = create_params(workspace, params)?; + let params = from_proto::rename_params(workspace, params)?; let range = rename::prepare_rename(¶ms)?; params.feature.document.line_index.line_col_lsp_range(range) } pub fn rename_all( workspace: &Workspace, - params: &lsp_types::RenameParams, + params: lsp_types::RenameParams, ) -> Option<lsp_types::WorkspaceEdit> { let new_name = ¶ms.new_name; - let params = create_params(workspace, ¶ms.text_document_position)?; + let params = from_proto::rename_params(workspace, params.text_document_position)?; let result = rename::rename(params); - - let mut changes = HashMap::default(); - for (document, ranges) in result.changes { - let mut edits = Vec::new(); - ranges - .into_iter() - .filter_map(|range| document.line_index.line_col_lsp_range(range)) - .for_each(|range| edits.push(lsp_types::TextEdit::new(range, new_name.clone()))); - - changes.insert(document.uri.clone(), edits); - } - - Some(lsp_types::WorkspaceEdit::new(changes)) -} - -fn create_params<'db>( - workspace: &'db Workspace, - params: &lsp_types::TextDocumentPositionParams, -) -> Option<RenameParams<'db>> { - let document = workspace.lookup(¶ms.text_document.uri)?; - let inner = FeatureParams::new(workspace, document); - let offset = document.line_index.offset_lsp(params.position)?; - Some(RenameParams { - feature: inner, - offset, - }) + Some(to_proto::workspace_edit(result, &new_name)) } |