diff options
Diffstat (limited to 'support/texlab/src/features/rename/entry.rs')
-rw-r--r-- | support/texlab/src/features/rename/entry.rs | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/support/texlab/src/features/rename/entry.rs b/support/texlab/src/features/rename/entry.rs deleted file mode 100644 index 67c0388f4f..0000000000 --- a/support/texlab/src/features/rename/entry.rs +++ /dev/null @@ -1,66 +0,0 @@ -use rowan::{ast::AstNode, TextRange}; -use rustc_hash::FxHashMap; - -use crate::{ - db::parse::DocumentData, - syntax::{ - bibtex::{self, HasName}, - latex, - }, - util::cursor::CursorContext, -}; - -use super::{Indel, Params, RenameResult}; - -pub(super) fn prepare_rename<T>(context: &CursorContext<T>) -> Option<TextRange> { - let (_, range) = context - .find_citation_key_word() - .or_else(|| context.find_entry_key())?; - - Some(range) -} - -pub(super) fn rename(context: &CursorContext<Params>) -> Option<RenameResult> { - prepare_rename(context)?; - let (key_text, _) = context - .find_citation_key_word() - .or_else(|| context.find_entry_key())?; - - let mut changes = FxHashMap::default(); - for document in context.related() { - match document.parse(context.db) { - DocumentData::Tex(data) => { - let root = data.root(context.db); - let edits: Vec<_> = root - .descendants() - .filter_map(latex::Citation::cast) - .filter_map(|citation| citation.key_list()) - .flat_map(|keys| keys.keys()) - .filter(|key| key.to_string() == key_text) - .map(|key| Indel { - delete: latex::small_range(&key), - insert: context.params.new_name.clone(), - }) - .collect(); - changes.insert(document, edits); - } - DocumentData::Bib(data) => { - let root = data.root(context.db); - let edits: Vec<_> = root - .descendants() - .filter_map(bibtex::Entry::cast) - .filter_map(|entry| entry.name_token()) - .filter(|key| key.text() == key_text) - .map(|key| Indel { - delete: key.text_range(), - insert: context.params.new_name.clone(), - }) - .collect(); - changes.insert(document, edits); - } - DocumentData::Log(_) | DocumentData::TexlabRoot(_) | DocumentData::Tectonic(_) => {} - } - } - - Some(RenameResult { changes }) -} |