Artifact
8010340d8de7ad4b2d5a18aa2a677234d2619ed3:
- File
VimComplete.js
— part of check-in
[816187c260]
at
2013-04-22 08:14:53
on branch trunk
— Исправлена ошибка [8092254bbe] - зависание VimComplete в пустом модуле.
(user:
kuntashov
size: 12713)
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 20 20 20 20 69 66 20 /);.. if
0f20: 28 21 77 6f 72 64 73 2e 6c 65 6e 67 74 68 20 7c (!words.length |
0f30: 7c 20 77 6f 72 64 73 2e 6c 65 6e 67 74 68 20 3d | words.length =
0f40: 3d 20 31 20 26 26 20 21 77 6f 72 64 73 5b 30 5d = 1 && !words[0]
0f50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 ).. w
0f60: 6f 72 64 73 20 3d 20 6e 65 77 20 41 72 72 61 79 ords = new Array
0f70: 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a ;.. }.. ..
0f80: 20 20 20 20 74 68 69 73 2e 61 73 73 65 72 74 20 this.assert
0f90: 3d 20 66 75 6e 63 74 69 6f 6e 20 28 69 78 29 20 = function (ix)
0fa0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 .. {..
0fb0: 20 72 65 74 75 72 6e 20 28 28 74 79 70 65 6f 66 return ((typeof
0fc0: 28 77 6f 72 64 73 29 20 3d 3d 20 22 6f 62 6a 65 (words) == "obje
0fd0: 63 74 22 29 20 26 26 20 28 69 78 20 3e 3d 20 30 ct") && (ix >= 0
0fe0: 29 20 26 26 20 28 69 78 20 3c 20 77 6f 72 64 73 ) && (ix < words
0ff0: 2e 6c 65 6e 67 74 68 29 29 3b 20 20 20 20 20 20 .length));
1000: 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 ..
1010: 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 20 20 20 74 }.. .. t
1020: 68 69 73 2e 77 6f 72 64 20 3d 20 66 75 6e 63 74 his.word = funct
1030: 69 6f 6e 20 28 69 78 29 20 0d 0a 20 20 20 20 7b ion (ix) .. {
1040: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68 .. if (th
1050: 69 73 2e 61 73 73 65 72 74 28 69 78 29 29 20 72 is.assert(ix)) r
1060: 65 74 75 72 6e 20 77 6f 72 64 73 5b 69 78 5d 3b eturn words[ix];
1070: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 .. }.. ..
1080: 20 20 20 74 68 69 73 2e 63 6f 75 6e 74 20 3d 20 this.count =
1090: 66 75 6e 63 74 69 6f 6e 20 28 29 0d 0a 20 20 20 function ()..
10a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 {.. retu
10b0: 72 6e 20 77 6f 72 64 73 2e 6c 65 6e 67 74 68 3b rn words.length;
10c0: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 7d 0d .. }.
10d0: 0a 20 20 20 20 0d 0a 09 74 68 69 73 2e 77 6f 72 . ...this.wor
10e0: 64 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 ds = function ()
10f0: 0d 0a 09 7b 0d 0a 09 09 72 65 74 75 72 6e 20 77 ...{....return w
1100: 6f 72 64 73 3b 0d 0a 09 7d 0d 0a 20 20 20 20 0d ords;...}.. .
1110: 0a 09 2f 2a 20 d0 b2 d0 be d0 b7 d0 b2 d1 80 d0 ../* ...........
1120: b0 d1 89 d0 b0 d0 b5 d1 82 20 d0 be d0 b1 d1 8a ......... ......
1130: d0 b5 d0 ba d1 82 2d d0 b8 d1 82 d0 b5 d1 80 d0 ......-.........
1140: b0 d1 82 d0 be d1 80 20 d1 81 20 d0 b5 d0 b4 d0 ....... .. .....
1150: b8 d0 bd d1 81 d1 82 d0 b2 d0 b5 d0 bd d0 bd d1 ................
1160: 8b d0 bc 20 d0 bc d0 b5 d1 82 d0 be d0 b4 d0 be ... ............
1170: d0 bc 20 6e 65 78 74 28 29 20 0d 0a 09 63 20 d0 .. next() ...c .
1180: bf d0 be d0 bc d0 be d1 89 d1 8c d1 8e 20 d0 ba ............. ..
1190: d0 be d1 82 d0 be d1 80 d0 be d0 b3 d0 be 20 d0 .............. .
11a0: be d1 81 d1 83 d1 89 d0 b5 d1 81 d1 82 d0 b2 d0 ................
11b0: bb d1 8f d0 b5 d1 82 d1 81 d1 8f 20 d0 bf d0 b5 ........... ....
11c0: d1 80 d0 b5 d0 b1 d0 be d1 80 20 d1 81 d1 82 d1 .......... .....
11d0: 80 d0 be d0 ba 20 28 d0 b4 d0 be 20 d1 82 d0 b5 ..... (.... ....
11e0: d1 85 20 d0 bf d0 be d1 80 2c 20 0d 0a 09 d0 bf .. ......, .....
11f0: d0 be d0 ba d0 b0 20 d0 bd d0 b5 20 d0 b2 d0 b5 ...... .... ....
1200: d1 80 d0 bd d0 b5 d1 82 20 d0 b7 d0 bd d0 b0 d1 ........ .......
1210: 87 d0 b5 d0 bd d0 b8 d0 b5 20 75 6e 64 65 66 69 ......... undefi
1220: 6e 65 64 2c 20 d0 be d0 b7 d0 bd d0 b0 d1 87 d0 ned, ...........
1230: b0 d1 8e d1 89 d0 b5 d0 b5 20 d0 ba d0 be d0 bd ......... ......
1240: d0 b5 d1 86 20 d1 81 d0 bf d0 b8 d1 81 d0 ba d0 .... ...........
1250: b0 29 20 2a 2f 0d 0a 09 74 68 69 73 2e 69 74 65 .) */...this.ite
1260: 72 61 74 6f 72 20 3d 20 66 75 6e 63 74 69 6f 6e rator = function
1270: 20 28 72 29 0d 0a 09 7b 0d 0a 09 09 76 61 72 20 (r)...{....var
1280: 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 20 74 68 69 collection = thi
1290: 73 3b 0d 0a 09 09 72 65 74 75 72 6e 20 7b 0d 0a s;....return {..
12a0: 09 09 09 63 6f 6c 6c 65 63 74 69 6f 6e 09 3a 20 ...collection.:
12b0: 63 6f 6c 6c 65 63 74 69 6f 6e 2c 0d 0a 09 09 09 collection,.....
12c0: 69 74 65 72 61 74 6f 72 09 3a 20 72 20 3f 20 63 iterator.: r ? c
12d0: 6f 6c 6c 65 63 74 69 6f 6e 2e 63 6f 75 6e 74 28 ollection.count(
12e0: 29 20 3a 20 28 2d 31 29 2c 09 09 09 09 09 09 09 ) : (-1),.......
12f0: 09 09 09 09 09 09 09 20 0d 0a 09 09 09 6e 65 78 ....... .....nex
1300: 74 09 09 3a 20 66 75 6e 63 74 69 6f 6e 28 72 65 t..: function(re
1310: 76 65 72 73 65 29 0d 0a 09 09 20 20 20 20 7b 20 verse).... {
1320: 20 20 20 20 20 20 20 0d 0a 09 09 09 09 72 65 74 ......ret
1330: 75 72 6e 20 74 68 69 73 2e 63 6f 6c 6c 65 63 74 urn this.collect
1340: 69 6f 6e 2e 77 6f 72 64 28 20 74 68 69 73 2e 69 ion.word( this.i
1350: 74 65 72 61 74 6f 72 20 2b 3d 20 28 72 65 76 65 terator += (reve
1360: 72 73 65 3f 28 2d 31 29 3a 31 29 20 29 3b 0d 0a rse?(-1):1) );..
1370: 09 09 20 20 20 20 7d 20 20 20 0d 0a 09 09 7d 0d .. } ....}.
1380: 0a 09 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a 20 d1 ..}.. .../* .
1390: 84 d0 b8 d0 bb d1 8c d1 82 d1 80 d1 83 d0 b5 d1 ................
13a0: 82 20 d1 8d d0 bb d0 b5 d0 bc d0 b5 d0 bd d1 82 . ..............
13b0: d1 8b 2c 20 d0 be d1 81 d1 82 d0 b0 d0 b2 d0 bb .., ............
13c0: d1 8f d1 8f 20 d1 82 d0 be d0 bb d1 8c d0 ba d0 .... ...........
13d0: be 20 d1 82 d0 b5 2c 20 d0 b7 d0 bd d0 b0 d1 87 . ...., ........
13e0: d0 b5 d0 bd d0 b8 d1 8f 20 d0 ba d0 be d1 82 d0 ........ .......
13f0: be d1 80 d1 8b d1 85 0d 0a 09 20 20 20 d0 bc d0 .......... ...
1400: b0 d1 82 d1 87 d0 b0 d1 82 20 d1 88 d0 b0 d0 b1 ......... ......
1410: d0 bb d0 be d0 bd 20 70 61 74 74 65 72 6e 20 2a ...... pattern *
1420: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 66 69 6c 74 /.. this.filt
1430: 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 70 er = function (p
1440: 61 74 74 65 72 6e 2c 20 75 6e 69 71 75 65 29 0d attern, unique).
1450: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 . {..
1460: 76 61 72 20 75 73 65 64 20 3d 20 7b 7d 3b 0d 0a var used = {};..
1470: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 if (this
1480: 2e 61 73 73 65 72 74 28 30 29 29 20 7b 0d 0a 20 .assert(0)) {..
1490: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e var n
14a0: 77 20 3d 20 6e 65 77 20 41 72 72 61 79 28 29 3b w = new Array();
14b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f .. fo
14c0: 72 20 28 76 61 72 20 69 3d 30 3b 20 69 3c 74 68 r (var i=0; i<th
14d0: 69 73 2e 63 6f 75 6e 74 28 29 3b 20 69 2b 2b 29 is.count(); i++)
14e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
14f0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 77 6f 72 if (this.wor
1500: 64 28 69 29 2e 6d 61 74 63 68 28 70 61 74 74 65 d(i).match(patte
1510: 72 6e 29 29 20 7b 09 09 09 09 09 0d 0a 20 20 20 rn)) {.......
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1530: 20 69 66 20 28 75 6e 69 71 75 65 29 20 7b 0d 0a if (unique) {..
1540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1550: 20 20 20 20 20 20 20 20 69 66 20 28 21 75 73 65 if (!use
1560: 64 5b 74 68 69 73 2e 77 6f 72 64 28 69 29 5d 29 d[this.word(i)])
1570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1590: 75 73 65 64 5b 74 68 69 73 2e 77 6f 72 64 28 69 used[this.word(i
15a0: 29 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 )] = true;..
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15c0: 20 20 20 20 20 20 20 20 6e 77 5b 6e 77 2e 6c 65 nw[nw.le
15d0: 6e 67 74 68 5d 20 3d 20 74 68 69 73 2e 77 6f 72 ngth] = this.wor
15e0: 64 28 69 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 d(i);..
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1600: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1610: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 els
1630: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e {..
1640: 20 20 20 20 20 20 20 20 20 20 20 20 6e 77 5b 6e nw[n
1650: 77 2e 6c 65 6e 67 74 68 5d 20 3d 20 74 68 69 73 w.length] = this
1660: 2e 77 6f 72 64 28 69 29 3b 0d 0a 20 20 20 20 20 .word(i);..
1670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d }
1680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
1690: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
16a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
16b0: 77 6f 72 64 73 20 3d 20 6e 77 3b 0d 0a 20 20 20 words = nw;..
16c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
16d0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d true;.. }
16e0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
16f0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 20 20 false;.. }
1700: 20 20 20 20 20 20 0d 0a 20 20 20 0d 0a 20 20 20 .. ..
1710: 20 74 68 69 73 2e 72 65 73 65 74 28 29 3b 20 2f this.reset(); /
1720: 2f 20 d0 b8 d0 bd d0 b8 d1 86 d0 b8 d0 b0 d0 bb / ..............
1730: d0 b8 d0 b7 d0 b0 d1 86 d0 b8 d1 8f 0d 0a 7d 0d ..............}.
1740: 0a 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 56 69 .....function Vi
1750: 6d 41 75 74 6f 43 6f 6d 70 6c 65 74 69 6f 6e 54 mAutoCompletionT
1760: 6f 6f 6c 28 29 0d 0a 7b 0d 0a 20 20 20 20 76 61 ool()..{.. va
1770: 72 20 73 72 63 44 6f 63 50 61 74 68 3b 09 2f 2f r srcDocPath;.//
1780: 20 d0 bf d1 83 d1 82 d1 8c 20 d0 b4 d0 be 20 d0 ........ .... .
1790: b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 be d0 b3 d0 ................
17a0: be 20 d0 b4 d0 be d0 ba d1 83 d0 bc d0 b5 d0 bd . ..............
17b0: d1 82 d0 b0 20 28 d0 b8 d1 81 d0 bf d0 be d0 bb .... (..........
17c0: d1 8c d0 b7 d1 83 d0 b5 d1 82 d1 81 d1 8f 20 d0 .............. .
17d0: b4 d0 bb d1 8f 20 d0 b8 d0 b4 d0 b5 d0 bd d1 82 ..... ..........
17e0: d0 b8 d1 84 d0 b8 d0 ba d0 b0 d1 86 d0 b8 d0 b8 ................
17f0: 20 d0 b4 d0 be d0 ba d1 83 d0 bc d0 b5 d0 bd d1 ...............
1800: 82 d0 be d0 b2 29 0d 0a 20 20 20 20 76 61 72 20 .....).. var
1810: 73 72 63 4c 69 6e 65 3b 09 2f 2f 20 d0 b8 d1 81 srcLine;.// ....
1820: d1 85 d0 be d0 b4 d0 bd d0 b0 d1 8f 20 d1 81 d1 ............ ...
1830: 82 d1 80 d0 be d0 ba d0 b0 20 d0 b4 d0 be d0 ba ......... ......
1840: d1 83 d0 bc d0 b5 d0 bd d1 82 d0 b0 0d 0a 20 20 ..............
1850: 20 20 76 61 72 20 73 72 63 43 6f 6c 3b 09 09 2f var srcCol;../
1860: 2f 20 d0 bf d0 b5 d1 80 d0 b2 d0 b0 d1 8f 20 d0 / ............ .
1870: bf d0 be d0 b7 d0 b8 d1 86 d0 b8 d1 8f 20 d0 b2 ............. ..
1880: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b5 20 d0 bf ............ ..
1890: d0 b5 d1 80 d0 b5 d0 b4 20 d0 b8 d1 81 d1 85 d0 ........ .......
18a0: be d0 b4 d0 bd d1 8b d0 bc 20 d1 81 d0 bb d0 be ......... ......
18b0: d0 b2 d0 be d0 bc 0d 0a 20 20 20 20 76 61 72 20 ........ var
18c0: 73 72 63 57 6f 72 64 3b 09 2f 2f 20 d0 b8 d1 81 srcWord;.// ....
18d0: d1 85 d0 be d0 b4 d0 bd d0 be d0 b5 20 d1 81 d0 ............ ...
18e0: bb d0 be d0 b2 d0 be 20 28 d0 ba d0 be d1 82 d0 ....... (.......
18f0: be d1 80 d0 be d0 b5 20 d0 bf d1 8b d1 82 d0 b0 ....... ........
1900: d0 b5 d0 bc d1 81 d1 8f 20 d0 b4 d0 be d0 bf d0 ........ .......
1910: be d0 bb d0 bd d0 b8 d1 82 d1 8c 29 0d 0a 20 20 ...........)..
1920: 20 20 76 61 72 20 6c 61 73 74 57 6f 72 64 3b 09 var lastWord;.
1930: 2f 2f 20 d0 bf d0 be d1 81 d0 bb d0 b5 d0 b4 d0 // .............
1940: bd d0 b5 d0 b5 20 d0 b8 d1 81 d0 bf d0 be d0 bb ..... ..........
1950: d1 8c d0 b7 d0 be d0 b2 d0 b0 d0 bd d0 bd d0 be ................
1960: d0 b5 20 d0 b2 20 d0 bf d0 be d0 b4 d1 81 d1 82 .. .. ..........
1970: d0 b0 d0 bd d0 be d0 b2 d0 ba d0 b5 20 d1 81 d0 ............ ...
1980: bb d0 be d0 b2 d0 be 0d 0a 20 20 20 20 76 61 72 ......... var
1990: 20 63 75 72 4c 69 6e 65 49 78 3b 09 2f 2f 20 d0 curLineIx;.// .
19a0: b8 d0 bd d0 b4 d0 b5 d0 ba d1 81 20 d1 82 d0 b5 ........... ....
19b0: d0 ba d1 83 d1 89 d0 b5 d0 b9 20 d1 81 d1 82 d1 .......... .....
19c0: 80 d0 be d0 ba d0 b8 20 28 d0 b8 d0 b7 20 d0 ba ....... (.... ..
19d0: d0 be d1 82 d0 be d1 80 d0 be d0 b9 20 d0 b1 d0 ............ ...
19e0: b5 d1 80 d1 83 d1 82 d1 81 d1 8f 20 d1 81 d0 be ........... ....
19f0: d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 ................
1a00: d0 b8 d1 8f 29 0d 0a 20 20 20 20 76 61 72 20 77 ....).. var w
1a10: 6f 72 64 73 3b 09 09 2f 2f 20 d1 81 d0 bf d0 b8 ords;..// ......
1a20: d1 81 d0 be d0 ba 20 d1 81 d0 bb d0 be d0 b2 2d ...... ........-
1a30: d1 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 ................
1a40: d1 82 d0 b2 d0 b8 d0 b9 20 d1 82 d0 b5 d0 ba d1 ........ .......
1a50: 83 d1 89 d0 b5 d0 b9 20 d1 81 d1 82 d1 80 d0 be ....... ........
1a60: d0 ba d0 b8 0d 0a 20 20 20 20 0d 0a 20 20 20 20 ...... ..
1a70: 76 61 72 20 62 61 63 6b 77 61 72 64 53 65 61 72 var backwardSear
1a80: 63 68 3b 09 2f 2f 20 d0 be d0 b1 d1 80 d0 b0 d1 ch;.// .........
1a90: 82 d0 bd d1 8b d0 b9 20 d0 bf d0 be d0 b8 d1 81 ....... ........
1aa0: d0 ba 20 28 d0 bf d0 be 20 d1 83 d0 bc d0 be d0 .. (.... .......
1ab0: bb d1 87 d0 b0 d0 bd d0 b8 d1 8e 20 d0 bf d0 be ........... ....
1ac0: d0 b8 d1 81 d0 ba 20 d0 bf d1 80 d1 8f d0 bc d0 ...... .........
1ad0: be d0 b9 2c 20 22 d0 b2 d0 bf d0 b5 d1 80 d0 b5 ..., "..........
1ae0: d0 b4 22 29 0d 0a 20 20 20 20 76 61 72 20 70 61 ..").. var pa
1af0: 74 74 65 72 6e 3b 09 09 2f 2f 20 d1 88 d0 b0 d0 ttern;..// .....
1b00: b1 d0 bb d0 be d0 bd 20 28 d1 80 d0 b5 d0 b3 d1 ....... (.......
1b10: 83 d0 bb d1 8f d1 80 d0 bd d0 be d0 b5 20 d0 b2 ............. ..
1b20: d1 8b d1 80 d0 b0 d0 b6 d0 b5 d0 bd d0 b8 d0 b5 ................
1b30: 29 2c 20 d0 be d0 bf d0 b8 d1 81 d1 8b d0 b2 d0 ), .............
1b40: b0 d1 8e d1 89 d0 b8 d0 b9 20 d1 81 d0 be d0 be ......... ......
1b50: d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 ................
1b60: d0 b5 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 bd d0 .. .............
1b70: be d0 bc d1 83 20 d1 81 d0 bb d0 be d0 b2 d1 83 ..... ..........
1b80: 20 0d 0a 20 20 20 20 0d 0a 20 20 20 20 76 61 72 .. .. var
1b90: 20 63 6f 75 6e 74 65 72 3b 09 2f 2f 20 d1 81 d1 counter;.// ...
1ba0: 87 d0 b5 d1 82 d1 87 d0 b8 d0 ba 20 d1 81 d0 be ........... ....
1bb0: d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 ................
1bc0: d0 b8 d0 b9 0d 0a 20 20 20 20 76 61 72 20 74 6f ...... var to
1bd0: 74 61 6c 3b 09 09 2f 2f 20 d0 be d0 b1 d1 89 d0 tal;..// .......
1be0: b5 d0 b5 20 d1 87 d0 b8 d1 81 d0 bb d0 be 20 d1 ... .......... .
1bf0: 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 ................
1c00: 82 d0 b2 d0 b8 d0 b9 0d 0a 0d 0a 20 20 20 20 2f ........... /
1c10: 2a 20 d0 b2 d1 8b d0 bf d0 be d0 bb d0 bd d1 8f * ..............
1c20: d0 b5 d1 82 20 28 d1 80 d0 b5 29 d0 b8 d0 bd d0 .... (....).....
1c30: b8 d1 86 d0 b8 d0 b0 d0 bb d0 b8 d0 b7 d0 b0 d1 ................
1c40: 86 d0 b8 d1 8e 20 d0 be d0 b1 d1 8a d0 b5 d0 ba ..... ..........
1c50: d1 82 d0 b0 2c 20 d0 b5 d1 81 d0 bb d0 b8 20 d1 ...., ........ .
1c60: 8d d1 82 d0 be 20 d0 bd d0 b5 d0 be d0 b1 d1 85 ..... ..........
1c70: d0 be d0 b4 d0 b8 d0 bc d0 be 20 2a 2f 0d 0a 20 .......... */..
1c80: 20 20 20 74 68 69 73 2e 73 65 74 75 70 20 3d 20 this.setup =
1c90: 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f 6b 42 61 function (lookBa
1ca0: 63 6b 77 61 72 64 29 0d 0a 20 20 20 20 7b 0d 0a ckward).. {..
1cb0: 20 20 20 20 20 20 20 20 76 61 72 20 77 6f 72 64 var word
1cc0: 20 3d 20 67 65 74 4c 65 66 74 57 6f 72 64 28 43 = getLeftWord(C
1cd0: 75 72 44 6f 63 29 3b 09 09 0d 0a 20 20 20 20 20 urDoc);....
1ce0: 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 4e 65 if (this.isNe
1cf0: 77 4c 6f 6f 70 28 43 75 72 44 6f 63 2c 20 77 6f wLoop(CurDoc, wo
1d00: 72 64 29 29 20 7b 20 2f 2f 20 d1 80 d0 b5 d0 b8 rd)) { // ......
1d10: d0 bd d0 b8 d1 86 d0 b8 d0 b0 d0 bb d0 b8 d0 b7 ................
1d20: d0 b0 d1 86 d0 b8 d1 8f 09 09 09 0d 0a 20 20 20 .............
1d30: 20 20 20 20 20 20 20 20 20 73 72 63 44 6f 63 50 srcDocP
1d40: 61 74 68 09 3d 20 43 75 72 44 6f 63 2e 47 65 74 ath.= CurDoc.Get
1d50: 48 77 6e 64 28 29 3b 20 20 0d 0a 20 20 20 20 20 Hwnd(); ..
1d60: 20 20 20 20 20 20 20 77 69 74 68 20 28 43 75 72 with (Cur
1d70: 44 6f 63 2e 47 65 74 43 61 72 65 74 50 6f 73 28 Doc.GetCaretPos(
1d80: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ))..
1d90: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
1da0: 20 20 20 73 72 63 4c 69 6e 65 20 3d 20 62 65 67 srcLine = beg
1db0: 69 6e 52 6f 77 3b 0d 0a 20 20 20 20 20 20 20 20 inRow;..
1dc0: 20 20 20 20 20 20 20 20 73 72 63 43 6f 6c 20 3d srcCol =
1dd0: 20 28 62 65 67 69 6e 43 6f 6c 20 2d 20 31 29 20 (beginCol - 1)
1de0: 2d 20 77 6f 72 64 2e 6c 65 6e 67 74 68 3b 20 20 - word.length;
1df0: 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 ..
1e00: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
1e10: 20 20 20 20 20 20 20 73 72 63 57 6f 72 64 20 3d srcWord =
1e20: 20 77 6f 72 64 3b 20 20 20 20 20 20 20 20 20 20 word;
1e30: 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..
1e40: 6c 61 73 74 57 6f 72 64 09 3d 20 77 6f 72 64 3b lastWord.= word;
1e50: 20 2f 2f 20 d1 87 d1 82 d0 be d0 b1 d1 8b 20 d0 // .......... .
1e60: ba d0 be d1 80 d1 80 d0 b5 d0 ba d1 82 d0 bd d0 ................
1e70: be 20 d1 81 d0 b4 d0 b5 d0 bb d0 b0 d1 82 d1 8c . ..............
1e80: 20 d0 bf d0 b5 d1 80 d0 b2 d1 83 d1 8e 20 d0 bf ............ ..
1e90: d0 be d0 b4 d1 81 d1 82 d0 b0 d0 bd d0 be d0 b2 ................
1ea0: d0 ba d1 83 0d 0a 20 20 20 20 20 20 20 20 20 20 ......
1eb0: 20 20 63 75 72 4c 69 6e 65 49 78 20 3d 20 73 72 curLineIx = sr
1ec0: 63 4c 69 6e 65 3b 20 20 20 20 20 20 20 20 20 20 cLine;
1ed0: 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..
1ee0: 70 61 74 74 65 72 6e 20 3d 20 6e 65 77 20 52 65 pattern = new Re
1ef0: 67 45 78 70 28 22 5e 22 20 2b 20 77 6f 72 64 2c gExp("^" + word,
1f00: 20 22 69 22 29 3b 20 20 20 20 20 0d 0a 20 20 20 "i"); ..
1f10: 20 20 20 20 20 20 20 20 20 2f 2f 20 d0 bd d0 b0 // ....
1f20: d1 87 d0 b8 d0 bd d0 b0 d0 b5 d0 bc 20 d0 b8 d1 ............ ...
1f30: 81 d0 ba d0 b0 d1 82 d1 8c 20 d1 81 d0 be d0 be ......... ......
1f40: d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 ................
1f50: d1 8f 20 d0 bd d0 b0 d1 87 d0 b8 d0 bd d0 b0 d1 .. .............
1f60: 8f 20 d1 81 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 . .. ...........
1f70: bd d0 be d0 b9 20 d1 81 d1 82 d1 80 d0 be d0 ba ..... ..........
1f80: d0 b8 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
1f90: 77 6f 72 64 73 20 3d 20 74 68 69 73 2e 70 61 72 words = this.par
1fa0: 73 65 4c 69 6e 65 28 6c 6f 6f 6b 42 61 63 6b 77 seLine(lookBackw
1fb0: 61 72 64 20 3f 20 74 68 69 73 2e 6c 65 66 74 50 ard ? this.leftP
1fc0: 61 72 74 28 29 20 3a 20 74 68 69 73 2e 72 69 67 art() : this.rig
1fd0: 68 74 50 61 72 74 28 29 29 3b 20 20 0d 0a 20 20 htPart()); ..
1fe0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 d1 81 d1 // ...
1ff0: 87 d0 b5 d1 82 d1 87 d0 b8 d0 ba d0 b8 0d 0a 20 ...............
2000: 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 count
2010: 65 72 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 er = 0;..
2020: 20 20 20 20 20 74 6f 74 61 6c 20 3d 20 6e 75 6c total = nul
2030: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 20 20 l;.. }
2040: 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 ..
2050: 20 20 20 20 20 20 62 61 63 6b 77 61 72 64 53 65 backwardSe
2060: 61 72 63 68 20 3d 20 6c 6f 6f 6b 42 61 63 6b 77 arch = lookBackw
2070: 61 72 64 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 ard;.. }..
2080: 20 0d 0a 09 2f 2a 20 d1 83 d1 81 d0 bb d0 be d0 .../* .........
2090: b2 d0 b8 d0 b5 20 d0 bd d0 b5 d0 be d0 b1 d1 85 ..... ..........
20a0: d0 be d0 b4 d0 b8 d0 bc d0 be d1 81 d1 82 d0 b8 ................
20b0: 20 d0 bf d1 80 d0 be d0 b8 d0 b7 d0 b2 d0 b5 d1 ...............
20c0: 81 d1 82 d0 b8 20 d0 bf d0 b5 d1 80 d0 b5 d0 b8 ..... ..........
20d0: d0 bd d0 b8 d1 86 d0 b8 d0 b0 d0 bb d0 b8 d0 b7 ................
20e0: d0 b0 d1 86 d0 b8 d1 8e 20 d0 bf d0 b5 d1 80 d0 ........ .......
20f0: b5 d0 bc d0 b5 d0 bd d0 bd d1 8b d1 85 20 d1 87 ............. ..
2100: d0 bb d0 b5 d0 bd d0 be d0 b2 20 d0 be d0 b1 d1 .......... .....
2110: 8a d0 b5 d0 ba d1 82 d0 b0 20 56 69 6d 41 75 74 ......... VimAut
2120: 6f 43 6f 6d 70 6c 65 74 69 6f 6e 54 6f 6f 6c 20 oCompletionTool
2130: 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 69 73 4e */.. this.isN
2140: 65 77 4c 6f 6f 70 20 3d 20 66 75 6e 63 74 69 6f ewLoop = functio
2150: 6e 20 28 64 6f 63 2c 20 77 6f 72 64 29 0d 0a 20 n (doc, word)..
2160: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 {.. va
2170: 72 20 70 6f 73 20 3d 20 64 6f 63 2e 47 65 74 43 r pos = doc.GetC
2180: 61 72 65 74 50 6f 73 28 29 3b 0d 0a 20 20 20 20 aretPos();..
2190: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 72 65 .. re
21a0: 74 75 72 6e 20 21 28 77 6f 72 64 73 20 26 26 20 turn !(words &&
21b0: 28 73 72 63 44 6f 63 50 61 74 68 20 3d 3d 20 64 (srcDocPath == d
21c0: 6f 63 2e 47 65 74 48 77 6e 64 28 29 29 20 0d 0a oc.GetHwnd()) ..
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 26 26 20 28 && (
21e0: 73 72 63 4c 69 6e 65 20 3d 3d 20 70 6f 73 2e 62 srcLine == pos.b
21f0: 65 67 69 6e 52 6f 77 29 20 26 26 20 28 6c 61 73 eginRow) && (las
2200: 74 57 6f 72 64 20 3d 3d 20 77 6f 72 64 29 0d 0a tWord == word)..
2210: 20 20 20 20 20 20 20 20 20 20 20 20 26 26 20 28 && (
2220: 73 72 63 43 6f 6c 20 3d 3d 20 28 70 6f 73 2e 62 srcCol == (pos.b
2230: 65 67 69 6e 43 6f 6c 20 2d 20 31 20 2d 20 77 6f eginCol - 1 - wo
2240: 72 64 2e 6c 65 6e 67 74 68 29 29 29 3b 20 20 20 rd.length)));
2250: 20 20 20 20 20 20 0d 0a 20 20 20 20 7d 0d 0a 20 .. }..
2260: 20 20 20 0d 0a 09 2f 2a 20 d0 bf d1 80 d0 be d0 .../* .......
2270: b2 d0 b5 d1 80 d1 8f d0 b5 d1 82 2c 20 d0 bd d0 ..........., ...
2280: b5 20 d0 b2 d1 8b d1 85 d0 be d0 b4 d0 b8 d1 82 . ..............
2290: 20 d0 bb d0 b8 20 d0 b8 d0 bd d0 b4 d0 b5 d0 ba .... ..........
22a0: d1 81 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b8 20 .. ............
22b0: d0 b7 d0 b0 20 d0 b4 d0 be d0 bf d1 83 d1 81 d1 .... ...........
22c0: 82 d0 b8 d0 bc d1 8b d0 b5 20 d0 b3 d1 80 d0 b0 ......... ......
22d0: d0 bd d0 b8 d1 86 d1 8b 20 2a 2f 0d 0a 20 20 20 ........ */..
22e0: 20 74 68 69 73 2e 61 73 73 65 72 74 20 3d 20 66 this.assert = f
22f0: 75 6e 63 74 69 6f 6e 20 28 6c 49 78 29 0d 0a 20 unction (lIx)..
2300: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 {.. re
2310: 74 75 72 6e 20 28 43 75 72 44 6f 63 20 26 26 20 turn (CurDoc &&
2320: 28 31 20 3c 3d 20 6c 49 78 29 20 26 26 20 28 6c (1 <= lIx) && (l
2330: 49 78 20 3c 3d 20 43 75 72 44 6f 63 2e 4c 69 6e Ix <= CurDoc.Lin
2340: 65 73 43 6f 75 6e 74 28 29 29 29 3b 0d 0a 20 20 esCount()));..
2350: 20 20 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a 20 d0 }.. .../* .
2360: b1 d0 b5 d1 80 d0 b5 d1 82 20 d1 81 d0 bb d0 b5 ......... ......
2370: d0 b4 d1 83 d1 8e d1 89 d0 b5 d0 b5 20 d1 81 d0 ............ ...
2380: be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 ................
2390: b2 d0 b8 d0 b5 20 d0 b8 20 d0 bf d0 be d0 b4 d1 ..... .. .......
23a0: 81 d1 82 d0 b0 d0 b2 d0 bb d1 8f d0 b5 d1 82 20 ...............
23b0: d0 b5 d0 b3 d0 be 20 d0 bd d0 b0 20 d0 bc d0 b5 ...... .... ....
23c0: d1 81 d1 82 d0 be 20 d0 b8 d1 81 d1 85 d0 be d0 ...... .........
23d0: b4 d0 bd d0 be d0 b3 d0 be 20 d1 81 d0 bb d0 be ......... ......
23e0: d0 b2 d0 b0 20 2a 2f 0d 0a 20 20 20 20 74 68 69 .... */.. thi
23f0: 73 2e 63 6f 6d 70 6c 65 74 65 57 6f 72 64 20 3d s.completeWord =
2400: 20 66 75 6e 63 74 69 6f 6e 20 28 6c 6f 6f 6b 42 function (lookB
2410: 61 63 6b 77 61 72 64 29 0d 0a 20 20 20 20 7b 20 ackward).. {
2420: 20 20 20 20 20 20 0d 0a 09 09 74 68 69 73 2e 73 ....this.s
2430: 65 74 75 70 28 6c 6f 6f 6b 42 61 63 6b 77 61 72 etup(lookBackwar
2440: 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 77 68 69 d);.. whi
2450: 6c 65 20 28 74 72 75 65 29 20 7b 20 20 0d 0a 20 le (true) { ..
2460: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 77 var w
2470: 6f 72 64 20 3d 20 77 6f 72 64 73 2e 6e 65 78 74 ord = words.next
2480: 28 6c 6f 6f 6b 42 61 63 6b 77 61 72 64 29 3b 0d (lookBackward);.
2490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
24a0: 28 77 6f 72 64 29 20 7b 0d 0a 20 20 20 20 20 20 (word) {..
24b0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 this.c
24c0: 6f 6d 70 6c 65 74 65 28 77 6f 72 64 29 3b 0d 0a omplete(word);..
24d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
24e0: 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 return;..
24f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
2500: 20 20 20 20 77 6f 72 64 73 20 3d 20 74 68 69 73 words = this
2510: 2e 6e 65 78 74 4c 69 6e 65 28 29 3b 0d 0a 20 20 .nextLine();..
2520: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77 if (!w
2530: 6f 72 64 73 2e 63 6f 6c 6c 65 63 74 69 6f 6e 2e ords.collection.
2540: 63 6f 75 6e 74 28 29 29 0d 0a 20 20 20 20 20 20 count())..
2550: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
2560: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 ;.. }..
2570: 20 20 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a 20 d1 }.. .../* .
2580: 81 d1 82 d1 80 d0 be d0 b8 d1 82 20 d0 b8 20 d0 ........... .. .
2590: b2 d0 be d0 b7 d0 b2 d1 80 d0 b0 d1 89 d0 b0 d0 ................
25a0: b5 d1 82 20 d1 81 d0 bf d0 b8 d1 81 d0 be d0 ba ... ............
25b0: 20 d1 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 ...............
25c0: 81 d0 b2 d1 83 d1 8e d1 89 d0 b8 d1 85 20 d1 81 ............. ..
25d0: d0 bb d0 be d0 b2 20 d0 b4 d0 bb d1 8f 20 d1 81 ...... ...... ..
25e0: d0 bb d0 b5 d0 b4 d1 83 d1 8e d1 89 d0 b5 d0 b9 ................
25f0: 20 d0 bf d0 be 20 d0 bf d0 be d1 80 d1 8f d0 b4 .... ..........
2600: d0 ba d1 83 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 .... ...........
2610: b8 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 6e . */.. this.n
2620: 65 78 74 4c 69 6e 65 20 3d 20 66 75 6e 63 74 69 extLine = functi
2630: 6f 6e 20 28 29 0d 0a 20 20 20 20 7b 20 20 20 20 on ().. {
2640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d .
2650: 0a 20 20 20 20 20 20 20 20 63 75 72 4c 69 6e 65 . curLine
2660: 49 78 20 2b 3d 20 28 62 61 63 6b 77 61 72 64 53 Ix += (backwardS
2670: 65 61 72 63 68 20 3f 20 2d 31 20 3a 20 31 29 3b earch ? -1 : 1);
2680: 20 0d 0a 09 09 69 66 20 28 62 61 63 6b 77 61 72 ....if (backwar
2690: 64 53 65 61 72 63 68 29 20 7b 0d 0a 09 09 09 69 dSearch) {.....i
26a0: 66 20 28 63 75 72 4c 69 6e 65 49 78 20 3c 20 31 f (curLineIx < 1
26b0: 29 20 7b 0d 0a 09 09 09 09 63 75 72 4c 69 6e 65 ) {......curLine
26c0: 49 78 20 3d 20 43 75 72 44 6f 63 2e 4c 69 6e 65 Ix = CurDoc.Line
26d0: 73 43 6f 75 6e 74 28 29 3b 0d 0a 09 09 09 7d 0d sCount();.....}.
26e0: 0a 09 09 7d 20 0d 0a 09 09 65 6c 73 65 20 7b 0d ...} ....else {.
26f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
2700: 28 63 75 72 4c 69 6e 65 49 78 20 3e 20 43 75 72 (curLineIx > Cur
2710: 44 6f 63 2e 4c 69 6e 65 73 43 6f 75 6e 74 28 29 Doc.LinesCount()
2720: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
2730: 20 20 20 20 20 63 75 72 4c 69 6e 65 49 78 20 3d curLineIx =
2740: 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 1;..
2750: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a }.. }..
2760: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t
2770: 68 69 73 2e 70 61 72 73 65 4c 69 6e 65 28 74 68 his.parseLine(th
2780: 69 73 2e 63 75 72 4c 69 6e 65 28 29 29 3b 20 20 is.curLine());
2790: 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 ..
27a0: 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 09 2f 2a 20 }.. .../*
27b0: 22 d1 80 d0 b0 d0 b7 d0 b1 d0 b8 d1 80 d0 b0 d0 "...............
27c0: b5 d1 82 22 20 d0 bf d0 b5 d1 80 d0 b5 d0 b4 d0 ..." ...........
27d0: b0 d0 bd d0 bd d1 83 d1 8e 20 d0 b2 20 d0 ba d0 ......... .. ...
27e0: b0 d1 87 d0 b5 d1 81 d1 82 d0 b2 d0 b5 20 d0 bf ............. ..
27f0: d0 b0 d1 80 d0 b0 d0 bc d0 b5 d1 82 d1 80 d0 b0 ................
2800: 20 d1 81 d1 82 d1 80 d0 be d0 ba d1 83 20 d0 bd ............ ..
2810: d0 b0 20 d1 81 d0 bb d0 be d0 b2 d0 b0 20 d0 b8 .. .......... ..
2820: 20 d1 84 d0 b8 d0 bb d1 8c d1 82 d1 80 d1 83 d0 ...............
2830: b5 d1 82 20 d0 b8 d1 85 20 0d 0a 20 20 20 20 d0 ... .... .. .
2840: b2 20 d1 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 81 . ..............
2850: d1 82 d0 b2 d0 b8 d0 b8 20 d1 81 20 d1 88 d0 b0 ........ .. ....
2860: d0 b1 d0 bb d0 be d0 bd d0 be d0 bc 2c 20 d0 ba ............, ..
2870: d0 be d1 82 d0 be d1 80 d1 8b d0 b9 20 d0 be d0 ............ ...
2880: bf d0 b8 d1 81 d1 8b d0 b2 d0 b0 d0 b5 d1 82 20 ...............
2890: d0 bf d0 be d0 b4 d1 85 d0 be d0 b4 d1 8f d1 89 ................
28a0: d0 b8 d0 b5 20 d1 81 d0 be d0 be d1 82 d0 b2 d0 .... ...........
28b0: b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 d1 8f 20 d0 b4 ............. ..
28c0: d0 bb d1 8f 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 .... ...........
28d0: bd d0 be d0 b3 d0 be 20 d1 81 d0 bb d0 be d0 b2 ....... ........
28e0: d0 b0 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e .. */.. this.
28f0: 70 61 72 73 65 4c 69 6e 65 20 3d 20 66 75 6e 63 parseLine = func
2900: 74 69 6f 6e 20 28 73 72 63 4c 69 6e 65 29 0d 0a tion (srcLine)..
2910: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 {.. v
2920: 61 72 20 77 20 3d 20 6e 65 77 20 4c 69 6e 65 28 ar w = new Line(
2930: 73 72 63 4c 69 6e 65 29 3b 0d 0a 20 20 20 20 20 srcLine);..
2940: 20 20 20 77 2e 66 69 6c 74 65 72 28 70 61 74 74 w.filter(patt
2950: 65 72 6e 2c 20 74 72 75 65 29 3b 20 20 20 20 20 ern, true);
2960: 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 ..
2970: 20 20 20 20 72 65 74 75 72 6e 20 77 2e 69 74 65 return w.ite
2980: 72 61 74 6f 72 28 62 61 63 6b 77 61 72 64 53 65 rator(backwardSe
2990: 61 72 63 68 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 arch);.. }..
29a0: 20 20 20 0d 0a 09 2f 2a 20 d0 b2 d1 8b d0 bf d0 .../* .......
29b0: be d0 bb d0 bd d1 8f d0 b5 d1 82 20 d0 bf d0 be ........... ....
29c0: d0 b4 d1 81 d1 82 d0 b0 d0 bd d0 be d0 b2 d0 ba ................
29d0: d1 83 20 d0 be d1 87 d0 b5 d1 80 d0 b5 d0 b4 d0 .. .............
29e0: bd d0 be d0 b3 d0 be 20 d1 81 d0 be d0 be d1 82 ....... ........
29f0: d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 d1 8f ................
2a00: 20 d0 b2 d0 bc d0 b5 d1 81 d1 82 d0 be 20 d0 b8 ............ ..
2a10: d1 81 d1 85 d0 be d0 b4 d0 bd d0 be d0 b3 d0 be ................
2a20: 20 d1 81 d0 bb d0 be d0 b2 d0 b0 20 2a 2f 0d 0a .......... */..
2a30: 20 20 20 20 74 68 69 73 2e 63 6f 6d 70 6c 65 74 this.complet
2a40: 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 77 6f e = function (wo
2a50: 72 64 29 0d 0a 20 20 20 20 7b 20 20 20 20 20 20 rd).. {
2a60: 20 20 0d 0a 20 20 20 20 20 20 20 20 43 75 72 44 .. CurD
2a70: 6f 63 2e 52 65 70 6c 61 63 65 4c 69 6e 65 28 73 oc.ReplaceLine(s
2a80: 72 63 4c 69 6e 65 2c 20 74 68 69 73 2e 6c 65 66 rcLine, this.lef
2a90: 74 50 61 72 74 28 29 20 2b 20 77 6f 72 64 20 2b tPart() + word +
2aa0: 20 74 68 69 73 2e 72 69 67 68 74 50 61 72 74 28 this.rightPart(
2ab0: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 43 75 72 ));.. Cur
2ac0: 44 6f 63 2e 53 65 74 43 61 72 65 74 50 6f 73 28 Doc.SetCaretPos(
2ad0: 73 72 63 4c 69 6e 65 2c 20 73 72 63 43 6f 6c 20 srcLine, srcCol
2ae0: 2b 20 77 6f 72 64 2e 6c 65 6e 67 74 68 20 2b 20 + word.length +
2af0: 31 29 3b 20 2f 2f 20 d0 a1 d0 bd d0 be d0 b2 d0 1); // .........
2b00: b0 20 d0 bf d0 be d0 bc d0 bd d0 b8 d0 bc 20 d0 . ............ .
2b10: bf d1 80 d0 be 20 d0 b8 d0 bd d0 b4 d0 b5 d0 ba ..... ..........
2b20: d1 81 d1 8b 21 0d 0a 20 20 20 20 20 20 20 20 20 ....!..
2b30: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 6c 61 73 .. las
2b40: 74 57 6f 72 64 20 3d 20 77 6f 72 64 3b 0d 0a 0d tWord = word;...
2b50: 0a 20 20 20 20 20 20 20 20 63 6f 75 6e 74 65 72 . counter
2b60: 20 2b 3d 20 62 61 63 6b 77 61 72 64 53 65 61 72 += backwardSear
2b70: 63 68 20 3f 20 2d 31 20 3a 20 31 3b 20 20 20 20 ch ? -1 : 1;
2b80: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 ..
2b90: 69 66 20 28 28 63 75 72 4c 69 6e 65 49 78 20 3d if ((curLineIx =
2ba0: 3d 20 73 72 63 4c 69 6e 65 29 26 26 28 6c 61 73 = srcLine)&&(las
2bb0: 74 57 6f 72 64 20 3d 3d 20 73 72 63 57 6f 72 64 tWord == srcWord
2bc0: 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 )) {..
2bd0: 20 20 69 66 20 28 28 21 74 6f 74 61 6c 29 26 26 if ((!total)&&
2be0: 63 6f 75 6e 74 65 72 29 20 7b 20 20 20 20 20 20 counter) {
2bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c00: 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 ..
2c10: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 74 61 tota
2c20: 6c 20 3d 20 4d 61 74 68 2e 61 62 73 28 63 6f 75 l = Math.abs(cou
2c30: 6e 74 65 72 29 20 2d 20 31 3b 20 20 20 20 20 20 nter) - 1;
2c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d .
2c50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a . }..
2c60: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e coun
2c70: 74 65 72 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 ter = 0;..
2c80: 20 20 7d 0d 0a 20 20 20 20 20 7d 0d 0a 20 20 20 }.. }..
2c90: 20 20 0d 0a 20 20 20 20 2f 2a 20 d0 b2 d0 be d0 .. /* .....
2ca0: b7 d0 b2 d1 80 d0 b0 d1 89 d0 b0 d0 b5 d1 82 20 ...............
2cb0: d1 82 d0 b5 d0 ba d1 83 d1 89 d1 83 d1 8e 20 d1 .............. .
2cc0: 81 d1 82 d1 80 d0 be d0 ba d1 83 20 2a 2f 0d 0a ........... */..
2cd0: 20 20 20 20 74 68 69 73 2e 63 75 72 4c 69 6e 65 this.curLine
2ce0: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29 0d 0a = function ()..
2cf0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 {.. v
2d00: 61 72 20 73 74 72 20 3d 20 22 22 3b 0d 0a 20 20 ar str = "";..
2d10: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 61 if (this.a
2d20: 73 73 65 72 74 28 63 75 72 4c 69 6e 65 49 78 29 ssert(curLineIx)
2d30: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ) {..
2d40: 20 2f 2a 20 d0 bf d0 be d1 81 d0 ba d0 be d0 bb /* ............
2d50: d1 8c d0 ba d1 83 20 d0 b8 d1 81 d1 85 d0 be d0 ...... .........
2d60: b4 d0 bd d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be ....... ........
2d70: d0 ba d0 b0 20 d1 83 20 d0 bd d0 b0 d1 81 20 d0 .... .. ...... .
2d80: bf d0 be d1 81 d1 82 d0 be d1 8f d0 bd d0 bd d0 ................
2d90: be 20 d0 bc d0 b5 d0 bd d1 8f d0 b5 d1 82 d1 81 . ..............
2da0: d1 8f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ..,..
2db0: 20 d0 b5 d0 b5 20 22 d1 81 d0 be d0 b1 d0 b8 d1 .... ".........
2dc0: 80 d0 b0 d0 b5 d0 bc 22 20 d0 be d1 82 d0 b4 d0 ......." .......
2dd0: b5 d0 bb d1 8c d0 bd d0 be 2c 20 d0 b2 d0 be d0 ........., .....
2de0: b7 d0 b2 d1 80 d0 b0 d1 89 d0 b0 d1 8f 20 d0 bd ............. ..
2df0: d0 b0 20 d0 bc d0 b5 d1 81 d1 82 d0 be 20 d0 b8 .. .......... ..
2e00: d1 81 d1 85 d0 be d0 b4 d0 bd d0 be d0 b5 20 d1 .............. .
2e10: 81 d0 bb d0 be d0 b2 d0 be 20 2a 2f 0d 0a 20 20 ......... */..
2e20: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 if (cu
2e30: 72 4c 69 6e 65 49 78 20 3d 3d 20 73 72 63 4c 69 rLineIx == srcLi
2e40: 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ne) {..
2e50: 20 20 20 20 20 20 20 73 74 72 20 3d 20 74 68 69 str = thi
2e60: 73 2e 6c 65 66 74 50 61 72 74 28 29 20 2b 20 73 s.leftPart() + s
2e70: 72 63 57 6f 72 64 20 2b 20 74 68 69 73 2e 72 69 rcWord + this.ri
2e80: 67 68 74 50 61 72 74 28 29 3b 20 20 20 20 20 20 ghtPart();
2e90: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 ..
2ea0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
2eb0: 20 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 else {..
2ec0: 20 20 20 20 20 20 20 20 20 20 73 74 72 20 3d 20 str =
2ed0: 43 75 72 44 6f 63 2e 47 65 74 4c 69 6e 65 28 63 CurDoc.GetLine(c
2ee0: 75 72 4c 69 6e 65 49 78 29 3b 0d 0a 20 20 20 20 urLineIx);..
2ef0: 20 20 20 20 20 20 20 20 7d 20 20 20 20 20 20 20 }
2f00: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 7d 0d .. }.
2f10: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
2f20: 73 74 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 str;.. }....
2f30: 20 20 20 2f 2a 20 d0 bb d0 b5 d0 b2 d0 b0 d1 8f /* ..........
2f40: 20 d0 bf d0 be d0 bb d0 be d0 b2 d0 b8 d0 bd d0 ...............
2f50: b0 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b8 2c 20 . ............,
2f60: d1 81 d0 be d0 b4 d0 b5 d1 80 d0 b6 d0 b0 d1 89 ................
2f70: d0 b5 d0 b9 20 d0 b8 d1 81 d1 85 d0 be d0 b4 d0 .... ...........
2f80: bd d0 be d0 b5 20 d1 81 d0 bb d0 be d0 b2 d0 be ..... ..........
2f90: 3b 20 d1 81 d0 b0 d0 bc d0 be 20 d0 b8 d1 81 d1 ; ........ .....
2fa0: 85 d0 be d0 b4 d0 bd d0 be d0 b5 20 d1 81 d0 bb ........... ....
2fb0: d0 be d0 b2 d0 be 20 d0 bd d0 b5 20 d0 b2 d0 ba ...... .... ....
2fc0: d0 bb d1 8e d1 87 d0 b0 d0 b5 d1 82 d1 81 d1 8f ................
2fd0: 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 6c 65 */.. this.le
2fe0: 66 74 50 61 72 74 20 3d 20 66 75 6e 63 74 69 6f ftPart = functio
2ff0: 6e 20 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 n ().. {..
3000: 20 20 20 20 20 72 65 74 75 72 6e 20 43 75 72 44 return CurD
3010: 6f 63 2e 52 61 6e 67 65 28 73 72 63 4c 69 6e 65 oc.Range(srcLine
3020: 2c 20 31 2c 20 73 72 63 4c 69 6e 65 2c 20 73 72 , 1, srcLine, sr
3030: 63 43 6f 6c 29 2e 47 65 74 54 65 78 74 28 29 3b cCol).GetText();
3040: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 .. }.. ..
3050: 20 20 20 2f 2a 20 d0 bf d1 80 d0 b0 d0 b2 d0 b0 /* ..........
3060: d1 8f 20 d0 bf d0 be d0 bb d0 be d0 b2 d0 b8 d0 .. .............
3070: bd d0 b0 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b8 ... ............
3080: 2c 20 d1 81 d0 be d0 b4 d0 b5 d1 80 d0 b6 d0 b0 , ..............
3090: d1 89 d0 b5 d0 b9 20 d0 b8 d1 81 d1 85 d0 be d0 ...... .........
30a0: b4 d0 bd d0 be d0 b5 20 d1 81 d0 bb d0 be d0 b2 ....... ........
30b0: d0 be 3b 20 d1 81 d0 b0 d0 bc d0 be 20 d0 b8 d1 ..; ........ ...
30c0: 81 d1 85 d0 be d0 b4 d0 bd d0 be d0 b5 20 d1 81 ............. ..
30d0: d0 bb d0 be d0 b2 d0 be 20 d0 bd d0 b5 20 d0 b2 ........ .... ..
30e0: d0 ba d0 bb d1 8e d1 87 d0 b0 d0 b5 d1 82 d1 81 ................
30f0: d1 8f 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e .. */.. this.
3100: 72 69 67 68 74 50 61 72 74 20 3d 20 66 75 6e 63 rightPart = func
3110: 74 69 6f 6e 20 28 29 0d 0a 20 20 20 20 7b 20 20 tion ().. {
3120: 20 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .. retur
3130: 6e 20 43 75 72 44 6f 63 2e 52 61 6e 67 65 28 73 n CurDoc.Range(s
3140: 72 63 4c 69 6e 65 2c 20 73 72 63 43 6f 6c 20 2b rcLine, srcCol +
3150: 20 6c 61 73 74 57 6f 72 64 2e 6c 65 6e 67 74 68 lastWord.length
3160: 20 2b 20 31 2c 20 73 72 63 4c 69 6e 65 2c 20 43 + 1, srcLine, C
3170: 75 72 44 6f 63 2e 47 65 74 4c 69 6e 65 28 73 72 urDoc.GetLine(sr
3180: 63 4c 69 6e 65 29 2e 6c 65 6e 67 74 68 20 2b 20 cLine).length +
3190: 31 29 2e 47 65 74 54 65 78 74 28 29 3b 0d 0a 20 1).GetText();..
31a0: 20 20 20 7d 0d 0a 7d 0d 0a }..}..