Change summary
crates/rope/src/rope.rs | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
Detailed changes
@@ -639,18 +639,20 @@ impl<'a> Chunks<'a> {
pub fn seek(&mut self, mut offset: usize) {
offset = offset.clamp(self.range.start, self.range.end);
- let bias = if self.reversed {
- Bias::Left
+ if self.reversed {
+ if offset > self.chunks.end() {
+ self.chunks.seek_forward(&offset, Bias::Left);
+ } else if offset <= *self.chunks.start() {
+ self.chunks.seek(&offset, Bias::Left);
+ }
} else {
- Bias::Right
+ if offset >= self.chunks.end() {
+ self.chunks.seek_forward(&offset, Bias::Right);
+ } else if offset < *self.chunks.start() {
+ self.chunks.seek(&offset, Bias::Right);
+ }
};
- if offset >= self.chunks.end() {
- self.chunks.seek_forward(&offset, bias);
- } else {
- self.chunks.seek(&offset, bias);
- }
-
self.offset = offset;
}