Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-core/src/textobject.rs')
| -rw-r--r-- | helix-core/src/textobject.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/helix-core/src/textobject.rs b/helix-core/src/textobject.rs index 9015e957..008228f4 100644 --- a/helix-core/src/textobject.rs +++ b/helix-core/src/textobject.rs @@ -1,13 +1,12 @@ use std::fmt::Display; use ropey::RopeSlice; -use tree_sitter::{Node, QueryCursor}; use crate::chars::{categorize_char, char_is_whitespace, CharCategory}; use crate::graphemes::{next_grapheme_boundary, prev_grapheme_boundary}; use crate::line_ending::rope_is_line_ending; use crate::movement::Direction; -use crate::syntax::config::LanguageConfiguration; +use crate::syntax; use crate::Range; use crate::{surround, Syntax}; @@ -260,18 +259,18 @@ pub fn textobject_treesitter( range: Range, textobject: TextObject, object_name: &str, - slice_tree: Node, - lang_config: &LanguageConfiguration, + syntax: &Syntax, + loader: &syntax::Loader, _count: usize, ) -> Range { + let root = syntax.tree().root_node(); + let textobject_query = loader.textobject_query(syntax.root_language()); let get_range = move || -> Option<Range> { let byte_pos = slice.char_to_byte(range.cursor(slice)); let capture_name = format!("{}.{}", object_name, textobject); // eg. function.inner - let mut cursor = QueryCursor::new(); - let node = lang_config - .textobject_query()? - .capture_nodes(&capture_name, slice_tree, slice, &mut cursor)? + let node = textobject_query? + .capture_nodes(&capture_name, &root, slice)? .filter(|node| node.byte_range().contains(&byte_pos)) .min_by_key(|node| node.byte_range().len())?; |