Differences From
Artifact [07b68c6d9e]:
- File
VimComplete.js
— part of check-in
[6992484127]
at
2011-11-18 10:15:42
on branch trunk
— Исправлена ошибка: при поиске слов вперед не учитывалась последняя строка текстового документа.
(user:
kuntashov
size: 12542)
[more...]
- File
VimComplete.js
— part of check-in
[816187c260]
at
2013-04-22 08:14:53
on branch trunk
— Исправлена ошибка [8092254bbe] - зависание VimComplete в пустом модуле.
(user:
kuntashov
size: 12713)
87 87 {
88 88 var s = str;
89 89 var words = null;
90 90
91 91 this.reset = function ()
92 92 {
93 93 words = s.split(/[^\wА-я]+/);
94 + if (!words.length || words.length == 1 && !words[0])
95 + words = new Array;
94 96 }
95 97
96 98 this.assert = function (ix)
97 99 {
98 100 return ((typeof(words) == "object") && (ix >= 0) && (ix < words.length));
99 101 }
100 102
................................................................................
222 224 while (true) {
223 225 var word = words.next(lookBackward);
224 226 if (word) {
225 227 this.complete(word);
226 228 return;
227 229 }
228 230 words = this.nextLine();
231 + if (!words.collection.count())
232 + return;
229 233 }
230 234 }
231 235
232 236 /* строит и возвращает список соответсвующих слов для следующей по порядку строки */
233 237 this.nextLine = function ()
234 238 {
235 239 curLineIx += (backwardSearch ? -1 : 1);
................................................................................
247 251 }
248 252
249 253 /* "разбирает" переданную в качестве параметра строку на слова и фильтрует их
250 254 в соотвествии с шаблоном, который описывает подходящие соответствия для исходного слова */
251 255 this.parseLine = function (srcLine)
252 256 {
253 257 var w = new Line(srcLine);
254 - w.filter(pattern, true);
258 + w.filter(pattern, true);
255 259 return w.iterator(backwardSearch);
256 260 }
257 261
258 262 /* выполняет подстановку очередного соответствия вместо исходного слова */
259 263 this.complete = function (word)
260 264 {
261 265 CurDoc.ReplaceLine(srcLine, this.leftPart() + word + this.rightPart());