Hex Artifact Content Вы: nobody
Вход

Artifact 8010340d8de7ad4b2d5a18aa2a677234d2619ed3:


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                          }..}..