summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/rename/label.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/features/rename/label.rs')
-rw-r--r--support/texlab/src/features/rename/label.rs34
1 files changed, 13 insertions, 21 deletions
diff --git a/support/texlab/src/features/rename/label.rs b/support/texlab/src/features/rename/label.rs
index 30a99c3b36..d38d13ae93 100644
--- a/support/texlab/src/features/rename/label.rs
+++ b/support/texlab/src/features/rename/label.rs
@@ -1,32 +1,24 @@
-use std::sync::Arc;
-
-use lsp_types::RenameParams;
use rowan::{ast::AstNode, TextRange};
use rustc_hash::FxHashMap;
-use crate::{
- features::cursor::{CursorContext, HasPosition},
- syntax::latex,
-};
+use crate::{syntax::latex, util::cursor::CursorContext};
-use super::{Indel, RenameResult};
+use super::{Indel, Params, RenameResult};
-pub(super) fn prepare_label_rename<P: HasPosition>(
- context: &CursorContext<P>,
-) -> Option<TextRange> {
+pub(super) fn prepare_rename<T>(context: &CursorContext<T>) -> Option<TextRange> {
let (_, range) = context.find_label_name_key()?;
Some(range)
}
-pub(super) fn rename_label(context: &CursorContext<RenameParams>) -> Option<RenameResult> {
- prepare_label_rename(context)?;
+pub(super) fn rename(context: &CursorContext<Params>) -> Option<RenameResult> {
+ prepare_rename(context)?;
let (name_text, _) = context.find_label_name_key()?;
let mut changes = FxHashMap::default();
- for document in context.request.workspace.documents_by_uri.values() {
- if let Some(data) = document.data.as_latex() {
+ for document in context.related() {
+ if let Some(data) = document.parse(context.db).as_tex() {
let mut edits = Vec::new();
- for node in latex::SyntaxNode::new_root(data.green.clone()).descendants() {
+ for node in data.root(context.db).descendants() {
if let Some(range) = latex::LabelDefinition::cast(node.clone())
.and_then(|label| label.name())
.and_then(|name| name.key())
@@ -35,7 +27,7 @@ pub(super) fn rename_label(context: &CursorContext<RenameParams>) -> Option<Rena
{
edits.push(Indel {
delete: range,
- insert: context.request.params.new_name.clone(),
+ insert: context.params.new_name.clone(),
});
}
@@ -47,7 +39,7 @@ pub(super) fn rename_label(context: &CursorContext<RenameParams>) -> Option<Rena
.for_each(|name| {
edits.push(Indel {
delete: latex::small_range(&name),
- insert: context.request.params.new_name.clone(),
+ insert: context.params.new_name.clone(),
});
});
@@ -59,7 +51,7 @@ pub(super) fn rename_label(context: &CursorContext<RenameParams>) -> Option<Rena
{
edits.push(Indel {
delete: latex::small_range(&name1),
- insert: context.request.params.new_name.clone(),
+ insert: context.params.new_name.clone(),
});
}
@@ -70,13 +62,13 @@ pub(super) fn rename_label(context: &CursorContext<RenameParams>) -> Option<Rena
{
edits.push(Indel {
delete: latex::small_range(&name2),
- insert: context.request.params.new_name.clone(),
+ insert: context.params.new_name.clone(),
});
}
}
}
- changes.insert(Arc::clone(&document.uri), edits);
+ changes.insert(document, edits);
}
}