Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions consumer/src/text.rs
Original file line number Diff line number Diff line change
Expand Up @@ -388,25 +388,26 @@ impl<'a> Position<'a> {
}

pub fn forward_to_word_start(&self) -> Self {
let pos = self.inner.biased_to_start(&self.root_node);
// Wrap the following in a scope to make sure we can't misuse the
// `word_starts` local later.
{
let word_starts = self.inner.node.data().word_starts();
let index = match word_starts.binary_search(&(self.inner.character_index as u8)) {
let word_starts = pos.node.data().word_starts();
let index = match word_starts.binary_search(&(pos.character_index as u8)) {
Ok(index) => index + 1,
Err(index) => index,
};
if let Some(start) = word_starts.get(index) {
return Self {
root_node: self.root_node,
inner: InnerPosition {
node: self.inner.node,
node: pos.node,
character_index: *start as usize,
},
};
}
}
for node in self.inner.node.following_text_runs(&self.root_node) {
for node in pos.node.following_text_runs(&self.root_node) {
let start_pos = Self {
root_node: self.root_node,
inner: InnerPosition {
Expand Down Expand Up @@ -490,10 +491,9 @@ impl<'a> Position<'a> {
}

pub fn forward_to_line_start(&self) -> Self {
let pos = self.inner.biased_to_start(&self.root_node);
Self {
root_node: self.root_node,
inner: pos.line_end().biased_to_start(&self.root_node),
inner: self.inner.line_end().biased_to_start(&self.root_node),
}
}

Expand Down