diff options
-rw-r--r-- | crates/ra_editor/src/line_index_utils.rs | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/crates/ra_editor/src/line_index_utils.rs b/crates/ra_editor/src/line_index_utils.rs index e62c5089d..2dd7fd708 100644 --- a/crates/ra_editor/src/line_index_utils.rs +++ b/crates/ra_editor/src/line_index_utils.rs | |||
@@ -143,35 +143,33 @@ pub fn count_newlines(offset: TextUnit, line_index: &LineIndex, edits: &[AtomTex | |||
143 | 143 | ||
144 | let mut lines: u32 = 0; | 144 | let mut lines: u32 = 0; |
145 | 145 | ||
146 | macro_rules! test_newline { | ||
147 | ($x:ident) => { | ||
148 | if offset < $x { | ||
149 | return lines; | ||
150 | } else { | ||
151 | lines += 1; | ||
152 | } | ||
153 | }; | ||
154 | } | ||
155 | |||
146 | for &orig_newline in line_index.newlines() { | 156 | for &orig_newline in line_index.newlines() { |
147 | loop { | 157 | loop { |
148 | let translated_newline = state.translate(orig_newline); | 158 | let translated_newline = state.translate(orig_newline); |
149 | match state.next_newlines(translated_newline) { | 159 | match state.next_newlines(translated_newline) { |
150 | NextNewlines::Use => { | 160 | NextNewlines::Use => { |
151 | if offset < translated_newline { | 161 | test_newline!(translated_newline); |
152 | return lines; | ||
153 | } else { | ||
154 | lines += 1; | ||
155 | } | ||
156 | break; | 162 | break; |
157 | } | 163 | } |
158 | NextNewlines::ReplaceMany(ns) => { | 164 | NextNewlines::ReplaceMany(ns) => { |
159 | for n in ns { | 165 | for n in ns { |
160 | if offset < n { | 166 | test_newline!(n); |
161 | return lines; | ||
162 | } else { | ||
163 | lines += 1; | ||
164 | } | ||
165 | } | 167 | } |
166 | break; | 168 | break; |
167 | } | 169 | } |
168 | NextNewlines::AddMany(ns) => { | 170 | NextNewlines::AddMany(ns) => { |
169 | for n in ns { | 171 | for n in ns { |
170 | if offset < n { | 172 | test_newline!(n); |
171 | return lines; | ||
172 | } else { | ||
173 | lines += 1; | ||
174 | } | ||
175 | } | 173 | } |
176 | } | 174 | } |
177 | } | 175 | } |
@@ -183,11 +181,7 @@ pub fn count_newlines(offset: TextUnit, line_index: &LineIndex, edits: &[AtomTex | |||
183 | None => break, | 181 | None => break, |
184 | Some(ns) => { | 182 | Some(ns) => { |
185 | for n in ns { | 183 | for n in ns { |
186 | if offset < n { | 184 | test_newline!(n); |
187 | return lines; | ||
188 | } else { | ||
189 | lines += 1; | ||
190 | } | ||
191 | } | 185 | } |
192 | } | 186 | } |
193 | } | 187 | } |