Hex Artifact Content Вы: nobody
Вход

Artifact 07b68c6d9e820d279bd91330155fdfe893fa38a2:


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