Artifact
07b68c6d9e820d279bd91330155fdfe893fa38a2:
- File
VimComplete.js
— part of check-in
[6992484127]
at
2011-11-18 10:15:42
on branch trunk
— Исправлена ошибка: при поиске слов вперед не учитывалась последняя строка текстового документа.
(user:
kuntashov
size: 12542)
[more...]
0000: ef bb bf 24 65 6e 67 69 6e 65 20 4a 53 63 72 69 ...$engine JScri
0010: 70 74 0d 0a 24 75 6e 61 6d 65 20 56 69 6d 43 6f pt..$uname VimCo
0020: 6d 70 6c 65 74 65 0d 0a 24 64 6e 61 6d 65 20 d0 mplete..$dname .
0030: 90 d0 b2 d1 82 d0 be d0 b4 d0 be d0 bf d0 be d0 ................
0040: bb d0 bd d0 b5 d0 bd d0 b8 d0 b5 20 d0 b2 20 d1 ........... .. .
0050: 81 d1 82 d0 b8 d0 bb d0 b5 20 56 69 6d 0d 0a 24 ......... Vim..$
0060: 61 64 64 69 6e 20 67 6c 6f 62 61 6c 0d 0a 24 61 addin global..$a
0070: 64 64 69 6e 20 73 74 64 6c 69 62 0d 0a 0d 0a 73 ddin stdlib....s
0080: 74 64 6c 69 62 2e 72 65 71 75 69 72 65 28 27 54 tdlib.require('T
0090: 65 78 74 57 69 6e 64 6f 77 2e 6a 73 27 2c 20 53 extWindow.js', S
00a0: 65 6c 66 53 63 72 69 70 74 29 3b 0d 0a 0d 0a 2f elfScript);..../
00b0: 2a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d *===============
00c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a d0 a1 ============....
0100: d0 ba d1 80 d0 b8 d0 bf d1 82 3a 20 20 56 69 6d ..........: Vim
0110: 43 6f 6d 70 6c 65 74 65 2e 6a 73 0d 0a d0 92 d0 Complete.js.....
0120: b5 d1 80 d1 81 d0 b8 d1 8f 3a 20 20 31 2e 34 0d .........: 1.4.
0130: 0a d0 90 d0 b2 d1 82 d0 be d1 80 3a 20 20 20 d0 ...........: .
0140: 90 d0 bb d0 b5 d0 ba d1 81 d0 b0 d0 bd d0 b4 d1 ................
0150: 80 20 d0 9a d1 83 d0 bd d1 82 d0 b0 d1 88 d0 be . ..............
0160: d0 b2 0d 0a d0 9e d0 bf d0 b8 d1 81 d0 b0 d0 bd ................
0170: d0 b8 d0 b5 3a 20 0d 0a 20 20 20 20 d0 90 d1 82 ....: .. ....
0180: d0 be d0 b4 d0 be d0 bf d0 be d0 bb d0 bd d0 b5 ................
0190: d0 bd d0 b8 d0 b5 20 d1 81 d0 bb d0 be d0 b2 20 ...... ........
01a0: d0 b2 20 d1 81 d1 82 d0 b8 d0 bb d0 b5 20 d1 80 .. .......... ..
01b0: d0 b5 d0 b4 d0 b0 d0 ba d1 82 d0 be d1 80 d0 b0 ................
01c0: 20 56 69 6d 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d Vim..==========
01d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0210: 3d 2a 2f 0d 0a 2f 2a 0d 0a 20 20 20 20 d0 9c d0 =*/../*.. ...
0220: b0 d0 ba d1 80 d0 be d1 81 20 6d 61 63 72 6f 73 ......... macros
0230: d0 a1 d0 bb d0 b5 d0 b4 d1 83 d1 8e d1 89 d0 b5 ................
0240: d0 b5 d0 a1 d0 bb d0 be d0 b2 d0 be 28 29 0d 0a ............()..
0250: 20 20 20 20 20 20 20 20 20 20 20 20 d0 9f d0 be ....
0260: d0 b4 d0 b1 d0 b8 d1 80 d0 b0 d0 b5 d1 82 20 d1 .............. .
0270: 87 d0 b0 d1 81 d1 82 d1 8c 20 d1 81 d0 bb d0 be ......... ......
0280: d0 b2 d0 b0 20 d1 81 d0 bb d0 b5 d0 b2 d0 b0 20 .... ..........
0290: d0 be d1 82 20 d0 ba d1 83 d1 80 d1 81 d0 be d1 .... ...........
02a0: 80 d0 b0 20 d0 b8 20 d0 bf d1 8b d1 82 d0 b0 d0 ... .. .........
02b0: b5 d1 82 d1 81 d1 8f 20 d0 b4 d0 be d0 bf d0 be ....... ........
02c0: d0 bb d0 bd d0 b8 d1 82 d1 8c 20 d0 b5 d0 b3 d0 .......... .....
02d0: be 2c 0d 0a 20 20 20 20 20 20 20 20 d0 b8 d1 89 .,.. ....
02e0: d0 b0 20 d0 b2 d0 bf d0 b5 d1 80 d0 b5 d0 b4 20 .. ............
02f0: d0 bf d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d1 .... ...........
0300: 83 20 d1 81 d0 bb d0 be d0 b2 d0 b0 2c 20 d1 81 . .........., ..
0310: 20 d1 82 d0 b0 d0 ba d0 be d0 b9 20 d0 b6 d0 b5 .......... ....
0320: 20 d0 bb d0 b5 d0 b2 d0 be d0 b9 20 d1 87 d0 b0 .......... ....
0330: d1 81 d1 82 d1 8c d1 8e 2e 20 d0 9f d0 be d0 b4 ......... ......
0340: d1 81 d1 82 d0 b0 d0 b2 d0 bb d1 8f d0 b5 d1 82 ................
0350: 20 0d 0a 20 20 20 20 20 20 20 20 d0 bf d0 b5 d1 .. .....
0360: 80 d0 b2 d0 be d0 b5 20 d0 bf d0 be d0 b4 d1 85 ....... ........
0370: d0 be d0 b4 d1 8f d1 89 d0 b5 d0 b5 2e 20 d0 a1 ............. ..
0380: d0 bb d0 b5 d0 b4 d1 83 d1 8e d1 89 d0 b8 d0 b9 ................
0390: 20 d0 b2 d1 8b d0 b7 d0 be d0 b2 20 d0 bc d0 b0 .......... ....
03a0: d0 ba d1 80 d0 be d1 81 d0 b0 20 d0 bf d0 be d0 .......... .....
03b0: b4 d1 81 d1 82 d0 b0 d0 b2 d0 b8 d1 82 20 d1 81 ............. ..
03c0: d0 bb d0 b5 d0 b4 d1 83 d1 8e d1 89 d0 b5 d0 b5 ................
03d0: 20 d0 b7 d0 b0 20 0d 0a 20 20 20 20 20 20 20 20 .... ..
03e0: d0 bf d0 b5 d1 80 d0 b2 d1 8b d0 bc 20 d0 bd d0 ............ ...
03f0: b0 d0 b9 d0 b4 d0 b5 d0 bd d0 bd d1 8b d0 bc 20 ...............
0400: d1 81 d0 bb d0 be d0 b2 d0 be d0 bc 20 d0 b8 20 ............ ..
0410: d1 82 d0 b0 d0 ba 20 d0 b4 d0 b0 d0 bb d0 b5 d0 ...... .........
0420: b5 20 d0 bf d0 be 20 d0 ba d1 80 d1 83 d0 b3 d1 . .... .........
0430: 83 20 28 d0 b4 d0 be d0 b9 d0 b4 d1 8f 20 d0 b4 . (.......... ..
0440: d0 be 20 d0 bf d0 be d1 81 d0 bb d0 b5 d0 b4 d0 .. .............
0450: bd d0 b5 d0 b9 20 d1 81 d1 82 d1 80 d0 be d0 ba ..... ..........
0460: d0 b8 20 0d 0a 20 20 20 20 20 20 20 20 d0 bc d0 .. .. ...
0470: be d0 b4 d1 83 d0 bb d1 8f 20 d0 bf d0 be d0 b8 ......... ......
0480: d1 81 d0 ba 20 d0 bf d1 80 d0 be d0 b4 d0 be d0 .... ...........
0490: bb d0 b6 d0 b8 d1 82 d1 81 d1 8f 20 d1 81 20 d0 ........... .. .
04a0: bf d0 b5 d1 80 d0 b2 d0 be d0 b9 20 d1 81 d1 82 ........... ....
04b0: d1 80 d0 be d0 ba d0 b8 29 2e 20 0d 0a 20 20 20 ........). ..
04c0: 20 20 20 20 20 0d 0a 20 20 20 20 d0 9c d0 b0 d0 .. .....
04d0: ba d1 80 d0 be d1 81 20 6d 61 63 72 6f 73 d0 9f ....... macros..
04e0: d1 80 d0 b5 d0 b4 d1 8b d0 b4 d1 83 d1 89 d0 b5 ................
04f0: d0 b5 d0 a1 d0 bb d0 be d0 b2 d0 be 28 29 0d 0a ............()..
0500: 20 20 20 20 20 20 20 20 20 20 20 20 d0 a2 d0 be ....
0510: d0 b6 d0 b5 20 d1 81 d0 b0 d0 bc d0 be d0 b5 2c .... ..........,
0520: 20 d1 82 d0 be d0 bb d1 8c d0 ba d0 be 20 d0 bf ............ ..
0530: d0 be d0 b8 d1 81 d0 ba 20 d1 81 d0 bb d0 be d0 ........ .......
0540: b2 20 d0 be d1 81 d1 83 d1 89 d0 b5 d1 81 d1 82 . ..............
0550: d0 b2 d0 bb d1 8f d0 b5 d1 82 d1 81 d1 8f 20 d0 .............. .
0560: b2 20 d0 be d0 b1 d1 80 d0 b0 d1 82 d0 bd d0 be . ..............
0570: d0 bc 20 d0 bd d0 b0 d0 bf d1 80 d0 b0 d0 b2 d0 .. .............
0580: bb d0 b5 d0 bd d0 b8 d0 b8 2e 0d 0a 20 20 20 0d ............ .
0590: 0a 20 20 20 20 d0 92 20 d0 ba d0 bb d0 b0 d1 81 . .. ........
05a0: d1 81 d0 b8 d1 87 d0 b5 d1 81 d0 ba d0 be d0 bc ................
05b0: 20 56 69 6d 20 d0 b8 d1 81 d0 bf d0 be d0 bb d1 Vim ...........
05c0: 8c d0 b7 d1 83 d1 8e d1 82 d1 81 d1 8f 20 d1 81 ............. ..
05d0: d0 bb d0 b5 d0 b4 d1 83 d1 8e d1 89 d0 b8 d0 b5 ................
05e0: 20 d1 85 d0 be d1 82 d0 ba d0 b5 d0 b8 3a 0d 0a ............:..
05f0: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 43 74 .. Ct
0600: 72 6c 20 2b 20 4e 20 20 d0 b4 d0 bb d1 8f 20 d0 rl + N ...... .
0610: b4 d0 be d0 bf d0 be d0 bb d0 bd d0 b5 d0 bd d0 ................
0620: b8 d1 8f 20 d1 81 20 d0 bf d0 be d0 b8 d1 81 d0 ... .. .........
0630: ba d0 be d0 bc 20 d0 b2 d0 bf d0 b5 d1 80 d0 b5 ..... ..........
0640: d0 b4 20 28 d1 81 d0 bb d0 b5 d0 b4 d1 83 d1 8e .. (............
0650: d1 89 d0 b5 d0 b5 20 d1 81 d0 bb d0 be d0 b2 d0 ...... .........
0660: be 2c 20 4e 65 78 74 20 77 6f 72 64 29 0d 0a 20 ., Next word)..
0670: 20 20 20 20 20 20 20 43 74 72 6c 20 2b 20 50 20 Ctrl + P
0680: 20 d0 b4 d0 bb d1 8f 20 d0 b4 d0 be d0 bf d0 be ...... ........
0690: d0 bb d0 bd d0 b5 d0 bd d0 b8 d1 8f 20 d1 81 20 ............ ..
06a0: d0 bf d0 be d0 b8 d1 81 d0 ba d0 be d0 bc 20 d0 .............. .
06b0: bd d0 b0 d0 b7 d0 b0 d0 b4 20 20 28 d0 bf d1 80 ......... (....
06c0: d0 b5 d0 b4 d1 8b d0 b4 d1 83 d1 89 d0 b5 d0 b5 ................
06d0: 20 d1 81 d0 bb d0 be d0 b2 d0 be 2c 20 50 72 65 .........., Pre
06e0: 76 69 6f 75 73 20 77 6f 72 64 29 0d 0a 2a 2f 0d vious word)..*/.
06f0: 0a 0d 0a 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f .../////////////
0700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 2f 2f 2f ///////////..///
0750: 2f 20 d0 9c d0 b0 d0 ba d1 80 d0 be d1 81 d1 8b / ..............
0760: 0d 0a 2f 2f 2f 2f 0d 0a 0d 0a 66 75 6e 63 74 69 ..////....functi
0770: 6f 6e 20 6d 61 63 72 6f 73 d0 a1 d0 bb d0 b5 d0 on macros.......
0780: b4 d1 83 d1 8e d1 89 d0 b5 d0 b5 d0 a1 d0 bb d0 ................
0790: be d0 b2 d0 be 28 29 20 2f 2f 20 43 74 72 6c 20 .....() // Ctrl
07a0: 2b 20 4e 0d 0a 7b 0d 0a 20 20 20 20 72 65 74 75 + N..{.. retu
07b0: 72 6e 20 63 6f 6d 70 6c 65 74 65 57 6f 72 64 28 rn completeWord(
07c0: 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f );..}....functio
07d0: 6e 20 6d 61 63 72 6f 73 d0 9f d1 80 d0 b5 d0 b4 n macros........
07e0: d1 8b d0 b4 d1 83 d1 89 d0 b5 d0 b5 d0 a1 d0 bb ................
07f0: d0 be d0 b2 d0 be 28 29 20 2f 2f 20 43 74 72 6c ......() // Ctrl
0800: 20 2b 20 50 0d 0a 7b 0d 0a 2f 2f 64 65 62 75 67 + P..{..//debug
0810: 67 65 72 3b 0d 0a 20 20 20 20 72 65 74 75 72 6e ger;.. return
0820: 20 63 6f 6d 70 6c 65 74 65 57 6f 72 64 28 74 72 completeWord(tr
0830: 75 65 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 2f 2f 2f ue);..}..../////
0840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0890: 2f 2f 2f 0d 0a 2f 2f 2f 2f 20 d0 a0 d0 b5 d0 b0 ///..//// ......
08a0: d0 bb d0 b8 d0 b7 d0 b0 d1 86 d0 b8 d1 8f 20 d1 .............. .
08b0: 84 d1 83 d0 bd d0 ba d1 86 d0 b8 d0 be d0 bd d0 ................
08c0: b0 d0 bb d0 b0 20 d1 81 d0 ba d1 80 d0 b8 d0 bf ..... ..........
08d0: d1 82 d0 b0 2e 0d 0a 2f 2f 2f 2f 0d 0a 0d 0a 76 .......////....v
08e0: 61 72 20 43 75 72 44 6f 63 20 3d 20 6e 75 6c 6c ar CurDoc = null
08f0: 3b 0d 0a 76 61 72 20 56 69 6d 43 6f 6d 70 6c 65 ;..var VimComple
0900: 74 65 20 3d 20 6e 65 77 20 56 69 6d 41 75 74 6f te = new VimAuto
0910: 43 6f 6d 70 6c 65 74 69 6f 6e 54 6f 6f 6c 28 29 CompletionTool()
0920: 3b 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 63 6f ;....function co
0930: 6d 70 6c 65 74 65 57 6f 72 64 28 6c 6f 6f 6b 42 mpleteWord(lookB
0940: 61 63 6b 77 61 72 64 29 0d 0a 7b 0d 0a 20 20 20 ackward)..{..
0950: 20 43 75 72 44 6f 63 20 3d 20 47 65 74 54 65 78 CurDoc = GetTex
0960: 74 57 69 6e 64 6f 77 28 29 3b 0d 0a 20 20 20 20 tWindow();..
0970: 69 66 20 28 21 43 75 72 44 6f 63 29 20 0d 0a 20 if (!CurDoc) ..
0980: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa
0990: 6c 73 65 3b 0d 0a 09 0d 0a 20 20 20 20 56 69 6d lse;..... Vim
09a0: 43 6f 6d 70 6c 65 74 65 2e 63 6f 6d 70 6c 65 74 Complete.complet
09b0: 65 57 6f 72 64 28 6c 6f 6f 6b 42 61 63 6b 77 61 eWord(lookBackwa
09c0: 72 64 29 3b 0d 0a 20 20 20 20 43 75 72 44 6f 63 rd);.. CurDoc
09d0: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 72 65 = null;.. re
09e0: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 7d 0d 0a 0d turn true;..}...
09f0: 0a 2f 2a 20 d0 92 d0 be d0 b7 d0 b2 d1 80 d0 b0 ./* ............
0a00: d1 89 d0 b0 d0 b5 d1 82 20 d1 87 d0 b0 d1 81 d1 ........ .......
0a10: 82 d1 8c 20 d1 81 d0 bb d0 be d0 b2 d0 b0 20 d1 ... .......... .
0a20: 81 d0 bb d0 b5 d0 b2 d0 b0 20 d0 be d1 82 20 d1 ......... .... .
0a30: 82 d0 b5 d0 ba d1 83 d1 89 d0 b5 d0 b3 d0 be 20 ...............
0a40: d0 bf d0 be d0 bb d0 be d0 b6 d0 b5 d0 bd d0 b8 ................
0a50: d1 8f 20 d0 ba d1 83 d1 80 d1 81 d0 be d1 80 d0 .. .............
0a60: b0 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 67 . */..function g
0a70: 65 74 4c 65 66 74 57 6f 72 64 28 64 6f 63 29 0d etLeftWord(doc).
0a80: 0a 7b 0d 0a 20 20 20 20 76 61 72 20 63 6c 2c 20 .{.. var cl,
0a90: 77 6f 72 64 20 3d 20 27 27 3b 0d 0a 20 20 20 20 word = '';..
0aa0: 76 61 72 20 70 6f 73 20 3d 20 64 6f 63 2e 47 65 var pos = doc.Ge
0ab0: 74 43 61 72 65 74 50 6f 73 28 29 3b 0d 0a 20 20 tCaretPos();..
0ac0: 20 20 63 6c 20 3d 20 64 6f 63 2e 47 65 74 4c 69 cl = doc.GetLi
0ad0: 6e 65 28 70 6f 73 2e 62 65 67 69 6e 52 6f 77 29 ne(pos.beginRow)
0ae0: 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 20 ;.. .. /*
0af0: d0 92 d0 90 d0 96 d0 9d d0 9e 21 20 d0 9f d0 be ..........! ....
0b00: d0 bc d0 bd d0 b8 d0 bc 20 d0 bf d1 80 d0 be 20 ........ ......
0b10: d0 b8 d0 bd d0 b4 d0 b5 d0 ba d1 81 d0 b0 d1 86 ................
0b20: d0 b8 d1 8e 3a 20 d0 b0 20 d0 b8 d0 bc d0 b5 d0 ....: .. .......
0b30: bd d0 bd d0 be 2c 20 d1 87 d1 82 d0 be 20 d0 bf ....., ...... ..
0b40: d0 be d0 b7 d0 b8 d1 86 d0 b8 d1 8f 20 d0 ba d1 ............ ...
0b50: 83 d1 80 d1 81 d0 be d1 80 d0 b0 20 d0 b8 d0 bd ........... ....
0b60: d0 b4 d0 b5 d0 ba d1 81 d0 b8 d1 80 d1 83 d0 b5 ................
0b70: d1 82 d1 81 d1 8f 20 d1 81 20 31 2e 20 0d 0a 20 ...... .. 1. ..
0b80: 20 20 20 d0 a1 d0 b8 d0 bc d0 b2 d0 be d0 bb d1 .............
0b90: 8b 20 d0 b6 d0 b5 20 d0 b2 20 4a 61 76 61 53 63 . .... .. JavaSc
0ba0: 72 69 70 74 2d d1 81 d1 82 d1 80 d0 be d0 ba d0 ript-...........
0bb0: b5 20 2d 20 d1 81 20 30 2e 20 d0 9a d0 be d0 be . - .. 0. ......
0bc0: d1 80 d0 b4 d0 b8 d0 bd d0 b0 d1 82 d0 b0 20 d0 .............. .
0bd0: bf d1 80 d0 b5 d0 b4 d1 8b d0 b4 d1 83 d1 89 d0 ................
0be0: b5 d0 b3 d0 be 20 d1 81 d0 b8 d0 bc d0 b2 d0 be ..... ..........
0bf0: d0 bb d0 b0 20 d0 be d1 82 20 d0 ba d1 83 d1 80 .... .... ......
0c00: d1 81 d0 be d1 80 d0 b0 20 d0 b2 20 d1 82 d0 b5 ........ .. ....
0c10: d1 80 d0 bc d0 b8 d0 bd d0 b0 d1 85 20 0d 0a 20 ............ ..
0c20: 20 20 20 d0 bf d0 be d0 b7 d0 b8 d1 86 d0 b8 d0 .............
0c30: b8 20 d0 ba d0 b0 d1 80 d0 b5 d1 82 d0 ba d0 b8 . ..............
0c40: 20 3d 20 28 62 65 67 69 6e 43 6f 6c 20 2d 20 31 = (beginCol - 1
0c50: 29 2e 20 d0 9f d0 be d1 81 d0 ba d0 be d0 bb d1 ). .............
0c60: 8c d0 ba d1 83 20 d0 b8 d0 bd d0 b4 d0 b5 d0 ba ..... ..........
0c70: d1 81 d0 b0 d1 86 d0 b8 d1 8f 20 d0 b2 20 d1 81 .......... .. ..
0c80: d1 82 d1 80 d0 be d0 ba d0 b5 20 d1 81 20 30 2c .......... .. 0,
0c90: 20 d1 82 d0 be 20 d0 b8 d0 bd d0 b4 d0 b5 d0 ba .... ..........
0ca0: d1 81 20 d1 81 d0 b8 d0 bc d0 b2 d0 be d0 bb d0 .. .............
0cb0: b0 20 0d 0a 20 20 20 20 d0 b2 20 d1 81 d1 82 d1 . .. .. .....
0cc0: 80 d0 be d0 ba d0 b5 20 d0 b1 d1 83 d0 b4 d0 b5 ....... ........
0cd0: d1 82 20 d0 b2 d1 8b d1 87 d0 b8 d1 81 d0 bb d1 .. .............
0ce0: 8f d1 82 d1 8c d1 81 d1 8f 20 d0 ba d0 b0 d0 ba ......... ......
0cf0: 20 28 28 62 65 67 69 6e 43 6f 6c 20 2d 20 31 29 ((beginCol - 1)
0d00: 20 2d 20 31 29 20 3d 20 28 62 65 67 69 6e 43 6f - 1) = (beginCo
0d10: 6c 20 2d 20 32 29 2e 20 2a 2f 20 0d 0a 20 20 20 l - 2). */ ..
0d20: 20 0d 0a 20 20 20 20 66 6f 72 20 28 76 61 72 20 .. for (var
0d30: 69 20 3d 20 70 6f 73 2e 62 65 67 69 6e 43 6f 6c i = pos.beginCol
0d40: 20 2d 20 32 3b 20 0d 0a 20 20 20 20 20 20 20 20 - 2; ..
0d50: 28 69 20 3e 3d 20 30 29 20 26 26 20 63 6c 2e 63 (i >= 0) && cl.c
0d60: 68 61 72 41 74 28 69 29 2e 6d 61 74 63 68 28 2f harAt(i).match(/
0d70: 5b 5c 77 d0 90 2d d0 af d0 b0 2d d1 8f 5d 2f 69 [\w..-....-..]/i
0d80: 29 3b 20 0d 0a 20 20 20 20 20 20 20 20 77 6f 72 ); .. wor
0d90: 64 20 3d 20 63 6c 2e 63 68 61 72 41 74 28 69 2d d = cl.charAt(i-
0da0: 2d 29 20 2b 20 77 6f 72 64 29 0d 0a 20 20 20 20 -) + word)..
0db0: 20 20 20 20 3b 20 20 20 20 0d 0a 20 20 20 20 72 ; .. r
0dc0: 65 74 75 72 6e 20 77 6f 72 64 3b 0d 0a 7d 0d 0a eturn word;..}..
0dd0: 0d 0a 2f 2f 20 d0 9f d1 80 d0 b8 d0 bc d0 b8 d1 ..// ...........
0de0: 82 d0 b8 d0 b2 d0 bd d1 8b d0 b9 20 d0 ba d0 bb ........... ....
0df0: d0 b0 d1 81 d1 81 20 d0 b4 d0 bb d1 8f 20 d0 b2 ...... ...... ..
0e00: d1 8b d0 b4 d0 b5 d0 bb d0 b5 d0 bd d0 b8 d1 8f ................
0e10: 20 d1 81 d0 bb d0 be d0 b2 20 d0 b2 20 d1 81 d1 ........ .. ...
0e20: 82 d1 80 d0 be d0 ba d0 b5 2c 20 d0 b8 d1 85 20 ........., ....
0e30: d1 84 d0 b8 d0 bb d1 8c d1 82 d1 80 d0 b0 d1 86 ................
0e40: d0 b8 d0 b8 20 d0 b8 20 d0 bf d0 be d1 81 d0 bb .... .. ........
0e50: d0 b5 d0 b4 d0 be d0 b2 d0 b0 d1 82 d0 b5 d0 bb ................
0e60: d1 8c d0 bd d0 be d0 bc d1 83 20 d0 bf d0 b5 d1 .......... .....
0e70: 80 d0 b5 d0 b1 d0 be d1 80 d1 83 2e 20 0d 0a 66 ............ ..f
0e80: 75 6e 63 74 69 6f 6e 20 4c 69 6e 65 28 73 74 72 unction Line(str
0e90: 29 0d 0a 7b 0d 0a 20 20 20 20 76 61 72 20 73 20 )..{.. var s
0ea0: 3d 20 73 74 72 3b 0d 0a 20 20 20 20 76 61 72 20 = str;.. var
0eb0: 77 6f 72 64 73 20 3d 20 6e 75 6c 6c 3b 20 20 20 words = null;
0ec0: 20 20 0d 0a 0d 0a 20 20 20 20 74 68 69 73 2e 72 .... this.r
0ed0: 65 73 65 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 eset = function
0ee0: 28 29 20 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 () .. {..
0ef0: 20 20 20 20 77 6f 72 64 73 20 3d 20 73 2e 73 70 words = s.sp
0f00: 6c 69 74 28 2f 5b 5e 5c 77 d0 90 2d d1 8f 5d 2b lit(/[^\w..-..]+
0f10: 2f 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 /);.. }..
0f20: 0d 0a 20 20 20 20 74 68 69 73 2e 61 73 73 65 72 .. this.asser
0f30: 74 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 78 t = function (ix
0f40: 29 20 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 ) .. {..
0f50: 20 20 20 72 65 74 75 72 6e 20 28 28 74 79 70 65 return ((type
0f60: 6f 66 28 77 6f 72 64 73 29 20 3d 3d 20 22 6f 62 of(words) == "ob
0f70: 6a 65 63 74 22 29 20 26 26 20 28 69 78 20 3e 3d ject") && (ix >=
0f80: 20 30 29 20 26 26 20 28 69 78 20 3c 20 77 6f 72 0) && (ix < wor
0f90: 64 73 2e 6c 65 6e 67 74 68 29 29 3b 20 20 20 20 ds.length));
0fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a ..
0fb0: 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 20 20 }.. ..
0fc0: 20 74 68 69 73 2e 77 6f 72 64 20 3d 20 66 75 6e this.word = fun
0fd0: 63 74 69 6f 6e 20 28 69 78 29 20 0d 0a 20 20 20 ction (ix) ..
0fe0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 {.. if (
0ff0: 74 68 69 73 2e 61 73 73 65 72 74 28 69 78 29 29 this.assert(ix))
1000: 20 72 65 74 75 72 6e 20 77 6f 72 64 73 5b 69 78 return words[ix
1010: 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d ];.. }.. .
1020: 0a 20 20 20 20 74 68 69 73 2e 63 6f 75 6e 74 20 . this.count
1030: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 0d 0a 20 = function ()..
1040: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 {.. re
1050: 74 75 72 6e 20 77 6f 72 64 73 2e 6c 65 6e 67 74 turn words.lengt
1060: 68 3b 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 h; ..
1070: 7d 0d 0a 20 20 20 20 0d 0a 09 74 68 69 73 2e 77 }.. ...this.w
1080: 6f 72 64 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 ords = function
1090: 28 29 0d 0a 09 7b 0d 0a 09 09 72 65 74 75 72 6e ()...{....return
10a0: 20 77 6f 72 64 73 3b 0d 0a 09 7d 0d 0a 20 20 20 words;...}..
10b0: 20 0d 0a 09 2f 2a 20 d0 b2 d0 be d0 b7 d0 b2 d1 .../* .........
10c0: 80 d0 b0 d1 89 d0 b0 d0 b5 d1 82 20 d0 be d0 b1 ........... ....
10d0: d1 8a d0 b5 d0 ba d1 82 2d d0 b8 d1 82 d0 b5 d1 ........-.......
10e0: 80 d0 b0 d1 82 d0 be d1 80 20 d1 81 20 d0 b5 d0 ......... .. ...
10f0: b4 d0 b8 d0 bd d1 81 d1 82 d0 b2 d0 b5 d0 bd d0 ................
1100: bd d1 8b d0 bc 20 d0 bc d0 b5 d1 82 d0 be d0 b4 ..... ..........
1110: d0 be d0 bc 20 6e 65 78 74 28 29 20 0d 0a 09 63 .... next() ...c
1120: 20 d0 bf d0 be d0 bc d0 be d1 89 d1 8c d1 8e 20 ..............
1130: d0 ba d0 be d1 82 d0 be d1 80 d0 be d0 b3 d0 be ................
1140: 20 d0 be d1 81 d1 83 d1 89 d0 b5 d1 81 d1 82 d0 ...............
1150: b2 d0 bb d1 8f d0 b5 d1 82 d1 81 d1 8f 20 d0 bf ............. ..
1160: d0 b5 d1 80 d0 b5 d0 b1 d0 be d1 80 20 d1 81 d1 ............ ...
1170: 82 d1 80 d0 be d0 ba 20 28 d0 b4 d0 be 20 d1 82 ....... (.... ..
1180: d0 b5 d1 85 20 d0 bf d0 be d1 80 2c 20 0d 0a 09 .... ......, ...
1190: d0 bf d0 be d0 ba d0 b0 20 d0 bd d0 b5 20 d0 b2 ........ .... ..
11a0: d0 b5 d1 80 d0 bd d0 b5 d1 82 20 d0 b7 d0 bd d0 .......... .....
11b0: b0 d1 87 d0 b5 d0 bd d0 b8 d0 b5 20 75 6e 64 65 ........... unde
11c0: 66 69 6e 65 64 2c 20 d0 be d0 b7 d0 bd d0 b0 d1 fined, .........
11d0: 87 d0 b0 d1 8e d1 89 d0 b5 d0 b5 20 d0 ba d0 be ........... ....
11e0: d0 bd d0 b5 d1 86 20 d1 81 d0 bf d0 b8 d1 81 d0 ...... .........
11f0: ba d0 b0 29 20 2a 2f 0d 0a 09 74 68 69 73 2e 69 ...) */...this.i
1200: 74 65 72 61 74 6f 72 20 3d 20 66 75 6e 63 74 69 terator = functi
1210: 6f 6e 20 28 72 29 0d 0a 09 7b 0d 0a 09 09 76 61 on (r)...{....va
1220: 72 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 20 74 r collection = t
1230: 68 69 73 3b 0d 0a 09 09 72 65 74 75 72 6e 20 7b his;....return {
1240: 0d 0a 09 09 09 63 6f 6c 6c 65 63 74 69 6f 6e 09 .....collection.
1250: 3a 20 63 6f 6c 6c 65 63 74 69 6f 6e 2c 0d 0a 09 : collection,...
1260: 09 09 69 74 65 72 61 74 6f 72 09 3a 20 72 20 3f ..iterator.: r ?
1270: 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 63 6f 75 6e collection.coun
1280: 74 28 29 20 3a 20 28 2d 31 29 2c 09 09 09 09 09 t() : (-1),.....
1290: 09 09 09 09 09 09 09 09 09 20 0d 0a 09 09 09 6e ......... .....n
12a0: 65 78 74 09 09 3a 20 66 75 6e 63 74 69 6f 6e 28 ext..: function(
12b0: 72 65 76 65 72 73 65 29 0d 0a 09 09 20 20 20 20 reverse)....
12c0: 7b 20 20 20 20 20 20 20 20 0d 0a 09 09 09 09 72 { ......r
12d0: 65 74 75 72 6e 20 74 68 69 73 2e 63 6f 6c 6c 65 eturn this.colle
12e0: 63 74 69 6f 6e 2e 77 6f 72 64 28 20 74 68 69 73 ction.word( this
12f0: 2e 69 74 65 72 61 74 6f 72 20 2b 3d 20 28 72 65 .iterator += (re
1300: 76 65 72 73 65 3f 28 2d 31 29 3a 31 29 20 29 3b verse?(-1):1) );
1310: 0d 0a 09 09 20 20 20 20 7d 20 20 20 0d 0a 09 09 .... } ....
1320: 7d 0d 0a 09 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a }...}.. .../*
1330: 20 d1 84 d0 b8 d0 bb d1 8c d1 82 d1 80 d1 83 d0 ...............
1340: b5 d1 82 20 d1 8d d0 bb d0 b5 d0 bc d0 b5 d0 bd ... ............
1350: d1 82 d1 8b 2c 20 d0 be d1 81 d1 82 d0 b0 d0 b2 ...., ..........
1360: d0 bb d1 8f d1 8f 20 d1 82 d0 be d0 bb d1 8c d0 ...... .........
1370: ba d0 be 20 d1 82 d0 b5 2c 20 d0 b7 d0 bd d0 b0 ... ...., ......
1380: d1 87 d0 b5 d0 bd d0 b8 d1 8f 20 d0 ba d0 be d1 .......... .....
1390: 82 d0 be d1 80 d1 8b d1 85 0d 0a 09 20 20 20 d0 ............ .
13a0: bc d0 b0 d1 82 d1 87 d0 b0 d1 82 20 d1 88 d0 b0 ........... ....
13b0: d0 b1 d0 bb d0 be d0 bd 20 70 61 74 74 65 72 6e ........ pattern
13c0: 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 66 69 */.. this.fi
13d0: 6c 74 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 lter = function
13e0: 28 70 61 74 74 65 72 6e 2c 20 75 6e 69 71 75 65 (pattern, unique
13f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ).. {..
1400: 20 20 76 61 72 20 75 73 65 64 20 3d 20 7b 7d 3b var used = {};
1410: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
1420: 69 73 2e 61 73 73 65 72 74 28 30 29 29 20 7b 0d is.assert(0)) {.
1430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
1440: 20 6e 77 20 3d 20 6e 65 77 20 41 72 72 61 79 28 nw = new Array(
1450: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
1460: 66 6f 72 20 28 76 61 72 20 69 3d 30 3b 20 69 3c for (var i=0; i<
1470: 74 68 69 73 2e 63 6f 75 6e 74 28 29 3b 20 69 2b this.count(); i+
1480: 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 +) {..
1490: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 77 if (this.w
14a0: 6f 72 64 28 69 29 2e 6d 61 74 63 68 28 70 61 74 ord(i).match(pat
14b0: 74 65 72 6e 29 29 20 7b 09 09 09 09 09 0d 0a 20 tern)) {.......
14c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14d0: 20 20 20 69 66 20 28 75 6e 69 71 75 65 29 20 7b if (unique) {
14e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
14f0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 75 if (!u
1500: 73 65 64 5b 74 68 69 73 2e 77 6f 72 64 28 69 29 sed[this.word(i)
1510: 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ]) {..
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1530: 20 20 75 73 65 64 5b 74 68 69 73 2e 77 6f 72 64 used[this.word
1540: 28 69 29 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 (i)] = true;..
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1560: 20 20 20 20 20 20 20 20 20 20 6e 77 5b 6e 77 2e nw[nw.
1570: 6c 65 6e 67 74 68 5d 20 3d 20 74 68 69 73 2e 77 length] = this.w
1580: 6f 72 64 28 69 29 3b 0d 0a 20 20 20 20 20 20 20 ord(i);..
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
15b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
15d0: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 lse {..
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 77 nw
15f0: 5b 6e 77 2e 6c 65 6e 67 74 68 5d 20 3d 20 74 68 [nw.length] = th
1600: 69 73 2e 77 6f 72 64 28 69 29 3b 0d 0a 20 20 20 is.word(i);..
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1620: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
1630: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
1640: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
1650: 20 20 77 6f 72 64 73 20 3d 20 6e 77 3b 0d 0a 20 words = nw;..
1660: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
1670: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 n true;..
1680: 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }.. retu
1690: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d rn false;.. }
16a0: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 0d 0a 20 .. ..
16b0: 20 20 20 74 68 69 73 2e 72 65 73 65 74 28 29 3b this.reset();
16c0: 20 2f 2f 20 d0 b8 d0 bd d0 b8 d1 86 d0 b8 d0 b0 // ............
16d0: d0 bb d0 b8 d0 b7 d0 b0 d1 86 d0 b8 d1 8f 0d 0a ................
16e0: 7d 0d 0a 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 }......function
16f0: 56 69 6d 41 75 74 6f 43 6f 6d 70 6c 65 74 69 6f VimAutoCompletio
1700: 6e 54 6f 6f 6c 28 29 0d 0a 7b 0d 0a 20 20 20 20 nTool()..{..
1710: 76 61 72 20 73 72 63 44 6f 63 50 61 74 68 3b 09 var srcDocPath;.
1720: 2f 2f 20 d0 bf d1 83 d1 82 d1 8c 20 d0 b4 d0 be // ........ ....
1730: 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 be d0 ...............
1740: b3 d0 be 20 d0 b4 d0 be d0 ba d1 83 d0 bc d0 b5 ... ............
1750: d0 bd d1 82 d0 b0 20 28 d0 b8 d1 81 d0 bf d0 be ...... (........
1760: d0 bb d1 8c d0 b7 d1 83 d0 b5 d1 82 d1 81 d1 8f ................
1770: 20 d0 b4 d0 bb d1 8f 20 d0 b8 d0 b4 d0 b5 d0 bd ...... ........
1780: d1 82 d0 b8 d1 84 d0 b8 d0 ba d0 b0 d1 86 d0 b8 ................
1790: d0 b8 20 d0 b4 d0 be d0 ba d1 83 d0 bc d0 b5 d0 .. .............
17a0: bd d1 82 d0 be d0 b2 29 0d 0a 20 20 20 20 76 61 .......).. va
17b0: 72 20 73 72 63 4c 69 6e 65 3b 09 2f 2f 20 d0 b8 r srcLine;.// ..
17c0: d1 81 d1 85 d0 be d0 b4 d0 bd d0 b0 d1 8f 20 d1 .............. .
17d0: 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0 b4 d0 be ........... ....
17e0: d0 ba d1 83 d0 bc d0 b5 d0 bd d1 82 d0 b0 0d 0a ................
17f0: 20 20 20 20 76 61 72 20 73 72 63 43 6f 6c 3b 09 var srcCol;.
1800: 09 2f 2f 20 d0 bf d0 b5 d1 80 d0 b2 d0 b0 d1 8f .// ............
1810: 20 d0 bf d0 be d0 b7 d0 b8 d1 86 d0 b8 d1 8f 20 ..............
1820: d0 b2 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b5 20 .. ............
1830: d0 bf d0 b5 d1 80 d0 b5 d0 b4 20 d0 b8 d1 81 d1 .......... .....
1840: 85 d0 be d0 b4 d0 bd d1 8b d0 bc 20 d1 81 d0 bb ........... ....
1850: d0 be d0 b2 d0 be d0 bc 0d 0a 20 20 20 20 76 61 .......... va
1860: 72 20 73 72 63 57 6f 72 64 3b 09 2f 2f 20 d0 b8 r srcWord;.// ..
1870: d1 81 d1 85 d0 be d0 b4 d0 bd d0 be d0 b5 20 d1 .............. .
1880: 81 d0 bb d0 be d0 b2 d0 be 20 28 d0 ba d0 be d1 ......... (.....
1890: 82 d0 be d1 80 d0 be d0 b5 20 d0 bf d1 8b d1 82 ......... ......
18a0: d0 b0 d0 b5 d0 bc d1 81 d1 8f 20 d0 b4 d0 be d0 .......... .....
18b0: bf d0 be d0 bb d0 bd d0 b8 d1 82 d1 8c 29 0d 0a .............)..
18c0: 20 20 20 20 76 61 72 20 6c 61 73 74 57 6f 72 64 var lastWord
18d0: 3b 09 2f 2f 20 d0 bf d0 be d1 81 d0 bb d0 b5 d0 ;.// ...........
18e0: b4 d0 bd d0 b5 d0 b5 20 d0 b8 d1 81 d0 bf d0 be ....... ........
18f0: d0 bb d1 8c d0 b7 d0 be d0 b2 d0 b0 d0 bd d0 bd ................
1900: d0 be d0 b5 20 d0 b2 20 d0 bf d0 be d0 b4 d1 81 .... .. ........
1910: d1 82 d0 b0 d0 bd d0 be d0 b2 d0 ba d0 b5 20 d1 .............. .
1920: 81 d0 bb d0 be d0 b2 d0 be 0d 0a 20 20 20 20 76 ........... v
1930: 61 72 20 63 75 72 4c 69 6e 65 49 78 3b 09 2f 2f ar curLineIx;.//
1940: 20 d0 b8 d0 bd d0 b4 d0 b5 d0 ba d1 81 20 d1 82 ............ ..
1950: d0 b5 d0 ba d1 83 d1 89 d0 b5 d0 b9 20 d1 81 d1 ............ ...
1960: 82 d1 80 d0 be d0 ba d0 b8 20 28 d0 b8 d0 b7 20 ......... (....
1970: d0 ba d0 be d1 82 d0 be d1 80 d0 be d0 b9 20 d0 .............. .
1980: b1 d0 b5 d1 80 d1 83 d1 82 d1 81 d1 8f 20 d1 81 ............. ..
1990: d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 ................
19a0: d0 b2 d0 b8 d1 8f 29 0d 0a 20 20 20 20 76 61 72 ......).. var
19b0: 20 77 6f 72 64 73 3b 09 09 2f 2f 20 d1 81 d0 bf words;..// ....
19c0: d0 b8 d1 81 d0 be d0 ba 20 d1 81 d0 bb d0 be d0 ........ .......
19d0: b2 2d d1 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 .-..............
19e0: d1 81 d1 82 d0 b2 d0 b8 d0 b9 20 d1 82 d0 b5 d0 .......... .....
19f0: ba d1 83 d1 89 d0 b5 d0 b9 20 d1 81 d1 82 d1 80 ......... ......
1a00: d0 be d0 ba d0 b8 0d 0a 20 20 20 20 0d 0a 20 20 ........ ..
1a10: 20 20 76 61 72 20 62 61 63 6b 77 61 72 64 53 65 var backwardSe
1a20: 61 72 63 68 3b 09 2f 2f 20 d0 be d0 b1 d1 80 d0 arch;.// .......
1a30: b0 d1 82 d0 bd d1 8b d0 b9 20 d0 bf d0 be d0 b8 ......... ......
1a40: d1 81 d0 ba 20 28 d0 bf d0 be 20 d1 83 d0 bc d0 .... (.... .....
1a50: be d0 bb d1 87 d0 b0 d0 bd d0 b8 d1 8e 20 d0 bf ............. ..
1a60: d0 be d0 b8 d1 81 d0 ba 20 d0 bf d1 80 d1 8f d0 ........ .......
1a70: bc d0 be d0 b9 2c 20 22 d0 b2 d0 bf d0 b5 d1 80 ....., "........
1a80: d0 b5 d0 b4 22 29 0d 0a 20 20 20 20 76 61 72 20 ....").. var
1a90: 70 61 74 74 65 72 6e 3b 09 09 2f 2f 20 d1 88 d0 pattern;..// ...
1aa0: b0 d0 b1 d0 bb d0 be d0 bd 20 28 d1 80 d0 b5 d0 ......... (.....
1ab0: b3 d1 83 d0 bb d1 8f d1 80 d0 bd d0 be d0 b5 20 ...............
1ac0: d0 b2 d1 8b d1 80 d0 b0 d0 b6 d0 b5 d0 bd d0 b8 ................
1ad0: d0 b5 29 2c 20 d0 be d0 bf d0 b8 d1 81 d1 8b d0 ..), ...........
1ae0: b2 d0 b0 d1 8e d1 89 d0 b8 d0 b9 20 d1 81 d0 be ........... ....
1af0: d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 ................
1b00: d0 b8 d0 b5 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 .... ...........
1b10: bd d0 be d0 bc d1 83 20 d1 81 d0 bb d0 be d0 b2 ....... ........
1b20: d1 83 20 0d 0a 20 20 20 20 0d 0a 20 20 20 20 76 .. .. .. v
1b30: 61 72 20 63 6f 75 6e 74 65 72 3b 09 2f 2f 20 d1 ar counter;.// .
1b40: 81 d1 87 d0 b5 d1 82 d1 87 d0 b8 d0 ba 20 d1 81 ............. ..
1b50: d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 ................
1b60: d0 b2 d0 b8 d0 b9 0d 0a 20 20 20 20 76 61 72 20 ........ var
1b70: 74 6f 74 61 6c 3b 09 09 2f 2f 20 d0 be d0 b1 d1 total;..// .....
1b80: 89 d0 b5 d0 b5 20 d1 87 d0 b8 d1 81 d0 bb d0 be ..... ..........
1b90: 20 d1 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 ...............
1ba0: 81 d1 82 d0 b2 d0 b8 d0 b9 0d 0a 0d 0a 20 20 20 .............
1bb0: 20 2f 2a 20 d0 b2 d1 8b d0 bf d0 be d0 bb d0 bd /* ............
1bc0: d1 8f d0 b5 d1 82 20 28 d1 80 d0 b5 29 d0 b8 d0 ...... (....)...
1bd0: bd d0 b8 d1 86 d0 b8 d0 b0 d0 bb d0 b8 d0 b7 d0 ................
1be0: b0 d1 86 d0 b8 d1 8e 20 d0 be d0 b1 d1 8a d0 b5 ....... ........
1bf0: d0 ba d1 82 d0 b0 2c 20 d0 b5 d1 81 d0 bb d0 b8 ......, ........
1c00: 20 d1 8d d1 82 d0 be 20 d0 bd d0 b5 d0 be d0 b1 ...... ........
1c10: d1 85 d0 be d0 b4 d0 b8 d0 bc d0 be 20 2a 2f 0d ............ */.
1c20: 0a 20 20 20 20 74 68 69 73 2e 73 65 74 75 70 20 . this.setup
1c30: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f 6b = function (look
1c40: 42 61 63 6b 77 61 72 64 29 0d 0a 20 20 20 20 7b Backward).. {
1c50: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 77 6f .. var wo
1c60: 72 64 20 3d 20 67 65 74 4c 65 66 74 57 6f 72 64 rd = getLeftWord
1c70: 28 43 75 72 44 6f 63 29 3b 09 09 0d 0a 20 20 20 (CurDoc);....
1c80: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 if (this.is
1c90: 4e 65 77 4c 6f 6f 70 28 43 75 72 44 6f 63 2c 20 NewLoop(CurDoc,
1ca0: 77 6f 72 64 29 29 20 7b 20 2f 2f 20 d1 80 d0 b5 word)) { // ....
1cb0: d0 b8 d0 bd d0 b8 d1 86 d0 b8 d0 b0 d0 bb d0 b8 ................
1cc0: d0 b7 d0 b0 d1 86 d0 b8 d1 8f 09 09 09 0d 0a 20 ...............
1cd0: 20 20 20 20 20 20 20 20 20 20 20 73 72 63 44 6f srcDo
1ce0: 63 50 61 74 68 09 3d 20 43 75 72 44 6f 63 2e 47 cPath.= CurDoc.G
1cf0: 65 74 48 77 6e 64 28 29 3b 20 20 0d 0a 20 20 20 etHwnd(); ..
1d00: 20 20 20 20 20 20 20 20 20 77 69 74 68 20 28 43 with (C
1d10: 75 72 44 6f 63 2e 47 65 74 43 61 72 65 74 50 6f urDoc.GetCaretPo
1d20: 73 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 s())..
1d30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 {..
1d40: 20 20 20 20 20 73 72 63 4c 69 6e 65 20 3d 20 62 srcLine = b
1d50: 65 67 69 6e 52 6f 77 3b 0d 0a 20 20 20 20 20 20 eginRow;..
1d60: 20 20 20 20 20 20 20 20 20 20 73 72 63 43 6f 6c srcCol
1d70: 20 3d 20 28 62 65 67 69 6e 43 6f 6c 20 2d 20 31 = (beginCol - 1
1d80: 29 20 2d 20 77 6f 72 64 2e 6c 65 6e 67 74 68 3b ) - word.length;
1d90: 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 ..
1da0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
1db0: 20 20 20 20 20 20 20 20 20 73 72 63 57 6f 72 64 srcWord
1dc0: 20 3d 20 77 6f 72 64 3b 20 20 20 20 20 20 20 20 = word;
1dd0: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 ..
1de0: 20 20 6c 61 73 74 57 6f 72 64 09 3d 20 77 6f 72 lastWord.= wor
1df0: 64 3b 20 2f 2f 20 d1 87 d1 82 d0 be d0 b1 d1 8b d; // ..........
1e00: 20 d0 ba d0 be d1 80 d1 80 d0 b5 d0 ba d1 82 d0 ...............
1e10: bd d0 be 20 d1 81 d0 b4 d0 b5 d0 bb d0 b0 d1 82 ... ............
1e20: d1 8c 20 d0 bf d0 b5 d1 80 d0 b2 d1 83 d1 8e 20 .. ............
1e30: d0 bf d0 be d0 b4 d1 81 d1 82 d0 b0 d0 bd d0 be ................
1e40: d0 b2 d0 ba d1 83 0d 0a 20 20 20 20 20 20 20 20 ........
1e50: 20 20 20 20 63 75 72 4c 69 6e 65 49 78 20 3d 20 curLineIx =
1e60: 73 72 63 4c 69 6e 65 3b 20 20 20 20 20 20 20 20 srcLine;
1e70: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 ..
1e80: 20 20 70 61 74 74 65 72 6e 20 3d 20 6e 65 77 20 pattern = new
1e90: 52 65 67 45 78 70 28 22 5e 22 20 2b 20 77 6f 72 RegExp("^" + wor
1ea0: 64 2c 20 22 69 22 29 3b 20 20 20 20 20 0d 0a 20 d, "i"); ..
1eb0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 d0 bd // ..
1ec0: d0 b0 d1 87 d0 b8 d0 bd d0 b0 d0 b5 d0 bc 20 d0 .............. .
1ed0: b8 d1 81 d0 ba d0 b0 d1 82 d1 8c 20 d1 81 d0 be ........... ....
1ee0: d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 ................
1ef0: d0 b8 d1 8f 20 d0 bd d0 b0 d1 87 d0 b8 d0 bd d0 .... ...........
1f00: b0 d1 8f 20 d1 81 20 d0 b8 d1 81 d1 85 d0 be d0 ... .. .........
1f10: b4 d0 bd d0 be d0 b9 20 d1 81 d1 82 d1 80 d0 be ....... ........
1f20: d0 ba d0 b8 0d 0a 20 20 20 20 20 20 20 20 20 20 ......
1f30: 20 20 77 6f 72 64 73 20 3d 20 74 68 69 73 2e 70 words = this.p
1f40: 61 72 73 65 4c 69 6e 65 28 6c 6f 6f 6b 42 61 63 arseLine(lookBac
1f50: 6b 77 61 72 64 20 3f 20 74 68 69 73 2e 6c 65 66 kward ? this.lef
1f60: 74 50 61 72 74 28 29 20 3a 20 74 68 69 73 2e 72 tPart() : this.r
1f70: 69 67 68 74 50 61 72 74 28 29 29 3b 20 20 0d 0a ightPart()); ..
1f80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 d1 // .
1f90: 81 d1 87 d0 b5 d1 82 d1 87 d0 b8 d0 ba d0 b8 0d ................
1fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 . cou
1fb0: 6e 74 65 72 20 3d 20 30 3b 0d 0a 20 20 20 20 20 nter = 0;..
1fc0: 20 20 20 20 20 20 20 74 6f 74 61 6c 20 3d 20 6e total = n
1fd0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 ull;.. }
1fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a ..
1ff0: 20 20 20 20 20 20 20 20 62 61 63 6b 77 61 72 64 backward
2000: 53 65 61 72 63 68 20 3d 20 6c 6f 6f 6b 42 61 63 Search = lookBac
2010: 6b 77 61 72 64 3b 0d 0a 20 20 20 20 7d 0d 0a 20 kward;.. }..
2020: 20 20 20 0d 0a 09 2f 2a 20 d1 83 d1 81 d0 bb d0 .../* .......
2030: be d0 b2 d0 b8 d0 b5 20 d0 bd d0 b5 d0 be d0 b1 ....... ........
2040: d1 85 d0 be d0 b4 d0 b8 d0 bc d0 be d1 81 d1 82 ................
2050: d0 b8 20 d0 bf d1 80 d0 be d0 b8 d0 b7 d0 b2 d0 .. .............
2060: b5 d1 81 d1 82 d0 b8 20 d0 bf d0 b5 d1 80 d0 b5 ....... ........
2070: d0 b8 d0 bd d0 b8 d1 86 d0 b8 d0 b0 d0 bb d0 b8 ................
2080: d0 b7 d0 b0 d1 86 d0 b8 d1 8e 20 d0 bf d0 b5 d1 .......... .....
2090: 80 d0 b5 d0 bc d0 b5 d0 bd d0 bd d1 8b d1 85 20 ...............
20a0: d1 87 d0 bb d0 b5 d0 bd d0 be d0 b2 20 d0 be d0 ............ ...
20b0: b1 d1 8a d0 b5 d0 ba d1 82 d0 b0 20 56 69 6d 41 ........... VimA
20c0: 75 74 6f 43 6f 6d 70 6c 65 74 69 6f 6e 54 6f 6f utoCompletionToo
20d0: 6c 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 69 l */.. this.i
20e0: 73 4e 65 77 4c 6f 6f 70 20 3d 20 66 75 6e 63 74 sNewLoop = funct
20f0: 69 6f 6e 20 28 64 6f 63 2c 20 77 6f 72 64 29 0d ion (doc, word).
2100: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 . {..
2110: 76 61 72 20 70 6f 73 20 3d 20 64 6f 63 2e 47 65 var pos = doc.Ge
2120: 74 43 61 72 65 74 50 6f 73 28 29 3b 0d 0a 20 20 tCaretPos();..
2130: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 ..
2140: 72 65 74 75 72 6e 20 21 28 77 6f 72 64 73 20 26 return !(words &
2150: 26 20 28 73 72 63 44 6f 63 50 61 74 68 20 3d 3d & (srcDocPath ==
2160: 20 64 6f 63 2e 47 65 74 48 77 6e 64 28 29 29 20 doc.GetHwnd())
2170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 26 26 .. &&
2180: 20 28 73 72 63 4c 69 6e 65 20 3d 3d 20 70 6f 73 (srcLine == pos
2190: 2e 62 65 67 69 6e 52 6f 77 29 20 26 26 20 28 6c .beginRow) && (l
21a0: 61 73 74 57 6f 72 64 20 3d 3d 20 77 6f 72 64 29 astWord == word)
21b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 26 26 .. &&
21c0: 20 28 73 72 63 43 6f 6c 20 3d 3d 20 28 70 6f 73 (srcCol == (pos
21d0: 2e 62 65 67 69 6e 43 6f 6c 20 2d 20 31 20 2d 20 .beginCol - 1 -
21e0: 77 6f 72 64 2e 6c 65 6e 67 74 68 29 29 29 3b 20 word.length)));
21f0: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 7d 0d .. }.
2200: 0a 20 20 20 20 0d 0a 09 2f 2a 20 d0 bf d1 80 d0 . .../* .....
2210: be d0 b2 d0 b5 d1 80 d1 8f d0 b5 d1 82 2c 20 d0 ............., .
2220: bd d0 b5 20 d0 b2 d1 8b d1 85 d0 be d0 b4 d0 b8 ... ............
2230: d1 82 20 d0 bb d0 b8 20 d0 b8 d0 bd d0 b4 d0 b5 .. .... ........
2240: d0 ba d1 81 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 .... ...........
2250: b8 20 d0 b7 d0 b0 20 d0 b4 d0 be d0 bf d1 83 d1 . .... .........
2260: 81 d1 82 d0 b8 d0 bc d1 8b d0 b5 20 d0 b3 d1 80 ........... ....
2270: d0 b0 d0 bd d0 b8 d1 86 d1 8b 20 2a 2f 0d 0a 20 .......... */..
2280: 20 20 20 74 68 69 73 2e 61 73 73 65 72 74 20 3d this.assert =
2290: 20 66 75 6e 63 74 69 6f 6e 20 28 6c 49 78 29 0d function (lIx).
22a0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 . {..
22b0: 72 65 74 75 72 6e 20 28 43 75 72 44 6f 63 20 26 return (CurDoc &
22c0: 26 20 28 31 20 3c 3d 20 6c 49 78 29 20 26 26 20 & (1 <= lIx) &&
22d0: 28 6c 49 78 20 3c 3d 20 43 75 72 44 6f 63 2e 4c (lIx <= CurDoc.L
22e0: 69 6e 65 73 43 6f 75 6e 74 28 29 29 29 3b 0d 0a inesCount()));..
22f0: 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a }.. .../*
2300: 20 d0 b1 d0 b5 d1 80 d0 b5 d1 82 20 d1 81 d0 bb .......... ....
2310: d0 b5 d0 b4 d1 83 d1 8e d1 89 d0 b5 d0 b5 20 d1 .............. .
2320: 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 ................
2330: 82 d0 b2 d0 b8 d0 b5 20 d0 b8 20 d0 bf d0 be d0 ....... .. .....
2340: b4 d1 81 d1 82 d0 b0 d0 b2 d0 bb d1 8f d0 b5 d1 ................
2350: 82 20 d0 b5 d0 b3 d0 be 20 d0 bd d0 b0 20 d0 bc . ...... .... ..
2360: d0 b5 d1 81 d1 82 d0 be 20 d0 b8 d1 81 d1 85 d0 ........ .......
2370: be d0 b4 d0 bd d0 be d0 b3 d0 be 20 d1 81 d0 bb ........... ....
2380: d0 be d0 b2 d0 b0 20 2a 2f 0d 0a 20 20 20 20 74 ...... */.. t
2390: 68 69 73 2e 63 6f 6d 70 6c 65 74 65 57 6f 72 64 his.completeWord
23a0: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f = function (loo
23b0: 6b 42 61 63 6b 77 61 72 64 29 0d 0a 20 20 20 20 kBackward)..
23c0: 7b 20 20 20 20 20 20 20 0d 0a 09 09 74 68 69 73 { ....this
23d0: 2e 73 65 74 75 70 28 6c 6f 6f 6b 42 61 63 6b 77 .setup(lookBackw
23e0: 61 72 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 77 ard);.. w
23f0: 68 69 6c 65 20 28 74 72 75 65 29 20 7b 20 20 0d hile (true) { .
2400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var
2410: 20 77 6f 72 64 20 3d 20 77 6f 72 64 73 2e 6e 65 word = words.ne
2420: 78 74 28 6c 6f 6f 6b 42 61 63 6b 77 61 72 64 29 xt(lookBackward)
2430: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ;.. i
2440: 66 20 28 77 6f 72 64 29 20 7b 0d 0a 20 20 20 20 f (word) {..
2450: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 this
2460: 2e 63 6f 6d 70 6c 65 74 65 28 77 6f 72 64 29 3b .complete(word);
2470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2480: 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 return;..
2490: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
24a0: 20 20 20 20 20 20 77 6f 72 64 73 20 3d 20 74 68 words = th
24b0: 69 73 2e 6e 65 78 74 4c 69 6e 65 28 29 3b 0d 0a is.nextLine();..
24c0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d }.. }
24d0: 0d 0a 20 20 20 20 0d 0a 09 2f 2a 20 d1 81 d1 82 .. .../* ....
24e0: d1 80 d0 be d0 b8 d1 82 20 d0 b8 20 d0 b2 d0 be ........ .. ....
24f0: d0 b7 d0 b2 d1 80 d0 b0 d1 89 d0 b0 d0 b5 d1 82 ................
2500: 20 d1 81 d0 bf d0 b8 d1 81 d0 be d0 ba 20 d1 81 ............ ..
2510: d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d0 b2 ................
2520: d1 83 d1 8e d1 89 d0 b8 d1 85 20 d1 81 d0 bb d0 .......... .....
2530: be d0 b2 20 d0 b4 d0 bb d1 8f 20 d1 81 d0 bb d0 ... ...... .....
2540: b5 d0 b4 d1 83 d1 8e d1 89 d0 b5 d0 b9 20 d0 bf ............. ..
2550: d0 be 20 d0 bf d0 be d1 80 d1 8f d0 b4 d0 ba d1 .. .............
2560: 83 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b8 20 2a . ............ *
2570: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 6e 65 78 74 /.. this.next
2580: 4c 69 6e 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 Line = function
2590: 28 29 0d 0a 20 20 20 20 7b 20 20 20 20 20 20 20 ().. {
25a0: 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 ..
25b0: 20 20 20 20 20 20 63 75 72 4c 69 6e 65 49 78 20 curLineIx
25c0: 2b 3d 20 28 62 61 63 6b 77 61 72 64 53 65 61 72 += (backwardSear
25d0: 63 68 20 3f 20 2d 31 20 3a 20 31 29 3b 20 0d 0a ch ? -1 : 1); ..
25e0: 09 09 69 66 20 28 62 61 63 6b 77 61 72 64 53 65 ..if (backwardSe
25f0: 61 72 63 68 29 20 7b 0d 0a 09 09 09 69 66 20 28 arch) {.....if (
2600: 63 75 72 4c 69 6e 65 49 78 20 3c 20 31 29 20 7b curLineIx < 1) {
2610: 0d 0a 09 09 09 09 63 75 72 4c 69 6e 65 49 78 20 ......curLineIx
2620: 3d 20 43 75 72 44 6f 63 2e 4c 69 6e 65 73 43 6f = CurDoc.LinesCo
2630: 75 6e 74 28 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 unt();.....}....
2640: 7d 20 0d 0a 09 09 65 6c 73 65 20 7b 0d 0a 20 20 } ....else {..
2650: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 if (cu
2660: 72 4c 69 6e 65 49 78 20 3e 20 43 75 72 44 6f 63 rLineIx > CurDoc
2670: 2e 4c 69 6e 65 73 43 6f 75 6e 74 28 29 29 20 7b .LinesCount()) {
2680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
2690: 20 20 63 75 72 4c 69 6e 65 49 78 20 3d 20 31 3b curLineIx = 1;
26a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
26b0: 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 . }..
26c0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 return this
26d0: 2e 70 61 72 73 65 4c 69 6e 65 28 74 68 69 73 2e .parseLine(this.
26e0: 63 75 72 4c 69 6e 65 28 29 29 3b 20 20 20 20 20 curLine());
26f0: 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 ..
2700: 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a 20 22 d1 80 }.. .../* "..
2710: d0 b0 d0 b7 d0 b1 d0 b8 d1 80 d0 b0 d0 b5 d1 82 ................
2720: 22 20 d0 bf d0 b5 d1 80 d0 b5 d0 b4 d0 b0 d0 bd " ..............
2730: d0 bd d1 83 d1 8e 20 d0 b2 20 d0 ba d0 b0 d1 87 ...... .. ......
2740: d0 b5 d1 81 d1 82 d0 b2 d0 b5 20 d0 bf d0 b0 d1 .......... .....
2750: 80 d0 b0 d0 bc d0 b5 d1 82 d1 80 d0 b0 20 d1 81 ............. ..
2760: d1 82 d1 80 d0 be d0 ba d1 83 20 d0 bd d0 b0 20 .......... ....
2770: d1 81 d0 bb d0 be d0 b2 d0 b0 20 d0 b8 20 d1 84 .......... .. ..
2780: d0 b8 d0 bb d1 8c d1 82 d1 80 d1 83 d0 b5 d1 82 ................
2790: 20 d0 b8 d1 85 20 0d 0a 20 20 20 20 d0 b2 20 d1 .... .. .. .
27a0: 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 81 d1 82 d0 ................
27b0: b2 d0 b8 d0 b8 20 d1 81 20 d1 88 d0 b0 d0 b1 d0 ..... .. .......
27c0: bb d0 be d0 bd d0 be d0 bc 2c 20 d0 ba d0 be d1 ........., .....
27d0: 82 d0 be d1 80 d1 8b d0 b9 20 d0 be d0 bf d0 b8 ......... ......
27e0: d1 81 d1 8b d0 b2 d0 b0 d0 b5 d1 82 20 d0 bf d0 ............ ...
27f0: be d0 b4 d1 85 d0 be d0 b4 d1 8f d1 89 d0 b8 d0 ................
2800: b5 20 d1 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 . ..............
2810: d1 81 d1 82 d0 b2 d0 b8 d1 8f 20 d0 b4 d0 bb d1 .......... .....
2820: 8f 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 be . ..............
2830: d0 b3 d0 be 20 d1 81 d0 bb d0 be d0 b2 d0 b0 20 .... ..........
2840: 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 70 61 72 */.. this.par
2850: 73 65 4c 69 6e 65 20 3d 20 66 75 6e 63 74 69 6f seLine = functio
2860: 6e 20 28 73 72 63 4c 69 6e 65 29 0d 0a 20 20 20 n (srcLine)..
2870: 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 {.. var
2880: 77 20 3d 20 6e 65 77 20 4c 69 6e 65 28 73 72 63 w = new Line(src
2890: 4c 69 6e 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 Line);..
28a0: 77 2e 66 69 6c 74 65 72 28 70 61 74 74 65 72 6e w.filter(pattern
28b0: 2c 20 74 72 75 65 29 3b 20 20 20 20 20 20 20 0d , true); .
28c0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
28d0: 77 2e 69 74 65 72 61 74 6f 72 28 62 61 63 6b 77 w.iterator(backw
28e0: 61 72 64 53 65 61 72 63 68 29 3b 0d 0a 20 20 20 ardSearch);..
28f0: 20 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a 20 d0 b2 }.. .../* ..
2900: d1 8b d0 bf d0 be d0 bb d0 bd d1 8f d0 b5 d1 82 ................
2910: 20 d0 bf d0 be d0 b4 d1 81 d1 82 d0 b0 d0 bd d0 ...............
2920: be d0 b2 d0 ba d1 83 20 d0 be d1 87 d0 b5 d1 80 ....... ........
2930: d0 b5 d0 b4 d0 bd d0 be d0 b3 d0 be 20 d1 81 d0 ............ ...
2940: be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 ................
2950: b2 d0 b8 d1 8f 20 d0 b2 d0 bc d0 b5 d1 81 d1 82 ..... ..........
2960: d0 be 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 .. .............
2970: be d0 b3 d0 be 20 d1 81 d0 bb d0 be d0 b2 d0 b0 ..... ..........
2980: 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 63 6f */.. this.co
2990: 6d 70 6c 65 74 65 20 3d 20 66 75 6e 63 74 69 6f mplete = functio
29a0: 6e 20 28 77 6f 72 64 29 0d 0a 20 20 20 20 7b 20 n (word).. {
29b0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 ..
29c0: 20 43 75 72 44 6f 63 2e 52 65 70 6c 61 63 65 4c CurDoc.ReplaceL
29d0: 69 6e 65 28 73 72 63 4c 69 6e 65 2c 20 74 68 69 ine(srcLine, thi
29e0: 73 2e 6c 65 66 74 50 61 72 74 28 29 20 2b 20 77 s.leftPart() + w
29f0: 6f 72 64 20 2b 20 74 68 69 73 2e 72 69 67 68 74 ord + this.right
2a00: 50 61 72 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 Part());..
2a10: 20 20 43 75 72 44 6f 63 2e 53 65 74 43 61 72 65 CurDoc.SetCare
2a20: 74 50 6f 73 28 73 72 63 4c 69 6e 65 2c 20 73 72 tPos(srcLine, sr
2a30: 63 43 6f 6c 20 2b 20 77 6f 72 64 2e 6c 65 6e 67 cCol + word.leng
2a40: 74 68 20 2b 20 31 29 3b 20 2f 2f 20 d0 a1 d0 bd th + 1); // ....
2a50: d0 be d0 b2 d0 b0 20 d0 bf d0 be d0 bc d0 bd d0 ...... .........
2a60: b8 d0 bc 20 d0 bf d1 80 d0 be 20 d0 b8 d0 bd d0 ... ...... .....
2a70: b4 d0 b5 d0 ba d1 81 d1 8b 21 0d 0a 20 20 20 20 .........!..
2a80: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 ..
2a90: 20 20 6c 61 73 74 57 6f 72 64 20 3d 20 77 6f 72 lastWord = wor
2aa0: 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f d;.... co
2ab0: 75 6e 74 65 72 20 2b 3d 20 62 61 63 6b 77 61 72 unter += backwar
2ac0: 64 53 65 61 72 63 68 20 3f 20 2d 31 20 3a 20 31 dSearch ? -1 : 1
2ad0: 3b 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 ; ..
2ae0: 20 20 20 20 20 69 66 20 28 28 63 75 72 4c 69 6e if ((curLin
2af0: 65 49 78 20 3d 3d 20 73 72 63 4c 69 6e 65 29 26 eIx == srcLine)&
2b00: 26 28 6c 61 73 74 57 6f 72 64 20 3d 3d 20 73 72 &(lastWord == sr
2b10: 63 57 6f 72 64 29 29 20 7b 0d 0a 20 20 20 20 20 cWord)) {..
2b20: 20 20 20 20 20 20 20 69 66 20 28 28 21 74 6f 74 if ((!tot
2b30: 61 6c 29 26 26 63 6f 75 6e 74 65 72 29 20 7b 20 al)&&counter) {
2b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d .
2b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
2b70: 20 74 6f 74 61 6c 20 3d 20 4d 61 74 68 2e 61 62 total = Math.ab
2b80: 73 28 63 6f 75 6e 74 65 72 29 20 2d 20 31 3b 20 s(counter) - 1;
2b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2ba0: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 ..
2bb0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
2bc0: 20 63 6f 75 6e 74 65 72 20 3d 20 30 3b 0d 0a 20 counter = 0;..
2bd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 7d }.. }
2be0: 0d 0a 20 20 20 20 20 0d 0a 20 20 20 20 2f 2a 20 .. .. /*
2bf0: d0 b2 d0 be d0 b7 d0 b2 d1 80 d0 b0 d1 89 d0 b0 ................
2c00: d0 b5 d1 82 20 d1 82 d0 b5 d0 ba d1 83 d1 89 d1 .... ...........
2c10: 83 d1 8e 20 d1 81 d1 82 d1 80 d0 be d0 ba d1 83 ... ............
2c20: 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 63 75 */.. this.cu
2c30: 72 4c 69 6e 65 20 3d 20 66 75 6e 63 74 69 6f 6e rLine = function
2c40: 20 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 ().. {..
2c50: 20 20 20 20 76 61 72 20 73 74 72 20 3d 20 22 22 var str = ""
2c60: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 ;.. if (t
2c70: 68 69 73 2e 61 73 73 65 72 74 28 63 75 72 4c 69 his.assert(curLi
2c80: 6e 65 49 78 29 29 20 7b 0d 0a 20 20 20 20 20 20 neIx)) {..
2c90: 20 20 20 20 20 20 2f 2a 20 d0 bf d0 be d1 81 d0 /* .......
2ca0: ba d0 be d0 bb d1 8c d0 ba d1 83 20 d0 b8 d1 81 ........... ....
2cb0: d1 85 d0 be d0 b4 d0 bd d0 b0 d1 8f 20 d1 81 d1 ............ ...
2cc0: 82 d1 80 d0 be d0 ba d0 b0 20 d1 83 20 d0 bd d0 ......... .. ...
2cd0: b0 d1 81 20 d0 bf d0 be d1 81 d1 82 d0 be d1 8f ... ............
2ce0: d0 bd d0 bd d0 be 20 d0 bc d0 b5 d0 bd d1 8f d0 ...... .........
2cf0: b5 d1 82 d1 81 d1 8f 2c 0d 0a 20 20 20 20 20 20 .......,..
2d00: 20 20 20 20 20 20 d0 b5 d0 b5 20 22 d1 81 d0 be .... "....
2d10: d0 b1 d0 b8 d1 80 d0 b0 d0 b5 d0 bc 22 20 d0 be ............" ..
2d20: d1 82 d0 b4 d0 b5 d0 bb d1 8c d0 bd d0 be 2c 20 ..............,
2d30: d0 b2 d0 be d0 b7 d0 b2 d1 80 d0 b0 d1 89 d0 b0 ................
2d40: d1 8f 20 d0 bd d0 b0 20 d0 bc d0 b5 d1 81 d1 82 .. .... ........
2d50: d0 be 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 .. .............
2d60: be d0 b5 20 d1 81 d0 bb d0 be d0 b2 d0 be 20 2a ... .......... *
2d70: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 /.. i
2d80: 66 20 28 63 75 72 4c 69 6e 65 49 78 20 3d 3d 20 f (curLineIx ==
2d90: 73 72 63 4c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 srcLine) {..
2da0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 20 str
2db0: 3d 20 74 68 69 73 2e 6c 65 66 74 50 61 72 74 28 = this.leftPart(
2dc0: 29 20 2b 20 73 72 63 57 6f 72 64 20 2b 20 74 68 ) + srcWord + th
2dd0: 69 73 2e 72 69 67 68 74 50 61 72 74 28 29 3b 20 is.rightPart();
2de0: 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 ..
2df0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
2e00: 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0d 0a 20 else {..
2e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
2e20: 74 72 20 3d 20 43 75 72 44 6f 63 2e 47 65 74 4c tr = CurDoc.GetL
2e30: 69 6e 65 28 63 75 72 4c 69 6e 65 49 78 29 3b 0d ine(curLineIx);.
2e40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20 . }
2e50: 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 ..
2e60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 }.. re
2e70: 74 75 72 6e 20 73 74 72 3b 0d 0a 20 20 20 20 7d turn str;.. }
2e80: 0d 0a 0d 0a 20 20 20 20 2f 2a 20 d0 bb d0 b5 d0 .... /* .....
2e90: b2 d0 b0 d1 8f 20 d0 bf d0 be d0 bb d0 be d0 b2 ..... ..........
2ea0: d0 b8 d0 bd d0 b0 20 d1 81 d1 82 d1 80 d0 be d0 ...... .........
2eb0: ba d0 b8 2c 20 d1 81 d0 be d0 b4 d0 b5 d1 80 d0 ..., ...........
2ec0: b6 d0 b0 d1 89 d0 b5 d0 b9 20 d0 b8 d1 81 d1 85 ......... ......
2ed0: d0 be d0 b4 d0 bd d0 be d0 b5 20 d1 81 d0 bb d0 .......... .....
2ee0: be d0 b2 d0 be 3b 20 d1 81 d0 b0 d0 bc d0 be 20 .....; ........
2ef0: d0 b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 be d0 b5 ................
2f00: 20 d1 81 d0 bb d0 be d0 b2 d0 be 20 d0 bd d0 b5 .......... ....
2f10: 20 d0 b2 d0 ba d0 bb d1 8e d1 87 d0 b0 d0 b5 d1 ...............
2f20: 82 d1 81 d1 8f 20 2a 2f 0d 0a 20 20 20 20 74 68 ..... */.. th
2f30: 69 73 2e 6c 65 66 74 50 61 72 74 20 3d 20 66 75 is.leftPart = fu
2f40: 6e 63 74 69 6f 6e 20 28 29 0d 0a 20 20 20 20 7b nction ().. {
2f50: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
2f60: 20 43 75 72 44 6f 63 2e 52 61 6e 67 65 28 73 72 CurDoc.Range(sr
2f70: 63 4c 69 6e 65 2c 20 31 2c 20 73 72 63 4c 69 6e cLine, 1, srcLin
2f80: 65 2c 20 73 72 63 43 6f 6c 29 2e 47 65 74 54 65 e, srcCol).GetTe
2f90: 78 74 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 xt();.. }..
2fa0: 20 20 0d 0a 20 20 20 20 2f 2a 20 d0 bf d1 80 d0 .. /* .....
2fb0: b0 d0 b2 d0 b0 d1 8f 20 d0 bf d0 be d0 bb d0 be ....... ........
2fc0: d0 b2 d0 b8 d0 bd d0 b0 20 d1 81 d1 82 d1 80 d0 ........ .......
2fd0: be d0 ba d0 b8 2c 20 d1 81 d0 be d0 b4 d0 b5 d1 ....., .........
2fe0: 80 d0 b6 d0 b0 d1 89 d0 b5 d0 b9 20 d0 b8 d1 81 ........... ....
2ff0: d1 85 d0 be d0 b4 d0 bd d0 be d0 b5 20 d1 81 d0 ............ ...
3000: bb d0 be d0 b2 d0 be 3b 20 d1 81 d0 b0 d0 bc d0 .......; .......
3010: be 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 be . ..............
3020: d0 b5 20 d1 81 d0 bb d0 be d0 b2 d0 be 20 d0 bd .. .......... ..
3030: d0 b5 20 d0 b2 d0 ba d0 bb d1 8e d1 87 d0 b0 d0 .. .............
3040: b5 d1 82 d1 81 d1 8f 20 2a 2f 0d 0a 20 20 20 20 ....... */..
3050: 74 68 69 73 2e 72 69 67 68 74 50 61 72 74 20 3d this.rightPart =
3060: 20 66 75 6e 63 74 69 6f 6e 20 28 29 0d 0a 20 20 function ()..
3070: 20 20 7b 20 20 20 0d 0a 20 20 20 20 20 20 20 20 { ..
3080: 72 65 74 75 72 6e 20 43 75 72 44 6f 63 2e 52 61 return CurDoc.Ra
3090: 6e 67 65 28 73 72 63 4c 69 6e 65 2c 20 73 72 63 nge(srcLine, src
30a0: 43 6f 6c 20 2b 20 6c 61 73 74 57 6f 72 64 2e 6c Col + lastWord.l
30b0: 65 6e 67 74 68 20 2b 20 31 2c 20 73 72 63 4c 69 ength + 1, srcLi
30c0: 6e 65 2c 20 43 75 72 44 6f 63 2e 47 65 74 4c 69 ne, CurDoc.GetLi
30d0: 6e 65 28 73 72 63 4c 69 6e 65 29 2e 6c 65 6e 67 ne(srcLine).leng
30e0: 74 68 20 2b 20 31 29 2e 47 65 74 54 65 78 74 28 th + 1).GetText(
30f0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a );.. }..}..