@@ -64,7 +64,7 @@ pub fn move_next_word_start(slice: RopeSlice, mut begin: usize, count: usize) ->
64
64
let mut end = begin;
65
65
66
66
for _ in 0 ..count {
67
- if begin + 2 > slice. len_chars ( ) {
67
+ if begin + 1 == slice. len_chars ( ) {
68
68
return None ;
69
69
}
70
70
@@ -76,8 +76,9 @@ pub fn move_next_word_start(slice: RopeSlice, mut begin: usize, count: usize) ->
76
76
begin += 1 ;
77
77
}
78
78
79
- // return if not skip while?
80
- skip_over_next ( slice, & mut begin, |ch| ch == '\n' ) ;
79
+ if !skip_over_next ( slice, & mut begin, |ch| ch == '\n' ) {
80
+ return None ;
81
+ } ;
81
82
ch = slice. char ( begin) ;
82
83
83
84
end = begin + 1 ;
@@ -134,7 +135,7 @@ pub fn move_next_word_end(slice: RopeSlice, mut begin: usize, count: usize) -> O
134
135
let mut end = begin;
135
136
136
137
for _ in 0 ..count {
137
- if begin + 2 > slice. len_chars ( ) {
138
+ if begin + 2 >= slice. len_chars ( ) {
138
139
return None ;
139
140
}
140
141
@@ -145,8 +146,9 @@ pub fn move_next_word_end(slice: RopeSlice, mut begin: usize, count: usize) -> O
145
146
begin += 1 ;
146
147
}
147
148
148
- // return if not skip while?
149
- skip_over_next ( slice, & mut begin, |ch| ch == '\n' ) ;
149
+ if !skip_over_next ( slice, & mut begin, |ch| ch == '\n' ) {
150
+ return None ;
151
+ } ;
150
152
151
153
end = begin;
152
154
@@ -199,18 +201,20 @@ fn categorize(ch: char) -> Category {
199
201
}
200
202
201
203
#[ inline]
202
- pub fn skip_over_next < F > ( slice : RopeSlice , pos : & mut usize , fun : F )
204
+ /// Returns true if there are more characters left after the new position.
205
+ pub fn skip_over_next < F > ( slice : RopeSlice , pos : & mut usize , fun : F ) -> bool
203
206
where
204
207
F : Fn ( char ) -> bool ,
205
208
{
206
209
let mut chars = slice. chars_at ( * pos) ;
207
210
208
- for ch in chars {
211
+ while let Some ( ch ) = chars. next ( ) {
209
212
if !fun ( ch) {
210
213
break ;
211
214
}
212
215
* pos += 1 ;
213
216
}
217
+ chars. next ( ) . is_some ( )
214
218
}
215
219
216
220
#[ inline]
0 commit comments