Compare commits
3546 Commits
0.51
...
e42b4d0ea3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e42b4d0ea3 | ||
|
|
43767b8500 | ||
|
|
d05098c870 | ||
|
|
505f485568 | ||
|
|
86f512fb91 | ||
|
|
12903066b9 | ||
|
|
118d0433cb | ||
|
|
eb781c3679 | ||
|
|
3c6bffba03 | ||
|
|
89623b04d6 | ||
|
|
444a96132c | ||
|
|
c008553127 | ||
|
|
162d7b021f | ||
|
|
c82364c1dd | ||
|
|
977402c6b0 | ||
|
|
b14e59ab5b | ||
|
|
47dcefcfbf | ||
|
|
2b299cb422 | ||
|
|
d0ccbb4620 | ||
|
|
187b207271 | ||
|
|
a3e22c844c | ||
|
|
f8384b2732 | ||
|
|
2dae43258c | ||
|
|
48033ecb85 | ||
|
|
ad8df027ac | ||
|
|
91f580771d | ||
|
|
9c6f0981f5 | ||
|
|
2212569688 | ||
|
|
6711f1dbab | ||
|
|
0b7a883efb | ||
|
|
8ae84c62c0 | ||
|
|
0d168c8115 | ||
| c7b51b7fa5 | |||
|
|
86bf723791 | ||
|
|
71f2e9de4a | ||
|
|
33d3f270a3 | ||
|
|
da94edd386 | ||
|
|
90dfaefd11 | ||
|
|
8bc616cc55 | ||
|
|
a9e79d62c5 | ||
|
|
1998221a0b | ||
|
|
a9b1625749 | ||
|
|
b411836570 | ||
|
|
df7e0221a8 | ||
|
|
8ff8f2b685 | ||
|
|
65dea7e3f7 | ||
|
|
1942f86633 | ||
|
|
ee4ce5033a | ||
|
|
040fe806c8 | ||
|
|
97f5c9225e | ||
|
|
09b86c15f9 | ||
|
|
8f34285d8c | ||
|
|
d3c3b71e3e | ||
|
|
aa6f49c9b1 | ||
|
|
c011628420 | ||
|
|
1c9fa9d662 | ||
|
|
7b9bc64364 | ||
|
|
729062bfdd | ||
|
|
bc6c726a45 | ||
|
|
dfc3df713e | ||
|
|
42eca1d5f2 | ||
|
|
66245e2730 | ||
|
|
d44b82c1d1 | ||
|
|
5440e48fa3 | ||
|
|
1c513cf8aa | ||
|
|
a17c4b8d43 | ||
|
|
15eb4ac278 | ||
|
|
0d9b81eab3 | ||
|
|
f02e1a20c7 | ||
|
|
a11991dad7 | ||
|
|
1238828bfd | ||
|
|
ba409cb24c | ||
|
|
d597670275 | ||
|
|
d8540e95f8 | ||
|
|
d35ebf00dd | ||
|
|
2b32cb26b1 | ||
|
|
ca95fcb658 | ||
|
|
cc18bbd168 | ||
|
|
8c8ea800cb | ||
|
|
0746dcc686 | ||
|
|
930650be9d | ||
|
|
4e3a9ffa40 | ||
|
|
3bf68a2bb8 | ||
|
|
a80f6feab0 | ||
|
|
3cf8ae52ed | ||
|
|
62632a4514 | ||
|
|
249bd3778a | ||
|
|
ab9e5d7a4a | ||
|
|
083b7dc952 | ||
|
|
1791692d92 | ||
|
|
ba23c9ab5e | ||
|
|
f96ab37bcb | ||
|
|
0da34bbb34 | ||
|
|
51e7c745ea | ||
|
|
8347251572 | ||
|
|
ce8512f4e0 | ||
|
|
a724a19d00 | ||
|
|
7eae7a98e8 | ||
|
|
fe9566eebd | ||
|
|
b69756730f | ||
|
|
6cd1a60b53 | ||
|
|
9d935e47b5 | ||
|
|
a7d5372d06 | ||
|
|
a575942c81 | ||
|
|
3cf6c53a8e | ||
|
|
91d86680de | ||
|
|
d1d082fb99 | ||
|
|
2c634d1bf0 | ||
|
|
02a6fe4dc9 | ||
|
|
223d681526 | ||
|
|
f42ef1c2fc | ||
|
|
f4817b2111 | ||
|
|
6f5def0abf | ||
|
|
f0fcd7f133 | ||
|
|
6115adb72e | ||
|
|
bfd0b5fd91 | ||
|
|
6c0a52155b | ||
|
|
c7ebce39bf | ||
|
|
a0dc7a792f | ||
|
|
fdb09a8f1f | ||
|
|
4ac2aa2339 | ||
|
|
ebbc20692a | ||
|
|
5c82d112c9 | ||
|
|
40fd50d7f1 | ||
|
|
f7b948fee2 | ||
|
|
6cdcf133bb | ||
|
|
f3025757b6 | ||
|
|
a49811a3f9 | ||
|
|
2ac4b265d1 | ||
|
|
46e994b563 | ||
|
|
81482bd298 | ||
|
|
f1a239c085 | ||
|
|
a48e38de7b | ||
|
|
0aaacee117 | ||
|
|
b8373af69f | ||
|
|
e99b2ee73d | ||
|
|
705022331a | ||
|
|
bf62d444bf | ||
|
|
5dcff5657b | ||
|
|
7e79d5a960 | ||
|
|
c1b480976d | ||
|
|
ddabbe6891 | ||
|
|
ffa3052b50 | ||
|
|
654ea88851 | ||
|
|
4dc7982baa | ||
|
|
ae2fc1cd85 | ||
|
|
78bc8666e6 | ||
|
|
9c2de2cfc7 | ||
|
|
71e81465f3 | ||
|
|
885031e086 | ||
|
|
d77c5bb5cf | ||
|
|
781bce0000 | ||
|
|
a3ca1b965b | ||
|
|
dd20b480a7 | ||
|
|
38292e97af | ||
|
|
46ea752164 | ||
|
|
194b744361 | ||
| b50197f7ce | |||
|
|
c00703d1d0 | ||
|
|
6e12377116 | ||
|
|
b0c4391ad8 | ||
|
|
f43ac2538a | ||
|
|
9eaf8b5d2d | ||
|
|
e365d0b07c | ||
|
|
69c273c4a5 | ||
|
|
f7950e7adb | ||
|
|
7c1ae9812e | ||
|
|
5c794ac40e | ||
|
|
9dbe3c3363 | ||
|
|
8a98f46235 | ||
|
|
9ed8db4d4a | ||
|
|
5b94276836 | ||
|
|
f1e427e2ff | ||
|
|
a112cfe35f | ||
|
|
412b60d6b4 | ||
|
|
11d9ef7507 | ||
|
|
ca143272f3 | ||
|
|
072449825c | ||
|
|
38ed9c206a | ||
|
|
8235a649a1 | ||
|
|
09efdd076e | ||
|
|
da9b6ea762 | ||
|
|
437450a93b | ||
|
|
50fff8871e | ||
|
|
350e9cfca2 | ||
|
|
5639edf173 | ||
|
|
f72313df9c | ||
|
|
f52eb5e124 | ||
|
|
5da9c5e1cd | ||
|
|
53fdd891fb | ||
|
|
94820d7a83 | ||
|
|
fe66d06ce2 | ||
|
|
b6e917a2d7 | ||
|
|
a6a39d249b | ||
|
|
518784c371 | ||
|
|
51c50cb902 | ||
|
|
6355d7765e | ||
|
|
c083631590 | ||
|
|
f62575c870 | ||
|
|
01e367cadf | ||
|
|
e248bb5565 | ||
|
|
1744ec74c7 | ||
|
|
905f8003da | ||
|
|
3b3a036806 | ||
|
|
ccf48d1e53 | ||
|
|
d7a74fdf5e | ||
|
|
462c1bc75e | ||
|
|
96b05dcc94 | ||
|
|
ceafe9d4e7 | ||
|
|
fc9b09cf72 | ||
|
|
11c80b2ea9 | ||
|
|
eb536766db | ||
|
|
f3b6687d79 | ||
|
|
adf483a748 | ||
|
|
7332cd1ed1 | ||
|
|
7726f4347b | ||
|
|
ee092d988b | ||
|
|
b3db3bb940 | ||
|
|
edcb17a436 | ||
|
|
f3b4933ef2 | ||
|
|
c6fdf9cdf4 | ||
|
|
2244d0f776 | ||
|
|
d7c4e4a8dd | ||
|
|
b7c54d02cb | ||
|
|
620eca3a0d | ||
|
|
aa3b2e988f | ||
|
|
753f589ea5 | ||
|
|
831e4e8c42 | ||
|
|
329722f338 | ||
|
|
2ff429cc76 | ||
|
|
47d4aee986 | ||
|
|
938325b93e | ||
|
|
12d0a2ffb7 | ||
|
|
4ff7e9aefa | ||
|
|
f52792e7f0 | ||
|
|
cbc6662ef7 | ||
|
|
26ffc2ad32 | ||
|
|
df32e573b0 | ||
|
|
19647d96b2 | ||
|
|
b1714a2fc1 | ||
|
|
83199d5475 | ||
|
|
4c0af66dff | ||
|
|
ccd7204b21 | ||
|
|
b82f1e6602 | ||
|
|
4104258219 | ||
|
|
11054f908b | ||
|
|
e0dc6f7214 | ||
|
|
735686c415 | ||
|
|
385bcbc383 | ||
|
|
f273620466 | ||
|
|
acb27d5ccc | ||
|
|
62c79e1470 | ||
|
|
1a99918819 | ||
|
|
7e3a9e0b38 | ||
|
|
f51d74f2b8 | ||
|
|
987cba6072 | ||
|
|
770e6371df | ||
|
|
30e660cf19 | ||
|
|
8ccf0b5364 | ||
|
|
3ef86186eb | ||
|
|
b8b3669b04 | ||
|
|
ac41890759 | ||
|
|
cf85e0f25e | ||
|
|
a4b52be833 | ||
|
|
4cb8f27ca5 | ||
|
|
9a06ee97c4 | ||
|
|
d7dfc6dc05 | ||
|
|
5a6de3afaa | ||
|
|
cd242511a8 | ||
|
|
745ae6caa4 | ||
|
|
acc7d0954d | ||
|
|
330d64c7cb | ||
|
|
673e43dd77 | ||
|
|
c2c5c60899 | ||
|
|
7d5176829b | ||
|
|
fd0dc0d445 | ||
|
|
be11317667 | ||
|
|
22fce51640 | ||
|
|
4223da47d6 | ||
|
|
64100fea59 | ||
|
|
2244c65233 | ||
|
|
e08bffd7ba | ||
|
|
0d5aa52af2 | ||
|
|
e617fc4c34 | ||
|
|
c34a7f123d | ||
|
|
cc029fc98e | ||
|
|
feae15c48c | ||
|
|
07485727c4 | ||
|
|
8b0ad7680b | ||
|
|
43d70cd467 | ||
|
|
d73b605ef0 | ||
|
|
5afd4df69a | ||
|
|
323c611f87 | ||
|
|
0dd0a4976b | ||
|
|
48820d4dff | ||
|
|
2fbab395f1 | ||
|
|
a9fd32f64e | ||
|
|
da7a2226d4 | ||
|
|
44b37339dc | ||
|
|
db1ec29470 | ||
|
|
713c3f0a3c | ||
|
|
c6c2bc5e74 | ||
|
|
c8352158b8 | ||
|
|
8927c0acfa | ||
|
|
02dfac8a34 | ||
|
|
8ab3664992 | ||
|
|
03e6101747 | ||
|
|
9f47995c10 | ||
|
|
d58f36ea1a | ||
|
|
442970a986 | ||
|
|
fcc6c8a3c5 | ||
|
|
1dbd4b4391 | ||
|
|
1943c72c1c | ||
|
|
7816da3f2d | ||
|
|
b25d7e358d | ||
|
|
04b62e6392 | ||
|
|
4ecfb796d4 | ||
|
|
de9fa81da3 | ||
|
|
be484d381c | ||
|
|
351e3b15ea | ||
|
|
2b9b48ac2f | ||
|
|
7c4ac5f561 | ||
|
|
def09b0be8 | ||
|
|
2415b167fb | ||
|
|
dfc7aef07d | ||
|
|
276ad276ec | ||
|
|
83da2d304e | ||
|
|
6ddc40d080 | ||
|
|
42fb5487e5 | ||
|
|
1ce35ac233 | ||
|
|
2734202e12 | ||
|
|
6a31fd2732 | ||
|
|
5d84aa6939 | ||
|
|
7173b7960d | ||
|
|
bb1c30d6c8 | ||
|
|
d70abf6e27 | ||
|
|
8931fdf82a | ||
|
|
25ba72e46b | ||
|
|
ebd71d41dc | ||
|
|
4b49bb4737 | ||
|
|
eeac47e522 | ||
|
|
335267c0af | ||
|
|
c4254dc6dd | ||
|
|
12cb359967 | ||
|
|
d73cb274b4 | ||
|
|
6cb6afe032 | ||
|
|
3686f0eb24 | ||
|
|
6cc24fe99e | ||
|
|
3784f1957f | ||
|
|
69fd8d68af | ||
|
|
301d72c169 | ||
|
|
ca11974b12 | ||
|
|
8917dbf4bb | ||
|
|
56afa6d564 | ||
|
|
8ecac1a8cf | ||
|
|
f742e414e6 | ||
|
|
c462af2d10 | ||
|
|
66ede93d95 | ||
|
|
c97f5be3fa | ||
|
|
c4d35849fd | ||
|
|
88c191bc61 | ||
|
|
a1e6318bce | ||
|
|
3606f5ea14 | ||
|
|
38c3b206e2 | ||
|
|
e69bf9760d | ||
|
|
0b763e23cf | ||
|
|
311cb0bada | ||
|
|
a78782b73a | ||
|
|
54df803ee1 | ||
|
|
2819b782c9 | ||
|
|
38c12660b0 | ||
|
|
3917a8c5e3 | ||
|
|
17c642d5ed | ||
|
|
2d84e2d788 | ||
|
|
ca19d2bfd5 | ||
|
|
cd56fb87d0 | ||
|
|
7290edd3ae | ||
|
|
8d4e9b8514 | ||
|
|
db87b51784 | ||
|
|
96dc9af1e3 | ||
|
|
a453cb2582 | ||
|
|
b0d53330bb | ||
|
|
99ebcacf31 | ||
|
|
3ec90194d7 | ||
|
|
5ce52f7189 | ||
|
|
d163837d8d | ||
|
|
81811530de | ||
|
|
7276bc49a7 | ||
|
|
90cff7e574 | ||
|
|
c673550901 | ||
|
|
5b360b6de2 | ||
|
|
8e2783962f | ||
|
|
866b319c5b | ||
|
|
6eb47567e8 | ||
|
|
d27f87fbb8 | ||
|
|
b2a2299347 | ||
|
|
905862ab9f | ||
|
|
5c307fd22c | ||
|
|
e92b69ad3f | ||
|
|
c6a5f9c268 | ||
|
|
54f91f2a64 | ||
|
|
4b2ed33cdd | ||
|
|
5fa48fc7dd | ||
|
|
e028c269b7 | ||
|
|
9798c7aca2 | ||
|
|
b5bca78ef4 | ||
|
|
1c619cfc74 | ||
|
|
dc5832a44c | ||
|
|
8fd64afc90 | ||
|
|
1484f4e370 | ||
|
|
32df1597c4 | ||
|
|
707b750ff1 | ||
|
|
3388c8517b | ||
|
|
60a8e0d5f5 | ||
|
|
5a757a58b5 | ||
|
|
2e555b6eaa | ||
|
|
c57277cc15 | ||
|
|
bf035d42af | ||
|
|
8cb6f9b65f | ||
|
|
fcbc4a0688 | ||
|
|
42bc15c8ea | ||
|
|
992231bcad | ||
|
|
6d494c99e3 | ||
|
|
a848f2175a | ||
|
|
4e6a2f951b | ||
|
|
5a41bbe806 | ||
|
|
066e6619af | ||
|
|
f0dbabd20f | ||
|
|
35c0e33ec4 | ||
|
|
a5715dac7d | ||
|
|
cdb9af5ab6 | ||
|
|
19c05c23f3 | ||
|
|
12c744c1ba | ||
|
|
604a6a5140 | ||
|
|
62aae7b7c4 | ||
|
|
2ea899330c | ||
|
|
3574db020f | ||
|
|
b2ae2a38ec | ||
|
|
04ebb6077a | ||
|
|
d5062944d0 | ||
|
|
dc181ce0ce | ||
|
|
042e3388b0 | ||
|
|
d4a1ffa9a9 | ||
|
|
54927d0af7 | ||
|
|
d26765e217 | ||
|
|
277b4e63c3 | ||
|
|
848514405b | ||
|
|
7b8fd0ee55 | ||
|
|
d373ebac58 | ||
|
|
370ccc5254 | ||
|
|
9272fc8cd7 | ||
|
|
22cfdbae0a | ||
|
|
f49f5e5d25 | ||
|
|
118c12e7fe | ||
|
|
02a7eb34ee | ||
|
|
739390739e | ||
|
|
6b2ead0d4e | ||
|
|
1eaf9e7b17 | ||
|
|
954e1a9099 | ||
|
|
5aeff6f914 | ||
|
|
fb15049fbf | ||
|
|
6f3a9c210e | ||
|
|
6fdd6d839e | ||
|
|
ac1101a410 | ||
|
|
2fd33e6ec2 | ||
|
|
779c69a982 | ||
|
|
3494286e66 | ||
|
|
139b78d7f4 | ||
|
|
daee2f615c | ||
|
|
710825ec28 | ||
|
|
478539911b | ||
|
|
b21d984cf8 | ||
|
|
1a92cebf6b | ||
|
|
fd3f939526 | ||
|
|
7d28760fa1 | ||
|
|
4a0a1c95a9 | ||
|
|
9da0c10141 | ||
|
|
43b9ecdf3c | ||
|
|
987952a2f2 | ||
|
|
92f6ac57ad | ||
|
|
b4af51f3cc | ||
|
|
4ba6e62ada | ||
|
|
58d5924e80 | ||
|
|
8f55551339 | ||
|
|
9229497be8 | ||
|
|
99e77cd8ed | ||
|
|
8d8809238c | ||
|
|
f03d574e86 | ||
|
|
cbb5fbe92e | ||
|
|
6a376ad62c | ||
|
|
8e61853459 | ||
|
|
b17bc1bb3e | ||
|
|
1343c7603b | ||
|
|
5b5a4b1347 | ||
|
|
62fb3f9c5a | ||
|
|
986378db42 | ||
|
|
ce99c26c03 | ||
|
|
3571595838 | ||
|
|
c0c450124f | ||
|
|
aa62022218 | ||
|
|
71c27babfd | ||
|
|
2ff93270d7 | ||
|
|
c07719dd3d | ||
|
|
6b7ef88418 | ||
|
|
ee9f12180d | ||
|
|
8df3bc57c5 | ||
|
|
0aabb2971e | ||
|
|
e5740bf496 | ||
|
|
e8f1dff61c | ||
|
|
267fc62865 | ||
|
|
05a64f51f7 | ||
|
|
e5460d7a31 | ||
|
|
1826a31e2f | ||
|
|
2bb44c414f | ||
|
|
ef7442c488 | ||
|
|
775bde62c8 | ||
|
|
c5a504bde3 | ||
|
|
f7f7e010c4 | ||
|
|
aa82f7ed64 | ||
|
|
684d192b4b | ||
|
|
aed2d1159d | ||
|
|
d2500df05e | ||
|
|
8922303a72 | ||
|
|
cea4de03cd | ||
|
|
9529c19b9b | ||
|
|
b0f5c502d9 | ||
|
|
c3fc369bc4 | ||
|
|
a5ef0d5edf | ||
|
|
26e9056f17 | ||
|
|
1553aa774b | ||
|
|
2ebdbc5ac4 | ||
|
|
e3ca172101 | ||
|
|
17d4ec6c29 | ||
|
|
bec317615d | ||
|
|
d00fd767ff | ||
|
|
557652c526 | ||
|
|
e138541495 | ||
|
|
f6dfbcad0d | ||
|
|
2518be2704 | ||
|
|
42ec2b9dce | ||
|
|
9484599bfd | ||
|
|
5e6d3ddae8 | ||
|
|
13cce3afcc | ||
|
|
9743cb1424 | ||
|
|
dbbcf3860a | ||
|
|
ae983be0a8 | ||
|
|
f8156fbbca | ||
|
|
1909547543 | ||
|
|
e47c0c1914 | ||
|
|
1a122337fe | ||
|
|
bcf2578da9 | ||
|
|
06cd41ba0e | ||
|
|
64ec421cfc | ||
|
|
86fcda5afc | ||
|
|
e799d40803 | ||
|
|
c84325a37c | ||
|
|
3b6d57849c | ||
|
|
9b4825db77 | ||
|
|
6a4bb7395b | ||
|
|
c8463d9b3e | ||
|
|
376ca4e93b | ||
|
|
6a43e558fd | ||
|
|
05414276f2 | ||
|
|
bec73749c2 | ||
|
|
0d4f9891c3 | ||
|
|
f082ab4b68 | ||
|
|
d4f4765ffd | ||
|
|
8902c0839c | ||
|
|
66fc8034ba | ||
|
|
109cb58d68 | ||
|
|
a71916df84 | ||
|
|
5f10eb808e | ||
|
|
6c1e7b0b60 | ||
|
|
792c22a90a | ||
|
|
eff2cd02f9 | ||
|
|
163e7751f2 | ||
|
|
370c22b2f5 | ||
|
|
a251ac55e5 | ||
|
|
987df6958e | ||
|
|
60ae189442 | ||
|
|
ce734906d4 | ||
|
|
3b26572731 | ||
|
|
4d9c606c79 | ||
|
|
22050fc16d | ||
|
|
2fb419253c | ||
|
|
3bb4fc67bf | ||
|
|
a0a009cb59 | ||
|
|
ce2bb85e18 | ||
|
|
7ff8ac76fa | ||
|
|
935c51c985 | ||
|
|
a8d0e698eb | ||
|
|
5b13ad6726 | ||
|
|
e88d0d1493 | ||
|
|
898af47f89 | ||
|
|
84868c0fb5 | ||
|
|
8e2b7d2089 | ||
|
|
f359ac49f3 | ||
|
|
37ce0925a5 | ||
|
|
23985aea7d | ||
|
|
3bd5ab970f | ||
|
|
fbdcbdc626 | ||
|
|
f197ee54d1 | ||
|
|
efa0489f7b | ||
|
|
66dd90a090 | ||
|
|
68cfb12746 | ||
|
|
4ad14f3404 | ||
|
|
4bcf44570b | ||
|
|
3637022890 | ||
|
|
5f3a78e7ce | ||
|
|
c7872ad841 | ||
|
|
9eeab756e4 | ||
|
|
ef971a1236 | ||
|
|
5ec851a120 | ||
|
|
2a94ff2ef6 | ||
|
|
1738892500 | ||
|
|
765d876a51 | ||
|
|
a0c8e26b38 | ||
|
|
4b4f4b3d8f | ||
|
|
63fe7a88eb | ||
|
|
871ee1a6b6 | ||
|
|
6a36599a29 | ||
|
|
d11ab20617 | ||
|
|
ea713edfb5 | ||
|
|
ff48a9dea2 | ||
|
|
0a1812ec8c | ||
|
|
113d4ac078 | ||
|
|
4d49385529 | ||
|
|
94a8455267 | ||
|
|
406d2a054c | ||
|
|
932296afb6 | ||
|
|
27fb36a6c5 | ||
|
|
f5e0f21869 | ||
|
|
180c35d5c2 | ||
|
|
4bd25f3220 | ||
|
|
1299f107dd | ||
|
|
43ae40e077 | ||
|
|
1af0b00892 | ||
|
|
36f7219964 | ||
|
|
529ad853ee | ||
|
|
4e37ccfff8 | ||
|
|
134c68c705 | ||
|
|
ea61e87b31 | ||
|
|
6e82008ffa | ||
|
|
016bcc00d8 | ||
|
|
936e7508e3 | ||
|
|
34220ab759 | ||
|
|
51ba63faae | ||
|
|
f4f1e397cb | ||
|
|
721117ce1b | ||
|
|
b6128418be | ||
|
|
2da917add7 | ||
|
|
678c53dc39 | ||
|
|
d57359b2ff | ||
|
|
3796d9f8b4 | ||
| b6d84e0e66 | |||
|
|
3dbdbefc58 | ||
|
|
23570c7270 | ||
|
|
4d5024f8b8 | ||
|
|
ea8670702a | ||
|
|
b8828f48c9 | ||
|
|
b468fef242 | ||
|
|
358f8eeca3 | ||
|
|
150a70e69f | ||
|
|
b9fb0f2bcd | ||
|
|
d4a8b8e400 | ||
|
|
8009c9a5f9 | ||
|
|
177115e2fc | ||
|
|
85bc12df59 | ||
|
|
1da818b0d5 | ||
|
|
c23d3f1442 | ||
|
|
6500ce9154 | ||
|
|
63ecaff1bc | ||
|
|
e29c268d0b | ||
|
|
2758e89a51 | ||
|
|
d0670d0244 | ||
|
|
1e2005451c | ||
|
|
29a95ca592 | ||
|
|
5bfff2a398 | ||
|
|
4d26947208 | ||
|
|
f1de741bd5 | ||
|
|
3394d93b43 | ||
|
|
02c64feff8 | ||
|
|
f2ba162359 | ||
|
|
16c5d11ead | ||
|
|
3e97c5d5fc | ||
|
|
cb5499f82f | ||
|
|
3d71c1bcbe | ||
|
|
a12793e67a | ||
|
|
affec9bb61 | ||
|
|
fb62ec4c77 | ||
|
|
c48cf1a2f7 | ||
|
|
cf5cc92258 | ||
|
|
ca934fe514 | ||
|
|
d6ca75006a | ||
|
|
51a9878363 | ||
|
|
7664c44697 | ||
|
|
5a8ee72622 | ||
|
|
492b2de520 | ||
|
|
900d3212a4 | ||
|
|
d8997e1239 | ||
|
|
e1001534e4 | ||
|
|
59a69ed486 | ||
|
|
437574328e | ||
|
|
87af7ada40 | ||
|
|
aa01730c13 | ||
|
|
0803b401e7 | ||
|
|
6d974d799b | ||
|
|
1fa779b21f | ||
|
|
2c5442c044 | ||
|
|
db4324c478 | ||
|
|
a8afca4ccf | ||
|
|
6849bab741 | ||
|
|
ff72f24433 | ||
|
|
19ea1b204c | ||
|
|
a9e8dc7b9f | ||
|
|
ee14eac009 | ||
|
|
3c1bbd5a7f | ||
|
|
218cfaca44 | ||
|
|
8a78d76a20 | ||
|
|
1ead9f1443 | ||
|
|
c53dd48437 | ||
|
|
001a1d648c | ||
|
|
6bbd162c72 | ||
|
|
8fb8476994 | ||
|
|
8d7a2faf1b | ||
|
|
df946f8525 | ||
|
|
58f8c315e6 | ||
|
|
c6a379048e | ||
|
|
02dd52ccb9 | ||
|
|
abb93af3fb | ||
|
|
06b18b8fb9 | ||
|
|
88772a0d8e | ||
|
|
89c2bf0932 | ||
|
|
9a0e6336b7 | ||
|
|
550a754fab | ||
|
|
5921f7f889 | ||
|
|
e097880e95 | ||
|
|
99a0dc6c53 | ||
|
|
ef7e4a752d | ||
|
|
cded8e54fb | ||
|
|
f17a903555 | ||
|
|
191aba1f95 | ||
|
|
e8d7a7f8bf | ||
|
|
836c1084c4 | ||
|
|
649bfdc220 | ||
|
|
8d6529ccf1 | ||
|
|
c936692403 | ||
|
|
c3d3f2ab50 | ||
|
|
f289b19310 | ||
|
|
9866231129 | ||
|
|
e0b5b54dda | ||
|
|
2687ecc02e | ||
|
|
3699920515 | ||
|
|
4481da75b7 | ||
|
|
037b636be9 | ||
|
|
12ded24cd4 | ||
|
|
2b5c13e3da | ||
|
|
043f07190c | ||
|
|
dc0758274e | ||
|
|
0d9aa85a6a | ||
|
|
810440abe7 | ||
|
|
177aaebaf8 | ||
|
|
ba11c565d8 | ||
|
|
5320d3a4fd | ||
|
|
82f181b80b | ||
|
|
eb43fa7c4c | ||
|
|
86c0357725 | ||
|
|
844dac6106 | ||
|
|
0a923e98ab | ||
|
|
a85a5bd055 | ||
|
|
ca51798445 | ||
|
|
73146ea643 | ||
|
|
f186f4aa5c | ||
|
|
a4d89af418 | ||
|
|
4eb755fed6 | ||
|
|
95837605b8 | ||
|
|
3f4bf3f6fd | ||
|
|
adb71068e3 | ||
|
|
68f898dbf8 | ||
|
|
296b714282 | ||
|
|
d88f38cf2a | ||
|
|
a8098c2c4c | ||
|
|
1eb91889d4 | ||
|
|
ac451d0fcd | ||
|
|
5d7e0a1260 | ||
|
|
8344207608 | ||
|
|
cc45168e25 | ||
|
|
81c898dd9e | ||
|
|
87aa50c7be | ||
|
|
a080047632 | ||
|
|
bb4b3dfe61 | ||
|
|
55aaa6e2c6 | ||
|
|
1fc866eeee | ||
|
|
15e0692b41 | ||
|
|
6db42dc736 | ||
|
|
c1d86a4238 | ||
|
|
ec761dbe3d | ||
|
|
1328a314de | ||
|
|
06b0a1292f | ||
|
|
11a16a54fc | ||
|
|
548cbb4bda | ||
| 637ae21089 | |||
|
|
6febc4d2fc | ||
|
|
8253db1486 | ||
|
|
8fe1b0891b | ||
|
|
ff1d7f7f1c | ||
|
|
c437a18288 | ||
|
|
0992c39132 | ||
|
|
610f978c44 | ||
|
|
84ea9266c2 | ||
|
|
54abaebe17 | ||
|
|
a16c860ba8 | ||
|
|
b1b7e3439f | ||
|
|
1df75fe25c | ||
|
|
4d0e0b8ef8 | ||
|
|
36002def70 | ||
|
|
8247ac54a1 | ||
|
|
f4fe80b28a | ||
|
|
9e052d6e3a | ||
|
|
0da18b81b6 | ||
|
|
fc81c6329b | ||
|
|
3d92b989ce | ||
|
|
b942e8a950 | ||
|
|
29131b4644 | ||
|
|
b897b118ca | ||
|
|
145af2b6ee | ||
|
|
09a38a854c | ||
|
|
995779a294 | ||
|
|
67f38fc646 | ||
|
|
316f1fa925 | ||
|
|
21f5ad6c0a | ||
|
|
6e6e52f316 | ||
|
|
71c19b3ef2 | ||
|
|
0befc6385d | ||
|
|
22371b4b07 | ||
|
|
913d711b80 | ||
|
|
d17d12c805 | ||
|
|
4d64109e2c | ||
|
|
d66d807cff | ||
|
|
e7a68f06b3 | ||
|
|
fd49e86e17 | ||
|
|
337621ca4a | ||
|
|
0e38a4e4f0 | ||
|
|
c19a160c9c | ||
|
|
c390e06e63 | ||
|
|
00d6a948d0 | ||
|
|
6f1c2a1a81 | ||
|
|
47ba907eb7 | ||
|
|
a14252493f | ||
|
|
328c4288c2 | ||
|
|
b7c11ff852 | ||
|
|
add1d6225d | ||
|
|
182424ba05 | ||
|
|
bf86cd2a51 | ||
|
|
2085e9cafd | ||
|
|
fb51236ae2 | ||
|
|
9509b5825c | ||
|
|
b8a8acdad7 | ||
|
|
898e5f8bda | ||
|
|
30a39497aa | ||
|
|
852a220076 | ||
|
|
a34d56b7df | ||
|
|
13feaa7581 | ||
|
|
14df9ea705 | ||
|
|
6bd2bb884a | ||
|
|
89cdaa611a | ||
|
|
cc476a26b4 | ||
|
|
14d132638d | ||
|
|
9e62636059 | ||
|
|
a3b2b4920a | ||
|
|
e7f128ee59 | ||
|
|
e1069c265e | ||
|
|
e0b356c12d | ||
|
|
769d900383 | ||
|
|
8d99100601 | ||
|
|
0c1c8080a6 | ||
|
|
1742541b03 | ||
|
|
d66e6967ee | ||
|
|
559879301d | ||
|
|
c524c92062 | ||
|
|
b329329333 | ||
|
|
5df8ef98a1 | ||
|
|
55154b2996 | ||
|
|
89aa6aecff | ||
|
|
970456e6b0 | ||
|
|
97effae8dc | ||
|
|
f26755045d | ||
|
|
067af8356c | ||
|
|
ee743674c2 | ||
|
|
362f8a3c99 | ||
|
|
9f0ecd7f73 | ||
|
|
d01f582646 | ||
|
|
cdc8f159f5 | ||
|
|
b481b6e1b5 | ||
|
|
505aeff544 | ||
|
|
dbf0444110 | ||
|
|
07d753f413 | ||
|
|
f516e89a5f | ||
|
|
5f15bca561 | ||
|
|
d98acd8c39 | ||
|
|
97502a5bd5 | ||
|
|
806184aa5d | ||
|
|
d93fb1fdfc | ||
|
|
9cf922ae80 | ||
|
|
2070efc35a | ||
|
|
1dc4dbf7af | ||
|
|
c10634f1e3 | ||
|
|
c0f8fd8c6b | ||
|
|
95f89792d4 | ||
|
|
a299abf18f | ||
|
|
0cc15390a4 | ||
|
|
379b23b42d | ||
|
|
160b1b240a | ||
|
|
5af69377e5 | ||
|
|
bcee0a5964 | ||
|
|
804128c3d3 | ||
|
|
4e3ee024ac | ||
|
|
c300fdbfb1 | ||
|
|
840ff11335 | ||
|
|
8d76b51683 | ||
|
|
a78bb51831 | ||
|
|
db19d0819e | ||
|
|
72b76221f7 | ||
|
|
9eb32034b7 | ||
|
|
24f88b5ffe | ||
|
|
d27ebad011 | ||
|
|
1cebd8551b | ||
|
|
446d5aeb15 | ||
|
|
58f8ce605d | ||
|
|
3fae2fdae5 | ||
|
|
c268407ce3 | ||
|
|
cd435c5f41 | ||
|
|
74b0e3bded | ||
|
|
edc0a14ef1 | ||
|
|
011be78b27 | ||
|
|
58008e6758 | ||
|
|
ae21727c12 | ||
|
|
a480372d3d | ||
|
|
0bc298014d | ||
|
|
63f85a8099 | ||
|
|
cc16d5ba15 | ||
|
|
fa3afe188e | ||
|
|
6df2db86c3 | ||
|
|
7791de490d | ||
|
|
754a8c7250 | ||
|
|
88b0f31590 | ||
|
|
b17dbb37e4 | ||
|
|
4ec360219a | ||
|
|
b4d4da7250 | ||
|
|
8bf809a888 | ||
|
|
90e0cee86c | ||
|
|
5b571362e3 | ||
|
|
9537003a6d | ||
|
|
bdc50283d2 | ||
|
|
85c8968d75 | ||
|
|
1466ad9bef | ||
|
|
0cda2241ed | ||
|
|
3ac96d9ed4 | ||
|
|
9f7b6a281b | ||
|
|
96bd5f8259 | ||
|
|
62917c2a50 | ||
|
|
10ea780cdc | ||
|
|
19561bb1f1 | ||
|
|
8088789f51 | ||
|
|
5dec91caa3 | ||
|
|
0c28a9a79b | ||
|
|
8c2b715f93 | ||
|
|
0fe75031a9 | ||
|
|
0ec01f8d6f | ||
|
|
fbcb3f8cbc | ||
|
|
3f6a454052 | ||
|
|
088fda12f8 | ||
|
|
b207b30108 | ||
|
|
f12b67088f | ||
|
|
2643daf0b2 | ||
|
|
21188dad73 | ||
|
|
0476854d7c | ||
|
|
b9ab4f6484 | ||
|
|
759d92db4d | ||
|
|
263fea1c52 | ||
|
|
949e9216ff | ||
|
|
547835f59d | ||
|
|
464ed17741 | ||
|
|
1ca8b06d74 | ||
|
|
5312549db1 | ||
|
|
21a8a0467f | ||
|
|
c5dfd43e48 | ||
|
|
879bc9bd98 | ||
|
|
5a484c3952 | ||
|
|
a1dd917227 | ||
|
|
6186fa7e1b | ||
|
|
2c227955c7 | ||
|
|
1ac50714f5 | ||
|
|
fd1d6a98f1 | ||
|
|
43b5e7e644 | ||
|
|
13ab68e5b1 | ||
|
|
165caab526 | ||
|
|
187e5a752a | ||
|
|
dc81568c45 | ||
|
|
9fe9d92e04 | ||
|
|
1e550ac0a3 | ||
|
|
1190209409 | ||
|
|
c7cc6b54bf | ||
|
|
c1afce2939 | ||
|
|
aa40c04302 | ||
|
|
bddf07efee | ||
|
|
c8a45cb085 | ||
|
|
f6720b3d37 | ||
|
|
dc8f5e9b25 | ||
|
|
8a2d3e1aed | ||
|
|
afeaf4444b | ||
|
|
f69a284b3f | ||
|
|
9f1bb44824 | ||
|
|
037a29551c | ||
|
|
b4ea970c29 | ||
|
|
719b80baa1 | ||
|
|
f6002f05e0 | ||
|
|
0867654347 | ||
|
|
687a6d8693 | ||
|
|
6fc362cae2 | ||
|
|
5d03bae931 | ||
|
|
408e51535d | ||
|
|
d4749f4eb8 | ||
|
|
829501c1b1 | ||
|
|
88ef5a3467 | ||
|
|
e52948efcc | ||
|
|
56466f889b | ||
|
|
5ecfab65fa | ||
|
|
98fc65ec43 | ||
|
|
3e37e2cdc4 | ||
|
|
2efb08197f | ||
|
|
dd7cb72a25 | ||
|
|
b73fc88313 | ||
|
|
465db2cd22 | ||
|
|
73c1dc8118 | ||
|
|
509a202f93 | ||
|
|
09a9884b9f | ||
|
|
6afc5aa98e | ||
|
|
9e497fb5e8 | ||
|
|
16476256c3 | ||
|
|
623430359a | ||
|
|
6ab53802df | ||
|
|
d5f877b83d | ||
|
|
0b33702712 | ||
|
|
10fce45248 | ||
|
|
b39e5ba1d5 | ||
|
|
700df030f0 | ||
|
|
a44fe15fea | ||
|
|
12d1553f5a | ||
|
|
503c2580d7 | ||
|
|
8ab9509ceb | ||
|
|
197eded6d0 | ||
|
|
1813ad400a | ||
|
|
a1b048a2f9 | ||
|
|
cb43ad3488 | ||
|
|
e8daf67276 | ||
|
|
00ef191ad0 | ||
|
|
e8d559f6d0 | ||
|
|
82ed892166 | ||
|
|
45bd4a72a4 | ||
|
|
7196d83833 | ||
|
|
2b7c311a2b | ||
|
|
7ef4e45945 | ||
|
|
db08ea1587 | ||
|
|
af3227684b | ||
|
|
46788cc6c6 | ||
|
|
70a45f3dc8 | ||
|
|
d63e3dadbc | ||
|
|
93109f1e19 | ||
|
|
c4e74ee8a5 | ||
|
|
534fbe1a6b | ||
|
|
e9f0c032a4 | ||
|
|
293307e63d | ||
|
|
2701522605 | ||
|
|
98666855ad | ||
|
|
adca9cf292 | ||
|
|
fc20acd8cb | ||
|
|
6744e86b62 | ||
|
|
5ad202f482 | ||
|
|
80edb3b8f2 | ||
|
|
3bc8c80422 | ||
|
|
4ac19ef8da | ||
|
|
797bce2eac | ||
|
|
807e80780d | ||
|
|
a58ca80fc9 | ||
|
|
4158bf1663 | ||
|
|
cd0c594efb | ||
|
|
648d4d961d | ||
|
|
9bca6f77d6 | ||
|
|
c33718c39d | ||
|
|
19b51a4a69 | ||
|
|
f9e5bc43c6 | ||
|
|
42383948b7 | ||
|
|
5f8a1723ba | ||
|
|
b8086cb509 | ||
|
|
e2cd0d1246 | ||
|
|
9fbb9ac957 | ||
|
|
f64439dab9 | ||
|
|
fe423d0b46 | ||
|
|
5018b0e9ff | ||
|
|
8b0a650631 | ||
|
|
81076d9c43 | ||
|
|
b610af30ab | ||
|
|
bbc10cd3db | ||
|
|
6690139c66 | ||
|
|
df9d5bfe25 | ||
|
|
4a0dd31b2c | ||
|
|
afbfacb462 | ||
|
|
5d68e76b30 | ||
|
|
246cc1479a | ||
|
|
408cd0e037 | ||
|
|
43884c791f | ||
|
|
c15eccf49a | ||
|
|
ddb159eec8 | ||
|
|
af8edae1d3 | ||
|
|
91585e1059 | ||
|
|
d6a99d4354 | ||
|
|
0d840b2c41 | ||
|
|
0288a0f2b5 | ||
|
|
fe7dc4902b | ||
|
|
1caf380505 | ||
|
|
628ce16e99 | ||
|
|
f822b04a6f | ||
|
|
a61747cd94 | ||
|
|
86c97f5566 | ||
|
|
31e633f55e | ||
|
|
e3aa3e24f5 | ||
|
|
b7396fdf8c | ||
|
|
e8f0e31a27 | ||
|
|
d759c6bc24 | ||
|
|
f76d0d2f81 | ||
|
|
ec8b02e1c1 | ||
|
|
c27ac06f1b | ||
|
|
24f8f9ca14 | ||
|
|
8b8bbba85d | ||
|
|
64be75142e | ||
|
|
f2070bad08 | ||
|
|
52a3b680a6 | ||
|
|
735bfbae3b | ||
|
|
9140234b2c | ||
|
|
cbf35c276e | ||
|
|
ab1b8572f3 | ||
|
|
960de8647c | ||
|
|
acf80417d1 | ||
|
|
43a3db178f | ||
|
|
f05123123c | ||
|
|
2f73dac57a | ||
|
|
a6087dd08f | ||
|
|
b4d40fae3b | ||
|
|
ad19dc0100 | ||
|
|
d19c776ec3 | ||
|
|
ccd792bf62 | ||
|
|
8a55199d62 | ||
|
|
9cf0a1ac26 | ||
|
|
43620c280d | ||
|
|
98ffb3bf9e | ||
|
|
4cc4fb4d3c | ||
|
|
1f9718a3c1 | ||
|
|
16d9a3ba8b | ||
|
|
a01fc5d72c | ||
|
|
f4e777b8df | ||
|
|
e8b55881bd | ||
|
|
232dd34717 | ||
|
|
e244109073 | ||
|
|
e6324a2182 | ||
|
|
46bc66d08c | ||
|
|
73fe85018e | ||
|
|
982d6921cb | ||
|
|
bb28b76a5b | ||
|
|
67fed0da9e | ||
|
|
e3cf50b4c9 | ||
|
|
f72bb31b8e | ||
|
|
001f13398c | ||
|
|
dcfe93e4a1 | ||
|
|
d3e7b5838f | ||
|
|
8788d109e3 | ||
|
|
8b1839ff1b | ||
|
|
9f46e1960e | ||
|
|
e93a619859 | ||
|
|
287ba7055e | ||
|
|
dfbec1f23a | ||
|
|
55dedb4c4d | ||
|
|
9c71b444c6 | ||
|
|
e859b1c131 | ||
|
|
6c4bd9cc10 | ||
|
|
b50281f8d5 | ||
|
|
2be0f5cedb | ||
|
|
646a89d52a | ||
|
|
fea71903de | ||
|
|
0220d2b40f | ||
|
|
c751c51b25 | ||
|
|
8fedf78e03 | ||
|
|
bd3c86e068 | ||
|
|
46d459bd73 | ||
|
|
d1feaad5a9 | ||
|
|
b5b6c8f37a | ||
|
|
067aaa798d | ||
|
|
c85d7dcd7a | ||
|
|
c1b1f1efd8 | ||
|
|
68dcd21c4e | ||
|
|
748484e129 | ||
|
|
293e9988c7 | ||
|
|
c390a295cd | ||
|
|
bdf1f3c33d | ||
|
|
a0b8685f7d | ||
|
|
06fc25cf3b | ||
|
|
18e76c5f12 | ||
|
|
53e1bc5b83 | ||
|
|
f3b77663f8 | ||
|
|
fb25ea7cf9 | ||
|
|
33dec9746a | ||
|
|
079006e3ce | ||
|
|
b32befe5df | ||
|
|
91139005dc | ||
|
|
9c53f8608a | ||
|
|
7144491d0c | ||
|
|
a9831ccf40 | ||
|
|
fa3e18fe58 | ||
|
|
08f29bacfd | ||
|
|
5a6803551b | ||
|
|
a5f612c85a | ||
|
|
dab69249d0 | ||
|
|
e1f0098164 | ||
|
|
14428aaf49 | ||
|
|
f9ebfcc467 | ||
|
|
07446309d3 | ||
|
|
d2de23481a | ||
|
|
d8ead10c0f | ||
|
|
6a38188602 | ||
|
|
13884e9524 | ||
|
|
1ff629e257 | ||
|
|
67649a1746 | ||
|
|
3a2f370c8c | ||
|
|
6380608fa2 | ||
|
|
4df53701a1 | ||
|
|
3050b19366 | ||
|
|
4c0a9b3797 | ||
|
|
7850508cfe | ||
|
|
dfbb36eb53 | ||
|
|
e55fbe9159 | ||
|
|
8a3af47b35 | ||
|
|
11dc8cf982 | ||
|
|
b91a3c16fc | ||
|
|
abfe2bbe37 | ||
|
|
f8bc330909 | ||
|
|
999cf39aec | ||
|
|
661a6563b0 | ||
|
|
e33cf5b4ed | ||
|
|
d401b6483c | ||
|
|
5a855659b0 | ||
|
|
e21e1b0b3d | ||
|
|
232cb3ee7d | ||
|
|
8bdefd85d4 | ||
|
|
1719775ffc | ||
|
|
86296e4066 | ||
|
|
8c8c2ae271 | ||
|
|
25f1674619 | ||
|
|
29b3d6de3f | ||
|
|
d6c76c9298 | ||
|
|
b0168f46d7 | ||
|
|
117990cd46 | ||
|
|
6d238b382f | ||
|
|
75fb384109 | ||
|
|
e2a7a3686b | ||
|
|
e29b42c4b1 | ||
|
|
717806e821 | ||
|
|
0a4f20b60c | ||
|
|
90de8f3900 | ||
|
|
09d4c727b1 | ||
|
|
5a88c982cb | ||
|
|
13a0e1d725 | ||
|
|
7c06243d54 | ||
|
|
ecd3b90300 | ||
|
|
dc5a38ccba | ||
|
|
406675f750 | ||
|
|
a5e0572600 | ||
|
|
3e5106525d | ||
|
|
60b1e14e54 | ||
|
|
31e667a421 | ||
|
|
02428776a7 | ||
|
|
7c1ab73f11 | ||
|
|
8b5758fc37 | ||
|
|
cb9eb8f67e | ||
|
|
b496f13c3c | ||
|
|
f21a0622b0 | ||
|
|
5ddf8f2c34 | ||
|
|
31655aace4 | ||
|
|
32dca0799c | ||
|
|
79cb90e642 | ||
|
|
56bde906d9 | ||
|
|
315af4cd5b | ||
|
|
4abc72f05a | ||
|
|
393aba90e9 | ||
|
|
90624c03d2 | ||
|
|
f75599805f | ||
|
|
cc343fae9e | ||
|
|
c22b299bed | ||
|
|
28c806bfee | ||
|
|
0bde71d4dd | ||
|
|
aa51dcddc6 | ||
|
|
8ca865e5aa | ||
|
|
a9f1d2ac14 | ||
|
|
018e5cba83 | ||
|
|
bbcfee3ad6 | ||
|
|
df52f37b69 | ||
|
|
308ab4b4f5 | ||
|
|
f07b6e28c1 | ||
|
|
790fc92916 | ||
|
|
bb5632c98d | ||
|
|
879a73494b | ||
|
|
93d80b8dfb | ||
|
|
edf6a04a36 | ||
|
|
b1662cdc1a | ||
|
|
cec56e78bf | ||
|
|
b0bfd0f56e | ||
|
|
4312aceae7 | ||
|
|
a646a59d8d | ||
|
|
c9eafe1db3 | ||
|
|
270ba9d196 | ||
|
|
7300d252f8 | ||
|
|
9b73cc16e6 | ||
|
|
b7da57d6d1 | ||
|
|
dee78cd503 | ||
|
|
383e1d5245 | ||
|
|
2ec9329f2e | ||
|
|
15fc2c01bd | ||
|
|
4fdd9b4710 | ||
|
|
7765c464f3 | ||
|
|
43eba0aa1d | ||
|
|
e097cd2daa | ||
|
|
ad6b5719d2 | ||
|
|
5d344e3193 | ||
|
|
0cd86282d2 | ||
|
|
6b8d00decf | ||
|
|
85aae4d408 | ||
|
|
92b0a3abb2 | ||
|
|
444a48f2a1 | ||
|
|
039b44b07a | ||
|
|
d7ed33c351 | ||
|
|
0edff4665c | ||
|
|
66b2fee823 | ||
|
|
2139e31754 | ||
|
|
3752d35229 | ||
|
|
9a90e80da1 | ||
|
|
5d3ec771c4 | ||
|
|
6785d17ab3 | ||
|
|
99a0415235 | ||
|
|
0fe3f50d93 | ||
|
|
06647a4cf6 | ||
|
|
66b1e4a327 | ||
|
|
a5e1a8116f | ||
|
|
0bf77e1737 | ||
|
|
038f0a5135 | ||
|
|
e7d4dde9d9 | ||
|
|
96dbbcff3e | ||
|
|
1479742fe8 | ||
|
|
45bebd898d | ||
|
|
2f99cf81fc | ||
|
|
0aa5450dc6 | ||
|
|
5cdca0b7c1 | ||
|
|
58ed857724 | ||
|
|
66536a59a9 | ||
|
|
35ab292c9f | ||
|
|
341f1e915f | ||
|
|
28da9da752 | ||
|
|
6ce9330d3b | ||
|
|
c251ee2d22 | ||
|
|
cee5137603 | ||
|
|
fd5c6d0024 | ||
|
|
3d5a962332 | ||
|
|
f096b290a7 | ||
|
|
5a9281ece4 | ||
|
|
b1367ec0a9 | ||
|
|
e73d919ed7 | ||
|
|
9bcb5e73ba | ||
|
|
87f7510007 | ||
|
|
814e3d8ee7 | ||
|
|
d2cc6cca36 | ||
|
|
ea5a95d536 | ||
|
|
a845eb3942 | ||
|
|
f87fb34943 | ||
|
|
4dc9c1f433 | ||
|
|
d885a63c7d | ||
|
|
62833f2fa9 | ||
|
|
e6ff69d6fc | ||
|
|
176f840cb6 | ||
|
|
76f06170ad | ||
|
|
b6561cd940 | ||
|
|
878d7070a4 | ||
|
|
5f71198c88 | ||
|
|
8d941913aa | ||
|
|
599571e6ea | ||
|
|
90709ef4d0 | ||
|
|
378aa1026d | ||
|
|
4fb1761fa5 | ||
|
|
254193eb8c | ||
|
|
d92e260ffd | ||
|
|
8f5a5e4d57 | ||
|
|
d0d9535d2f | ||
|
|
df1409af76 | ||
|
|
cfe34733e9 | ||
|
|
e916cbe762 | ||
|
|
a8a4142cef | ||
|
|
3b3fffe838 | ||
|
|
d32b8a1e71 | ||
|
|
05e547edb5 | ||
|
|
1b25430fe7 | ||
|
|
278dc6880c | ||
|
|
0bd1761077 | ||
|
|
b1ae964ca3 | ||
|
|
56cbb9e9af | ||
|
|
70558574a8 | ||
|
|
dab8375f5e | ||
|
|
ccd9d05ac7 | ||
|
|
69a045c144 | ||
|
|
8f7b609c7c | ||
|
|
0019dd6c7a | ||
|
|
305a99afc8 | ||
|
|
eec23d9640 | ||
|
|
76f28ef94a | ||
|
|
3b89d96553 | ||
|
|
0fba78f885 | ||
|
|
ee38944cf9 | ||
|
|
c24cbcfbc0 | ||
|
|
28c01f0a43 | ||
|
|
182f671e35 | ||
|
|
788495aac8 | ||
|
|
7cbeb821f5 | ||
|
|
36901194dc | ||
|
|
58071007bd | ||
|
|
07bafdf416 | ||
|
|
f7bb5ec500 | ||
|
|
b92114fec6 | ||
|
|
fe9bb2a712 | ||
|
|
81996f8051 | ||
|
|
a0a976c345 | ||
|
|
9315f36f16 | ||
|
|
cdc03836d2 | ||
|
|
a14e95ad6c | ||
|
|
dd230f720f | ||
|
|
fa781de76f | ||
|
|
377e085aa0 | ||
|
|
3642b32ed6 | ||
|
|
8a6ecf005b | ||
|
|
6866fdbdf5 | ||
|
|
78bc4060b3 | ||
|
|
16b901ea9e | ||
|
|
26a3974477 | ||
|
|
9a10d6fe6c | ||
|
|
eb72def6d0 | ||
|
|
3fe2a2e3b0 | ||
|
|
d22d0f67b5 | ||
|
|
e56e944309 | ||
|
|
2d853d8d28 | ||
|
|
e5d086dace | ||
|
|
eccdd725b7 | ||
|
|
284e0b4bf5 | ||
|
|
47becb2721 | ||
|
|
0b64e26235 | ||
|
|
d90db8157c | ||
|
|
11da530151 | ||
|
|
c067c67e34 | ||
|
|
89913ad4d7 | ||
|
|
b73f34ad8c | ||
|
|
17cf68d8a5 | ||
|
|
5c1795ee03 | ||
|
|
19a8480a88 | ||
|
|
e0e80d2ea8 | ||
|
|
adab2326ed | ||
|
|
4ef629950d | ||
|
|
39197df0c7 | ||
|
|
1d3d6f0ea1 | ||
|
|
9272ffa52c | ||
|
|
187e5864ac | ||
|
|
e0711248a0 | ||
|
|
bbbcf0502e | ||
|
|
0498fac291 | ||
|
|
fa007148da | ||
|
|
7e69e5704a | ||
|
|
8579229797 | ||
|
|
59d8f4c1cf | ||
|
|
d05942ebe1 | ||
|
|
1b9457bdff | ||
|
|
05f2848d41 | ||
|
|
ab3a28e50d | ||
|
|
121daa81cc | ||
|
|
17e1d75238 | ||
|
|
597cdf4398 | ||
|
|
215ca7806e | ||
|
|
92f0d28d24 | ||
|
|
d964a0c375 | ||
|
|
332f04fdfe | ||
|
|
291ea3bfb0 | ||
|
|
51dbef9060 | ||
|
|
d6f771f6c3 | ||
|
|
d659ee2880 | ||
|
|
7b37a5e611 | ||
|
|
b99f2a23a8 | ||
|
|
a54d8af051 | ||
|
|
62a309cba6 | ||
|
|
b7c0e4725d | ||
|
|
53a21fb5fe | ||
|
|
5802f7c2c5 | ||
|
|
3c2640c90d | ||
|
|
6f2ea9e893 | ||
|
|
8b06bdfc29 | ||
|
|
b6a5e60b68 | ||
|
|
e16857457c | ||
|
|
20663ec854 | ||
|
|
f0166dd18f | ||
|
|
5b8fe2393e | ||
|
|
b08408c3c7 | ||
|
|
060f8ece8a | ||
|
|
eedc50b4fe | ||
|
|
d7a636e4de | ||
|
|
9e9319f117 | ||
|
|
928162798f | ||
|
|
b5b71a2dc6 | ||
|
|
033b792b54 | ||
|
|
7ab53edbbf | ||
|
|
624c3bf223 | ||
|
|
cf28312740 | ||
|
|
a1e2beb1cf | ||
|
|
4af9ab0bcb | ||
|
|
8d3bde86e3 | ||
|
|
7011a4fe07 | ||
|
|
76f14fc4ba | ||
|
|
923c0fee7a | ||
|
|
b62680137e | ||
|
|
cd5c4247a6 | ||
|
|
d1e1692581 | ||
|
|
c9fd0782ae | ||
|
|
c5779935d3 | ||
|
|
70154d4526 | ||
|
|
070dfae93d | ||
|
|
4e5fc734e2 | ||
|
|
9004749754 | ||
|
|
e42e7b81ef | ||
|
|
e788221099 | ||
|
|
e96b383339 | ||
|
|
e63044e72f | ||
|
|
0ac530eb86 | ||
|
|
c1fd63ab25 | ||
|
|
fd0d010908 | ||
|
|
de159d6e3a | ||
|
|
27293c3d36 | ||
|
|
ffe55f05ba | ||
|
|
d3b9a5af37 | ||
|
|
d7772bec48 | ||
|
|
c2e32d8989 | ||
|
|
cdbff1ef64 | ||
|
|
7d20053401 | ||
|
|
7029346d8d | ||
|
|
544f268ab8 | ||
|
|
7dd10474c4 | ||
|
|
f851794cf2 | ||
|
|
0ccc0f0846 | ||
|
|
40d1b2ddd5 | ||
|
|
a219be6810 | ||
|
|
fee3f03e17 | ||
|
|
62128a14e7 | ||
|
|
47b604c6a7 | ||
|
|
9fc9cdc9f3 | ||
|
|
5daa654d10 | ||
|
|
8c51c699e9 | ||
|
|
913fb0648b | ||
|
|
1eacb09f3c | ||
|
|
efcfceef39 | ||
|
|
e977ae9e88 | ||
|
|
b7c8d2f34c | ||
|
|
51f1e6f866 | ||
|
|
28abf15720 | ||
|
|
6b9a295549 | ||
|
|
c63a0200b3 | ||
|
|
5fdb817bfd | ||
|
|
1b5bdf5db3 | ||
|
|
8022ed450c | ||
|
|
255734acc5 | ||
|
|
34b0c93ecd | ||
|
|
2221e5234d | ||
|
|
8dd8cce491 | ||
|
|
d74965d36d | ||
|
|
cb9e6c4c69 | ||
|
|
1d93edd35b | ||
|
|
4c071b9d97 | ||
|
|
570eceb653 | ||
|
|
a34a01745c | ||
|
|
a4b9fa0f69 | ||
|
|
2da18fe59f | ||
|
|
5a969d573a | ||
|
|
0eff36a38e | ||
|
|
241bacfd49 | ||
|
|
b292644531 | ||
|
|
3264837478 | ||
|
|
70bf5033b5 | ||
|
|
9ffe114aeb | ||
|
|
75f6e08d85 | ||
|
|
3b0c19fbfc | ||
|
|
e4d10eb622 | ||
|
|
9cc4783415 | ||
|
|
762bd81611 | ||
|
|
6afdfb55ca | ||
|
|
cb3508b30d | ||
|
|
171ffc6862 | ||
|
|
0f19b7415f | ||
|
|
38019cdb91 | ||
|
|
89bcb43271 | ||
|
|
5101dc00b3 | ||
|
|
a7774349e5 | ||
|
|
b309e9d4bd | ||
|
|
ba3fdbe142 | ||
|
|
645d53f13b | ||
|
|
838c6361de | ||
|
|
6cb1d4ad1f | ||
|
|
28dfda1370 | ||
|
|
c73b8cf795 | ||
|
|
807777f022 | ||
|
|
866488ac0f | ||
|
|
10097e3d6e | ||
|
|
becb22a6b0 | ||
|
|
37fcecfdd8 | ||
|
|
c4144eb3d2 | ||
|
|
d29244efcc | ||
|
|
8901ba0128 | ||
|
|
b07342baef | ||
|
|
4d69f984b8 | ||
|
|
e1149907ce | ||
|
|
263376ae92 | ||
|
|
07abc2e2e0 | ||
|
|
7eba54f09a | ||
|
|
1eac924291 | ||
|
|
3ffe250f78 | ||
|
|
15d173e628 | ||
|
|
b24424330c | ||
|
|
ebffa83f17 | ||
|
|
6abc71a57d | ||
|
|
8afb20c53b | ||
|
|
501541b8be | ||
|
|
e56f63dc0f | ||
|
|
7e0c33f9a0 | ||
|
|
bb1b8363d9 | ||
|
|
e5e585443d | ||
|
|
82e39c9236 | ||
|
|
1e69e98b92 | ||
|
|
d0888a063f | ||
|
|
bd5781a039 | ||
|
|
a643c75e7f | ||
|
|
d4db40f9cc | ||
|
|
788489119b | ||
|
|
665adaa44b | ||
|
|
9f19ee9586 | ||
|
|
bb84b0e368 | ||
|
|
7976fdd019 | ||
|
|
0d3b45189b | ||
|
|
7005cb0268 | ||
|
|
81421d918a | ||
|
|
e3fe198fc1 | ||
|
|
76d62771e0 | ||
|
|
4da538302d | ||
|
|
b981193f19 | ||
|
|
c656da5c75 | ||
|
|
dcedf6abca | ||
|
|
849a71bdac | ||
|
|
534cc1d1fe | ||
|
|
40ec6c53fa | ||
|
|
b7cb3c0945 | ||
|
|
69d3c7b754 | ||
|
|
542f11804e | ||
|
|
8526054aa8 | ||
|
|
93700bddc7 | ||
|
|
494500041b | ||
|
|
011a5a3b23 | ||
|
|
03726858f0 | ||
|
|
c8c42cc4b2 | ||
|
|
0b22b454e6 | ||
|
|
f4fe03c582 | ||
|
|
964e87fd6a | ||
|
|
ec4c0a0d0d | ||
|
|
f9cf62472c | ||
|
|
ace584d294 | ||
|
|
5cd669202b | ||
|
|
4a09848720 | ||
|
|
f998f1be9f | ||
|
|
3352bdfabb | ||
|
|
ce43a9648f | ||
|
|
440a0bf393 | ||
|
|
64a7555f42 | ||
|
|
3aa6fe3dc0 | ||
|
|
3522228d45 | ||
|
|
9b42d9a5c6 | ||
|
|
4e8d98f956 | ||
|
|
f6c3d27bbc | ||
|
|
21daf83fbd | ||
|
|
7f1203c207 | ||
|
|
89b1f90973 | ||
|
|
8002a5497f | ||
|
|
770d12d79b | ||
|
|
7e4ac22d23 | ||
|
|
4f4b26d3e1 | ||
|
|
4ea7c421a8 | ||
|
|
3c8b7e2de4 | ||
|
|
b13acaf823 | ||
|
|
709cd6ad6e | ||
|
|
1316ccc56f | ||
|
|
881ddd0e11 | ||
|
|
49611ee6b9 | ||
|
|
539465bb56 | ||
|
|
bc54a73d69 | ||
|
|
5eb12f5d14 | ||
|
|
557e47650f | ||
|
|
f50753bfd7 | ||
|
|
7a164d6d5f | ||
|
|
60bc936cd9 | ||
|
|
d097e636ea | ||
|
|
3ce2bbb624 | ||
|
|
4926d2554e | ||
|
|
eae135acba | ||
|
|
8ce3801b87 | ||
|
|
0c7c11f817 | ||
|
|
b3a39c05d7 | ||
|
|
7370012667 | ||
|
|
412838fd4b | ||
|
|
273a614389 | ||
|
|
3944c80ae2 | ||
|
|
726ab3f91b | ||
|
|
ab307dd78f | ||
|
|
e3079912ae | ||
|
|
52da3ed0e4 | ||
|
|
cda85169ea | ||
|
|
978d1df598 | ||
|
|
f90d22cc20 | ||
|
|
bae69d92ae | ||
|
|
b910239825 | ||
|
|
6421a5969a | ||
|
|
5c9faba7f4 | ||
|
|
c1af738cc5 | ||
|
|
23a80a9260 | ||
|
|
d9d92f7eee | ||
|
|
c8be6c203e | ||
|
|
612c599d9b | ||
|
|
1292c7d1ae | ||
|
|
69f07967b5 | ||
|
|
aedd427c07 | ||
|
|
9b6c3dc511 | ||
|
|
b4fa7f4317 | ||
|
|
f053d305d5 | ||
|
|
1d95b7ddf7 | ||
|
|
01a6964d68 | ||
|
|
d661f96a9b | ||
|
|
c79fae8ab3 | ||
|
|
121f130893 | ||
|
|
da9a0a414a | ||
|
|
e0732e041b | ||
|
|
6fc5b3189a | ||
|
|
2a0c9cb749 | ||
|
|
7ad131b448 | ||
|
|
3e7186bd60 | ||
|
|
132f8cce53 | ||
|
|
5c07f42afb | ||
|
|
1f7a2594c8 | ||
|
|
ec64d19a36 | ||
|
|
5cb67470d5 | ||
|
|
c03f01a96a | ||
|
|
26b67a43ae | ||
|
|
a93ca3a205 | ||
|
|
dcc647ba3c | ||
|
|
fe44f59239 | ||
|
|
80dba0babf | ||
|
|
34acf9a91e | ||
|
|
cb859dbb7b | ||
|
|
20c04b1e62 | ||
|
|
69eaf8ed0c | ||
|
|
62c828d722 | ||
|
|
251e8e8ff4 | ||
|
|
acc41ec72e | ||
|
|
f9ebcf2ee4 | ||
|
|
f3df231dc2 | ||
|
|
75a1bb7cc5 | ||
|
|
7d6a64315a | ||
|
|
2758071d31 | ||
|
|
3881b905be | ||
|
|
073c62f868 | ||
|
|
d8e0f26bea | ||
|
|
04c24ab5d0 | ||
|
|
bfb0ba1ab9 | ||
|
|
fb7d48af1f | ||
|
|
559989ce4b | ||
|
|
81f59e3c18 | ||
|
|
b6adf9f7a9 | ||
|
|
b972a01cf0 | ||
|
|
0296cae712 | ||
|
|
c38b18e16b | ||
|
|
8d65c3ed26 | ||
|
|
995bb966ad | ||
|
|
dbda1a76ca | ||
|
|
ed6f990d9a | ||
|
|
4f86d9cc77 | ||
|
|
d55774abab | ||
|
|
d5591ba08d | ||
|
|
f67d483c4e | ||
|
|
f26ddd4a27 | ||
|
|
dbbea642bc | ||
|
|
0539e39977 | ||
|
|
65235d32a1 | ||
|
|
ecfcdf5a8c | ||
|
|
cf127ba7f9 | ||
|
|
1fba77d925 | ||
|
|
5752b116f6 | ||
|
|
cdf7fd8ce6 | ||
|
|
8fe07e7b20 | ||
|
|
b800237606 | ||
|
|
fed02e5b8a | ||
|
|
2d4d3e9410 | ||
|
|
880d4c6888 | ||
|
|
6a3d606032 | ||
|
|
612a86c4d9 | ||
|
|
14abc25c01 | ||
|
|
52673d1a02 | ||
|
|
b7caee119e | ||
|
|
a148446912 | ||
|
|
1ee9075976 | ||
|
|
b03627a110 | ||
|
|
04ac0ab743 | ||
|
|
e7aa985ad5 | ||
|
|
4177f4e4f3 | ||
|
|
c1e415b76a | ||
|
|
8ae656dee3 | ||
|
|
d48576f48a | ||
|
|
c0c5075072 | ||
|
|
59d106b8c4 | ||
|
|
d96c313ecb | ||
|
|
212c708150 | ||
|
|
3739eb173e | ||
|
|
0d3ecce8a2 | ||
|
|
164d7a4200 | ||
|
|
1258e602e6 | ||
|
|
8a5ad713ea | ||
|
|
12be65fa09 | ||
|
|
0720431c91 | ||
|
|
6f1ac1de97 | ||
|
|
99d2d4b594 | ||
|
|
2bf9b97e49 | ||
|
|
c6600f3348 | ||
|
|
e29ab54b0e | ||
|
|
197565d4cb | ||
|
|
3d570d2020 | ||
|
|
fe364dc6dc | ||
|
|
5d0e82781f | ||
|
|
24f005a340 | ||
|
|
1743c08091 | ||
|
|
81b095c899 | ||
|
|
965e8f71a0 | ||
|
|
efc789fbf4 | ||
|
|
f9cf49a9dd | ||
|
|
0b41bd30cd | ||
|
|
7c79615c6a | ||
|
|
10be7354cd | ||
|
|
1e9925f092 | ||
|
|
838079b249 | ||
|
|
a9bf5c93df | ||
|
|
d4ec7e1f69 | ||
|
|
12e9774d4c | ||
|
|
7bccaa8717 | ||
|
|
319874b973 | ||
|
|
daf8799c39 | ||
|
|
f45d4e1451 | ||
|
|
7458d126bc | ||
|
|
a90ffb7a48 | ||
|
|
d1e39903dd | ||
|
|
f23793f3f3 | ||
|
|
800390921c | ||
|
|
9650450426 | ||
|
|
7225ab1f1b | ||
|
|
72dbc45457 | ||
|
|
3d14f916ef | ||
|
|
5598de70f1 | ||
|
|
bfccdd6b35 | ||
|
|
35f36070a4 | ||
|
|
8f0c50a010 | ||
|
|
25d6d3694b | ||
|
|
6c784ec01e | ||
|
|
ebc81c55c2 | ||
|
|
d08d9fce99 | ||
|
|
d1bfce1974 | ||
|
|
0d0f326c26 | ||
|
|
2072fa1e13 | ||
|
|
fd98274e78 | ||
|
|
e72c7d6cb7 | ||
|
|
5860c0031b | ||
|
|
a43232ba6c | ||
|
|
b20bec610a | ||
|
|
3a9f5ea33a | ||
|
|
5d1caa21d8 | ||
|
|
70b3156375 | ||
|
|
d388a75f98 | ||
|
|
b2a6d0e687 | ||
|
|
462f5bab54 | ||
|
|
e89e0466eb | ||
|
|
c9d0d7aef6 | ||
|
|
90c7d5a74a | ||
|
|
b19e11b5b6 | ||
|
|
2d002c044d | ||
|
|
9a7b2bd158 | ||
|
|
461c874de6 | ||
|
|
992ff97877 | ||
|
|
96689eab23 | ||
|
|
0dd47c192b | ||
|
|
5875ce58fb | ||
|
|
1c21968259 | ||
|
|
1d8ac4fc02 | ||
|
|
0a863f32b2 | ||
|
|
cd0d503402 | ||
|
|
0bac6bf8b6 | ||
|
|
6436a59528 | ||
|
|
2dc54ea882 | ||
|
|
63db148aae | ||
|
|
78f1c8499a | ||
|
|
26dae9b4e0 | ||
|
|
10f1d75f2e | ||
|
|
5b3984ce7a | ||
|
|
43810ba730 | ||
|
|
5bf2818b2a | ||
|
|
76587d672f | ||
|
|
890d48769f | ||
|
|
fffe8e2499 | ||
|
|
fffc2d3b11 | ||
|
|
007f33be0b | ||
|
|
fa17af8d33 | ||
|
|
eabe43061c | ||
|
|
64502fb31b | ||
|
|
d693906905 | ||
|
|
cf25f7e201 | ||
|
|
df3a533515 | ||
|
|
53a687fd53 | ||
|
|
2091bbc025 | ||
|
|
eb46ed8f00 | ||
|
|
3096c2e7ad | ||
|
|
f8d66f354a | ||
|
|
67c5601fdc | ||
|
|
62601686aa | ||
|
|
e92c0d5098 | ||
|
|
5ca0298497 | ||
|
|
7321099a0f | ||
|
|
63d9a33d80 | ||
|
|
a7ba6d6004 | ||
|
|
5008d5c8c4 | ||
|
|
33f8a00679 | ||
|
|
be0adb833f | ||
|
|
8f90ff8a65 | ||
|
|
c8a1938155 | ||
|
|
3cf42c86f3 | ||
|
|
632e9fad2e | ||
|
|
a5de935192 | ||
|
|
111c1ebe32 | ||
|
|
8a42bff6ad | ||
|
|
d878c3e05d | ||
|
|
d08da77b2f | ||
|
|
86d6876db4 | ||
|
|
a7985e1e9b | ||
|
|
879ca456f7 | ||
|
|
1863cbdef0 | ||
|
|
ac4755a6ff | ||
|
|
61600b07a4 | ||
|
|
6be6e7f173 | ||
|
|
e597e06324 | ||
|
|
4cebaa865b | ||
|
|
589e43f825 | ||
|
|
61a70704c5 | ||
|
|
174f86f91e | ||
|
|
77a462702e | ||
|
|
d20955900d | ||
|
|
b952d2b96a | ||
|
|
428d1d6699 | ||
|
|
35863581e9 | ||
|
|
041f6af607 | ||
|
|
0e8a1bfc87 | ||
|
|
442e739447 | ||
|
|
47bb155989 | ||
|
|
bd733b72a7 | ||
|
|
e01327ab29 | ||
|
|
2a10247653 | ||
|
|
e3b7ed7657 | ||
|
|
d4357ce801 | ||
|
|
5bdeaed416 | ||
|
|
a44d93283f | ||
|
|
804f69e9c8 | ||
|
|
086c2f201b | ||
|
|
0b22360891 | ||
|
|
808fb24bbc | ||
|
|
febd8eccf0 | ||
|
|
22b1209eb5 | ||
|
|
485c5501b3 | ||
|
|
81ceba8926 | ||
|
|
3edd95da4e | ||
|
|
c1bb364cbe | ||
|
|
db8fa31503 | ||
|
|
1a5a65dcb1 | ||
|
|
1c96f4491e | ||
|
|
30ddb4071f | ||
|
|
dccc793fc7 | ||
|
|
f070a57148 | ||
|
|
2dde2cfb3b | ||
|
|
e0fef4f017 | ||
|
|
3a40b9689c | ||
|
|
3937a395b7 | ||
|
|
7e3d532075 | ||
|
|
4f658c4734 | ||
|
|
26aa753d9e | ||
|
|
bd9c40aabc | ||
|
|
008edc7e33 | ||
|
|
2901bf45b7 | ||
|
|
24e7f655fc | ||
|
|
ab8de509d9 | ||
|
|
4fc4ed7675 | ||
|
|
b35ad2bb9d | ||
|
|
895c7f1af1 | ||
|
|
fbca5712e3 | ||
|
|
58850960b8 | ||
|
|
1c874d3957 | ||
|
|
a42a19a174 | ||
|
|
bbe39d5942 | ||
|
|
f5fb844442 | ||
|
|
cb186a686e | ||
|
|
0c22bb2f4f | ||
|
|
49756c5c2f | ||
|
|
7efc2e1631 | ||
|
|
ed23f5958c | ||
|
|
0ea53f3445 | ||
|
|
4531b38c89 | ||
|
|
2114725dab | ||
|
|
6877ffcb47 | ||
|
|
c4a3cc6718 | ||
|
|
a53ed1705a | ||
|
|
ae13eed152 | ||
|
|
2c2c023200 | ||
|
|
1dbe7735df | ||
|
|
a321e77e2e | ||
|
|
9b52b496b2 | ||
|
|
deeddc22be | ||
|
|
680693448f | ||
|
|
b4b5c0c77e | ||
|
|
3f3305706d | ||
|
|
bd942e2ea1 | ||
|
|
a4c3fd8f0b | ||
|
|
f54fc09a37 | ||
|
|
fd6bdde5b0 | ||
|
|
85c8007084 | ||
|
|
8a82d60172 | ||
|
|
8b3f5d5e81 | ||
|
|
e222294c6e | ||
|
|
a04b536df8 | ||
|
|
2a0bd8722e | ||
|
|
742187919f | ||
|
|
aece559400 | ||
|
|
8b6e41afb8 | ||
|
|
9eed5802d6 | ||
|
|
437932d023 | ||
|
|
e8dd4f2e59 | ||
|
|
93cdf3828b | ||
|
|
99a91404ce | ||
|
|
28ae3a104a | ||
|
|
bc08839b16 | ||
|
|
15ebcb5b6a | ||
|
|
93fd8b0ff7 | ||
|
|
6d0f280f19 | ||
|
|
3b26a4c26d | ||
|
|
60315744d1 | ||
|
|
40a6617816 | ||
|
|
a6964a37ac | ||
|
|
9249ae073c | ||
|
|
2a216728f1 | ||
|
|
b186cb585e | ||
|
|
4e26f62391 | ||
|
|
ddb502acb3 | ||
|
|
89cb6867d4 | ||
|
|
f7892b33c8 | ||
|
|
e04e0e69f3 | ||
|
|
7172faf7b5 | ||
|
|
6e1761a1f5 | ||
|
|
baa7d4f098 | ||
|
|
baa5557010 | ||
|
|
5ce25ebc23 | ||
|
|
1f4d5b0140 | ||
|
|
ddd1a0a5f0 | ||
|
|
802c887b60 | ||
|
|
e15fd8fa24 | ||
|
|
034cc3a725 | ||
|
|
f34dcc0386 | ||
|
|
a7b278553f | ||
|
|
bd52eb12bd | ||
|
|
2d9a0a7559 | ||
|
|
67d3698a40 | ||
|
|
7b40281875 | ||
|
|
dc1d01c91d | ||
|
|
1e2618fddc | ||
|
|
85194b772b | ||
|
|
5a048139d6 | ||
|
|
7809842348 | ||
|
|
c7948374fd | ||
|
|
f8afdf304b | ||
|
|
29d617f7bb | ||
|
|
0e7b05e360 | ||
|
|
5f18e99128 | ||
|
|
b2e0af587f | ||
|
|
b0b0817668 | ||
|
|
a6ef654c05 | ||
|
|
e428b9fa0a | ||
|
|
7008185735 | ||
|
|
e4bbc7b962 | ||
|
|
68704a2e3d | ||
|
|
6f0222c55e | ||
|
|
e0646541e8 | ||
|
|
2d1fee0516 | ||
|
|
149899c34e | ||
|
|
c6573b48c2 | ||
|
|
476ba265d2 | ||
|
|
9904de1946 | ||
|
|
e73aec2e9e | ||
|
|
d6658a1771 | ||
|
|
583988034b | ||
|
|
e57d6f3d97 | ||
|
|
55e553c2a0 | ||
|
|
44a3263a86 | ||
|
|
80723a6cad | ||
|
|
ca15c60d52 | ||
|
|
8be075b36a | ||
|
|
ca203f8297 | ||
|
|
934c3065b9 | ||
|
|
5d95917727 | ||
|
|
a53b67f0ef | ||
|
|
eff13180b3 | ||
|
|
354aec4713 | ||
|
|
d2acb88dd4 | ||
|
|
e96ece23b8 | ||
|
|
a3a3db9bc8 | ||
|
|
ede0737261 | ||
|
|
dc7efad420 | ||
|
|
423d51a6f9 | ||
|
|
c350650f9c | ||
|
|
8c3cbc49b3 | ||
|
|
786b7193d0 | ||
|
|
2a6acba07f | ||
|
|
e5a5d112ca | ||
|
|
9e2cfe548b | ||
|
|
f4d595f5c2 | ||
|
|
c1e5b7d111 | ||
|
|
1eccc60cb3 | ||
|
|
9f8095ae52 | ||
|
|
3674cf4aad | ||
|
|
6b0d2157c8 | ||
|
|
5a629d6256 | ||
|
|
b8909f97aa | ||
|
|
8c83ed6b55 | ||
|
|
b161346171 | ||
|
|
330e717518 | ||
|
|
dafc031ef6 | ||
|
|
b00a2d3b79 | ||
|
|
c64ec34a1f | ||
|
|
8ed709c7bb | ||
|
|
8e8e52c6f9 | ||
|
|
f3e806c4a6 | ||
|
|
3bae95ae5b | ||
|
|
0adde753f4 | ||
|
|
5f28a22666 | ||
|
|
a975b53894 | ||
|
|
98aee5d0ab | ||
|
|
f57af8bf9e | ||
|
|
c6c3b6643e | ||
|
|
af94079b92 | ||
|
|
7203cc5cb3 | ||
|
|
028423cf58 | ||
|
|
2ead6af96a | ||
|
|
bf853e3c0c | ||
|
|
660b243056 | ||
|
|
c85f41e65b | ||
|
|
2759bed1b2 | ||
|
|
89c2a8ec9b | ||
|
|
aa2c1257ac | ||
|
|
f9fa15b7ac | ||
|
|
93a9be41bc | ||
|
|
ecd2f2032c | ||
|
|
de5ce5f635 | ||
|
|
2eb6fd6819 | ||
|
|
22ea4e7ffa | ||
|
|
3d98f3035f | ||
|
|
ec1d6ac477 | ||
|
|
0dc236cb5b | ||
|
|
98349a49fd | ||
|
|
ab8be2cada | ||
|
|
b8c22d0928 | ||
|
|
c6cf77e4b8 | ||
|
|
6c0511a898 | ||
|
|
366c862bcf | ||
|
|
03493e2390 | ||
|
|
8f9c71dd55 | ||
|
|
11beb1e331 | ||
|
|
01b4dc233a | ||
|
|
9f1e80e969 | ||
|
|
7e319e11c6 | ||
|
|
d11bf1c4d2 | ||
|
|
3e2f18b757 | ||
|
|
61677aa811 | ||
|
|
fb04e835ef | ||
|
|
bb133922d6 | ||
|
|
44dd5ef872 | ||
|
|
bcc8e1c055 | ||
|
|
71117ed335 | ||
|
|
de07fb3b74 | ||
|
|
e31d5a4dcf | ||
|
|
e14aae761d | ||
|
|
47db2a247c | ||
|
|
e449bb9692 | ||
|
|
b8fc72b6a7 | ||
|
|
64c01c1bd1 | ||
|
|
0a0e3df42b | ||
|
|
949c69a7e9 | ||
|
|
69caf7a604 | ||
|
|
23860ad5f9 | ||
|
|
ace5234d8d | ||
|
|
4654f821a9 | ||
|
|
927e0e7865 | ||
|
|
d47c9735b5 | ||
|
|
6100433636 | ||
|
|
43f79e8183 | ||
|
|
f58fda0c87 | ||
|
|
64b49e37d7 | ||
|
|
e44418d410 | ||
|
|
ca8d05ff13 | ||
|
|
626871e34d | ||
|
|
4b659fe643 | ||
|
|
d5055506b0 | ||
|
|
55f54b2e82 | ||
|
|
1b18065e68 | ||
|
|
053dc02152 | ||
|
|
b8cb4a1295 | ||
|
|
cd2cbf68a1 | ||
|
|
73f3be8af0 | ||
|
|
8cce059fb4 | ||
|
|
db641ec6f6 | ||
|
|
9d8239b68d | ||
|
|
4ec0bac275 | ||
|
|
613c234cfb | ||
|
|
83dca71f69 | ||
|
|
f7ea9cdb6e | ||
|
|
762cb1804f | ||
|
|
962cfb7ae2 | ||
|
|
9bc2ec7d8a | ||
|
|
8415d104e9 | ||
|
|
abd0f9b961 | ||
|
|
0a4683d908 | ||
|
|
4c280b0193 | ||
|
|
e88a3deafd | ||
|
|
7de08e08d0 | ||
|
|
bd172b3300 | ||
|
|
95c7a13cb5 | ||
|
|
b1ddf03385 | ||
|
|
a83c326736 | ||
|
|
b1acb56247 | ||
|
|
caa4731a13 | ||
|
|
5b0ece7a91 | ||
|
|
a4cd94847e | ||
|
|
a0a7386b51 | ||
|
|
535a72000f | ||
|
|
60531b9cd2 | ||
|
|
8f86ad696d | ||
|
|
c9bda98a6a | ||
|
|
9ea08da133 | ||
|
|
5762ec0518 | ||
|
|
7db74460fa | ||
|
|
c8d64e0a06 | ||
|
|
1a3dea0de6 | ||
|
|
17b642280e | ||
|
|
1c1717b78b | ||
|
|
4bbbdf8108 | ||
|
|
04a193309d | ||
|
|
f106ffa176 | ||
|
|
8d5d099542 | ||
|
|
4849992ca9 | ||
|
|
623105650e | ||
|
|
5e2c01daa6 | ||
|
|
58bf3a4d30 | ||
|
|
2d434c38b9 | ||
|
|
246f5cd8cf | ||
|
|
5a174d21f1 | ||
|
|
e632c653f6 | ||
|
|
174d17b088 | ||
|
|
3a35c931e4 | ||
|
|
b768b26c85 | ||
|
|
123ce6ebaf | ||
|
|
276c8db512 | ||
|
|
f898b8d181 | ||
|
|
e9f9e531e4 | ||
|
|
a7d813cb86 | ||
|
|
75b6eedb12 | ||
|
|
ec6860aa90 | ||
|
|
5cf661c6ae | ||
|
|
8c62caae7c | ||
|
|
cc6fe21af6 | ||
|
|
1902151efa | ||
|
|
b7af1e6289 | ||
|
|
0c77b320db | ||
|
|
ee41adc4e9 | ||
|
|
93462d7505 | ||
|
|
2f5946640e | ||
|
|
7cdb7dc308 | ||
|
|
2f148255f7 | ||
|
|
cb00b8b335 | ||
|
|
559b56c8a2 | ||
|
|
c0038d0373 | ||
|
|
2820decb5e | ||
|
|
c64f368e6a | ||
|
|
b7c8e84f5e | ||
|
|
5acf6c9158 | ||
|
|
a8197b0c84 | ||
|
|
2e03062c24 | ||
|
|
7fb60a185b | ||
|
|
0327ea972b | ||
|
|
561cc77ecc | ||
|
|
a1ab4acd14 | ||
|
|
d4939803da | ||
|
|
730ce3aca9 | ||
|
|
1893dc6afd | ||
|
|
6ec39314ee | ||
|
|
158cea51db | ||
|
|
33d34f35e9 | ||
|
|
1f4f40fd7c | ||
|
|
7c908b247e | ||
|
|
c87528939b | ||
|
|
41c822fde1 | ||
|
|
e56646105d | ||
|
|
b8a40d93f7 | ||
|
|
4bfc025248 | ||
|
|
36f6027b0e | ||
|
|
e032377e68 | ||
|
|
929eee4a12 | ||
|
|
61ce50264a | ||
|
|
48927b1207 | ||
|
|
0820893dc6 | ||
|
|
dd6079cfa6 | ||
|
|
2a6569742d | ||
|
|
3d7d75bae4 | ||
|
|
6da4d0ce5e | ||
|
|
4994d70b1a | ||
|
|
c873081dc3 | ||
|
|
070237f77f | ||
|
|
eb01b25f35 | ||
|
|
c0c9cfaf86 | ||
|
|
304f860eb2 | ||
|
|
2f18b25593 | ||
|
|
14c8b6a248 | ||
|
|
adaa683e58 | ||
|
|
9b71215cde | ||
|
|
8be572f976 | ||
|
|
4f43bcffb9 | ||
|
|
29e4dc5fb5 | ||
|
|
0dc95cb13c | ||
|
|
5ee0a93675 | ||
|
|
767b3c4a39 | ||
|
|
bb948a463c | ||
|
|
e4e9a03d0a | ||
|
|
50ba386f59 | ||
|
|
79d0565c2d | ||
|
|
bcc9b0a7b1 | ||
|
|
2c8f4940b9 | ||
|
|
41876cf8fd | ||
|
|
f6fd0b52f0 | ||
|
|
843faa7cc6 | ||
|
|
a8af2c3242 | ||
|
|
e5bfad974e | ||
|
|
59d87e0c94 | ||
|
|
50c2d04503 | ||
|
|
480de62686 | ||
|
|
955b501058 | ||
|
|
d985527624 | ||
|
|
afbe7f0e69 | ||
|
|
94e65ddce6 | ||
|
|
cb9f144255 | ||
|
|
ac84624faa | ||
|
|
c2196785e7 | ||
|
|
30097fbae6 | ||
|
|
c295dd5c62 | ||
|
|
373fef2824 | ||
|
|
cfc255bf2b | ||
|
|
ea7e58535b | ||
|
|
ea342a8e4f | ||
|
|
0b67dd1d05 | ||
|
|
1519faef81 | ||
|
|
9fad4a74ed | ||
|
|
24f023c8b3 | ||
|
|
3eb46114f8 | ||
|
|
6a5fd30531 | ||
|
|
96e83150e5 | ||
|
|
b2b65c65b9 | ||
|
|
5b028b4fa3 | ||
|
|
8f4e1b3409 | ||
|
|
ff209d0120 | ||
|
|
ea2fe618b5 | ||
|
|
3403cdf84b | ||
|
|
4f9a6f3a7b | ||
|
|
c8d6d233e5 | ||
|
|
0cfb65a19a | ||
|
|
384d917021 | ||
|
|
f1c8c67789 | ||
|
|
75e8f4ec6d | ||
|
|
d1d0323112 | ||
|
|
ab31dae582 | ||
|
|
64f176cedb | ||
|
|
9e921d6621 | ||
|
|
a4b98f2848 | ||
|
|
0d190e4a63 | ||
|
|
13cdb7cc35 | ||
|
|
ca60c467f3 | ||
|
|
01abba7d2c | ||
|
|
80074177fc | ||
|
|
bf67f8984a | ||
|
|
b2267c4b6c | ||
|
|
c80d69a31c | ||
|
|
1b7c3f0da3 | ||
|
|
c1ff6e1498 | ||
|
|
50c04ce71c | ||
|
|
bc6ff6bc8e | ||
|
|
93bcf2a7e8 | ||
|
|
c3b503adff | ||
|
|
ecdcbdda10 | ||
|
|
b97c9a5ed0 | ||
|
|
84a6843a7b | ||
|
|
17eed7467c | ||
|
|
310ffc849c | ||
|
|
3e6756160a | ||
|
|
563e809a2d | ||
|
|
86ec3f3bcd | ||
|
|
7b225cb824 | ||
|
|
562e0b06df | ||
|
|
51ce064507 | ||
|
|
ebaeff9b4d | ||
|
|
8889e799ca | ||
|
|
668705e475 | ||
|
|
e428e909bf | ||
|
|
d755c751c2 | ||
|
|
312c547412 | ||
|
|
48d30f2a3c | ||
|
|
d8ed30df14 | ||
|
|
50176cb267 | ||
|
|
5898d21857 | ||
|
|
e3839bc0b2 | ||
|
|
f97555d4a8 | ||
|
|
79bdca9769 | ||
|
|
138c2956ac | ||
|
|
ced457dd94 | ||
|
|
784fc6c6fa | ||
|
|
b4e0ec282f | ||
|
|
cbf7dfabcb | ||
|
|
b8eb55d965 | ||
|
|
30662a8110 | ||
|
|
69a273982f | ||
|
|
f817e6cb7f | ||
|
|
eef1b25e9f | ||
|
|
622de851fe | ||
|
|
8cecb61d28 | ||
|
|
77d8d27dfa | ||
|
|
340f259b17 | ||
|
|
5cf68a7f06 | ||
|
|
6a622565ca | ||
|
|
0ae5abcd0c | ||
|
|
b6cecb2125 | ||
|
|
3aa3a9c9a8 | ||
|
|
2c11ed43e4 | ||
|
|
23126aeb6d | ||
|
|
61fd67472b | ||
|
|
be0bee672e | ||
|
|
105c073e1f | ||
|
|
b695e3c646 | ||
|
|
33840dc5cd | ||
|
|
255f2f59fc | ||
|
|
200f3484b6 | ||
|
|
6a40eb48fe | ||
|
|
fb3e9ce9f3 | ||
|
|
91865460a2 | ||
|
|
644afe541e | ||
|
|
232303f06a | ||
|
|
280845610b | ||
|
|
6108c9d6d2 | ||
|
|
ce04e995ee | ||
|
|
d7fca09f0a | ||
|
|
917b77c8ad | ||
|
|
a2cd8ec19c | ||
|
|
6300d39065 | ||
|
|
2457079724 | ||
|
|
ba84e723e8 | ||
|
|
bf75e75d6f | ||
|
|
c3183a8bd7 | ||
|
|
7c162fc7ed | ||
|
|
529c5ac8d7 | ||
|
|
60e619e45e | ||
|
|
a89bdcdd3b | ||
|
|
09fbdf5541 | ||
|
|
0b517671cb | ||
|
|
a15dc3ed60 | ||
|
|
b7d60f4cb5 | ||
|
|
82a331a940 | ||
|
|
c31e688f11 | ||
|
|
0c887027d3 | ||
|
|
7c7df85d1a | ||
|
|
a7c025d927 | ||
|
|
424598b92f | ||
|
|
dc713c477b | ||
|
|
7e71edaee2 | ||
|
|
3f8925cbb0 | ||
|
|
5f9e24b314 | ||
|
|
dcd799ad85 | ||
|
|
ff0d7a4345 | ||
|
|
d68bad313e | ||
|
|
bd09917396 | ||
|
|
eeaa2fe882 | ||
|
|
32ac0e77fa | ||
|
|
947a1aa9f5 | ||
|
|
17a87f80e3 | ||
|
|
59f4dc8c78 | ||
|
|
6434a06c08 | ||
|
|
6133ab509d | ||
|
|
572a96328a | ||
|
|
a7ac3bec7f | ||
|
|
3e78f50a76 | ||
|
|
a4843e57cb | ||
|
|
d6d90dda58 | ||
|
|
c92c5e234c | ||
|
|
987f06d518 | ||
|
|
eaf7476785 | ||
|
|
3b39656280 | ||
|
|
5c559f921d | ||
|
|
77f6b3fcb8 | ||
|
|
f56ed7fd50 | ||
|
|
a470b579a9 | ||
|
|
a2eb7d44c0 | ||
|
|
dfc83a7aea | ||
|
|
71686e45e3 | ||
|
|
b0ac35a51b | ||
|
|
d836320b31 | ||
|
|
19e7c058c3 | ||
|
|
f1ae3607e4 | ||
|
|
d03bfaeb53 | ||
|
|
33f363cb31 | ||
|
|
cdb87b6a70 | ||
|
|
b5497d83a9 | ||
|
|
802b7c33b6 | ||
|
|
bb4f81fb84 | ||
|
|
10a02e98e9 | ||
|
|
32075ef758 | ||
|
|
998073ac7f | ||
|
|
93c7a5bdd2 | ||
|
|
3fb2ce47e9 | ||
|
|
61a8217d83 | ||
|
|
ad5e4341fa | ||
|
|
5b192795e6 | ||
|
|
5db9c5d31e | ||
|
|
ff469a386e | ||
|
|
3a90cf0e7b | ||
|
|
07dbad8c70 | ||
|
|
e8ba919661 | ||
|
|
390d92b16f | ||
|
|
d45d56f330 | ||
|
|
2e7cde3ca5 | ||
|
|
0594ea0b98 | ||
|
|
37d09781b4 | ||
|
|
b0f3a0ea30 | ||
|
|
8282abf264 | ||
|
|
4153b58502 | ||
|
|
b62b940cd4 | ||
|
|
ca9cf02361 | ||
|
|
e863ffd949 | ||
|
|
eb4bb3f238 | ||
|
|
d3d35bbea1 | ||
|
|
8eff6d80a2 | ||
|
|
77c8947ccd | ||
|
|
48556f6917 | ||
|
|
2e8dc4234f | ||
|
|
a6a60b6e71 | ||
|
|
eba9eaf37a | ||
|
|
ae31b1c23d | ||
|
|
535a0532df | ||
|
|
0579d242f6 | ||
|
|
b4910ed8f4 | ||
|
|
2bb1399ae7 | ||
|
|
062ada96ff | ||
|
|
bb94238e9c | ||
|
|
43a40c1f6b | ||
|
|
639866a9e1 | ||
|
|
05bbe6b799 | ||
|
|
e19b1c8bf0 | ||
|
|
0648d621b5 | ||
|
|
93c0de9ebb | ||
|
|
0220b3f3cd | ||
|
|
1af7f9388d | ||
|
|
76f0eaebce | ||
|
|
ae71957236 | ||
|
|
5004f0280e | ||
|
|
52967368ff | ||
|
|
8a63fa42ae | ||
|
|
05ecb92a88 | ||
|
|
829619d901 | ||
|
|
c74b60820b | ||
|
|
cd741fe7fd | ||
|
|
3b26cd845a | ||
|
|
d05cc3cd35 | ||
|
|
96dff832ba | ||
|
|
e43339613c | ||
|
|
e025bc2912 | ||
|
|
a4be636f9d | ||
|
|
a2bae6795f | ||
|
|
28d9bd0c73 | ||
|
|
8e12c9bef0 | ||
|
|
88926c3eef | ||
|
|
8dd774446b | ||
|
|
46cf112378 | ||
|
|
5d2520d057 | ||
|
|
a6ea89162a | ||
|
|
1039cf661d | ||
|
|
eaf9f0bbfa | ||
|
|
9e036176ef | ||
|
|
31e1edcc72 | ||
|
|
7d9d8d4a02 | ||
|
|
71cb43e751 | ||
|
|
f27e00500e | ||
|
|
617c0e3813 | ||
|
|
76634e3eed | ||
|
|
21c16b26c9 | ||
|
|
21536fb3ef | ||
|
|
7c0ee2429d | ||
|
|
9d6f43cfeb | ||
|
|
cdcb31cf2f | ||
|
|
e17f571dba | ||
|
|
629c48bba0 | ||
|
|
5078df6caf | ||
|
|
2c5c4d9714 | ||
|
|
316cd2c02c | ||
|
|
e56f08505f | ||
|
|
58a1f9e275 | ||
|
|
bfdf54db67 | ||
|
|
df8598a6f4 | ||
|
|
4ca9e74249 | ||
|
|
33caeeaf1d | ||
|
|
53a8c3ecc8 | ||
|
|
0ddb7f971d | ||
|
|
fabe066f94 | ||
|
|
5672bc0fb2 | ||
|
|
c77f43e7c7 | ||
|
|
d47ad34909 | ||
|
|
96f731e9c9 | ||
|
|
1b9376a9f5 | ||
|
|
1425ee0048 | ||
|
|
3a014b2a13 | ||
|
|
38c4e6bebc | ||
|
|
171404bf43 | ||
|
|
73b1adce1b | ||
|
|
90f55821e0 | ||
|
|
fee8009f38 | ||
|
|
8d698aeacd | ||
|
|
fbd588444f | ||
|
|
5735769ee7 | ||
|
|
150f9190d5 | ||
|
|
6a1e8a0c22 | ||
|
|
66fca4a921 | ||
|
|
9a2accc74b | ||
|
|
5584b5ec3a | ||
|
|
3b4121f59a | ||
|
|
35eb6c2974 | ||
|
|
e51deac151 | ||
|
|
c9bb160291 | ||
|
|
586979644c | ||
|
|
0d376eaa1d | ||
|
|
086c3d1a24 | ||
|
|
91e75561a3 | ||
|
|
979bf26441 | ||
|
|
49844ddd9b | ||
|
|
d095ebb2f3 | ||
|
|
36f473508a | ||
|
|
5eb2810352 | ||
|
|
ee9e3a6673 | ||
|
|
81a6bd528d | ||
|
|
0cd32c97c4 | ||
|
|
9bef55c63e | ||
|
|
9b8686c25f | ||
|
|
7130760114 | ||
|
|
c6390874a2 | ||
|
|
bf758dcd32 | ||
|
|
2258ffa5eb | ||
|
|
20b8e8db8b | ||
|
|
0738d965fd | ||
|
|
a3a421410f | ||
|
|
1921bef0ea | ||
|
|
70270830dc | ||
|
|
d57f465e60 | ||
|
|
03c38e3454 | ||
|
|
be7d632cba | ||
|
|
8c0a85abf4 | ||
|
|
497e8c06f1 | ||
|
|
c1bf84605c | ||
|
|
e362f12394 | ||
|
|
02d201a2f1 | ||
|
|
48915cc6ad | ||
|
|
02b065cc2c | ||
|
|
a255597bc0 | ||
|
|
29858e8b10 | ||
|
|
972cfb265b | ||
|
|
5e8a3afe61 | ||
|
|
700decb2e0 | ||
|
|
8368055397 | ||
|
|
0d0f1f1c0c | ||
|
|
db68ae5cea | ||
|
|
0fd7c4aa4f | ||
|
|
8592e6ef60 | ||
|
|
e9fb02220a | ||
|
|
aa54a0cd98 | ||
|
|
eb724c8753 | ||
|
|
1bb0caa704 | ||
|
|
5bf2bc4a7b | ||
|
|
70fd7ef89d | ||
|
|
50d8e79571 | ||
|
|
c236ddd967 | ||
|
|
b551518911 | ||
|
|
1be49b06f3 | ||
|
|
200a9c6318 | ||
|
|
9f10106d75 | ||
|
|
6d4ff752a0 | ||
|
|
29ecae66a9 | ||
|
|
9c5f50d0a6 | ||
|
|
8fcc9ac1e2 | ||
|
|
8d83b3b1e7 | ||
|
|
155570b6bf | ||
|
|
831dc35935 | ||
|
|
b641f1b67c | ||
|
|
3c4906b8ac | ||
|
|
a575bc92cc | ||
|
|
7794e9ccd2 | ||
|
|
4f5301a7e0 | ||
|
|
6842936a75 | ||
|
|
a0bf6599fa | ||
|
|
c0384949a3 | ||
|
|
371f4b128e | ||
|
|
29fc776293 | ||
|
|
bbdf87190c | ||
|
|
02a448f284 | ||
|
|
8665878b04 | ||
|
|
c23812941b | ||
|
|
fdac774745 | ||
|
|
0a38b65ded | ||
|
|
a7f44c8dd1 | ||
|
|
2444bd3c2d | ||
|
|
27f74844cc | ||
|
|
d041712bd8 | ||
|
|
ef0f2024c2 | ||
|
|
bef3b3ba62 | ||
|
|
037aee7c59 | ||
|
|
0e3c13099b | ||
|
|
8e3515bc34 | ||
|
|
c736de7875 | ||
|
|
42375d143e | ||
|
|
7e6d7aed20 | ||
|
|
ea68d0c28f | ||
|
|
9cc82aedf2 | ||
|
|
c52abce656 | ||
|
|
65d8368ad4 | ||
|
|
cf2f223ad4 | ||
|
|
daae1aec6c | ||
|
|
59bcd24c47 | ||
|
|
44e224489b | ||
|
|
8134e0223f | ||
|
|
482249a05b | ||
|
|
d0998dc093 | ||
|
|
848bb01c10 | ||
|
|
e39eb76aca | ||
|
|
d6d2a55747 | ||
|
|
355fa1a622 | ||
|
|
fb007b8835 | ||
|
|
256f5fcd0e | ||
|
|
e698c950a3 | ||
|
|
d0b9c3c118 | ||
|
|
24358ca1a9 | ||
|
|
6a21c94a0c | ||
|
|
2d39a1e4b8 | ||
|
|
e97a8da721 | ||
|
|
665aaa3af9 | ||
|
|
17fe1da4ed | ||
|
|
cb6c94b4f9 | ||
|
|
6fd6765bee | ||
|
|
66b7019da9 | ||
|
|
2c11624e32 | ||
|
|
e44d7e6d49 | ||
|
|
261911f6de | ||
|
|
fe714a9003 | ||
|
|
e8501a658b | ||
|
|
3fb4830456 | ||
|
|
39982b507a | ||
|
|
4bd4f3ac68 | ||
|
|
8533ef7739 | ||
|
|
bd6d61c8c7 | ||
|
|
7045ffbdb8 | ||
|
|
9e47f4a7c3 | ||
|
|
c886e49682 | ||
|
|
8fdec8e816 | ||
|
|
131387d0ff | ||
|
|
f4a2b83afc | ||
|
|
1c02ad6b4c | ||
|
|
d93890ddcb | ||
|
|
ca530159bb | ||
|
|
b76b747235 | ||
|
|
67896b7d3a | ||
|
|
3b598a6f45 | ||
|
|
62466123ff | ||
|
|
14163a0791 | ||
|
|
52a8a175a6 | ||
|
|
0a83b0826a | ||
|
|
d854cd7024 | ||
|
|
7ac8d7a43a | ||
|
|
b012618968 | ||
|
|
fba59ff347 | ||
|
|
60caac5139 | ||
|
|
27d2742386 | ||
|
|
5ef25cfa6f | ||
|
|
17e3dfe2bb | ||
|
|
307e438a1e | ||
|
|
89489f7c7f | ||
|
|
923a4706a0 | ||
|
|
2594c7179e | ||
|
|
a334ff33cd | ||
|
|
0e2289caa6 | ||
|
|
be26968237 | ||
|
|
b0c1ecfdc5 | ||
|
|
b4d5dcbf57 | ||
|
|
3161ba8983 | ||
|
|
022f1ededc | ||
|
|
70a19dd95d | ||
|
|
00b3f5b9f5 | ||
|
|
8b0bb413d8 | ||
|
|
bd5e7d94fe | ||
|
|
d43b2364a0 | ||
|
|
610e73d9e3 | ||
|
|
6f2a454d46 | ||
|
|
4edce29d53 | ||
|
|
ed2b8dd129 | ||
|
|
42cdb36a51 | ||
|
|
159c22ac21 | ||
|
|
75b6833245 | ||
|
|
b567717c75 | ||
|
|
b2af829e2e | ||
|
|
6e81714937 | ||
|
|
cb9474d8d0 | ||
|
|
be47e4c050 | ||
|
|
c301898147 | ||
|
|
8324561022 | ||
|
|
834d630ef7 | ||
|
|
c6259adad1 | ||
|
|
9d1be34958 | ||
|
|
ce4e64ec40 | ||
|
|
92125b49f0 | ||
|
|
b017466270 | ||
|
|
568d2304ea | ||
|
|
5dc1b245d0 | ||
|
|
978d95b351 | ||
|
|
90079c9dfe | ||
|
|
57dec7e211 | ||
|
|
fa75c853a7 | ||
|
|
0887a57e29 | ||
|
|
18901dcd44 | ||
|
|
a6e0fbd5e6 | ||
|
|
c07d0353f0 | ||
|
|
caecbe5b63 | ||
|
|
077cab656b | ||
|
|
95d7a7e860 | ||
|
|
77a77c34b8 | ||
|
|
fa78cc2a9f | ||
|
|
03f18af66f | ||
|
|
4e21145808 | ||
|
|
258557ee5d | ||
|
|
88ad420716 | ||
|
|
4828e40f0d | ||
|
|
5be29f5a07 | ||
|
|
48ac99a29b | ||
|
|
2c4f2139dd | ||
|
|
47236c1e6c | ||
|
|
5d8996dc38 | ||
|
|
9feff84125 | ||
|
|
c0fc62a1d6 | ||
|
|
6b06d58759 | ||
|
|
d06f2a2d18 | ||
|
|
7c5dca202e | ||
|
|
055e006c27 | ||
|
|
2f11451f9d | ||
|
|
5b8d5ca72a | ||
|
|
40cd8b65d7 | ||
|
|
3ec6bb84ee | ||
|
|
180c870208 | ||
|
|
5a81d02271 | ||
|
|
465abf47c8 | ||
|
|
54544c2683 | ||
|
|
cf41b8745a | ||
|
|
1a1fc8604a | ||
|
|
b9ecf20596 | ||
|
|
1326e8470a | ||
|
|
68ae03ef85 | ||
|
|
8750c30b7d | ||
|
|
869945e68c | ||
|
|
c263881586 | ||
|
|
b56c82cefb | ||
|
|
7d936041c0 | ||
|
|
8208def57a | ||
|
|
a0ead808d5 | ||
|
|
95e7464962 | ||
|
|
21a299cb2b | ||
|
|
4f644ee1fe | ||
|
|
0f7528b73b | ||
|
|
354262ba9b | ||
|
|
7790674d9d | ||
|
|
707fb53dda | ||
|
|
6f356f8390 | ||
|
|
dc2530957f | ||
|
|
e88dcae1a0 | ||
|
|
a5fff878c5 | ||
|
|
d71d66e8be | ||
|
|
54275a8870 | ||
|
|
90eda82045 | ||
|
|
6816dc4f75 | ||
|
|
c17ad0ef2d | ||
|
|
3f71f58454 | ||
|
|
b2055ad44f | ||
|
|
b3eefc9e25 | ||
|
|
41baee7b43 | ||
|
|
fc7d6589bf | ||
|
|
e0e94e482a | ||
|
|
c5964c270d | ||
|
|
69c850d1ac | ||
|
|
004d0146b7 | ||
|
|
cee9c81496 | ||
|
|
1c01097491 | ||
|
|
ae08438b7b | ||
|
|
440b60bdba | ||
|
|
d83bab55aa | ||
|
|
e1f582bcfc | ||
|
|
e50f95abb3 | ||
|
|
4e16a8b6f9 | ||
|
|
cf1ec16fdd | ||
|
|
e23f5cb159 | ||
|
|
4d07171aaa | ||
|
|
7c50662ef6 | ||
|
|
90126b4d29 | ||
|
|
7580af1b5f | ||
|
|
8188203aed | ||
|
|
d91f5461d5 | ||
|
|
066b18c792 | ||
|
|
91de1004e6 | ||
|
|
fecd2d7111 | ||
|
|
07dd0884f3 | ||
|
|
a1fb97bd90 | ||
|
|
2e002d76b2 | ||
|
|
aa13742c9a | ||
|
|
7effcb3aac | ||
|
|
19a4610373 | ||
|
|
4cdbbaa35d | ||
|
|
e2a8ba7f0c | ||
|
|
1923e14ac4 | ||
|
|
6d1869af61 | ||
|
|
6e005a0c62 | ||
|
|
5d88558b36 | ||
|
|
2770634627 | ||
|
|
1602ab2355 | ||
|
|
7a37cb6f0b | ||
|
|
4d6de7500e | ||
|
|
13d36de121 | ||
|
|
ae992ed366 | ||
|
|
c03b16a6e8 | ||
|
|
7823291b44 | ||
|
|
59d79cc329 | ||
|
|
c24ebf3427 | ||
|
|
434d5be26c | ||
|
|
f904ceae7a | ||
|
|
9e62eefee0 | ||
|
|
7fdb31abf0 | ||
|
|
e1d4e2f526 | ||
|
|
f18e317dcf | ||
|
|
e143a286ef | ||
|
|
faa9c26283 | ||
|
|
da182f5539 | ||
|
|
ced51e37b4 | ||
|
|
f61134fd69 | ||
|
|
578f60ba91 | ||
|
|
02effac75c | ||
|
|
72f4b21aea | ||
|
|
1aa59afaf0 | ||
|
|
45df3ed168 | ||
|
|
b344972931 | ||
|
|
7886a816b2 | ||
|
|
4722730aff | ||
|
|
27a2c6192f | ||
|
|
db77d133dc | ||
|
|
000ebfaf2f | ||
|
|
a47001516d | ||
|
|
fa9901271a | ||
|
|
913e8c355b | ||
|
|
aeef2f8948 | ||
|
|
9be8e2b5b9 | ||
|
|
99b68801d9 | ||
|
|
4c766298f1 | ||
|
|
2618d09ef8 | ||
|
|
2bef98408c | ||
|
|
dbf90d4f37 | ||
|
|
1e378dd1dd | ||
|
|
fa51c25919 | ||
|
|
c880f49b81 | ||
|
|
1835220ba3 | ||
|
|
813126cecb | ||
|
|
86dbd3a03a | ||
|
|
948c2cd021 | ||
|
|
f9ca77a982 | ||
|
|
2aa45b8794 | ||
|
|
3a056dc844 | ||
|
|
2b2fc27899 | ||
|
|
35d5eb1713 | ||
|
|
86fab38407 | ||
|
|
866fe5cc8d | ||
|
|
2845f8543c | ||
|
|
011699d58f | ||
|
|
ddd37f5bee | ||
|
|
44202b5c4d | ||
|
|
b157d07b6d | ||
|
|
31d30a9115 | ||
|
|
cc7ee5acc0 | ||
|
|
35bcb627c2 | ||
|
|
a7882fadba | ||
|
|
fe4525b441 | ||
|
|
e17594a7aa | ||
|
|
416357bf27 | ||
|
|
ae021ea930 | ||
|
|
32735a5e06 | ||
|
|
5b1d26263b | ||
|
|
84be5bc732 | ||
|
|
bf1dee2bc4 | ||
|
|
e0aadacf93 | ||
|
|
35481682a9 | ||
|
|
64291d336c | ||
|
|
3fe1ee4bd8 | ||
|
|
130a8d0f00 | ||
|
|
36c4596a08 | ||
|
|
ebad3812e4 | ||
|
|
004c1c915f | ||
|
|
39bd13a6ca | ||
|
|
f10ac679e2 | ||
|
|
8d49012d64 | ||
|
|
91392c1e83 | ||
|
|
65bb31e92a | ||
|
|
c06fa72936 | ||
|
|
a1adb1eb43 | ||
|
|
778ddb0e75 | ||
|
|
e919a026b7 | ||
|
|
a78f78604a | ||
|
|
eeea093bb8 | ||
|
|
b795c62ab7 | ||
|
|
b7c7b268d4 | ||
|
|
f7b9351e38 | ||
|
|
4e205d078d | ||
|
|
16016cb13d | ||
|
|
4754fff89b | ||
|
|
f88ed69f1f | ||
|
|
2e7f7cf642 | ||
|
|
60f9403657 | ||
|
|
4c9974f7eb | ||
|
|
eace5c5543 | ||
|
|
f6d16ea4d9 | ||
|
|
ac2f11360c | ||
|
|
48a5eee9ab | ||
|
|
380156aa4b | ||
|
|
d4cd8a228f | ||
|
|
6081f1d5ff | ||
|
|
0139967b29 | ||
|
|
0a30a42b2e | ||
|
|
ff54bfa5b3 | ||
|
|
22445f6df9 | ||
|
|
272aa9513a | ||
|
|
4b1abfc60f | ||
|
|
b3130f38f2 | ||
|
|
32fdbaccc3 | ||
|
|
8a4d3f5d80 | ||
|
|
920af04b04 | ||
|
|
7d13d22650 | ||
|
|
6c17725823 | ||
|
|
f3b1ddf439 | ||
|
|
c7de374943 | ||
|
|
1bb6345fcb | ||
|
|
cbc5e8aea1 | ||
|
|
7ebb888c31 | ||
|
|
93c6a03287 | ||
|
|
ae97fbbcc3 | ||
|
|
7ef381f1a4 | ||
|
|
70fad46534 | ||
|
|
cb8d253dc5 | ||
|
|
cacab1e039 | ||
|
|
0bf49ebe9a | ||
|
|
fa9b1933fa | ||
|
|
444f676d2d | ||
|
|
2ccba4b345 | ||
|
|
0b76e86ace | ||
|
|
f40a86e744 | ||
|
|
5b594a4a7b | ||
|
|
ea857b9c7b | ||
|
|
14a11f06e5 | ||
|
|
987c89774c | ||
|
|
52d0c44014 | ||
|
|
e70d188b82 | ||
|
|
9419c4b796 | ||
|
|
58c6aba6af | ||
|
|
d09ae1a66e | ||
|
|
12717d13de | ||
|
|
b363a05a7d | ||
|
|
318515db6f | ||
|
|
da7ff06734 | ||
|
|
86f4a2743a | ||
|
|
f86a1a0002 | ||
|
|
e5d4a5f061 | ||
|
|
7be884b138 | ||
|
|
4eacdeec5e | ||
|
|
8a9a5919f2 | ||
|
|
442883c377 | ||
|
|
33939917c0 | ||
|
|
e1721bf337 | ||
|
|
5081ede268 | ||
|
|
393416a925 | ||
|
|
34ec791ba3 | ||
|
|
f4b80d4d80 | ||
|
|
fcbc1773ad | ||
|
|
4d971be732 | ||
|
|
deff56db29 | ||
|
|
5b78a02a53 | ||
|
|
9c5420c79c | ||
|
|
bd58802ed6 | ||
|
|
71504d0ded | ||
|
|
3aff7693c7 | ||
|
|
b46f426f30 | ||
|
|
70652d445c | ||
|
|
35f96b28bc | ||
|
|
dd40bb3850 | ||
|
|
849c0cbd49 | ||
|
|
201d613ac1 | ||
|
|
8897ecd0d5 | ||
|
|
784a8e625f | ||
|
|
770cc2cd72 | ||
|
|
fa620be738 | ||
|
|
34893e7847 | ||
|
|
c49d5b4ffa | ||
|
|
c37387db64 | ||
|
|
83b626b77e | ||
|
|
45932d9189 | ||
|
|
fe01820f3f | ||
|
|
2ad4436cef | ||
|
|
5b8fb49d4c | ||
|
|
dca0240c13 | ||
|
|
ce692df94f | ||
|
|
dbcf2acce4 | ||
|
|
3bc628417f | ||
|
|
45b286206f | ||
|
|
bdc9b78ec8 | ||
|
|
e23c11f15a | ||
|
|
6865d25035 | ||
|
|
bfcc75f754 | ||
|
|
25289ed4c5 | ||
|
|
2c32cbfbfd | ||
|
|
310d664fdc | ||
|
|
74dce4b70a | ||
|
|
187963cc38 | ||
|
|
afd618c61a | ||
|
|
4196ec5093 | ||
|
|
49d28f1eeb | ||
|
|
90640c9378 | ||
|
|
bf0e9fb107 | ||
|
|
eba0bf8f41 | ||
|
|
66dc40f6e2 | ||
|
|
caa0caf297 | ||
|
|
e6a36178ff | ||
|
|
263cc2df2a | ||
|
|
da556e0546 | ||
|
|
3180ae1a41 | ||
|
|
b3bf33f488 | ||
|
|
58081ed0ef | ||
|
|
f80111299f | ||
|
|
f5dd1722f5 | ||
|
|
4237ce9b3c | ||
|
|
b3f3a307ba | ||
|
|
381e84e649 | ||
|
|
4ccddf839f | ||
|
|
f40ee92826 | ||
|
|
686c774e0f | ||
|
|
13b28e6f1c | ||
|
|
7fe0609e9e | ||
|
|
b24aec26c0 | ||
|
|
c465d303e5 | ||
|
|
13e80db668 | ||
|
|
712e3df4b8 | ||
|
|
98d22523be | ||
|
|
6326360595 | ||
|
|
7cfbddfd35 | ||
|
|
92eb6dab2f | ||
|
|
7cebdc7270 | ||
|
|
f9094223ba | ||
|
|
849e0964ba | ||
|
|
096ed14978 | ||
|
|
d04196ec7c | ||
|
|
bf7f6054c6 | ||
|
|
afe745dc44 | ||
|
|
5032bc4da7 | ||
|
|
10c19bbb94 | ||
|
|
7519eb1f43 | ||
|
|
95b800638b | ||
|
|
ff9a3a55e2 | ||
|
|
56b4e50aab | ||
|
|
32d513a74f | ||
|
|
8ce4768aa6 | ||
|
|
13128d354d | ||
|
|
31b41cacba | ||
|
|
ddaf190c3c | ||
|
|
e873009aeb | ||
|
|
7ec3abb069 | ||
|
|
5b628c2f48 | ||
|
|
dcb2300699 | ||
|
|
cfd69d1603 | ||
|
|
f816bc23e9 | ||
|
|
8601730dd8 | ||
|
|
336342c72e | ||
|
|
357763ff55 | ||
|
|
45b757697a | ||
|
|
a9a0d6233e | ||
|
|
91dbf51d8b | ||
|
|
af79066c26 | ||
|
|
c5f6676ac2 | ||
|
|
906d2a4168 | ||
|
|
b85b4a7f72 | ||
|
|
3b360c807e | ||
|
|
d0bec7db4d | ||
|
|
7af5d8debd | ||
|
|
e7603a78d0 | ||
|
|
3a728df3b1 | ||
|
|
417fa314b4 | ||
|
|
73cfd71bd4 | ||
|
|
3a092012bb | ||
|
|
415abd13c9 | ||
|
|
e94eac77eb | ||
|
|
25b11349a4 | ||
|
|
4ea8e15710 | ||
|
|
890562e810 | ||
|
|
9b4d38ed3c | ||
|
|
33c33431f9 | ||
|
|
53d3e0db88 | ||
|
|
94e4556bee | ||
|
|
1ad9dd4a28 | ||
|
|
e15f0e07dd | ||
|
|
eda734e728 | ||
|
|
205c6e9ed2 | ||
|
|
5132327d62 | ||
|
|
55e0200fb6 | ||
|
|
fefd6699f3 | ||
|
|
963840612c | ||
|
|
fd8e567c60 | ||
|
|
69d02b8abb | ||
|
|
ccf721fd6c | ||
|
|
98c4bb2c4f | ||
|
|
55bd13c3f2 | ||
|
|
95c5256fe3 | ||
|
|
f8de555032 | ||
|
|
060d27f57a | ||
|
|
917d3a4ded | ||
|
|
13b75dea27 | ||
|
|
9487cd2b0b | ||
|
|
20dbe1bde6 | ||
|
|
c7f42cfca8 | ||
|
|
3f9585b1fb | ||
|
|
e021663975 | ||
|
|
8c1cca0d57 | ||
|
|
6d74480998 | ||
|
|
31bad3a1e1 | ||
|
|
f0ccf6c3a5 | ||
|
|
367b13cdad | ||
|
|
47ac879ed9 | ||
|
|
28a50c00bb | ||
|
|
6ceb74cb33 | ||
|
|
9f682cded0 | ||
|
|
40ddc506a7 | ||
|
|
74d5144892 | ||
|
|
ea2f2ba213 | ||
|
|
970a5e19d0 | ||
|
|
3786660ecd | ||
|
|
c0d72d25f8 | ||
|
|
b69d7f9729 | ||
|
|
03a934a8e9 | ||
|
|
215df5cc03 | ||
|
|
cfcdbffa7f | ||
|
|
7b32b75052 | ||
|
|
f6549aca76 | ||
|
|
4ce3cff2bf | ||
|
|
c4c8b8c9e1 | ||
|
|
23ce30a7fc | ||
|
|
2fd23af04a | ||
|
|
33534d50cd | ||
|
|
79aed6b7b0 | ||
|
|
740ef8a2d7 | ||
|
|
68efd8f3d0 | ||
|
|
6fe6e83cb9 | ||
|
|
7ed7ac817d | ||
|
|
dc39f8fe76 | ||
|
|
519cbfe38b | ||
|
|
f1fd5f2aa6 | ||
|
|
2b5d06a6dc | ||
|
|
ef13d04a98 | ||
|
|
fb3f3c7405 | ||
|
|
a9df13e4d7 | ||
|
|
a46c5383cd | ||
|
|
a133a94dbe | ||
|
|
bf5cab0062 | ||
|
|
4e64838613 | ||
|
|
2f894a5f2f | ||
|
|
3903f6c709 | ||
|
|
78ab61ec0c | ||
|
|
be8a5f535c | ||
|
|
53a5762f98 | ||
|
|
85c92935d3 | ||
|
|
ed51a60dfe | ||
|
|
6ad7771fed | ||
|
|
63f87cdb18 | ||
|
|
73f670212e | ||
|
|
7418c6db73 | ||
|
|
6892db0056 | ||
|
|
2f6bd2c287 | ||
|
|
4bff954c3b | ||
|
|
e70f535ad3 | ||
|
|
da66981a1f | ||
|
|
ab9ba94dbf | ||
|
|
0d15b9117f | ||
|
|
4de8e8e291 | ||
|
|
ced99152a1 | ||
|
|
c30cd23b89 | ||
|
|
1e58173241 | ||
|
|
062d7d3f71 | ||
|
|
284983a4a7 | ||
|
|
b590762259 | ||
|
|
1763eb2f17 | ||
|
|
5be2ca8efc | ||
|
|
826b3d6803 | ||
|
|
6852463b53 | ||
|
|
9546f6069c | ||
|
|
d65955647c | ||
|
|
5200ff8e84 | ||
|
|
f1a667ae2e | ||
|
|
82682ece5e | ||
|
|
61f9184728 | ||
|
|
a220be8136 | ||
|
|
11b2096dba | ||
|
|
8370248390 | ||
|
|
f528269bc6 | ||
|
|
d551531603 | ||
|
|
3b50bd8509 | ||
|
|
8bc73a0101 | ||
|
|
419c15d0c3 | ||
|
|
be90776588 | ||
|
|
7c8cc16768 | ||
|
|
1596b0addc | ||
|
|
886bbe1111 | ||
|
|
de266f12a4 | ||
|
|
f9a5bc00e7 | ||
|
|
356c122767 | ||
|
|
e9b94033c5 | ||
|
|
8e1385e4e1 | ||
|
|
e881ed0d9a | ||
|
|
26d03d49b1 | ||
|
|
082a3b21e1 | ||
|
|
15e6e8435a | ||
|
|
2d67067159 | ||
|
|
3fb3aaad2a | ||
|
|
616479c4fc | ||
|
|
9b4c732dca | ||
|
|
249be00463 | ||
|
|
febcccc670 | ||
|
|
2d4eed726f | ||
|
|
98de7888cd | ||
|
|
24eb376bed | ||
|
|
75fbc0f939 | ||
|
|
c8c1993db3 | ||
|
|
628cb33e44 | ||
|
|
8160df000b | ||
|
|
d0a39ef32f | ||
|
|
f6e7019b51 | ||
|
|
b7d82cddbc | ||
|
|
22ce6fbf09 | ||
|
|
c202394c3c | ||
|
|
900f415c6b | ||
|
|
38a4fd5fbc | ||
|
|
9f629132e4 | ||
|
|
32ba7895a3 | ||
|
|
65627da72b | ||
|
|
00de654ca5 | ||
|
|
0f5ca758b8 | ||
|
|
857a5b4d52 | ||
|
|
3757da0f5f | ||
|
|
4befd155a1 | ||
|
|
bb7c2390b1 | ||
|
|
c70d30744c | ||
|
|
4b49bb6d18 | ||
|
|
58481c81a0 | ||
|
|
465ed569a1 | ||
|
|
547a159fb3 | ||
|
|
ea4fc32e60 | ||
|
|
47db118c21 | ||
|
|
a1ff484c85 | ||
|
|
6ebedb9219 | ||
|
|
c717bed4fb | ||
|
|
170bff5a3f | ||
|
|
41ea121377 | ||
|
|
b55615fffa | ||
|
|
b3de48fdd2 | ||
|
|
f58eda97c8 | ||
|
|
7958aa3881 | ||
|
|
ad69ab7579 | ||
|
|
8b88be5742 | ||
|
|
6f31dae429 | ||
|
|
e67ac4c3ad | ||
|
|
a52984f515 | ||
|
|
746dbc2533 | ||
|
|
b2c462fbaa | ||
|
|
42171e5680 | ||
|
|
10ddc61fb7 | ||
|
|
ae1d3d9c09 | ||
|
|
990caaa75d | ||
|
|
00dc6fe775 | ||
|
|
3fa9f258d7 | ||
|
|
33fd60e743 | ||
|
|
fbac63085f | ||
|
|
35ce221cab | ||
|
|
4599d76ce4 | ||
|
|
6a6632e363 | ||
|
|
5c18dd0603 | ||
|
|
245c48d78f | ||
|
|
e5d880b516 | ||
|
|
ff02161062 | ||
|
|
0475610f59 | ||
|
|
215b94046a | ||
|
|
a1236d855b | ||
|
|
0f835fd3ba | ||
|
|
cbb0d1a05e | ||
|
|
7bb7386c83 | ||
|
|
48bef164ef | ||
|
|
434c1ef275 | ||
|
|
6772b08745 | ||
|
|
7c8d560f9e | ||
|
|
29d3e4fd5b | ||
|
|
db0e95deac | ||
|
|
b8748916a7 | ||
|
|
e7c5a20ab0 | ||
|
|
bac754ac4b | ||
|
|
e028215718 | ||
|
|
908a0929f0 | ||
|
|
6565ad8e96 | ||
|
|
c0819a83f0 | ||
|
|
d35f017db5 | ||
|
|
3b8da702a7 | ||
|
|
24c24f40ab | ||
|
|
865a888363 | ||
|
|
1cd56cb6d1 | ||
|
|
f10ef8fd70 | ||
|
|
cdff9e28a1 | ||
|
|
ca2924510a | ||
|
|
42cbbbfc3a | ||
|
|
d8d1daca67 | ||
|
|
1aa021b157 | ||
|
|
5e99c45fa1 | ||
|
|
687a601772 | ||
|
|
4bc2880505 | ||
|
|
0f474d7f3e | ||
|
|
fe5342d63c | ||
|
|
2f9de59b79 | ||
|
|
18d18118a0 | ||
|
|
b074b5ac70 | ||
|
|
a38231fb1b | ||
|
|
740abc1e70 | ||
|
|
2761dfb06f | ||
|
|
93ce46bb7c | ||
|
|
7e23fca598 | ||
|
|
472e14f339 | ||
|
|
0c2631622e | ||
|
|
2285034a62 | ||
|
|
49e28839f7 | ||
|
|
b2533565ad | ||
|
|
a96a1730a1 | ||
|
|
d027d7e099 | ||
|
|
cf5a5564ca | ||
|
|
e183067257 | ||
|
|
7ab15f7f89 | ||
|
|
1a91f0cbcb | ||
|
|
30241e0837 | ||
|
|
aea098b668 | ||
|
|
c34948190a | ||
|
|
95a441b5b1 | ||
|
|
21b9b1d7f1 | ||
|
|
bd36a6d528 | ||
|
|
aca77e1279 | ||
|
|
f7b604cb9b | ||
|
|
9c5cfd6bca | ||
|
|
f657ecac6f | ||
|
|
69aaca33a5 | ||
|
|
08168a7877 | ||
|
|
9054f48f88 | ||
|
|
fbe6b5a3a3 | ||
|
|
b114f4ee96 | ||
|
|
8af5634431 | ||
|
|
1b61598149 | ||
|
|
2cfc180df7 | ||
|
|
4d20e8fb28 | ||
|
|
8f3d570bf6 | ||
|
|
276b19bf09 | ||
|
|
b0ebbdd7ff | ||
|
|
5014de6d9d | ||
|
|
6dc9843aa9 | ||
|
|
ad6e3dee6c | ||
|
|
e0e51835b5 | ||
|
|
7bccc2fbdb | ||
|
|
c2da601722 | ||
|
|
e8fea2e969 | ||
|
|
ebe23989a7 | ||
|
|
278a2dfc07 | ||
|
|
1fb93ea73d | ||
|
|
bfc5aaa2de | ||
|
|
183fbafaae | ||
|
|
470f15fd3c | ||
|
|
d8a5209ec4 | ||
|
|
99c6b4552a | ||
|
|
d69bf5d76f | ||
|
|
ac484e36fa | ||
|
|
dc88cbd902 | ||
|
|
fb277e9e49 | ||
|
|
8c6e4ecefc | ||
|
|
582393a462 | ||
|
|
c118bacffd | ||
|
|
0c1a08b231 | ||
|
|
b88f13ee32 | ||
|
|
63be2c28e9 | ||
|
|
5e80e402ee | ||
|
|
9e2400de69 | ||
|
|
82dfcdd5df | ||
|
|
44b9946bb0 | ||
|
|
6efd4023fd | ||
|
|
b5ea2127d9 | ||
|
|
fe1184b0d3 |
9
.editorconfig
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*.java]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
[*.kt]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
14
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "gradle"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
day: "wednesday"
|
||||||
|
- package-ecosystem: "maven"
|
||||||
|
directory: "/.teamcity/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
day: "wednesday"
|
||||||
67
.github/workflows/codeql-analysis.yml
vendored
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# For most projects, this workflow file will not need changing; you simply need
|
||||||
|
# to commit it to your repository.
|
||||||
|
#
|
||||||
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
|
# or to provide custom queries or build logic.
|
||||||
|
#
|
||||||
|
# ******** NOTE ********
|
||||||
|
# We have attempted to detect the languages in your repository. Please check
|
||||||
|
# the `language` matrix defined below to confirm you have the correct set of
|
||||||
|
# supported CodeQL languages.
|
||||||
|
#
|
||||||
|
name: "CodeQL"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
# The branches below must be a subset of the branches above
|
||||||
|
branches: [ master ]
|
||||||
|
schedule:
|
||||||
|
- cron: '44 12 * * 4'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language: [ 'java' ]
|
||||||
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||||
|
# Learn more:
|
||||||
|
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v1
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
# By default, queries listed here will override any specified in a config file.
|
||||||
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
|
||||||
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
|
- name: Autobuild
|
||||||
|
uses: github/codeql-action/autobuild@v1
|
||||||
|
|
||||||
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
|
# 📚 https://git.io/JvXDl
|
||||||
|
|
||||||
|
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||||
|
# and modify them (or add more) to build your code if your project
|
||||||
|
# uses a compiled language
|
||||||
|
|
||||||
|
#- run: |
|
||||||
|
# make bootstrap
|
||||||
|
# make release
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v1
|
||||||
43
.github/workflows/mergePr.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
|
||||||
|
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle
|
||||||
|
|
||||||
|
name: Update Changelog On PR
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
types: [ closed ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
if: github.event.pull_request.merged == true
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 50
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
|
||||||
|
settings-path: ${{ github.workspace }} # location for the settings.xml file
|
||||||
|
|
||||||
|
- name: Update authors
|
||||||
|
id: update_authors
|
||||||
|
run: ./gradlew updateMergedPr -PprId=${{ github.event.number }}
|
||||||
|
env:
|
||||||
|
GITHUB_OAUTH: ${{ secrets.MERGE_PR }}
|
||||||
|
|
||||||
|
- name: Commit changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
branch: master
|
||||||
|
commit_message: Update changelog after merging PR
|
||||||
|
commit_user_name: Alex Plate
|
||||||
|
commit_user_email: aleksei.plate@jetbrains.com
|
||||||
|
commit_author: Alex Plate <aleksei.plate@jetbrains.com>
|
||||||
|
file_pattern: CHANGES.md
|
||||||
40
.github/workflows/mergePrTest.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
|
||||||
|
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle
|
||||||
|
|
||||||
|
name: Update Changelog On PR (Test)
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 50
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
|
||||||
|
settings-path: ${{ github.workspace }} # location for the settings.xml file
|
||||||
|
|
||||||
|
- name: Update authors
|
||||||
|
id: update_authors
|
||||||
|
run: ./gradlew updateMergedPr -PprId=525
|
||||||
|
env:
|
||||||
|
GITHUB_OAUTH: ${{ secrets.MERGE_PR }}
|
||||||
|
|
||||||
|
# - name: Commit changes
|
||||||
|
# uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
# with:
|
||||||
|
# branch: master
|
||||||
|
# commit_message: Update changelog after merging PR
|
||||||
|
# commit_user_name: Alex Plate
|
||||||
|
# commit_user_email: aleksei.plate@jetbrains.com
|
||||||
|
# commit_author: Alex Plate <aleksei.plate@jetbrains.com>
|
||||||
|
# file_pattern: CHANGES.md
|
||||||
77
.github/workflows/runUiTests.yml
vendored
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
name: Run UI Tests
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 12 * * *'
|
||||||
|
jobs:
|
||||||
|
build-for-ui-test-mac-os:
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v2.1.0
|
||||||
|
with:
|
||||||
|
distribution: zulu
|
||||||
|
java-version: 11
|
||||||
|
- name: Setup FFmpeg
|
||||||
|
uses: FedericoCarboni/setup-ffmpeg@v1
|
||||||
|
with:
|
||||||
|
# Not strictly necessary, but it may prevent rate limit
|
||||||
|
# errors especially on GitHub-hosted macos machines.
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Build Plugin
|
||||||
|
run: gradle :buildPlugin
|
||||||
|
- name: Run Idea
|
||||||
|
run: |
|
||||||
|
mkdir -p build/reports
|
||||||
|
gradle :runIdeForUiTests > build/reports/idea.log &
|
||||||
|
- name: Wait for Idea started
|
||||||
|
uses: jtalk/url-health-check-action@1.5
|
||||||
|
with:
|
||||||
|
url: http://127.0.0.1:8082
|
||||||
|
max-attempts: 20
|
||||||
|
retry-delay: 10s
|
||||||
|
- name: Tests
|
||||||
|
run: gradle :testUi
|
||||||
|
- name: Move video
|
||||||
|
if: ${{ failure() }}
|
||||||
|
run: mv video build/reports
|
||||||
|
- name: Save fails report
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: ui-test-fails-report-mac
|
||||||
|
path: |
|
||||||
|
build/reports
|
||||||
|
# build-for-ui-test-linux:
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
# steps:
|
||||||
|
# - uses: actions/checkout@v2
|
||||||
|
# - name: Setup Java
|
||||||
|
# uses: actions/setup-java@v2.1.0
|
||||||
|
# with:
|
||||||
|
# distribution: zulu
|
||||||
|
# java-version: 11
|
||||||
|
# - name: Build Plugin
|
||||||
|
# run: gradle :buildPlugin
|
||||||
|
# - name: Run Idea
|
||||||
|
# run: |
|
||||||
|
# export DISPLAY=:99.0
|
||||||
|
# Xvfb -ac :99 -screen 0 1920x1080x16 &
|
||||||
|
# mkdir -p build/reports
|
||||||
|
# gradle :runIdeForUiTests #> build/reports/idea.log
|
||||||
|
# - name: Wait for Idea started
|
||||||
|
# uses: jtalk/url-health-check-action@1.5
|
||||||
|
# with:
|
||||||
|
# url: http://127.0.0.1:8082
|
||||||
|
# max-attempts: 15
|
||||||
|
# retry-delay: 30s
|
||||||
|
# - name: Tests
|
||||||
|
# run: gradle :testUi
|
||||||
|
# - name: Save fails report
|
||||||
|
# if: ${{ failure() }}
|
||||||
|
# uses: actions/upload-artifact@v2
|
||||||
|
# with:
|
||||||
|
# name: ui-test-fails-report-linux
|
||||||
|
# path: |
|
||||||
|
# ui-test-example/build/reports
|
||||||
49
.github/workflows/updateAuthors.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
|
||||||
|
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle
|
||||||
|
|
||||||
|
name: Update Authors
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 300
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
|
||||||
|
settings-path: ${{ github.workspace }} # location for the settings.xml file
|
||||||
|
|
||||||
|
- uses: nrwl/last-successful-commit-action@v1
|
||||||
|
id: last_successful_commit
|
||||||
|
with:
|
||||||
|
branch: 'master'
|
||||||
|
workflow_id: 'updateAuthors.yml'
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Update authors
|
||||||
|
id: update_authors
|
||||||
|
run: ./gradlew updateAuthors --stacktrace
|
||||||
|
env:
|
||||||
|
SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }}
|
||||||
|
GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Commit changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: Add ${{ steps.update_authors.outputs.authors }} to contributors list
|
||||||
|
commit_user_name: Alex Plate
|
||||||
|
commit_user_email: aleksei.plate@jetbrains.com
|
||||||
|
commit_author: Alex Plate <aleksei.plate@jetbrains.com>
|
||||||
|
file_pattern: AUTHORS.md
|
||||||
47
.github/workflows/updateChangelog.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
|
||||||
|
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle
|
||||||
|
|
||||||
|
name: Update Changelog
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 300
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
|
||||||
|
settings-path: ${{ github.workspace }} # location for the settings.xml file
|
||||||
|
|
||||||
|
- uses: nrwl/last-successful-commit-action@v1
|
||||||
|
id: last_successful_commit
|
||||||
|
with:
|
||||||
|
branch: 'master'
|
||||||
|
workflow_id: 'updateChangelog.yml'
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Update changelog
|
||||||
|
run: ./gradlew updateChangelog
|
||||||
|
env:
|
||||||
|
SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }}
|
||||||
|
|
||||||
|
- name: Commit changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: Update changelog
|
||||||
|
commit_user_name: Alex Plate
|
||||||
|
commit_user_email: aleksei.plate@jetbrains.com
|
||||||
|
commit_author: Alex Plate <aleksei.plate@jetbrains.com>
|
||||||
|
file_pattern: CHANGES.md
|
||||||
37
.github/workflows/updateFormatting.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
|
||||||
|
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle
|
||||||
|
|
||||||
|
name: Update Formatting
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * 0'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 50
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
|
||||||
|
settings-path: ${{ github.workspace }} # location for the settings.xml file
|
||||||
|
|
||||||
|
- name: Format files
|
||||||
|
run: ./gradlew ktlintFormat
|
||||||
|
|
||||||
|
- name: Commit changes
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: Update formatting
|
||||||
|
commit_user_name: Alex Plate
|
||||||
|
commit_user_email: aleksei.plate@jetbrains.com
|
||||||
|
commit_author: Alex Plate <aleksei.plate@jetbrains.com>
|
||||||
27
.gitignore
vendored
@@ -1,6 +1,27 @@
|
|||||||
*.swp
|
*.swp
|
||||||
/.gradle/
|
/.gradle/
|
||||||
|
|
||||||
/.idea/
|
/.idea/
|
||||||
/build/
|
!/.idea/scopes
|
||||||
/out/
|
!/.idea/copyright
|
||||||
/tmp/
|
!/.idea/icon.png
|
||||||
|
!/.idea/inspectionProfiles
|
||||||
|
!/.idea/fileTemplates
|
||||||
|
!/.idea/runConfigurations
|
||||||
|
!/.idea/codeStyles
|
||||||
|
|
||||||
|
**/build/
|
||||||
|
**/out/
|
||||||
|
**/tmp/
|
||||||
|
|
||||||
|
*.DS_Store
|
||||||
|
|
||||||
|
.teamcity/.idea
|
||||||
|
.teamcity/target
|
||||||
|
.teamcity/*.iml
|
||||||
|
|
||||||
|
# Generated by gradle task "generateGrammarSource"
|
||||||
|
src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated
|
||||||
|
|
||||||
|
# Created by github automation
|
||||||
|
settings.xml
|
||||||
|
|||||||
275
.idea/codeStyleSettings.xml
generated
@@ -1,275 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectCodeStyleSettingsManager">
|
|
||||||
<option name="PER_PROJECT_SETTINGS">
|
|
||||||
<value>
|
|
||||||
<option name="JAVA_INDENT_OPTIONS">
|
|
||||||
<value>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
||||||
<option name="TAB_SIZE" value="8" />
|
|
||||||
<option name="USE_TAB_CHARACTER" value="false" />
|
|
||||||
<option name="SMART_TABS" value="false" />
|
|
||||||
<option name="LABEL_INDENT_SIZE" value="0" />
|
|
||||||
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
|
|
||||||
<option name="USE_RELATIVE_INDENTS" value="false" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="JSP_INDENT_OPTIONS">
|
|
||||||
<value>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
||||||
<option name="TAB_SIZE" value="8" />
|
|
||||||
<option name="USE_TAB_CHARACTER" value="false" />
|
|
||||||
<option name="SMART_TABS" value="false" />
|
|
||||||
<option name="LABEL_INDENT_SIZE" value="0" />
|
|
||||||
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
|
|
||||||
<option name="USE_RELATIVE_INDENTS" value="false" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="XML_INDENT_OPTIONS">
|
|
||||||
<value>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
||||||
<option name="TAB_SIZE" value="8" />
|
|
||||||
<option name="USE_TAB_CHARACTER" value="false" />
|
|
||||||
<option name="SMART_TABS" value="false" />
|
|
||||||
<option name="LABEL_INDENT_SIZE" value="0" />
|
|
||||||
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
|
|
||||||
<option name="USE_RELATIVE_INDENTS" value="false" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="OTHER_INDENT_OPTIONS">
|
|
||||||
<value>
|
|
||||||
<option name="INDENT_SIZE" value="4" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
||||||
<option name="TAB_SIZE" value="4" />
|
|
||||||
<option name="USE_TAB_CHARACTER" value="false" />
|
|
||||||
<option name="SMART_TABS" value="false" />
|
|
||||||
<option name="LABEL_INDENT_SIZE" value="0" />
|
|
||||||
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
|
|
||||||
<option name="USE_RELATIVE_INDENTS" value="false" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="FIELD_NAME_PREFIX" value="my" />
|
|
||||||
<option name="STATIC_FIELD_NAME_PREFIX" value="our" />
|
|
||||||
<option name="LINE_COMMENT_AT_FIRST_COLUMN" value="false" />
|
|
||||||
<option name="BLOCK_COMMENT_AT_FIRST_COLUMN" value="false" />
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="WHILE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_THROWS_LIST" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION" value="true" />
|
|
||||||
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
|
|
||||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
|
||||||
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
|
||||||
<option name="EXTENDS_LIST_WRAP" value="1" />
|
|
||||||
<option name="THROWS_LIST_WRAP" value="5" />
|
|
||||||
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
|
|
||||||
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
|
||||||
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
|
||||||
<option name="BINARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
|
||||||
<option name="FOR_STATEMENT_WRAP" value="5" />
|
|
||||||
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
|
||||||
<option name="ASSIGNMENT_WRAP" value="1" />
|
|
||||||
<option name="IF_BRACE_FORCE" value="1" />
|
|
||||||
<option name="DOWHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="WHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FOR_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FIELD_ANNOTATION_WRAP" value="0" />
|
|
||||||
<XML>
|
|
||||||
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
|
|
||||||
</XML>
|
|
||||||
<ADDITIONAL_INDENT_OPTIONS fileType="rb">
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
</ADDITIONAL_INDENT_OPTIONS>
|
|
||||||
<codeStyleSettings language="CFML">
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="WHILE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
|
||||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
|
||||||
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
|
||||||
<option name="BINARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
|
||||||
<option name="FOR_STATEMENT_WRAP" value="5" />
|
|
||||||
<option name="ASSIGNMENT_WRAP" value="1" />
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="ECMA Script Level 4">
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="WHILE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
|
||||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
|
||||||
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
|
||||||
<option name="EXTENDS_LIST_WRAP" value="1" />
|
|
||||||
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
|
|
||||||
<option name="BINARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
|
||||||
<option name="FOR_STATEMENT_WRAP" value="5" />
|
|
||||||
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
|
||||||
<option name="ASSIGNMENT_WRAP" value="1" />
|
|
||||||
<option name="IF_BRACE_FORCE" value="1" />
|
|
||||||
<option name="DOWHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="WHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FOR_BRACE_FORCE" value="1" />
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="GSP">
|
|
||||||
<indentOptions>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
</indentOptions>
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="Groovy">
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_THROWS_LIST" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
|
||||||
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
|
|
||||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
|
||||||
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
|
||||||
<option name="EXTENDS_LIST_WRAP" value="1" />
|
|
||||||
<option name="THROWS_LIST_WRAP" value="5" />
|
|
||||||
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
|
|
||||||
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
|
||||||
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
|
||||||
<option name="BINARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="FOR_STATEMENT_WRAP" value="5" />
|
|
||||||
<option name="ASSIGNMENT_WRAP" value="1" />
|
|
||||||
<option name="IF_BRACE_FORCE" value="1" />
|
|
||||||
<option name="WHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FOR_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FIELD_ANNOTATION_WRAP" value="0" />
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
<indentOptions>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
</indentOptions>
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="HTML">
|
|
||||||
<indentOptions>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
||||||
<option name="TAB_SIZE" value="8" />
|
|
||||||
</indentOptions>
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="JAVA">
|
|
||||||
<option name="LINE_COMMENT_AT_FIRST_COLUMN" value="false" />
|
|
||||||
<option name="BLOCK_COMMENT_AT_FIRST_COLUMN" value="false" />
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="WHILE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_THROWS_LIST" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION" value="true" />
|
|
||||||
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
|
|
||||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
|
||||||
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
|
||||||
<option name="EXTENDS_LIST_WRAP" value="1" />
|
|
||||||
<option name="THROWS_LIST_WRAP" value="5" />
|
|
||||||
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
|
|
||||||
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
|
||||||
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
|
||||||
<option name="BINARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
|
||||||
<option name="FOR_STATEMENT_WRAP" value="5" />
|
|
||||||
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
|
||||||
<option name="ASSIGNMENT_WRAP" value="1" />
|
|
||||||
<option name="IF_BRACE_FORCE" value="1" />
|
|
||||||
<option name="DOWHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="WHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FOR_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FIELD_ANNOTATION_WRAP" value="0" />
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
<indentOptions>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
||||||
<option name="TAB_SIZE" value="8" />
|
|
||||||
</indentOptions>
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="JSON">
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="JSP">
|
|
||||||
<indentOptions>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
||||||
<option name="TAB_SIZE" value="8" />
|
|
||||||
</indentOptions>
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="JavaScript">
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="WHILE_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
|
||||||
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
|
||||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
|
||||||
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
|
||||||
<option name="BINARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
|
||||||
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
|
||||||
<option name="FOR_STATEMENT_WRAP" value="5" />
|
|
||||||
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
|
||||||
<option name="ASSIGNMENT_WRAP" value="1" />
|
|
||||||
<option name="IF_BRACE_FORCE" value="1" />
|
|
||||||
<option name="DOWHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="WHILE_BRACE_FORCE" value="1" />
|
|
||||||
<option name="FOR_BRACE_FORCE" value="1" />
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="Python">
|
|
||||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="SQL">
|
|
||||||
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="XML">
|
|
||||||
<indentOptions>
|
|
||||||
<option name="INDENT_SIZE" value="2" />
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
||||||
<option name="TAB_SIZE" value="8" />
|
|
||||||
</indentOptions>
|
|
||||||
</codeStyleSettings>
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
196
.idea/codeStyles/Project.xml
generated
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<option name="AUTODETECT_INDENTS" value="false" />
|
||||||
|
<option name="OTHER_INDENT_OPTIONS">
|
||||||
|
<value>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<JavaCodeStyleSettings>
|
||||||
|
<option name="FIELD_NAME_PREFIX" value="my" />
|
||||||
|
<option name="STATIC_FIELD_NAME_PREFIX" value="our" />
|
||||||
|
</JavaCodeStyleSettings>
|
||||||
|
<JetCodeStyleSettings>
|
||||||
|
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
|
||||||
|
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="2147483647" />
|
||||||
|
<option name="ALLOW_TRAILING_COMMA" value="true" />
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</JetCodeStyleSettings>
|
||||||
|
<ScalaCodeStyleSettings>
|
||||||
|
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
|
||||||
|
</ScalaCodeStyleSettings>
|
||||||
|
<ADDITIONAL_INDENT_OPTIONS fileType="rb">
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
</ADDITIONAL_INDENT_OPTIONS>
|
||||||
|
<codeStyleSettings language="CFML">
|
||||||
|
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||||
|
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="WHILE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="5" />
|
||||||
|
<option name="ASSIGNMENT_WRAP" value="1" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="ECMA Script Level 4">
|
||||||
|
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||||
|
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="WHILE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||||
|
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="5" />
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||||
|
<option name="ASSIGNMENT_WRAP" value="1" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="1" />
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="1" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="1" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="1" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="GSP">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="Groovy">
|
||||||
|
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||||
|
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_THROWS_LIST" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
||||||
|
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||||
|
<option name="THROWS_LIST_WRAP" value="5" />
|
||||||
|
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
|
||||||
|
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
||||||
|
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="5" />
|
||||||
|
<option name="ASSIGNMENT_WRAP" value="1" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="1" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="1" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="1" />
|
||||||
|
<option name="FIELD_ANNOTATION_WRAP" value="0" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="HTML">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="8" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JAVA">
|
||||||
|
<option name="LINE_COMMENT_AT_FIRST_COLUMN" value="false" />
|
||||||
|
<option name="BLOCK_COMMENT_AT_FIRST_COLUMN" value="false" />
|
||||||
|
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||||
|
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="WHILE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_ASSIGNMENT" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_THROWS_LIST" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION" value="true" />
|
||||||
|
<option name="SPACE_AFTER_TYPE_CAST" value="false" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||||
|
<option name="THROWS_LIST_WRAP" value="5" />
|
||||||
|
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
|
||||||
|
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
||||||
|
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="5" />
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||||
|
<option name="ASSIGNMENT_WRAP" value="1" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="1" />
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="1" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="1" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="1" />
|
||||||
|
<option name="FIELD_ANNOTATION_WRAP" value="0" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="8" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JSON">
|
||||||
|
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JSP">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="8" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JavaScript">
|
||||||
|
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||||
|
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="WHILE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
||||||
|
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="5" />
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||||
|
<option name="ASSIGNMENT_WRAP" value="1" />
|
||||||
|
<option name="IF_BRACE_FORCE" value="1" />
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="1" />
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="1" />
|
||||||
|
<option name="FOR_BRACE_FORCE" value="1" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="Python">
|
||||||
|
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||||
|
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="XML">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="8" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="kotlin">
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
6
.idea/copyright/IdeaVim.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<copyright>
|
||||||
|
<option name="notice" value="IdeaVim - Vim emulator for IDEs based on the IntelliJ platform Copyright (C) 2003-&#36;today.year The IdeaVim authors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>." />
|
||||||
|
<option name="myName" value="IdeaVim" />
|
||||||
|
</copyright>
|
||||||
|
</component>
|
||||||
7
.idea/copyright/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<settings>
|
||||||
|
<module2copyright>
|
||||||
|
<element module="Copyright" copyright="IdeaVim" />
|
||||||
|
</module2copyright>
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
1
.idea/fileTemplates/code/I18nized Concatenation.java
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
com.maddyhome.idea.vim.helper.MessageHelper.message("${PROPERTY_KEY}", ${PARAMETERS})
|
||||||
1
.idea/fileTemplates/code/I18nized Expression.java
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
com.maddyhome.idea.vim.helper.MessageHelper.message("${PROPERTY_KEY}")
|
||||||
BIN
.idea/icon.png
generated
Normal file
|
After Width: | Height: | Size: 113 KiB |
69
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="BooleanMethodIsAlwaysInverted" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="HardCodedStringLiteral" enabled="false" level="WARNING" enabled_by_default="false">
|
||||||
|
<scope name="Production" level="WARNING" enabled="false">
|
||||||
|
<option name="ignoreForAssertStatements" value="true" />
|
||||||
|
<option name="ignoreForExceptionConstructors" value="true" />
|
||||||
|
<option name="ignoreForSpecifiedExceptionConstructors" value="" />
|
||||||
|
<option name="ignoreForJUnitAsserts" value="true" />
|
||||||
|
<option name="ignoreForClassReferences" value="true" />
|
||||||
|
<option name="ignoreForPropertyKeyReferences" value="true" />
|
||||||
|
<option name="ignoreForNonAlpha" value="true" />
|
||||||
|
<option name="ignoreAssignedToConstants" value="false" />
|
||||||
|
<option name="ignoreToString" value="true" />
|
||||||
|
<option name="nonNlsCommentPattern" value="NON-NLS" />
|
||||||
|
</scope>
|
||||||
|
<option name="ignoreForAssertStatements" value="true" />
|
||||||
|
<option name="ignoreForExceptionConstructors" value="true" />
|
||||||
|
<option name="ignoreForSpecifiedExceptionConstructors" value="" />
|
||||||
|
<option name="ignoreForJUnitAsserts" value="true" />
|
||||||
|
<option name="ignoreForClassReferences" value="true" />
|
||||||
|
<option name="ignoreForPropertyKeyReferences" value="true" />
|
||||||
|
<option name="ignoreForNonAlpha" value="true" />
|
||||||
|
<option name="ignoreAssignedToConstants" value="false" />
|
||||||
|
<option name="ignoreToString" value="false" />
|
||||||
|
<option name="nonNlsCommentPattern" value="NON-NLS" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="m_requireAnnotationsFirst" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="MoveVariableDeclarationIntoWhen" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="PluginXmlI18n" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
<inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<replaceConfiguration name="IdeaVim run for each caret" description="Please use IdeaVim version of `runForEachCaret` function" suppressId="ideavimRunForEachCaret" problemDescriptor="Replace with IdeaVim version" text="$editor$.caretModel.runForEachCaret { $expr$ }" recursive="false" caseInsensitive="false" type="Kotlin" pattern_context="default" reformatAccordingToStyle="true" shortenFQN="false" replacement="$editor$.vimForEachCaret { $expr$ }">
|
||||||
|
<constraint name="__context__" within="" contains="" />
|
||||||
|
<constraint name="editor" within="" contains="" />
|
||||||
|
<constraint name="expr" minCount="0" maxCount="2147483647" within="" contains="" />
|
||||||
|
</replaceConfiguration>
|
||||||
|
<replaceConfiguration name="Use IdeaVim method instead of the fixture" uuid="0f74da52-7360-33ae-9b40-d771aa128de6" description="Use assertState and other functions instead of myFixture.checkResult. This function also preformes assertion in neovim" suppressId="IdeaVimAssertState" problemDescriptor="Use IdeaVim testing methods" text="$fixture$.$check$($data$)" recursive="false" caseInsensitive="false" type="Kotlin" pattern_context="default" reformatAccordingToStyle="true" shortenFQN="false" replacement="assertState($data$)">
|
||||||
|
<constraint name="__context__" within="" contains="" />
|
||||||
|
<constraint name="fixture" regexp="myFixture" nameOfExprType="CodeInsightTestFixture" within="" contains="" />
|
||||||
|
<constraint name="check" regexp="checkResult" within="" contains="" />
|
||||||
|
<constraint name="data" within="" contains="" />
|
||||||
|
</replaceConfiguration>
|
||||||
|
<replaceConfiguration name="Use IdeaVim method instead of the fixture" uuid="0f74da52-7360-33ae-9b40-d771aa128de6" text="$fixture$.$check$($fileName$, $text$)" recursive="false" caseInsensitive="false" type="Kotlin" pattern_context="default" reformatAccordingToStyle="true" shortenFQN="false" replacement="configureByText($text$)">
|
||||||
|
<constraint name="__context__" within="" contains="" />
|
||||||
|
<constraint name="fixture" regexp="myFixture" nameOfExprType="CodeInsightTestFixture" within="" contains="" />
|
||||||
|
<constraint name="check" regexp="configureByText" within="" contains="" />
|
||||||
|
<constraint name="text" within="" contains="" />
|
||||||
|
<constraint name="fileName" within="" contains="" />
|
||||||
|
</replaceConfiguration>
|
||||||
|
<replaceConfiguration name="Use IdeaVim method instead of the fixture" uuid="0f74da52-7360-33ae-9b40-d771aa128de6" text="$fixture$.$check$($data$)" recursive="false" caseInsensitive="false" type="JAVA" pattern_context="default" reformatAccordingToStyle="true" shortenFQN="true" replacement="assertState($data$)">
|
||||||
|
<constraint name="__context__" within="" contains="" />
|
||||||
|
<constraint name="fixture" regexp="myFixture" within="" contains="" />
|
||||||
|
<constraint name="check" regexp="checkResult" within="" contains="" />
|
||||||
|
<constraint name="data" within="" contains="" />
|
||||||
|
</replaceConfiguration>
|
||||||
|
<replaceConfiguration name="Use IdeaVim method instead of the fixture" uuid="0f74da52-7360-33ae-9b40-d771aa128de6" text="$fixture$.$configure$($first$, $second$)" recursive="false" caseInsensitive="false" type="JAVA" pattern_context="default" reformatAccordingToStyle="true" shortenFQN="true" replacement="configureByText($second$)">
|
||||||
|
<constraint name="__context__" within="" contains="" />
|
||||||
|
<constraint name="fixture" regexp="myFixture" within="" contains="" />
|
||||||
|
<constraint name="configure" regexp="configureByText" within="" contains="" />
|
||||||
|
<constraint name="first" within="" contains="" />
|
||||||
|
<constraint name="second" within="" contains="" />
|
||||||
|
</replaceConfiguration>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="UnstableApiUsage" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
48
.idea/inspectionProfiles/Qodana.xml
generated
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<description>Inspections profile for Qodana</description>
|
||||||
|
<option name="myName" value="Qodana" />
|
||||||
|
<inspection_tool class="BooleanMethodIsAlwaysInverted" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="CanBeFinal" enabled="false" level="WARNING" enabled_by_default="false">
|
||||||
|
<option name="REPORT_CLASSES" value="false" />
|
||||||
|
<option name="REPORT_METHODS" value="false" />
|
||||||
|
<option name="REPORT_FIELDS" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="GrUnresolvedAccess" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="HardCodedStringLiteral" enabled="false" level="WARNING" enabled_by_default="false">
|
||||||
|
<scope name="Production" level="WARNING" enabled="false">
|
||||||
|
<option name="ignoreForAssertStatements" value="true" />
|
||||||
|
<option name="ignoreForExceptionConstructors" value="true" />
|
||||||
|
<option name="ignoreForSpecifiedExceptionConstructors" value="" />
|
||||||
|
<option name="ignoreForJUnitAsserts" value="true" />
|
||||||
|
<option name="ignoreForClassReferences" value="true" />
|
||||||
|
<option name="ignoreForPropertyKeyReferences" value="true" />
|
||||||
|
<option name="ignoreForNonAlpha" value="true" />
|
||||||
|
<option name="ignoreAssignedToConstants" value="false" />
|
||||||
|
<option name="ignoreToString" value="true" />
|
||||||
|
<option name="nonNlsCommentPattern" value="NON-NLS" />
|
||||||
|
</scope>
|
||||||
|
<option name="ignoreForAssertStatements" value="true" />
|
||||||
|
<option name="ignoreForExceptionConstructors" value="true" />
|
||||||
|
<option name="ignoreForSpecifiedExceptionConstructors" value="" />
|
||||||
|
<option name="ignoreForJUnitAsserts" value="true" />
|
||||||
|
<option name="ignoreForClassReferences" value="true" />
|
||||||
|
<option name="ignoreForPropertyKeyReferences" value="true" />
|
||||||
|
<option name="ignoreForNonAlpha" value="true" />
|
||||||
|
<option name="ignoreAssignedToConstants" value="false" />
|
||||||
|
<option name="ignoreToString" value="false" />
|
||||||
|
<option name="nonNlsCommentPattern" value="NON-NLS" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="m_requireAnnotationsFirst" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="SameReturnValue" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
|
||||||
|
<option name="processCode" value="true" />
|
||||||
|
<option name="processLiterals" value="true" />
|
||||||
|
<option name="processComments" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="SuperTearDownInFinally" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
<inspection_tool class="UnstableApiUsage" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
25
.idea/runConfigurations/IdeaVim_full_verification.xml
generated
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="IdeaVim full verification" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<log_file alias="idea.log" path="$PROJECT_DIR$/build/idea-sandbox/system/log/idea.log" />
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="check" />
|
||||||
|
<option value="runPluginVerifier" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" value="" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
24
.idea/runConfigurations/IdeaVim_tests.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="IdeaVim tests" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<log_file alias="idea.log" path="$PROJECT_DIR$/build/idea-sandbox/system/log/idea.log" />
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="test" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" value="" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
24
.idea/runConfigurations/Start_IJ_with_IdeaVim.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Start IJ with IdeaVim" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<log_file alias="idea.log" path="$PROJECT_DIR$/build/idea-sandbox/system/log/idea.log" />
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" value="" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="runIde" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" value="" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
3
.idea/scopes/Copyright.xml
generated
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<component name="DependencyValidationManager">
|
||||||
|
<scope name="Copyright" pattern="(file[IdeaVIM.main]:*/||file[IdeaVIM.test]:*/)&&!file[IdeaVIM.main]:resources//*" />
|
||||||
|
</component>
|
||||||
20
.teamcity/_Self/Constants.kt
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package _Self
|
||||||
|
|
||||||
|
object Constants {
|
||||||
|
const val DEFAULT_CHANNEL = "default"
|
||||||
|
const val EAP_CHANNEL = "eap"
|
||||||
|
const val DEV_CHANNEL = "Dev"
|
||||||
|
|
||||||
|
const val VERSION = "1.11.1"
|
||||||
|
const val DEV_VERSION = "1.12.0"
|
||||||
|
|
||||||
|
const val GITHUB_TESTS = "LATEST-EAP-SNAPSHOT"
|
||||||
|
const val NVIM_TESTS = "LATEST-EAP-SNAPSHOT"
|
||||||
|
const val PROPERTY_TESTS = "LATEST-EAP-SNAPSHOT"
|
||||||
|
const val LONG_RUNNING_TESTS = "LATEST-EAP-SNAPSHOT"
|
||||||
|
const val QODANA_TESTS = "LATEST-EAP-SNAPSHOT"
|
||||||
|
const val RELEASE = "LATEST-EAP-SNAPSHOT"
|
||||||
|
|
||||||
|
const val RELEASE_DEV = "LATEST-EAP-SNAPSHOT"
|
||||||
|
const val RELEASE_EAP = "LATEST-EAP-SNAPSHOT"
|
||||||
|
}
|
||||||
99
.teamcity/_Self/Project.kt
vendored
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
package _Self
|
||||||
|
|
||||||
|
import _Self.buildTypes.Compatibility
|
||||||
|
import _Self.buildTypes.LongRunning
|
||||||
|
import _Self.buildTypes.Nvim
|
||||||
|
import _Self.buildTypes.PluginVerifier
|
||||||
|
import _Self.buildTypes.PropertyBased
|
||||||
|
import _Self.buildTypes.Qodana
|
||||||
|
import _Self.buildTypes.TestsForIntelliJEAP
|
||||||
|
import _Self.subprojects.GitHub
|
||||||
|
import _Self.subprojects.OldTests
|
||||||
|
import _Self.subprojects.Releases
|
||||||
|
import _Self.vcsRoots.Branch_181
|
||||||
|
import _Self.vcsRoots.Branch_183
|
||||||
|
import _Self.vcsRoots.Branch_191_193
|
||||||
|
import _Self.vcsRoots.Branch_201
|
||||||
|
import _Self.vcsRoots.Branch_202
|
||||||
|
import _Self.vcsRoots.Branch_203_212
|
||||||
|
import _Self.vcsRoots.Branch_213_221
|
||||||
|
import _Self.vcsRoots.Branch_Release
|
||||||
|
import _Self.vcsRoots.GitHubPullRequest
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
|
||||||
|
|
||||||
|
object Project : Project({
|
||||||
|
description = "Vim emulation plugin for the IntelliJ platform products"
|
||||||
|
|
||||||
|
subProjects(Releases, OldTests, GitHub)
|
||||||
|
|
||||||
|
// VCS roots
|
||||||
|
vcsRoot(Branch_183)
|
||||||
|
vcsRoot(Branch_181)
|
||||||
|
vcsRoot(Branch_191_193)
|
||||||
|
vcsRoot(Branch_201)
|
||||||
|
vcsRoot(Branch_202)
|
||||||
|
vcsRoot(Branch_203_212)
|
||||||
|
vcsRoot(Branch_213_221)
|
||||||
|
vcsRoot(Branch_Release)
|
||||||
|
vcsRoot(GitHubPullRequest)
|
||||||
|
|
||||||
|
// Builds
|
||||||
|
buildType(TestsForIntelliJEAP)
|
||||||
|
|
||||||
|
buildType(PropertyBased)
|
||||||
|
buildType(LongRunning)
|
||||||
|
|
||||||
|
buildType(Nvim)
|
||||||
|
buildType(PluginVerifier)
|
||||||
|
buildType(Compatibility)
|
||||||
|
|
||||||
|
buildType(Qodana)
|
||||||
|
|
||||||
|
// Unknown staff generated by TeamCity
|
||||||
|
features {
|
||||||
|
feature {
|
||||||
|
type = "CloudImage"
|
||||||
|
id = "PROJECT_EXT_768"
|
||||||
|
param("agent_pool_id", "41")
|
||||||
|
param("amazon-id", "ami-0fa17ce8238eb8868")
|
||||||
|
param("ebs-optimized", "false")
|
||||||
|
param("image-instances-limit", "")
|
||||||
|
param("image-name-prefix", "BuildAgentsIdeaVim")
|
||||||
|
param("instance-type", "c5d.xlarge")
|
||||||
|
param("key-pair-name", "teamcity-prod-pub")
|
||||||
|
param("profileId", "amazon-48")
|
||||||
|
param("security-group-ids", "sg-eda08696,sg-7332cf0f,")
|
||||||
|
param("source-id", "BuildAgentsIdeaVim")
|
||||||
|
param("spot-instance-price", "0.12")
|
||||||
|
param("subnet-id", "subnet-58839511")
|
||||||
|
param("use-spot-instances", "true")
|
||||||
|
param("user-tags", "project=idea-vim")
|
||||||
|
param("key-pair-name", "")
|
||||||
|
param("spot-instance-price", "")
|
||||||
|
}
|
||||||
|
feature {
|
||||||
|
type = "CloudProfile"
|
||||||
|
id = "amazon-48"
|
||||||
|
param("agentPushPreset", "")
|
||||||
|
param("cloud-code", "amazon")
|
||||||
|
param("description", "")
|
||||||
|
param("enabled", "true")
|
||||||
|
param("max-running-instances", "10")
|
||||||
|
param("name", "Cloud Agents")
|
||||||
|
param("next-hour", "")
|
||||||
|
param("not-checked", "")
|
||||||
|
param("profileId", "amazon-48")
|
||||||
|
param("profileServerUrl", "")
|
||||||
|
param("region", "eu-west-1")
|
||||||
|
param("secure:access-id", "credentialsJSON:dbcdb2a2-de5f-4bc9-9421-292b19e83947")
|
||||||
|
param("secure:secret-key", "credentialsJSON:65a87fe7-0977-4af9-96f1-344f2b82d269")
|
||||||
|
param("system.cloud.profile_id", "amazon-48")
|
||||||
|
param("terminate-idle-time", "15")
|
||||||
|
param("total-work-time", "")
|
||||||
|
param("user-script", "")
|
||||||
|
param("spot-fleet-config", "")
|
||||||
|
param("terminate-after-build", "true")
|
||||||
|
param("name", "Cloud Agents - Single Build")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
58
.teamcity/_Self/buildTypes/ActiveTests.kt
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
sealed class ActiveTests(buildName: String, ijVersion: String) : BuildType({
|
||||||
|
name = buildName
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", ijVersion)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean check -x ktlintMainSourceSetCheck -x ktlintTestSourceSetCheck"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJEAP : ActiveTests("Tests for IntelliJ Latest EAP", "LATEST-EAP-SNAPSHOT")
|
||||||
|
//object TestsForIntelliJ20213 : ActiveTests("Tests for IntelliJ 2021.3", "2021.3.2")
|
||||||
49
.teamcity/_Self/buildTypes/Compatibility.kt
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.golang
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule
|
||||||
|
|
||||||
|
object Compatibility : BuildType({
|
||||||
|
id("IdeaVimCompatibility")
|
||||||
|
name = "IdeaVim compatibility with external plugins"
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
name = "Check"
|
||||||
|
scriptContent = """
|
||||||
|
java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}org.jetbrains.IdeaVim-EasyMotion' [latest-IU] -team-city
|
||||||
|
java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}io.github.mishkun.ideavimsneak' [latest-IU] -team-city
|
||||||
|
java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}eu.theblob42.idea.whichkey' [latest-IU] -team-city
|
||||||
|
java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}IdeaVimExtension' [latest-IU] -team-city
|
||||||
|
# Outdated java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}github.zgqq.intellij-enhance' [latest-IU] -team-city
|
||||||
|
java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.copilot' [latest-IU] -team-city
|
||||||
|
java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.dankinsoid.multicursor' [latest-IU] -team-city
|
||||||
|
java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.joshestein.ideavim-quickscope' [latest-IU] -team-city
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
schedule {
|
||||||
|
schedulingPolicy = daily {
|
||||||
|
hour = 4
|
||||||
|
}
|
||||||
|
branchFilter = ""
|
||||||
|
triggerBuild = always()
|
||||||
|
withPendingChangesOnly = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
features {
|
||||||
|
golang {
|
||||||
|
testFormat = "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
77
.teamcity/_Self/buildTypes/GithubTests.kt
vendored
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.GITHUB_TESTS
|
||||||
|
import _Self.vcsRoots.GitHubPullRequest
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.PullRequests
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.commitStatusPublisher
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.pullRequests
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.VcsTrigger
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
object GithubTests : Github("clean test", "Tests")
|
||||||
|
|
||||||
|
sealed class Github(command: String, desc: String) : BuildType({
|
||||||
|
name = "GitHub Pull Requests $desc"
|
||||||
|
description = "Test GitHub pull requests $desc"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", GITHUB_TESTS)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(GitHubPullRequest)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
branchFilter = """
|
||||||
|
+:*
|
||||||
|
-:<default>
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = command
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
quietPeriodMode = VcsTrigger.QuietPeriodMode.USE_DEFAULT
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
features {
|
||||||
|
pullRequests {
|
||||||
|
provider = github {
|
||||||
|
authType = token {
|
||||||
|
token = "credentialsJSON:43afd6e5-6ad5-4d12-a218-cf1547717a7f"
|
||||||
|
}
|
||||||
|
filterTargetBranch = "refs/heads/master"
|
||||||
|
filterAuthorRole = PullRequests.GitHubRoleFilter.EVERYBODY
|
||||||
|
}
|
||||||
|
}
|
||||||
|
commitStatusPublisher {
|
||||||
|
vcsRootExtId = "${GitHubPullRequest.id}"
|
||||||
|
publisher = github {
|
||||||
|
githubUrl = "https://api.github.com"
|
||||||
|
authType = personalToken {
|
||||||
|
token = "credentialsJSON:43afd6e5-6ad5-4d12-a218-cf1547717a7f"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
param("github_oauth_user", "AlexPl292")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
})
|
||||||
42
.teamcity/_Self/buildTypes/LongRunning.kt
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.LONG_RUNNING_TESTS
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
object LongRunning : BuildType({
|
||||||
|
name = "Long running tests"
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", LONG_RUNNING_TESTS)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean testLongRunning"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
})
|
||||||
69
.teamcity/_Self/buildTypes/Nvim.kt
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.NVIM_TESTS
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
object Nvim : BuildType({
|
||||||
|
name = "Tests with nvim"
|
||||||
|
description = "Running tests with nvim integration"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", NVIM_TESTS)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ideavim.nvim.path", "./nvim-linux64/bin/nvim")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
name = "Set up NeoVim"
|
||||||
|
scriptContent = """
|
||||||
|
wget https://github.com/neovim/neovim/releases/download/v0.7.2/nvim-linux64.tar.gz
|
||||||
|
tar xzf nvim-linux64.tar.gz
|
||||||
|
cd nvim-linux64/bin
|
||||||
|
chmod +x nvim
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
|
gradle {
|
||||||
|
tasks = "clean testWithNeovim"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
40
.teamcity/_Self/buildTypes/PluginVerifier.kt
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
object PluginVerifier : BuildType({
|
||||||
|
name = "Plugin verification"
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean runPluginVerifier"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
})
|
||||||
42
.teamcity/_Self/buildTypes/PropertyBased.kt
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.PROPERTY_TESTS
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
object PropertyBased : BuildType({
|
||||||
|
name = "Property based tests"
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", PROPERTY_TESTS)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean testPropertyBased"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
})
|
||||||
84
.teamcity/_Self/buildTypes/Qodana.kt
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.QODANA_TESTS
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.Qodana
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.qodana
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.ScheduleTrigger
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
object Qodana : BuildType({
|
||||||
|
name = "Qodana checks"
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", QODANA_TESTS)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
qodana {
|
||||||
|
name = "Qodana"
|
||||||
|
/*
|
||||||
|
reportAsTestsEnable = ""
|
||||||
|
failBuildOnErrors = ""
|
||||||
|
codeInspectionXmlConfig = "Custom"
|
||||||
|
codeInspectionCustomXmlConfigPath = ".idea/inspectionProfiles/Qodana.xml"
|
||||||
|
reportAsTestsEnable = "true"
|
||||||
|
*/
|
||||||
|
clearConditions()
|
||||||
|
param("licenseaudit-enable", "true")
|
||||||
|
param("clonefinder-languages", "Java")
|
||||||
|
param("clonefinder-mode", "")
|
||||||
|
param("report-version", "")
|
||||||
|
param("clonefinder-languages-container", "Java Kotlin")
|
||||||
|
param("namesAndTagsCustom", "repo.labs.intellij.net/static-analyser/qodana")
|
||||||
|
param("clonefinder-queried-project", "src")
|
||||||
|
param("clonefinder-enable", "true")
|
||||||
|
param("clonefinder-reference-projects", "src")
|
||||||
|
param("yaml-configuration", "")
|
||||||
|
linter = jvm {
|
||||||
|
version = Qodana.JVMVersion.LATEST
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
enabled = true
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
schedule {
|
||||||
|
schedulingPolicy = weekly {
|
||||||
|
dayOfWeek = ScheduleTrigger.DAY.Tuesday
|
||||||
|
}
|
||||||
|
branchFilter = ""
|
||||||
|
triggerBuild = always()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
threshold = 0
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.DEFAULT_UNIT
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.MORE
|
||||||
|
compareTo = value()
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_FAILED_COUNT
|
||||||
|
param("metricKey", "QodanaProblemsTotal")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
})
|
||||||
76
.teamcity/_Self/buildTypes/Release.kt
vendored
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.DEFAULT_CHANNEL
|
||||||
|
import _Self.Constants.DEV_CHANNEL
|
||||||
|
import _Self.Constants.EAP_CHANNEL
|
||||||
|
import _Self.Constants.RELEASE
|
||||||
|
import _Self.Constants.VERSION
|
||||||
|
import _Self.vcsRoots.Branch_Release
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.vcsLabeling
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
|
||||||
|
object Release : BuildType({
|
||||||
|
name = "Publish Release"
|
||||||
|
description = "Build and publish IdeaVim plugin"
|
||||||
|
|
||||||
|
artifactRules = "build/distributions/*"
|
||||||
|
buildNumberPattern = VERSION
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE)
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_publishToken",
|
||||||
|
"credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde",
|
||||||
|
label = "Password"
|
||||||
|
)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_version", "%build.number%")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_publishChannels", "$DEFAULT_CHANNEL,$EAP_CHANNEL,$DEV_CHANNEL")
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_slackUrl",
|
||||||
|
"credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5",
|
||||||
|
label = "Slack Token"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(Branch_Release)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean publishPlugin slackNotification"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
features {
|
||||||
|
vcsLabeling {
|
||||||
|
vcsRootId = "${DslContext.settingsRoot.id}"
|
||||||
|
labelingPattern = "%system.build.number%"
|
||||||
|
successfulOnly = true
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE
|
||||||
|
threshold = 5
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.DIFF
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
69
.teamcity/_Self/buildTypes/ReleaseDev.kt
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.DEV_CHANNEL
|
||||||
|
import _Self.Constants.DEV_VERSION
|
||||||
|
import _Self.Constants.RELEASE_DEV
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule
|
||||||
|
|
||||||
|
object ReleaseDev : BuildType({
|
||||||
|
name = "Publish Dev Build"
|
||||||
|
description = "Build and publish Dev of IdeaVim plugin"
|
||||||
|
|
||||||
|
artifactRules = "build/distributions/*"
|
||||||
|
buildNumberPattern = "$DEV_VERSION-dev.%build.counter%"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_DEV)
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_publishToken",
|
||||||
|
"credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde",
|
||||||
|
label = "Password"
|
||||||
|
)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_version", "%build.number%")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_publishChannels", DEV_CHANNEL)
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean publishPlugin"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
schedule {
|
||||||
|
enabled = true
|
||||||
|
schedulingPolicy = daily {
|
||||||
|
hour = 2
|
||||||
|
}
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE
|
||||||
|
threshold = 5
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.DIFF
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
73
.teamcity/_Self/buildTypes/ReleaseEap.kt
vendored
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import _Self.Constants.DEV_VERSION
|
||||||
|
import _Self.Constants.EAP_CHANNEL
|
||||||
|
import _Self.Constants.RELEASE_EAP
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.vcsLabeling
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
|
||||||
|
object ReleaseEap : BuildType({
|
||||||
|
name = "Publish EAP Build"
|
||||||
|
description = "Build and publish EAP of IdeaVim plugin"
|
||||||
|
|
||||||
|
artifactRules = "build/distributions/*"
|
||||||
|
buildNumberPattern = "$DEV_VERSION-eap.%build.counter%"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_EAP)
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_publishToken",
|
||||||
|
"credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde",
|
||||||
|
label = "Password"
|
||||||
|
)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_version", "%build.number%")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_publishChannels", EAP_CHANNEL)
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_slackUrl",
|
||||||
|
"credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5",
|
||||||
|
label = "Slack Token"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean publishPlugin"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
features {
|
||||||
|
vcsLabeling {
|
||||||
|
vcsRootId = "${DslContext.settingsRoot.id}"
|
||||||
|
labelingPattern = "%system.build.number%"
|
||||||
|
successfulOnly = true
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE
|
||||||
|
threshold = 5
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.DIFF
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
58
.teamcity/_Self/buildTypes/TestsForIntelliJ20183.kt
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
object TestsForIntelliJ20183 : BuildType({
|
||||||
|
name = "Tests for IntelliJ 2018.3"
|
||||||
|
description = "branch 183"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-2018.3")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.Branch_183)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
61
.teamcity/_Self/buildTypes/TestsForIntelliJ_181-182.kt
vendored
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
sealed class TestsForIntelliJ_181_branch(private val version: String) : BuildType({
|
||||||
|
name = "Tests for IntelliJ $version"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.Branch_181)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJ20181 : TestsForIntelliJ_181_branch("2018.1")
|
||||||
|
object TestsForIntelliJ20182 : TestsForIntelliJ_181_branch("2018.2")
|
||||||
63
.teamcity/_Self/buildTypes/TestsForIntelliJ_191-193.kt
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
sealed class TestsForIntelliJ_191_193_branch(private val version: String) : BuildType({
|
||||||
|
name = "Tests for IntelliJ $version"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.Branch_191_193)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJ20191 : TestsForIntelliJ_191_193_branch("2019.1")
|
||||||
|
object TestsForIntelliJ20192 : TestsForIntelliJ_191_193_branch("2019.2")
|
||||||
|
object TestsForIntelliJ20193 : TestsForIntelliJ_191_193_branch("2019.3")
|
||||||
60
.teamcity/_Self/buildTypes/TestsForIntelliJ_201.kt
vendored
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
sealed class TestsForIntelliJ_201_branch(private val version: String) : BuildType({
|
||||||
|
name = "Tests for IntelliJ $version"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.Branch_201)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJ20201 : TestsForIntelliJ_201_branch("2020.1")
|
||||||
60
.teamcity/_Self/buildTypes/TestsForIntelliJ_202.kt
vendored
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
sealed class TestsForIntelliJ_202_branch(private val version: String) : BuildType({
|
||||||
|
name = "Tests for IntelliJ $version"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.Branch_202)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJ20202 : TestsForIntelliJ_202_branch("2020.2")
|
||||||
64
.teamcity/_Self/buildTypes/TestsForIntelliJ_203-212.kt
vendored
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
sealed class TestsForIntelliJ_203_212_branch(private val version: String) : BuildType({
|
||||||
|
name = "Tests for IntelliJ $version"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.Branch_203_212)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
object TestsForIntelliJ20212 : TestsForIntelliJ_203_212_branch("2021.2.2")
|
||||||
|
object TestsForIntelliJ20211 : TestsForIntelliJ_203_212_branch("2021.1")
|
||||||
|
object TestsForIntelliJ20203 : TestsForIntelliJ_203_212_branch("2020.3")
|
||||||
62
.teamcity/_Self/buildTypes/TestsForIntelliJ_213-221.kt
vendored
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
|
||||||
|
|
||||||
|
sealed class TestsForIntelliJ_213_221_branch(private val version: String) : BuildType({
|
||||||
|
name = "Tests for IntelliJ $version"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.Branch_213_221)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.AUTO
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
|
||||||
|
failureConditions {
|
||||||
|
failOnMetricChange {
|
||||||
|
metric = BuildFailureOnMetric.MetricType.TEST_COUNT
|
||||||
|
threshold = 20
|
||||||
|
units = BuildFailureOnMetric.MetricUnit.PERCENTS
|
||||||
|
comparison = BuildFailureOnMetric.MetricComparison.LESS
|
||||||
|
compareTo = build {
|
||||||
|
buildRule = lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
object TestsForIntelliJ20213 : TestsForIntelliJ_213_221_branch("2021.3.2")
|
||||||
11
.teamcity/_Self/subprojects/GitHub.kt
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package _Self.subprojects
|
||||||
|
|
||||||
|
import _Self.buildTypes.GithubTests
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
|
||||||
|
|
||||||
|
object GitHub : Project({
|
||||||
|
name = "Pull Requests checks"
|
||||||
|
description = "Automatic checking of GitHub Pull Requests"
|
||||||
|
|
||||||
|
buildType(GithubTests)
|
||||||
|
})
|
||||||
33
.teamcity/_Self/subprojects/OldTests.kt
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
package _Self.subprojects
|
||||||
|
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20181
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20182
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20183
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20191
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20192
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20193
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20201
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20202
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20203
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20211
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20212
|
||||||
|
import _Self.buildTypes.TestsForIntelliJ20213
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
|
||||||
|
|
||||||
|
object OldTests : Project({
|
||||||
|
name = "Old IdeaVim tests"
|
||||||
|
description = "Tests for older versions of IJ"
|
||||||
|
|
||||||
|
buildType(TestsForIntelliJ20181)
|
||||||
|
buildType(TestsForIntelliJ20182)
|
||||||
|
buildType(TestsForIntelliJ20183)
|
||||||
|
buildType(TestsForIntelliJ20191)
|
||||||
|
buildType(TestsForIntelliJ20192)
|
||||||
|
buildType(TestsForIntelliJ20193)
|
||||||
|
buildType(TestsForIntelliJ20201)
|
||||||
|
buildType(TestsForIntelliJ20202)
|
||||||
|
buildType(TestsForIntelliJ20203)
|
||||||
|
buildType(TestsForIntelliJ20211)
|
||||||
|
buildType(TestsForIntelliJ20212)
|
||||||
|
buildType(TestsForIntelliJ20213)
|
||||||
|
})
|
||||||
15
.teamcity/_Self/subprojects/Releases.kt
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package _Self.subprojects
|
||||||
|
|
||||||
|
import _Self.buildTypes.Release
|
||||||
|
import _Self.buildTypes.ReleaseDev
|
||||||
|
import _Self.buildTypes.ReleaseEap
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
|
||||||
|
|
||||||
|
object Releases : Project({
|
||||||
|
name = "IdeaVim releases"
|
||||||
|
description = "Stable and EAP releases for IdeaVim"
|
||||||
|
|
||||||
|
buildType(Release)
|
||||||
|
buildType(ReleaseEap)
|
||||||
|
buildType(ReleaseDev)
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/Branch_181.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_181 : GitVcsRoot({
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch 181)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "181"
|
||||||
|
useMirrors = false
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/Branch_183.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_183 : GitVcsRoot({
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch 183)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "183"
|
||||||
|
useMirrors = false
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/Branch_191_193.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_191_193 : GitVcsRoot({
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch 191-193)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "191-193"
|
||||||
|
useMirrors = false
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/Branch_201.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_201 : GitVcsRoot({
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch 201)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "201"
|
||||||
|
useMirrors = false
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/Branch_202.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_202 : GitVcsRoot({
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch 202)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "202"
|
||||||
|
useMirrors = false
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/Branch_203_212.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_203_212 : GitVcsRoot({
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch 203-212)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "203-212"
|
||||||
|
useMirrors = false
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/Branch_213_221.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_213_221 : GitVcsRoot({
|
||||||
|
id("HttpsGithubComJetBrainsIdeavimBranch213221")
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch 213-221)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "213-221"
|
||||||
|
})
|
||||||
11
.teamcity/_Self/vcsRoots/Branch_Release.kt
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
@file:Suppress("ClassName")
|
||||||
|
|
||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object Branch_Release : GitVcsRoot({
|
||||||
|
name = "https://github.com/JetBrains/ideavim (branch release)"
|
||||||
|
url = "https://github.com/JetBrains/ideavim.git"
|
||||||
|
branch = "release"
|
||||||
|
})
|
||||||
12
.teamcity/_Self/vcsRoots/GitHubPullRequest.kt
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package _Self.vcsRoots
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot
|
||||||
|
|
||||||
|
object GitHubPullRequest : GitVcsRoot({
|
||||||
|
name = "IdeaVim Pull Requests"
|
||||||
|
url = "git@github.com:JetBrains/ideavim.git"
|
||||||
|
branchSpec = "+:refs/(pull/*)/head"
|
||||||
|
authMethod = uploadedKey {
|
||||||
|
uploadedKey = "Alex Plate TeamCity key"
|
||||||
|
}
|
||||||
|
})
|
||||||
55
.teamcity/patches/buildTypes/Qodana.kts
vendored
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package patches.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.*
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.Qodana
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.qodana
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.ui.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
This patch script was generated by TeamCity on settings change in UI.
|
||||||
|
To apply the patch, change the buildType with id = 'Qodana'
|
||||||
|
accordingly, and delete the patch script.
|
||||||
|
*/
|
||||||
|
changeBuildType(RelativeId("Qodana")) {
|
||||||
|
expectSteps {
|
||||||
|
qodana {
|
||||||
|
name = "Qodana"
|
||||||
|
linter = jvm {
|
||||||
|
version = Qodana.JVMVersion.LATEST
|
||||||
|
}
|
||||||
|
param("clonefinder-enable", "true")
|
||||||
|
param("clonefinder-languages", "Java")
|
||||||
|
param("clonefinder-languages-container", "Java Kotlin")
|
||||||
|
param("clonefinder-mode", "")
|
||||||
|
param("clonefinder-queried-project", "src")
|
||||||
|
param("clonefinder-reference-projects", "src")
|
||||||
|
param("licenseaudit-enable", "true")
|
||||||
|
param("namesAndTagsCustom", "repo.labs.intellij.net/static-analyser/qodana")
|
||||||
|
param("report-version", "")
|
||||||
|
param("yaml-configuration", "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
insert(0) {
|
||||||
|
gradle {
|
||||||
|
name = "Generate grammar"
|
||||||
|
tasks = "generateGrammarSource"
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
update<Qodana>(1) {
|
||||||
|
clearConditions()
|
||||||
|
reportAsTests = true
|
||||||
|
argumentsCommandDocker = "-e QODANA_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcmdhbml6YXRpb24iOiIzUFZrQSIsInByb2plY3QiOiIzN1FlQSIsInRva2VuIjoiM0t2bXoifQ.uohp81tM7iAfvvB6k8faarfpV-OjusAaEbWQ8iNrOgs"
|
||||||
|
argumentsEntryPointDocker = "--baseline qodana.sarif.json"
|
||||||
|
param("clonefinder-languages", "")
|
||||||
|
param("collect-anonymous-statistics", "")
|
||||||
|
param("licenseaudit-enable", "")
|
||||||
|
param("clonefinder-languages-container", "")
|
||||||
|
param("clonefinder-queried-project", "")
|
||||||
|
param("clonefinder-enable", "")
|
||||||
|
param("clonefinder-reference-projects", "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
.teamcity/patches/buildTypes/ReleaseEap.kts
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package patches.buildTypes
|
||||||
|
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.*
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.VcsLabeling
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.vcsLabeling
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.ui.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
This patch script was generated by TeamCity on settings change in UI.
|
||||||
|
To apply the patch, change the buildType with id = 'ReleaseEap'
|
||||||
|
accordingly, and delete the patch script.
|
||||||
|
*/
|
||||||
|
changeBuildType(RelativeId("ReleaseEap")) {
|
||||||
|
features {
|
||||||
|
val feature1 = find<VcsLabeling> {
|
||||||
|
vcsLabeling {
|
||||||
|
vcsRootId = "${DslContext.settingsRoot.id}"
|
||||||
|
labelingPattern = "%system.build.number%"
|
||||||
|
successfulOnly = true
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
feature1.apply {
|
||||||
|
successfulOnly = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
104
.teamcity/pom.xml
vendored
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<project>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<name>IdeaVim Config DSL Script</name>
|
||||||
|
<groupId>IdeaVim</groupId>
|
||||||
|
<artifactId>IdeaVim_dsl</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.jetbrains.teamcity</groupId>
|
||||||
|
<artifactId>configs-dsl-kotlin-parent</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>jetbrains-all</id>
|
||||||
|
<url>https://download.jetbrains.com/teamcity-repository</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>teamcity-server</id>
|
||||||
|
<url>https://teamcity.jetbrains.com/app/dsl-plugins-repository</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<pluginRepositories>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>JetBrains</id>
|
||||||
|
<url>https://download.jetbrains.com/teamcity-repository</url>
|
||||||
|
</pluginRepository>
|
||||||
|
</pluginRepositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>${basedir}</sourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<version>${kotlin.version}</version>
|
||||||
|
|
||||||
|
<configuration/>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>process-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>process-test-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.teamcity</groupId>
|
||||||
|
<artifactId>teamcity-configs-maven-plugin</artifactId>
|
||||||
|
<version>${teamcity.dsl.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<format>kotlin</format>
|
||||||
|
<dstDir>target/generated-configs</dstDir>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.teamcity</groupId>
|
||||||
|
<artifactId>configs-dsl-kotlin</artifactId>
|
||||||
|
<version>${teamcity.dsl.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.teamcity</groupId>
|
||||||
|
<artifactId>configs-dsl-kotlin-plugins</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>${kotlin.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-script-runtime</artifactId>
|
||||||
|
<version>${kotlin.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
33
.teamcity/settings.kts
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
The settings script is an entry point for defining a single
|
||||||
|
TeamCity project. TeamCity looks for the 'settings.kts' file in a
|
||||||
|
project directory and runs it if it's found, so the script name
|
||||||
|
shouldn't be changed and its package should be the same as the
|
||||||
|
project's id.
|
||||||
|
|
||||||
|
The script should contain a single call to the project() function
|
||||||
|
with a Project instance or an init function as an argument.
|
||||||
|
|
||||||
|
VcsRoots, BuildTypes, and Templates of this project must be
|
||||||
|
registered inside project using the vcsRoot(), buildType(), and
|
||||||
|
template() methods respectively.
|
||||||
|
|
||||||
|
Subprojects can be defined either in their own settings.kts or by
|
||||||
|
calling the subProjects() method in this project.
|
||||||
|
|
||||||
|
To debug settings scripts in command-line, run the
|
||||||
|
|
||||||
|
mvnDebug org.jetbrains.teamcity:teamcity-configs-maven-plugin:generate
|
||||||
|
|
||||||
|
command and attach your debugger to the port 8000.
|
||||||
|
|
||||||
|
To debug in IntelliJ Idea, open the 'Maven Projects' tool window (View ->
|
||||||
|
Tool Windows -> Maven Projects), find the generate task
|
||||||
|
node (Plugins -> teamcity-configs -> teamcity-configs:generate),
|
||||||
|
the 'Debug' option is available in the context menu for the task.
|
||||||
|
*/
|
||||||
|
|
||||||
|
version = "2020.2"
|
||||||
|
project(_Self.Project)
|
||||||
461
AUTHORS.md
@@ -3,57 +3,430 @@ IdeaVim Authors
|
|||||||
|
|
||||||
The original author:
|
The original author:
|
||||||
|
|
||||||
* [Rick Maddy](mailto:rmaddy@maddyhome.com)
|
* [![icon][mail]](mailto:rmaddy@maddyhome.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Rick Maddy
|
||||||
|
|
||||||
The current maintainer:
|
The current maintainers:
|
||||||
|
|
||||||
* [Andrey Vlasovskikh](mailto:andrey.vlasovskikh@gmail.com)
|
* [![icon][mail]](mailto:alexpl292@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/AlexPl292)
|
||||||
|
|
||||||
|
Alex Plate
|
||||||
|
|
||||||
Previous maintainers:
|
Previous maintainers:
|
||||||
|
|
||||||
* [Oleg Shpynov](mailto:oleg.shpynov@jetbrains.com)
|
* [![icon][mail]](mailto:oleg.shpynov@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/olegs)
|
||||||
|
|
||||||
|
Oleg Shpynov
|
||||||
|
* [![icon][mail]](mailto:andrey.vlasovskikh@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/vlasovskikh)
|
||||||
|
|
||||||
|
Andrey Vlasovskikh
|
||||||
|
|
||||||
Contributors:
|
Contributors:
|
||||||
|
|
||||||
* [Dmitry Jemerov](mailto:yole@jetbrains.com)
|
* [![icon][mail]](mailto:yole@jetbrains.com)
|
||||||
* [Marquis Wang](mailto:marquis@marquiswang.com)
|
[![icon][github]](https://github.com/yole)
|
||||||
* [Julien Hoarau](mailto:madgnome@gmail.com)
|
|
||||||
* [Masanobu Imai](mailto:masanobu.imai@gmail.com)
|
Dmitry Jemerov
|
||||||
* [poxu](mailto:poxvuibr@gmail.com)
|
* [![icon][mail]](mailto:marquis@marquiswang.com)
|
||||||
* [Alexander Zolotov](mailto:alexander.zolotov@jetbrains.com)
|
[![icon][github]](https://github.com/marquiswang)
|
||||||
* [John Lindquist](mailto:johnlindquist@gmail.com)
|
|
||||||
* [Ira Klotzko](mailto:iklotzko@ltech.com)
|
Marquis Wang
|
||||||
* [Alex Selesse](mailto:alex@selesse.com)
|
* [![icon][mail]](mailto:madgnome@gmail.com)
|
||||||
* [Dathan Bennett](mailto:dbennett@palantir.com)
|
[![icon][github-off]](#)
|
||||||
* [salaam](mailto:kphayen@gmail.com)
|
|
||||||
* [Alexey Shmalko](mailto:rasen.dubi@gmail.com)
|
Julien Hoarau
|
||||||
* [Andrew Brookins](mailto:a.m.brookins@gmail.com)
|
* [![icon][mail]](mailto:masanobu.imai@gmail.com)
|
||||||
* [Chang Wang](mailto:changwang83@gmail.com)
|
[![icon][github-off]](#)
|
||||||
* [Jaime Sanchez](mailto:josejaime.sanchez@gmail.com)
|
|
||||||
* [Thomas B Homburg](mailto:thomas@homburg.dk)
|
Masanobu Imai
|
||||||
* [smartbomb](mailto:smartbomb@server.fake)
|
* [![icon][mail]](mailto:poxvuibr@gmail.com)
|
||||||
* [Tuomas Tynkkynen](mailto:tuomas.tynkkynen@iki.fi)
|
[![icon][github]](https://github.com/poxu)
|
||||||
* [Jackson Popkin](mailto:jackson@donorschoose.org)
|
|
||||||
* [Teruo Kunihiro](mailto:yuyuyu1999@gmail.com)
|
poxu
|
||||||
* [Liubov Paina](mailto:lubashka.994@mail.ru)
|
* [![icon][mail]](mailto:alexander.zolotov@jetbrains.com)
|
||||||
* [Daniel Leong](mailto:falcone88@gmail.com)
|
[![icon][github]](https://github.com/zolotov)
|
||||||
* [Aleksey Lagoshin](mailto:aleksey@pri-num.com)
|
|
||||||
* [Paulo Bu](mailto:pbu_98@yahoo.com)
|
Alexander Zolotov
|
||||||
* [Giorgos Gaganis](mailto:gaganis@yahoo.com)
|
* [![icon][mail]](mailto:johnlindquist@gmail.com)
|
||||||
* [Pavel Fatin](mailto:pavel.fatin@jetbrains.com)
|
[![icon][github]](https://github.com/johnlindquist)
|
||||||
* [tieTYT](mailto:tietyt@gmail.com)
|
|
||||||
* [Nick Gieschen](mailto:nickgieschen@gmail.com)
|
John Lindquist
|
||||||
* [Naoto Ikeno](mailto:ikenox@gmail.com)
|
* [![icon][mail]](mailto:iklotzko@ltech.com)
|
||||||
* [Maximilian Luz](mailto:qzed@users.noreply.github.com)
|
[![icon][github-off]](#)
|
||||||
* [Vladimir Parfinenko](mailto:vparfinenko@excelsior-usa.com)
|
|
||||||
* [Florian Hassmann](mailto:hassmann@hwdev.de)
|
Ira Klotzko
|
||||||
* [Jan Palus](mailto:jpalus@fastmail.com)
|
* [![icon][mail]](mailto:alex@selesse.com)
|
||||||
* [Konstantin Petrov](mailto:kpetrov@ripe.net)
|
[![icon][github]](https://github.com/selesse)
|
||||||
* [Vasily Alferov](mailto:ya-ikmik2012@yandex.ru)
|
|
||||||
* [Vitalii Karavaev](mailto:fkve97@gmail.com)
|
Alex Selesse
|
||||||
* [John Lin](mailto:johnlinp@gmail.com)
|
* [![icon][mail]](mailto:dbennett@palantir.com)
|
||||||
* [Alex Plate](mailto:alexpl292@gmail.com)
|
[![icon][github-off]](#)
|
||||||
* [Matt Ellis](mailto:m.t.ellis@gmail.com)
|
|
||||||
|
Dathan Bennett
|
||||||
|
* [![icon][mail]](mailto:kphayen@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
salaam
|
||||||
|
* [![icon][mail]](mailto:rasen.dubi@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/rasendubi)
|
||||||
|
|
||||||
|
Alexey Shmalko
|
||||||
|
* [![icon][mail]](mailto:a.m.brookins@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Andrew Brookins
|
||||||
|
* [![icon][mail]](mailto:changwang83@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Chang Wang
|
||||||
|
* [![icon][mail]](mailto:josejaime.sanchez@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Jaime Sanchez
|
||||||
|
* [![icon][mail]](mailto:thomas@homburg.dk)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Thomas B Homburg
|
||||||
|
* [![icon][mail]](mailto:smartbomb@server.fake)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
smartbomb
|
||||||
|
* [![icon][mail]](mailto:tuomas.tynkkynen@iki.fi)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Tuomas Tynkkynen
|
||||||
|
* [![icon][mail]](mailto:jackson@donorschoose.org)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Jackson Popkin
|
||||||
|
* [![icon][mail]](mailto:yuyuyu1999@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Teruo Kunihiro
|
||||||
|
* [![icon][mail]](mailto:lubashka.994@mail.ru)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Liubov Paina
|
||||||
|
* [![icon][mail]](mailto:me@dhleong.net)
|
||||||
|
[![icon][github]](https://github.com/dhleong)
|
||||||
|
|
||||||
|
Daniel Leong
|
||||||
|
* [![icon][mail]](mailto:aleksey@pri-num.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Aleksey Lagoshin
|
||||||
|
* [![icon][mail]](mailto:pbu_98@yahoo.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Paulo Bu
|
||||||
|
* [![icon][mail]](mailto:gaganis@yahoo.com)
|
||||||
|
[![icon][github]](https://github.com/gaganis)
|
||||||
|
|
||||||
|
Giorgos Gaganis
|
||||||
|
* [![icon][mail]](mailto:pavel.fatin@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/pavelfatin)
|
||||||
|
|
||||||
|
Pavel Fatin
|
||||||
|
* [![icon][mail]](mailto:tietyt@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
tieTYT
|
||||||
|
* [![icon][mail]](mailto:nickgieschen@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Nick Gieschen
|
||||||
|
* [![icon][mail]](mailto:ikenox@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/ikenox)
|
||||||
|
|
||||||
|
Naoto Ikeno
|
||||||
|
* [![icon][mail]](mailto:qzed@users.noreply.github.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Maximilian Luz
|
||||||
|
* [![icon][mail]](mailto:vparfinenko@excelsior-usa.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Vladimir Parfinenko
|
||||||
|
* [![icon][mail]](mailto:hassmann@hwdev.de)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Florian Hassmann
|
||||||
|
* [![icon][mail]](mailto:jpalus@fastmail.com)
|
||||||
|
[![icon][github]](https://github.com/jpalus)
|
||||||
|
|
||||||
|
Jan Palus
|
||||||
|
* [![icon][mail]](mailto:kpetrov@ripe.net)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Konstantin Petrov
|
||||||
|
* [![icon][mail]](mailto:ya-ikmik2012@yandex.ru)
|
||||||
|
[![icon][github]](https://github.com/vasalf)
|
||||||
|
|
||||||
|
Vasily Alferov
|
||||||
|
* [![icon][mail]](mailto:fkve97@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/karavaevitalii)
|
||||||
|
|
||||||
|
Vitalii Karavaev
|
||||||
|
* [![icon][mail]](mailto:johnlinp@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/johnlinp)
|
||||||
|
|
||||||
|
John Lin
|
||||||
|
* [![icon][mail]](mailto:alexpl292@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/AlexPl292)
|
||||||
|
|
||||||
|
Alex Plate
|
||||||
|
* [![icon][mail]](mailto:m.t.ellis@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/citizenmatt)
|
||||||
|
|
||||||
|
Matt Ellis
|
||||||
|
* [![icon][mail]](mailto:johngrib82@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/johngrib)
|
||||||
|
|
||||||
|
John Grib
|
||||||
|
* [![icon][mail]](mailto:hild@b4mad.net)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Marcel Hild
|
||||||
|
* [![icon][mail]](mailto:vedranb@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Vedran Budimcic
|
||||||
|
* [![icon][mail]](mailto:andreigasparovici1@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/andreigasparovici)
|
||||||
|
|
||||||
|
Andrei Gasparovici
|
||||||
|
* [![icon][mail]](mailto:qtankle@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/dos65)
|
||||||
|
|
||||||
|
dos65
|
||||||
|
* [![icon][mail]](mailto:ttonyarra@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/TonyArra)
|
||||||
|
|
||||||
|
Tony Arra
|
||||||
|
* [![icon][mail]](mailto:bradziolko@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/bradziolko)
|
||||||
|
|
||||||
|
Brad Ziolko
|
||||||
|
* [![icon][mail]](mailto:sumoooru2@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/sumoooru2)
|
||||||
|
|
||||||
|
sumoooru2
|
||||||
|
* [![icon][mail]](mailto:aqwsedrft1234@yahoo.co.jp)
|
||||||
|
[![icon][github]](https://github.com/gecko655)
|
||||||
|
|
||||||
|
gecko655
|
||||||
|
* [![icon][mail]](mailto:megna.dany@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/danielemegna)
|
||||||
|
|
||||||
|
Daniele Megna
|
||||||
|
* [![icon][mail]](mailto:apottere@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/apottere)
|
||||||
|
|
||||||
|
Andrew Potter
|
||||||
|
* [![icon][mail]](mailto:romain.gautier@nimamoh.net)
|
||||||
|
[![icon][github]](https://github.com/Nimamoh)
|
||||||
|
|
||||||
|
Romain Gautier
|
||||||
|
* [![icon][mail]](mailto:elliot.courant@wheniwork.com)
|
||||||
|
[![icon][github]](https://github.com/ECourant)
|
||||||
|
|
||||||
|
Elliot Courant
|
||||||
|
* [![icon][mail]](mailto:simon.rainer@fau.de)
|
||||||
|
[![icon][github]](https://github.com/Vvalter)
|
||||||
|
|
||||||
|
Simon Rainer
|
||||||
|
* [![icon][mail]](mailto:mziwisky@instructure.com)
|
||||||
|
[![icon][github]](https://github.com/mziwisky)
|
||||||
|
|
||||||
|
Michael Ziwisky
|
||||||
|
* [![icon][mail]](mailto:pierce@plasticcow.com)
|
||||||
|
[![icon][github]](https://github.com/thecodewarrior)
|
||||||
|
|
||||||
|
Pierce Corcoran
|
||||||
|
* [![icon][mail]](mailto:jonatantierno@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/jonatantierno)
|
||||||
|
|
||||||
|
Jonatan Tierno
|
||||||
|
* [![icon][mail]](mailto:brendan@annable.me)
|
||||||
|
[![icon][github]](https://github.com/BrendanAnnable)
|
||||||
|
|
||||||
|
Brendan Annable
|
||||||
|
* [![icon][mail]](mailto:nerd.naveen@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/NOLFXceptMe)
|
||||||
|
|
||||||
|
Naveen Kumar Molleti
|
||||||
|
* [![icon][mail]](mailto:jorgen.granseth@bekk.no)
|
||||||
|
[![icon][github]](https://github.com/jorgengranseth)
|
||||||
|
|
||||||
|
Jørgen Granseth
|
||||||
|
* [![icon][mail]](mailto:rafal@hajdacki.com)
|
||||||
|
[![icon][github]](https://github.com/hajdamak)
|
||||||
|
|
||||||
|
Rafał Hajdacki
|
||||||
|
* [![icon][mail]](mailto:igrek+github@fastem.com)
|
||||||
|
[![icon][github]](https://github.com/igrekster)
|
||||||
|
|
||||||
|
igrekster
|
||||||
|
* [![icon][mail]](mailto:lokomot476@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/fan-tom)
|
||||||
|
|
||||||
|
Alexey Gerasimov
|
||||||
|
* [![icon][mail]](mailto:a.grison+github@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/agrison)
|
||||||
|
|
||||||
|
Alexandre Grison
|
||||||
|
* [![icon][mail]](mailto:angel@knight-industries.com)
|
||||||
|
[![icon][github]](https://github.com/angelbot)
|
||||||
|
|
||||||
|
John Weigel
|
||||||
|
* [![icon][mail]](mailto:kevinz@weghst.com)
|
||||||
|
[![icon][github]](https://github.com/kevin70)
|
||||||
|
|
||||||
|
kk
|
||||||
|
* [![icon][mail]](mailto:runforprogram@163.com)
|
||||||
|
[![icon][github]](https://github.com/runforprogram)
|
||||||
|
|
||||||
|
runforprogram
|
||||||
|
* [![icon][mail]](mailto:valery.isaev@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/valis)
|
||||||
|
|
||||||
|
valis
|
||||||
|
* [![icon][mail]](mailto:pmikulski@voleon.com)
|
||||||
|
[![icon][github]](https://github.com/pmnoxx)
|
||||||
|
|
||||||
|
Piotr Mikulski
|
||||||
|
* [![icon][mail]](mailto:14farresa@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/adriafarres)
|
||||||
|
|
||||||
|
Adrià Farrés
|
||||||
|
* [![icon][mail]](mailto:patrick.j.elmquist@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/patrick-elmquist)
|
||||||
|
|
||||||
|
Patrick Elmquist
|
||||||
|
* [![icon][mail]](mailto:rieon@rieon.cn)
|
||||||
|
[![icon][github]](https://github.com/rieonke)
|
||||||
|
|
||||||
|
Rieon Ke
|
||||||
|
* [![icon][mail]](mailto:jiirra@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/KostkaBrukowa)
|
||||||
|
|
||||||
|
KostkaBrukowa
|
||||||
|
* [![icon][mail]](mailto:wangyaohuicn@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/yaohui-wyh)
|
||||||
|
|
||||||
|
Yaohui Wang
|
||||||
|
* [![icon][mail]](mailto:iain.ballard@bjss.com)
|
||||||
|
[![icon][github]](https://github.com/i-e-b)
|
||||||
|
|
||||||
|
Iain Ballard
|
||||||
|
* [![icon][mail]](mailto:brandoncc@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/brandoncc)
|
||||||
|
|
||||||
|
Brandon Conway
|
||||||
|
* [![icon][mail]](mailto:ga@anadoxin.org)
|
||||||
|
[![icon][github]](https://github.com/antekone)
|
||||||
|
|
||||||
|
Grzegorz Antoniak
|
||||||
|
* [![icon][mail]](mailto:shaunpatterson@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/shaunpatterson)
|
||||||
|
|
||||||
|
Shaun Patterson
|
||||||
|
* [![icon][mail]](mailto:vladimir.petrenko@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/vladimir-petrenko)
|
||||||
|
|
||||||
|
Vladimir Petrenko
|
||||||
|
* [![icon][mail]](mailto:sergey.vorobyov@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/DeveloperHacker)
|
||||||
|
|
||||||
|
Sergei Vorobyov
|
||||||
|
* [![icon][mail]](mailto:daya0576@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/daya0576)
|
||||||
|
|
||||||
|
大牙(Henry Zhu)
|
||||||
|
* [![icon][mail]](mailto:mplacek@skilltech.pl)
|
||||||
|
[![icon][github]](https://github.com/MichalPlacek)
|
||||||
|
|
||||||
|
MichalPlacek
|
||||||
|
* [![icon][mail]](mailto:shrikantsharat.k@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/sharat87)
|
||||||
|
|
||||||
|
Shrikant Sharat Kandula
|
||||||
|
* [![icon][mail]](mailto:michal.placek@yandex.com)
|
||||||
|
[![icon][github]](https://github.com/MichalPlacek)
|
||||||
|
|
||||||
|
Michal Placek
|
||||||
|
* [![icon][mail]](mailto:eugene.nizienko@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/nizienko)
|
||||||
|
|
||||||
|
eugene nizienko
|
||||||
|
* [![icon][mail]](mailto:x@lipp.fi)
|
||||||
|
[![icon][github]](https://github.com/lippfi)
|
||||||
|
|
||||||
|
Filipp Vakhitov
|
||||||
|
* [![icon][mail]](mailto:yzeiri.1@osu.edu)
|
||||||
|
[![icon][github]](https://github.com/myzeiri)
|
||||||
|
|
||||||
|
Martin Yzeiri
|
||||||
|
* [![icon][mail]](mailto:jeyko1@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/wrightwriter)
|
||||||
|
|
||||||
|
Petar Guglev
|
||||||
|
* [![icon][mail]](mailto:contact@chylex.com)
|
||||||
|
[![icon][github]](https://github.com/chylex)
|
||||||
|
|
||||||
|
chylex
|
||||||
|
* [![icon][mail]](mailto:daniel.egger@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/DanEEStar)
|
||||||
|
|
||||||
|
DanEEStar
|
||||||
|
* [![icon][mail]](mailto:ksrbkevinsuen@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/ksrb)
|
||||||
|
|
||||||
|
Kevin Suen
|
||||||
|
* [![icon][mail]](mailto:michael.schertenleib@inftec.ch)
|
||||||
|
[![icon][github]](https://github.com/cravay)
|
||||||
|
|
||||||
|
Michael Schertenleib
|
||||||
|
* [![icon][mail]](mailto:piotr@near.org)
|
||||||
|
[![icon][github]](https://github.com/pmnoxx)
|
||||||
|
|
||||||
|
Piotr Mikulski
|
||||||
|
* [![icon][mail]](mailto:lonrevip@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/lonre)
|
||||||
|
|
||||||
|
Lonre Wang
|
||||||
|
* [![icon][mail]](mailto:AlexPl292@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/AlexPl292)
|
||||||
|
|
||||||
|
Alex Pláte
|
||||||
|
* [![icon][mail]](mailto:david@dadon.fr)
|
||||||
|
[![icon][github]](https://github.com/ddadon10)
|
||||||
|
|
||||||
|
David Dadon
|
||||||
|
* [![icon][mail]](mailto:hollandpirates@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/PHPirates)
|
||||||
|
|
||||||
|
Thomas Schouten
|
||||||
|
* [![icon][mail]](mailto:sr@mail25.de)
|
||||||
|
[![icon][github]](https://github.com/Vvalter)
|
||||||
|
|
||||||
|
Simon Rainer
|
||||||
|
* [![icon][mail]](mailto:filipp.vakhitov@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/lippfi)
|
||||||
|
|
||||||
|
lippfi
|
||||||
|
|
||||||
If you are a contributor and your name is not listed here, feel free to
|
If you are a contributor and your name is not listed here, feel free to
|
||||||
contact the maintainer.
|
contact the maintainers.
|
||||||
|
|
||||||
|
<a href="https://icons8.com">Icons by Icons8</a>
|
||||||
|
|
||||||
|
[mail]: assets/icons/mail.png
|
||||||
|
[github]: assets/icons/github.png
|
||||||
|
|
||||||
|
[github-off]: assets/icons/github-off.png
|
||||||
|
|||||||
751
CHANGES.md
@@ -3,27 +3,673 @@ The Changelog
|
|||||||
|
|
||||||
History of changes in IdeaVim for the IntelliJ platform.
|
History of changes in IdeaVim for the IntelliJ platform.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
Before version 1.7.0:
|
||||||
|
Stable versions use X.Y format.
|
||||||
|
EAP ([Early Access Program](https://jb.gg/ideavim-eap)) versions use X.Y.Z format.
|
||||||
|
|
||||||
|
|
||||||
Get an Early Access
|
Get an Early Access
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Would you like to try new features and fixes? Join the Early Access Program and
|
Would you like to try new features and fixes? Join the Early Access Program and
|
||||||
receive EAP builds as updates! Add this URL to "Settings | Plugins |
|
receive EAP builds as updates! Use the `Early Access Program` option in the status bar or
|
||||||
Browse Repositories | Manage Repositories":
|
add this URL to "Settings | Plugins | Manage Plugin Repositories":
|
||||||
[https://plugins.jetbrains.com/plugins/eap/ideavim](https://plugins.jetbrains.com/plugins/eap/ideavim)
|
`https://plugins.jetbrains.com/plugins/eap/ideavim`
|
||||||
|
|
||||||
It is important to distinguish EAP from traditional pre-release software.
|
It is important to distinguish EAP from traditional pre-release software.
|
||||||
Please note that the quality of EAP versions may at times be way below even
|
Please note that the quality of EAP versions may at times be way below even
|
||||||
usual beta standards.
|
usual beta standards.
|
||||||
|
|
||||||
To Be Released
|
## 1.11.0, 2022-08-09
|
||||||
--------------
|
|
||||||
|
|
||||||
...
|
### Features:
|
||||||
|
* Add `gcu` command for Commentary plugin
|
||||||
|
* Add `:Commentary` command, which works great for commands such as `:%g/fun/Commentary`
|
||||||
|
* Support `gc` – commentary text objects. E.g. `dgc`: delete commented text.
|
||||||
|
* Support `redo-register feature` | [VIM-2643](https://youtrack.jetbrains.com/issue/VIM-2643/Dot-operator-doesn-t-increment-number-register-after-pasting-fro) | [viminfo](http://vimdoc.sourceforge.net/htmldoc/undo.html#redo-register)
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* Uses the same mappings as Commentary, so custom bindings for the Vim plugin will work with IdeaVim, too.
|
||||||
|
E.g. `<Plug>Commentary` instead of `<Plug>(CommentMotion)`. Old mappings are maintained for compatibility.
|
||||||
|
* If you open `~/.ideavimrc` in IDE, remove a mapping, and reload the config using the reload button,
|
||||||
|
the mapping will actually be unmapped.
|
||||||
|
* New vim (and IdeaVim) behaviour: `ci(`& friends searches for the brackets in the line.
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2587](https://youtrack.jetbrains.com/issue/VIM-2587) Use ctrl-6 as ctrl-^
|
||||||
|
* [VIM-2590](https://youtrack.jetbrains.com/issue/VIM-2590) Fix caret shape in PyCharm
|
||||||
|
* [VIM-2553](https://youtrack.jetbrains.com/issue/VIM-2553) Substitute consecutive matches
|
||||||
|
* [VIM-1687](https://youtrack.jetbrains.com/issue/VIM-1687) Support count for `gcc`
|
||||||
|
* [VIM-2381](https://youtrack.jetbrains.com/issue/VIM-2381) Fall back to line comment if block comment is not available
|
||||||
|
* [VIM-2589](https://youtrack.jetbrains.com/issue/VIM-2589) Add `gc` text object
|
||||||
|
* [VIM-2604](https://youtrack.jetbrains.com/issue/VIM-2604) Update action execution rules
|
||||||
|
* [VIM-2654](https://youtrack.jetbrains.com/issue/VIM-2654) Add support for `return` without expression
|
||||||
|
* [VIM-2630](https://youtrack.jetbrains.com/issue/VIM-2630/Please-fix-warning-Shall-not-be-called-on-a-template-presentatio) Fix IDE freeze
|
||||||
|
* [VIM-2661](https://youtrack.jetbrains.com/issue/VIM-2661/Spamming-does-not-work) Fix repeating the `@@` command
|
||||||
|
* [VIM-2668](https://youtrack.jetbrains.com/issue/VIM-2668/tabm-or-tabm-with-no-number-does-not-match-vim-behavior) Fix omitted numbers in `tabm` command
|
||||||
|
* [VIM-2595](https://youtrack.jetbrains.com/issue/VIM-2595) Support plugins in macro execution
|
||||||
|
* [VIM-2671](https://youtrack.jetbrains.com/issue/VIM-2671) Fix using plugins from mappings
|
||||||
|
* [VIM-2675](https://youtrack.jetbrains.com/issue/VIM-2675) Fix numbering register in visual mode
|
||||||
|
* [VIM-744](https://youtrack.jetbrains.com/issue/VIM-744/Use-undoredo-with-count-modifier) Add count to undo/redo
|
||||||
|
* [VIM-1862](https://youtrack.jetbrains.com/issue/VIM-1862/Ex-commands-executed-in-keymaps-and-macros-are-added-to-the-command-history) Fix command history
|
||||||
|
* [VIM-2227](https://youtrack.jetbrains.com/issue/VIM-2227) Wrong behavior when deleting / changing surround with invalid character
|
||||||
|
* [VIM-2691](https://youtrack.jetbrains.com/issue/VIM-2691) Save file on :w
|
||||||
|
* [VIM-2710](https://youtrack.jetbrains.com/issue/VIM-2710) Show options value on `set opt`
|
||||||
|
* [VIM-913](https://youtrack.jetbrains.com/issue/VIM-913) Partially fix the issue with macros and autocompletion
|
||||||
|
* [VIM-2723](https://youtrack.jetbrains.com/issue/VIM-2723) Move focus to editor after :q
|
||||||
|
* [VIM-2728](https://youtrack.jetbrains.com/issue/VIM-2728) Give access to global variables
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [468](https://github.com/JetBrains/ideavim/pull/468) by [Thomas Schouten](https://github.com/PHPirates): Implement UserDataHolder for EditorDataContext
|
||||||
|
* [483](https://github.com/JetBrains/ideavim/pull/483) by [Simon Rainer](https://github.com/Vvalter): Fix(VIM-2553): Substitute consecutive matches
|
||||||
|
* [488](https://github.com/JetBrains/ideavim/pull/488) by [Martin Yzeiri](https://github.com/myzeiri): Add Matchit support for the C family of languages
|
||||||
|
* [493](https://github.com/JetBrains/ideavim/pull/493) by [Matt Ellis](https://github.com/citizenmatt): Improvements to Commentary extension
|
||||||
|
* [494](https://github.com/JetBrains/ideavim/pull/494) by [Matt Ellis](https://github.com/citizenmatt): Cleanup pre-212 CaretVisualAttributes compatibility code
|
||||||
|
* [504](https://github.com/JetBrains/ideavim/pull/504) by [Matt Ellis](https://github.com/citizenmatt): Minor bug fixes
|
||||||
|
* [519](https://github.com/JetBrains/ideavim/pull/519) by [chylex](https://github.com/chylex): Fix(VIM-2227): Wrong behavior when deleting / changing surround with invalid character
|
||||||
|
* [525](https://github.com/JetBrains/ideavim/pull/525) by [Matt Ellis](https://github.com/citizenmatt): Improve handling of fractional width fonts
|
||||||
|
* [526](https://github.com/JetBrains/ideavim/pull/526) by [Alex Pláte](https://github.com/AlexPl292): Create gradle.properties
|
||||||
|
* [528](https://github.com/JetBrains/ideavim/pull/528) by [chylex](https://github.com/chylex): Implement partial code completion support in macros
|
||||||
|
* [531](https://github.com/JetBrains/ideavim/pull/531) by [Matt Ellis](https://github.com/citizenmatt): Consolidate doTest methods
|
||||||
|
|
||||||
|
## 1.10.0, 2022-02-17
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Add register support to let command | [VIM-749](https://youtrack.jetbrains.com/issue/VIM-749), [VIM-1783](https://youtrack.jetbrains.com/issue/VIM-1783)
|
||||||
|
* Add tabmove command | [VIM-1164](https://youtrack.jetbrains.com/issue/VIM-1164)
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2502](https://youtrack.jetbrains.com/issue/VIM-2502) Fix the shape of new carets
|
||||||
|
* [VIM-2499](https://youtrack.jetbrains.com/issue/VIM-2499) Fix mapping to esc
|
||||||
|
* [VIM-2500](https://youtrack.jetbrains.com/issue/VIM-2500) Fix esc for normal mode
|
||||||
|
* [VIM-2523](https://youtrack.jetbrains.com/issue/VIM-2523) `i` command for the folder in the project tree
|
||||||
|
* [VIM-2471](https://youtrack.jetbrains.com/issue/VIM-2471) Multiple [{ and ]} actions
|
||||||
|
* [VIM-2504](https://youtrack.jetbrains.com/issue/VIM-2504) Fix esc with using python notebooks
|
||||||
|
* [VIM-2540](https://youtrack.jetbrains.com/issue/VIM-2540) Fix option listeners
|
||||||
|
* [VIM-2548](https://youtrack.jetbrains.com/issue/VIM-2548) Fix paste
|
||||||
|
* [VIM-2470](https://youtrack.jetbrains.com/issue/VIM-2470) Fix incorrect reset of cursor shape
|
||||||
|
* [VIM-2223](https://youtrack.jetbrains.com/issue/VIM-2223), [VIM-1684](https://youtrack.jetbrains.com/issue/VIM-1684), [VIM-2491](https://youtrack.jetbrains.com/issue/VIM-2491) Fix `gv`
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [441](https://github.com/JetBrains/ideavim/pull/441) by [DanEEStar](https://github.com/DanEEStar): Add Matchit support for Vue.js files
|
||||||
|
* [440](https://github.com/JetBrains/ideavim/pull/440) by [Kevin Suen](https://github.com/ksrb): Add matchit support for handlebars
|
||||||
|
* [448](https://github.com/JetBrains/ideavim/pull/448) by [Michael Schertenleib](https://github.com/cravay): Support custom element names in vim-surround
|
||||||
|
* [435](https://github.com/JetBrains/ideavim/pull/435) by [Piotr Mikulski](https://github.com/pmnoxx): Print stderr when running a command just like vim does
|
||||||
|
* [449](https://github.com/JetBrains/ideavim/pull/449) by [Lonre Wang](https://github.com/lonre): Typo fix
|
||||||
|
* [453](https://github.com/JetBrains/ideavim/pull/453) by [Matt Ellis](https://github.com/citizenmatt): fix(VIM-2470): Fix incorrect reset of cursor shape
|
||||||
|
* [461](https://github.com/JetBrains/ideavim/pull/461) by [David Dadon](https://github.com/ddadon10): Add shortcut to ideajoin example
|
||||||
|
|
||||||
|
## 1.9.0, 2021-12-10
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Make IdeaVim compatible with CodeWithMe | [VIM-2332](https://youtrack.jetbrains.com/issue/VIM-2332)
|
||||||
|
* expression register `<C-R>=` | [VIM-521](https://youtrack.jetbrains.com/issue/VIM-521)
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2442](https://youtrack.jetbrains.com/issue/VIM-2442) Fix `!` command
|
||||||
|
* [VIM-2255](https://youtrack.jetbrains.com/issue/VIM-2255) Fix reload icon on windows
|
||||||
|
* [VIM-2199](https://youtrack.jetbrains.com/issue/VIM-2199) Fix autocompletion for AppCode
|
||||||
|
* [VIM-2445](https://youtrack.jetbrains.com/issue/VIM-2445) Fix spaces in range
|
||||||
|
* [VIM-2450](https://youtrack.jetbrains.com/issue/VIM-2450) Fix set command
|
||||||
|
* [VIM-2451](https://youtrack.jetbrains.com/issue/VIM-2451) Fix comments
|
||||||
|
* [VIM-2452](https://youtrack.jetbrains.com/issue/VIM-2452) Fix augroup
|
||||||
|
* [VIM-2453](https://youtrack.jetbrains.com/issue/VIM-2453) Fix split command
|
||||||
|
* [VIM-2397](https://youtrack.jetbrains.com/issue/VIM-2397) Fix dollar motion as an operator
|
||||||
|
* [VIM-2432](https://youtrack.jetbrains.com/issue/VIM-2432) Fix ctrl-d and ctrl-u motions with scrolloff
|
||||||
|
* [VIM-2462](https://youtrack.jetbrains.com/issue/VIM-2462) Reset caret shape when disabling plugin
|
||||||
|
* [VIM-2449](https://youtrack.jetbrains.com/issue/VIM-2449) Fix `I` for one-line block selection
|
||||||
|
* [VIM-2213](https://youtrack.jetbrains.com/issue/VIM-2213) Close VCS change popup on esc
|
||||||
|
* [VIM-2435](https://youtrack.jetbrains.com/issue/VIM-2435) Close diff window on esc
|
||||||
|
* [VIM-2461](https://youtrack.jetbrains.com/issue/VIM-2461) Show action id before action execution
|
||||||
|
* [VIM-2026](https://youtrack.jetbrains.com/issue/VIM-2026) Keep global marks after restart
|
||||||
|
* [VIM-1691](https://youtrack.jetbrains.com/issue/VIM-1691) Fix default path for `!` command
|
||||||
|
* [VIM-2487](https://youtrack.jetbrains.com/issue/VIM-2487)
|
||||||
|
[VIM-2434](https://youtrack.jetbrains.com/issue/VIM-2434)
|
||||||
|
Fix IdeaVim in PyCharm notebooks
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [390](https://github.com/JetBrains/ideavim/pull/390) by [chylex](https://github.com/chylex): [VIM-2255] Missing reload icon in .ideavimrc on Windows
|
||||||
|
* [391](https://github.com/JetBrains/ideavim/pull/391) by [Matt Ellis](https://github.com/citizenmatt): fix(VIM-2432): handle scrolloff with <C-D> and <C-U>
|
||||||
|
* [401](https://github.com/JetBrains/ideavim/pull/401) by [Matt Ellis](https://github.com/citizenmatt): Reset caret shape when disabling plugin
|
||||||
|
* [407](https://github.com/JetBrains/ideavim/pull/407) by [eugene nizienko](https://github.com/nizienko): Video recording for ui tests
|
||||||
|
* [418](https://github.com/JetBrains/ideavim/pull/418) by [chylex](https://github.com/chylex): Fix compile errors in unit tests on Windows
|
||||||
|
|
||||||
|
## 1.8.0, 2021-10-27
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support `matchit.vim` extension for Ruby and XML/HTML [VIM-539](https://youtrack.jetbrains.com/issue/VIM-539) | [matchit.vim](https://github.com/chrisbra/matchit)
|
||||||
|
* IDE-specific configuration [VIM-1573](https://youtrack.jetbrains.com/issue/VIM-1573)
|
||||||
|
* Call command [VIM-2416](https://youtrack.jetbrains.com/issue/VIM-2416)
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2417](https://youtrack.jetbrains.com/issue/VIM-2417) Fix bars in substitute command
|
||||||
|
* [VIM-2425](https://youtrack.jetbrains.com/issue/VIM-2425) Fix reload button
|
||||||
|
* [VIM-2422](https://youtrack.jetbrains.com/issue/VIM-2422) Fix freeze
|
||||||
|
* [VIM-2420](https://youtrack.jetbrains.com/issue/VIM-2420) Fix freeze
|
||||||
|
* [VIM-2359](https://youtrack.jetbrains.com/issue/VIM-2359) Fix selection with VimExchange
|
||||||
|
* [VIM-2426](https://youtrack.jetbrains.com/issue/VIM-2426) Fix marks in commands
|
||||||
|
* [VIM-2438](https://youtrack.jetbrains.com/issue/VIM-2438) Fix marks in commands
|
||||||
|
* [DISCUSSION-386](https://github.com/JetBrains/ideavim/discussions/386) Fixed command with no spaces before argument
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [337](https://github.com/JetBrains/ideavim/pull/337) by [Matt Ellis](https://github.com/citizenmatt): guicursor!
|
||||||
|
* [343](https://github.com/JetBrains/ideavim/pull/343) by [Martin Yzeiri](https://github.com/myzeiri): Emulate matchit.vim
|
||||||
|
* [387](https://github.com/JetBrains/ideavim/pull/387) by [Petar Guglev](https://github.com/wrightwriter): Update README.md link
|
||||||
|
|
||||||
|
## 1.7.2, 2021-09-30
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2405](https://youtrack.jetbrains.com/issue/VIM-2405) ExExceptions during `map <expr>` execution are now displayed in status bar
|
||||||
|
* [VIM-2406](https://youtrack.jetbrains.com/issue/VIM-2406) Fix go to line command
|
||||||
|
* [VIM-2408](https://youtrack.jetbrains.com/issue/VIM-2408) Fix vim script parser
|
||||||
|
* [VIM-2409](https://youtrack.jetbrains.com/issue/VIM-2409) Fix substitute command
|
||||||
|
* [VIM-2411](https://youtrack.jetbrains.com/issue/VIM-2411) Fix vim script parser
|
||||||
|
|
||||||
|
## 1.7.1, 2021-09-20
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2400](https://youtrack.jetbrains.com/issue/VIM-2400) Fix vim script parser
|
||||||
|
* [VIM-2401](https://youtrack.jetbrains.com/issue/VIM-2401) Exceptions occurred during execution of `map<expr>` are now shown in status bar
|
||||||
|
* [VIM-2404](https://youtrack.jetbrains.com/issue/VIM-2404) Fix multiple pastes from unnamed clipboard
|
||||||
|
|
||||||
|
## 1.7.0, 2021-09-16
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* New engine for Vim Script execution. Check out the [GitHub Discussion](https://jb.gg/vim-script-discussion).
|
||||||
|
* Mapping keys to expressions (map \<expr>). See `:h map-expression`.
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2368](https://youtrack.jetbrains.com/issue/VIM-2368) Do not remove selection on right click
|
||||||
|
* [VIM-2392](https://youtrack.jetbrains.com/issue/VIM-2392) Fix possible out of bounds exception
|
||||||
|
* [VIM-2387](https://youtrack.jetbrains.com/issue/VIM-2387) Fix coping with unnamed and ideaput
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* New versioning scheme. Current version is `1.7.0` instead of `0.70`.
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [349](https://github.com/JetBrains/ideavim/pull/349) by [eugene nizienko](https://github.com/nizienko): Run UI test ci
|
||||||
|
|
||||||
|
## 0.69, 2021-07-20
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support several buffer management commands [VIM-1062](https://youtrack.jetbrains.com/issue/VIM-1062), [VIM-2335](https://youtrack.jetbrains.com/issue/VIM-2335)
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2317](https://youtrack.jetbrains.com/issue/VIM-2317) Fix memory leak
|
||||||
|
* [VIM-1357](https://youtrack.jetbrains.com/issue/VIM-1357)
|
||||||
|
[VIM-1566](https://youtrack.jetbrains.com/issue/VIM-1566) Fix external filters
|
||||||
|
* [VIM-2336](https://youtrack.jetbrains.com/issue/VIM-2336) Fix repeat for the `T` movement
|
||||||
|
* [VIM-1192](https://youtrack.jetbrains.com/issue/VIM-1192) Fix dollar motion from single command
|
||||||
|
* [VIM-1672](https://youtrack.jetbrains.com/issue/VIM-1672) IdeaVim correctly populates clipboard history
|
||||||
|
* [VIM-2351](https://youtrack.jetbrains.com/issue/VIM-2351) Correctly select last character when selecting with mouse
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [332](https://github.com/JetBrains/ideavim/pull/332) by [Matt Ellis](https://github.com/citizenmatt): VIM-1357+VIM-1566: Use OS shell to run filter command
|
||||||
|
* [333](https://github.com/JetBrains/ideavim/pull/333) by [Michal Placek](https://github.com/MichalPlacek): VIM-1062
|
||||||
|
* [334](https://github.com/JetBrains/ideavim/pull/334) by [Michal Placek](https://github.com/MichalPlacek): vim-2335 Support for navigation to previous buffer with :b#
|
||||||
|
|
||||||
|
## 0.68, 2021-06-22
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support `:global` and `:vglobal` commands [VIM-831](https://youtrack.jetbrains.com/issue/VIM-831), [VIM-832](https://youtrack.jetbrains.com/issue/VIM-832)
|
||||||
|
* Support `vim-indent-object` extension [VIM-1151](https://youtrack.jetbrains.com/issue/VIM-1151) | [vim-indent-object](https://github.com/michaeljsmith/vim-indent-object)
|
||||||
|
* Support `:print` command
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2308](https://youtrack.jetbrains.com/issue/VIM-2308) Go to next tab doesn't move scrolling
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [261](https://github.com/JetBrains/ideavim/pull/261) by [Shrikant Sharat Kandula](https://github.com/sharat87): New extension: Indentation based text objects
|
||||||
|
* [308](https://github.com/JetBrains/ideavim/pull/308) by [Matt Ellis](https://github.com/citizenmatt): Fix unnecessary caret movement when switching tabs
|
||||||
|
|
||||||
|
## 0.67, 2021-05-20
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support `sethandler` command to configure shortcuts conflicts via `~/.ideavimrc` file. See [docs](https://jb.gg/vim-sethandler).
|
||||||
|
* Support `vim-paragraph-motion` extension [VIM-2290](https://youtrack.jetbrains.com/issue/VIM-2290) | [vim-paragraph-motion](https://github.com/dbakker/vim-paragraph-motion)
|
||||||
|
* Add "Reset Handlers" button for "Conflicting Shortcuts" setting table
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* Rename "Vim Emulation" in settings to "Vim"
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2230](https://youtrack.jetbrains.com/issue/VIM-2230) Tweak caret position with inline rename options inlay
|
||||||
|
* [VIM-2177](https://youtrack.jetbrains.com/issue/VIM-2177) Fix scrolling issues near bottom of file
|
||||||
|
* [VIM-2276](https://youtrack.jetbrains.com/issue/VIM-2276) `:ls` returns correct path for files on Microsoft Windows.
|
||||||
|
* [VIM-1953](https://youtrack.jetbrains.com/issue/VIM-1953) Execute live testing for `:w` command
|
||||||
|
* [VIM-2284](https://youtrack.jetbrains.com/issue/VIM-2284) Values are not duplicated in set command
|
||||||
|
* [VIM-2289](https://youtrack.jetbrains.com/issue/VIM-2289) Fix `<End>` command behaviour
|
||||||
|
* [VIM-1476](https://youtrack.jetbrains.com/issue/VIM-1476) Last inserted text is stored in `.` register
|
||||||
|
* [VIM-2295](https://youtrack.jetbrains.com/issue/VIM-2295) Fix `<S-Space>` in insert mode with an existing mapping
|
||||||
|
* [VIM-1401](https://youtrack.jetbrains.com/issue/VIM-1401) IdeaVim triggers readonly handler
|
||||||
|
* [VIM-1856](https://youtrack.jetbrains.com/issue/VIM-1856) Support defining shortcuts in .ideavimrc
|
||||||
|
* [VIM-1523](https://youtrack.jetbrains.com/issue/VIM-1523) Allow different shortcut handlers in different modes
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [280](https://github.com/JetBrains/ideavim/pull/280) by [Matt Ellis](https://github.com/citizenmatt): Caret position and view scrolling fixes
|
||||||
|
* [289](https://github.com/JetBrains/ideavim/pull/289) by [MichalPlacek](https://github.com/MichalPlacek): VIM-2276 ls returns "absolute path" for files on Microsoft Windows.
|
||||||
|
* [295](https://github.com/JetBrains/ideavim/pull/295) by [MichalPlacek](https://github.com/MichalPlacek): VIM-1476
|
||||||
|
|
||||||
|
## 0.66, 2021-04-09
|
||||||
|
|
||||||
|
Not a lot of changes for this release. Focused on internal improvements.
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support `startofline` option
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2238](https://youtrack.jetbrains.com/issue/VIM-2238) Fix `M` command for small files
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [275](https://github.com/JetBrains/ideavim/pull/275) by [Matt Ellis](https://github.com/citizenmatt): Fix edge cases for H, L and M and introduce 'startofline' option
|
||||||
|
* [276](https://github.com/JetBrains/ideavim/pull/276) by [Matt Ellis](https://github.com/citizenmatt): More refactoring of SearchGroup
|
||||||
|
|
||||||
|
## 0.65, 2021-02-17
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support `NERDTree` extension [VIM-1042](https://youtrack.jetbrains.com/issue/VIM-1042) | [NERDTree](https://github.com/preservim/nerdtree)
|
||||||
|
|
||||||
|
* <details>
|
||||||
|
<summary><strong>Click to see details</strong></summary>
|
||||||
|
<img src="assets/changes/0.65/nerdtree.gif" alt="NERDTree example"/>
|
||||||
|
</details>
|
||||||
|
* Support `maxmapdepth` option to define the maximum depth of mappings
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2202](https://youtrack.jetbrains.com/issue/VIM-2202) Fix macro recording for ex command and search
|
||||||
|
* [VIM-1799](https://youtrack.jetbrains.com/issue/VIM-1799)
|
||||||
|
[VIM-1794](https://youtrack.jetbrains.com/issue/VIM-1794)
|
||||||
|
Special characters are not interpreted on yanking
|
||||||
|
* [VIM-2218](https://youtrack.jetbrains.com/issue/VIM-2218) Fix some shortcuts for 2021.+
|
||||||
|
* [VIM-2217](https://youtrack.jetbrains.com/issue/VIM-2217) Fix adding new line at the end of the file for the AppCode
|
||||||
|
* [VIM-2220](https://youtrack.jetbrains.com/issue/VIM-2220) Do not try to get a commandState for null editor
|
||||||
|
* [VIM-2153](https://youtrack.jetbrains.com/issue/VIM-2153) Fix storing special characters after IDE closing
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [269](https://github.com/JetBrains/ideavim/pull/269) by [大牙(Henry Zhu)](https://github.com/daya0576): fix invalid link of submodule docs
|
||||||
|
|
||||||
|
## 0.64, 2020-12-23
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [260](https://github.com/JetBrains/ideavim/pull/260) by [Matt Ellis](https://github.com/citizenmatt): Refactor SearchGroup
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2194](https://youtrack.jetbrains.com/issue/VIM-2194) Fix caret shape during editing a new file
|
||||||
|
|
||||||
|
## 0.63, 2020-12-16
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* Update the minimal required IJ version: 2020.2+
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [CWM-927](https://youtrack.jetbrains.com/issue/CWM-927) Fix typing for CodeWithMe and IdeaVim
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [259](https://github.com/JetBrains/ideavim/pull/259) by [Vladimir Petrenko](https://github.com/vladimir-petrenko): CWM-927 disable vim for client's hidden editor on host
|
||||||
|
|
||||||
|
## 0.62, 2020-12-15
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support `unmap` and `mapclear` commands [VIM-1491](https://youtrack.jetbrains.com/issue/VIM-1491)
|
||||||
|
* Support mappings in ex panel (`cmap`) [VIM-1227](https://youtrack.jetbrains.com/issue/VIM-1227)
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* `octal` is now disabled by default for `nrformats`. [VIM-2181](https://youtrack.jetbrains.com/issue/VIM-2181)
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2113](https://youtrack.jetbrains.com/issue/VIM-2113) Fix `cit` for empty tags
|
||||||
|
* [VIM-2114](https://youtrack.jetbrains.com/issue/VIM-2114) Unnamed register isn't changed after deleting empty tag
|
||||||
|
* [VIM-1475](https://youtrack.jetbrains.com/issue/VIM-1475) Enable block caret to be used in insert mode.
|
||||||
|
* [VIM-2170](https://youtrack.jetbrains.com/issue/VIM-2170) Fix an alternative range format for `s` command
|
||||||
|
* [VIM-1913](https://youtrack.jetbrains.com/issue/VIM-1913)
|
||||||
|
[VIM-2154](https://youtrack.jetbrains.com/issue/VIM-2154) Several fixes for AppCode templates
|
||||||
|
* [VIM-1756](https://youtrack.jetbrains.com/issue/VIM-1756) Fix startsel from insert mode
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [249](https://github.com/JetBrains/ideavim/pull/249) by [Jan Palus](https://github.com/jpalus): VIM-2113 Increase tag range only in visual mode
|
||||||
|
* [250](https://github.com/JetBrains/ideavim/pull/250) by [Jan Palus](https://github.com/jpalus): VIM-2114 Do not override registers when deleting empty range
|
||||||
|
* [256](https://github.com/JetBrains/ideavim/pull/256) by [Brandon Conway](https://github.com/brandoncc): Fix typo
|
||||||
|
* [254](https://github.com/JetBrains/ideavim/pull/254) by [Grzegorz Antoniak](https://github.com/antekone): VIM-1475: Add an option to use block caret in insert mode
|
||||||
|
* [225](https://github.com/JetBrains/ideavim/pull/225) by [sumoooru2](https://github.com/sumoooru2): Implement cmap
|
||||||
|
* [258](https://github.com/JetBrains/ideavim/pull/258) by [Matt Ellis](https://github.com/citizenmatt): Show the correct handler class in :map
|
||||||
|
* [257](https://github.com/JetBrains/ideavim/pull/257) by [Matt Ellis](https://github.com/citizenmatt): Extract SearchHighlightsHelper from SearchGroup
|
||||||
|
* [251](https://github.com/JetBrains/ideavim/pull/251) by [Shaun Patterson](https://github.com/shaunpatterson): VIM-1756: startSel works in insert mode
|
||||||
|
|
||||||
|
## 0.61, 2020-11-12
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Ability to map IDE actions via the `<Action>` keyword. E.g. `map <C-K> <Action>(CommentByLineComment)`.
|
||||||
|
Check out `README.md` for the details.
|
||||||
|
* `IdeaVim: track action Ids` command to find action ids for the `:action` command.
|
||||||
|
Enable this option in "Search everywhere" (double shift).
|
||||||
|
* Ability to enable extensions using `vim-plug` or `vundle` syntax.
|
||||||
|
E.g. to enable commentary extension you can use one of the following commands:
|
||||||
|
```vim
|
||||||
|
set commentary
|
||||||
|
Plug 'tpope/vim-commentary'
|
||||||
|
Plug 'https://github.com/tpope/vim-commentary'
|
||||||
|
Plugin 'tpope/vim-commentary'
|
||||||
|
...
|
||||||
|
```
|
||||||
|
This approach is especially handy if you have `.vimrc` with plugins registered via `vim-plug` or `vundle`.
|
||||||
|
|
||||||
|
|
||||||
0.51, 2019-02-12
|
### Changes:
|
||||||
----------------
|
* Fix `<Esc>` for dialogs. Now `<Esc>` will exit insert / visual mode and close the dialog from normal mode.
|
||||||
|
* Add option to disable IdeaVim in dialogs / single line editors. [VIM-765](https://youtrack.jetbrains.com/issue/VIM-765)
|
||||||
|
Use `set ideavimsupport=` to disable IdeaVim in dialog editors.
|
||||||
|
* Reposition cursor when `scrolloff` changes
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2150](https://youtrack.jetbrains.com/issue/VIM-2150) `Shift-D` should not delete an empty line
|
||||||
|
* [VIM-2157](https://youtrack.jetbrains.com/issue/VIM-2157) Fix tab with an active template
|
||||||
|
* [VIM-2156](https://youtrack.jetbrains.com/issue/VIM-2156) Correct up/down motions with inlays
|
||||||
|
* [VIM-2144](https://youtrack.jetbrains.com/issue/VIM-2144) Correct text position after block insert with inlays
|
||||||
|
* [VIM-2158](https://youtrack.jetbrains.com/issue/VIM-2158) Fix scrolling when `scrolloff` is over half screen height, but less than full height
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [255](https://github.com/JetBrains/ideavim/pull/255) by [Matt Ellis](https://github.com/citizenmatt): Fix various scrolling issues
|
||||||
|
|
||||||
|
## 0.60, 2020-10-09
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Support of `virtualedit=onemore` ([VIM-844](https://youtrack.jetbrains.com/issue/VIM-844))
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-2097](https://youtrack.jetbrains.com/issue/VIM-2097) Do not apply mappings for register selecting
|
||||||
|
* [VIM-2080](https://youtrack.jetbrains.com/issue/VIM-2080) Fix S command with count
|
||||||
|
* [VIM-2099](https://youtrack.jetbrains.com/issue/VIM-2099) Fix operations with backward inclusive motions
|
||||||
|
* [VIM-2104](https://youtrack.jetbrains.com/issue/VIM-2104) Use `sidescrolloff` for horizontal offset
|
||||||
|
* [VIM-1080](https://youtrack.jetbrains.com/issue/VIM-1080) Fix `zt` for virtual space enabled
|
||||||
|
* [VIM-1556](https://youtrack.jetbrains.com/issue/VIM-1556) Fix horizontal scrolling
|
||||||
|
* [VIM-1770](https://youtrack.jetbrains.com/issue/VIM-1770) Fix goto end with large inline hints
|
||||||
|
* [VIM-2110](https://youtrack.jetbrains.com/issue/VIM-2110) Fix scrolling for non-monospaced fonts
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* `:w` works as `:wa` by default. This can be disabled with `ideawrite` option.
|
||||||
|
|
||||||
|
Now features like `Prettier on save` or `Run on save for files` would work with `:w` command as well.
|
||||||
|
|
||||||
|
See [VIM-1968](https://youtrack.jetbrains.com/issue/VIM-1968).
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [248](https://github.com/JetBrains/ideavim/pull/248) by [Yaohui Wang](https://github.com/yaohui-wyh): Check if project is disposed when editorDeinit
|
||||||
|
* [242](https://github.com/JetBrains/ideavim/pull/242) by [Iain Ballard](https://github.com/i-e-b): Partial implementation of virtualedit config
|
||||||
|
* [252](https://github.com/JetBrains/ideavim/pull/252) by [Matt Ellis](https://github.com/citizenmatt): Fixes for scrolling
|
||||||
|
|
||||||
|
## 0.59, 2020-08-25
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* `vim-highlightedyank` plugin emulation ([VIM-1970](https://youtrack.jetbrains.com/issue/VIM-1970) | [vim-highlightedyank](https://github.com/machakann/vim-highlightedyank)).
|
||||||
|
|
||||||
|
* <details>
|
||||||
|
<summary><strong>Click to see details</strong></summary>
|
||||||
|
<img src="assets/changes/0.59/highlight_yank.gif" alt="highlight yank"/>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
* [VIM-2068](https://youtrack.jetbrains.com/issue/VIM-2068) `:tabclose` command
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-1421](https://youtrack.jetbrains.com/issue/VIM-1421) Escape key finishes `t` and `f` motions
|
||||||
|
* [VIM-2075](https://youtrack.jetbrains.com/issue/VIM-2075) Fix zR command
|
||||||
|
* [VIM-2059](https://youtrack.jetbrains.com/issue/VIM-2059) Fixed macro editing
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [237](https://github.com/JetBrains/ideavim/pull/237) by [Adrià Farrés](https://github.com/adriafarres): Reset operator-pending commands on escape
|
||||||
|
* [241](https://github.com/JetBrains/ideavim/pull/241) by [Patrick Elmquist](https://github.com/patrick-elmquist): Properly reset when pressing Esc in the middle of command
|
||||||
|
* [244](https://github.com/JetBrains/ideavim/pull/244) by [Rieon Ke](https://github.com/rieonke): Implement tabc[lose] ex command
|
||||||
|
* [240](https://github.com/JetBrains/ideavim/pull/240) by [Rieon Ke](https://github.com/rieonke): add support for putting & editing macros
|
||||||
|
* [245](https://github.com/JetBrains/ideavim/pull/245) by [KostkaBrukowa](https://github.com/KostkaBrukowa): VIM-1970 | Working solution of plugin vim-highlightedyank
|
||||||
|
|
||||||
|
## 0.58, 2020-07-07
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* `exchange` plugin emulation ([VIM-921](https://youtrack.jetbrains.com/issue/VIM-921) | [vim-exchange](https://github.com/tommcdo/vim-exchange)).
|
||||||
|
* `~/.ideavimrc` file can be reloaded using the new floating action.
|
||||||
|
|
||||||
|
* <details>
|
||||||
|
<summary><strong>Click to see details</strong></summary>
|
||||||
|
<img src="assets/changes/0.58/reload_ideavimrc.png" alt="IdeaVimRc reload"/>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
* Add `:buffer` command.
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* Support IntelliJ's smooth scrolling. Use "Enable smooth scrolling" checkbox in _Preferences | Editor | General_ to disable.
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-1994](https://youtrack.jetbrains.com/issue/VIM-1994) Correct paste after `y}P` command.
|
||||||
|
* [VIM-1924](https://youtrack.jetbrains.com/issue/VIM-1924) Select next occurrence doesn't become block selection.
|
||||||
|
* [VIM-2038](https://youtrack.jetbrains.com/issue/VIM-2038) Last line is now accessible in normal mode
|
||||||
|
* [VIM-1934](https://youtrack.jetbrains.com/issue/VIM-1934) Line number is not clipped for relative line numbers
|
||||||
|
* [VIM-1852](https://youtrack.jetbrains.com/issue/VIM-1852) Line number doesn't flickers for relative line numbers
|
||||||
|
* [VIM-2021](https://youtrack.jetbrains.com/issue/VIM-2021) Line numbers don't reactivating
|
||||||
|
* Fix mappings to `"\<SPACE>"` including `let mapleader="\<SPACE>"`
|
||||||
|
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [233](https://github.com/JetBrains/ideavim/pull/233) by [valis](https://github.com/valis): [VIM-1994] Correct paste after `y}P` command.
|
||||||
|
* [224](https://github.com/JetBrains/ideavim/pull/224) by [pmnoxx](https://github.com/pmnoxx): Populate intelij navigation history together with ideavim jumplist.
|
||||||
|
* [227](https://github.com/JetBrains/ideavim/pull/227) by [angelbot](https://github.com/angelbot): Add support for buffer command.
|
||||||
|
* [230](https://github.com/JetBrains/ideavim/pull/230) by [fan-tom](https://github.com/fan-tom): VIM-1924.
|
||||||
|
* [231](https://github.com/JetBrains/ideavim/pull/231) by [citizenmatt](https://github.com/citizenmatt): Support smooth scrolling.
|
||||||
|
* [239](https://github.com/JetBrains/ideavim/pull/239) by [citizenmatt](https://github.com/citizenmatt): Use new API for relative line numbers
|
||||||
|
|
||||||
|
## 0.57, 2020-04-28
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-1992](https://youtrack.jetbrains.com/issue/VIM-1992) Fix mappings to `<S-Letter>`
|
||||||
|
* [VIM-1991](https://youtrack.jetbrains.com/issue/VIM-1991) Fix working with number registers
|
||||||
|
|
||||||
|
### Merged PRs:
|
||||||
|
* [234](https://github.com/JetBrains/ideavim/pull/234) by [runforprogram](https://github.com/runforprogram): [VIM-1991] fix >0 number register not work
|
||||||
|
|
||||||
|
## 0.56, 2020-04-09
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* `ReplaceWithRegister` plugin emulation ([ReplaceWithRegister](https://www.vim.org/scripts/script.php?script_id=2703)).
|
||||||
|
* `argtextobj.vim` plugin emulation ([argtextobj.vim](https://vim.sourceforge.io/scripts/script.php?script_id=2699)).
|
||||||
|
* `vim-textobj-entire` plugin emulation ([vim-textobj-entire](https://github.com/kana/vim-textobj-entire)).
|
||||||
|
* [VIM-434](https://youtrack.jetbrains.com/issue/VIM-434) Add `'showcmd'` support, on by default.
|
||||||
|
* Support `ls/buffers/files` commands.
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* Replace `ideastatusbar` option with `ideastatusicon`. Now you can make the icon gray.
|
||||||
|
|
||||||
|
### Deprecations:
|
||||||
|
* `ideastatusbar` option is deprecated now. See `ideastatusicon`.
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-1284](https://youtrack.jetbrains.com/issue/VIM-1284) Fix mapping of digits.
|
||||||
|
* Fix handling of counts on both operator and motion, e.g. `3d2w` deletes 6 words, instead of 32.
|
||||||
|
* Allow mapping of `<C-K>` and `<C-V>`/`<C-Q>`.
|
||||||
|
* [VIM-1899](https://youtrack.jetbrains.com/issue/VIM-1899) Add argument to `:registers` command.
|
||||||
|
* [VIM-1835](https://youtrack.jetbrains.com/issue/VIM-1835) Macros record input keystrokes instead of mapped keystrokes.
|
||||||
|
* [VIM-1900](https://youtrack.jetbrains.com/issue/VIM-1900) Ensure non-printable output for `:registers`, `:marks` and `:jumps` is encoded correctly.
|
||||||
|
* [VIM-570](https://youtrack.jetbrains.com/issue/VIM-570) Print non-ascii characters in ex panel.
|
||||||
|
* [VIM-926](https://youtrack.jetbrains.com/issue/VIM-926) Fix `<S-Space>` mapping.
|
||||||
|
* [VIM-1958](https://youtrack.jetbrains.com/issue/VIM-1958) Fix `X` command for linewise selection.
|
||||||
|
* [VIM-1911](https://youtrack.jetbrains.com/issue/VIM-1911) Lookup keys respect `IDE` handler.
|
||||||
|
* [VIM-1008](https://youtrack.jetbrains.com/issue/VIM-1008) Correct `ci{` behavior.
|
||||||
|
|
||||||
|
## 0.55, 2020-01-20
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* Surround and Commentary extensions support repeating with a dot command ([VIM-1118](https://youtrack.jetbrains.com/issue/VIM-1118))
|
||||||
|
* Support XDG settings standard ([VIM-664](https://youtrack.jetbrains.com/issue/VIM-664))
|
||||||
|
* Add option to remove the status bar icon ([VIM-1847](https://youtrack.jetbrains.com/issue/VIM-1847))
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-1823](https://youtrack.jetbrains.com/issue/VIM-1823) Fix multiple carets with ignorecase
|
||||||
|
* [VIM-1053](https://youtrack.jetbrains.com/issue/VIM-1053)
|
||||||
|
[VIM-1038](https://youtrack.jetbrains.com/issue/VIM-1038)
|
||||||
|
Implement gq+motion. Support some double `g` commands (`guu`, `gUU`, `g~~`).
|
||||||
|
* [VIM-1325](https://youtrack.jetbrains.com/issue/VIM-1325)
|
||||||
|
[VIM-1050](https://youtrack.jetbrains.com/issue/VIM-1050)
|
||||||
|
[VIM-1627](https://youtrack.jetbrains.com/issue/VIM-1627)
|
||||||
|
[VIM-1867](https://youtrack.jetbrains.com/issue/VIM-1867)
|
||||||
|
Fix bindings for active lookup
|
||||||
|
* [VIM-1845](https://youtrack.jetbrains.com/issue/VIM-1845) Show ActionGroup popups
|
||||||
|
* [VIM-1424](https://youtrack.jetbrains.com/issue/VIM-1424) CTRL-A doesn't have any restrictions now
|
||||||
|
* [VIM-1454](https://youtrack.jetbrains.com/issue/VIM-1454) Fix CTRL-W with the autocompletion lookup
|
||||||
|
* [VIM-1855](https://youtrack.jetbrains.com/issue/VIM-1855) Fix initialization error
|
||||||
|
* [VIM-1853](https://youtrack.jetbrains.com/issue/VIM-1853) Fix marks for disposed projects
|
||||||
|
* [VIM-1858](https://youtrack.jetbrains.com/issue/VIM-1858) Fix imap for autocomplete
|
||||||
|
* [VIM-1362](https://youtrack.jetbrains.com/issue/VIM-1362) Search with confirm doesn't scroll down far enough
|
||||||
|
* [VIM-1875](https://youtrack.jetbrains.com/issue/VIM-1875) Fix `isk` in `~/.ideaivmrc`
|
||||||
|
* [VIM-1874](https://youtrack.jetbrains.com/issue/VIM-1874) Fix `set clipboard=unnamed` execution from `~/.ideavimrc`
|
||||||
|
* [VIM-1878](https://youtrack.jetbrains.com/issue/VIM-1878) Fix `c` command after extract method action
|
||||||
|
* [VIM-1884](https://youtrack.jetbrains.com/issue/VIM-1884) Show quickDoc during popup with `CTRL-J`
|
||||||
|
* [VIM-987](https://youtrack.jetbrains.com/issue/VIM-987) Fix arrow keys for the NEO keyboard
|
||||||
|
|
||||||
|
## 0.54, 2019-11-20
|
||||||
|
|
||||||
|
### Features:
|
||||||
|
* EasyMotion plugin emulation ([VIM-820](https://youtrack.jetbrains.com/issue/VIM-820) | [Instructions](https://github.com/JetBrains/ideavim#emulated-vim-plugins))
|
||||||
|
* Support surrounding with a function name ([link](https://github.com/tpope/vim-surround/blob/master/doc/surround.txt#L138))
|
||||||
|
* Add `:delmarks` command ([VIM-1720](https://youtrack.jetbrains.com/issue/VIM-1720))
|
||||||
|
* Add IdeaVim icon to the status bar ([VIM-943](https://youtrack.jetbrains.com/issue/VIM-943))
|
||||||
|
|
||||||
|
### Changes:
|
||||||
|
* Remove the default IdeaVim toggle shortcut (<kbd>CTRL</kbd><kbd>ALT</kbd><kbd>V</kbd>)
|
||||||
|
* Rename `refactoring` value of `selectmode` option to `ideaselection`
|
||||||
|
* Remove `template` value of `selectmode` option and replace it with `idearefactormode` option.
|
||||||
|
|
||||||
|
### Fixes:
|
||||||
|
* [VIM-1766](https://youtrack.jetbrains.com/issue/VIM-1766) Fix disappearing caret in ex entry on Linux
|
||||||
|
* [VIM-1032](https://youtrack.jetbrains.com/issue/VIM-1032) Annotations work well with relative line numbers enabled
|
||||||
|
* [VIM-1762](https://youtrack.jetbrains.com/issue/VIM-1762) Relative line numbers respect line number theme
|
||||||
|
* [VIM-1717](https://youtrack.jetbrains.com/issue/VIM-1717) Fix incorrect scroll location if no match with `incsearch`
|
||||||
|
* [VIM-1757](https://youtrack.jetbrains.com/issue/VIM-1757) Fix incorrect search results when specifying offset as part of search command
|
||||||
|
* Fix search highlights not showing after deleting last result
|
||||||
|
* Update current line highlight during incsearch and replace operation
|
||||||
|
* [VIM-1773](https://youtrack.jetbrains.com/issue/VIM-1773) Provide fallback error stripe colour if not defined
|
||||||
|
* [VIM-1785](https://youtrack.jetbrains.com/issue/VIM-1785)
|
||||||
|
[VIM-1731](https://youtrack.jetbrains.com/issue/VIM-1731)
|
||||||
|
Fix some problems with yanking to clipboard
|
||||||
|
* [VIM-1781](https://youtrack.jetbrains.com/issue/VIM-1781) Fix yanking with dollar motion
|
||||||
|
* [VIM-1772](https://youtrack.jetbrains.com/issue/VIM-1772) Fix yanking with `:y` command
|
||||||
|
* [VIM-1685](https://youtrack.jetbrains.com/issue/VIM-1685) Fix `ESC` for insert mode
|
||||||
|
* [VIM-1752](https://youtrack.jetbrains.com/issue/VIM-1752) Fix `ESC` for insert mode
|
||||||
|
* [VIM-1189](https://youtrack.jetbrains.com/issue/VIM-1189)
|
||||||
|
[VIM-927](https://youtrack.jetbrains.com/issue/VIM-927)
|
||||||
|
Fix mappings to black hole register
|
||||||
|
* [VIM-1804](https://youtrack.jetbrains.com/issue/VIM-1804) Exit insert move after toggling IdeaVim
|
||||||
|
* [VIM-1749](https://youtrack.jetbrains.com/issue/VIM-1749) Tag surround is finished on `>`
|
||||||
|
* [VIM-1801](https://youtrack.jetbrains.com/issue/VIM-1801) Fix j/k motions with inline hints
|
||||||
|
* [VIM-1800](https://youtrack.jetbrains.com/issue/VIM-1800) Improve ideamarks option
|
||||||
|
* [VIM-1819](https://youtrack.jetbrains.com/issue/VIM-1819) Fix execution of some rider actions
|
||||||
|
* [VIM-1604](https://youtrack.jetbrains.com/issue/VIM-1604) Add IdeaVim logo
|
||||||
|
|
||||||
|
|
||||||
|
## 0.53, 2019-08-07
|
||||||
|
* [VIM-1711](https://youtrack.jetbrains.com/issue/VIM-1711) Search is not triggered during surround action
|
||||||
|
* [VIM-1712](https://youtrack.jetbrains.com/issue/VIM-1712) Fix `Y` command for visual mode
|
||||||
|
* [VIM-1713](https://youtrack.jetbrains.com/issue/VIM-1713) Surround in visual mode put caret in correct position
|
||||||
|
* [VIM-1732](https://youtrack.jetbrains.com/issue/VIM-1732) Fix SO after enabling vim mode
|
||||||
|
* [VIM-1710](https://youtrack.jetbrains.com/issue/VIM-1710) Fix opening empty file with "relative number" enabled
|
||||||
|
* [VIM-1725](https://youtrack.jetbrains.com/issue/VIM-1725) Fix problems with Japanese language
|
||||||
|
* [VIM-1648](https://youtrack.jetbrains.com/issue/VIM-1648) Fix exception while substitute with conformation
|
||||||
|
* [VIM-1736](https://youtrack.jetbrains.com/issue/VIM-1736) Fix `` for ex panel
|
||||||
|
* [VIM-1739](https://youtrack.jetbrains.com/issue/VIM-1739) Fix full-width characters for ex pane
|
||||||
|
|
||||||
|
## 0.52, 2019-07-23
|
||||||
|
|
||||||
|
* Introduce [Select Mode](https://github.com/JetBrains/ideavim/wiki/Select-mode).
|
||||||
|
|
||||||
|
|
||||||
|
* Fixed `:only` command
|
||||||
|
* [VIM-1586](https://youtrack.jetbrains.com/issue/VIM-1586) Support `:shell` command
|
||||||
|
* [VIM-801](https://youtrack.jetbrains.com/issue/VIM-801) Support `:tabnext` and `:tabprevious` commands
|
||||||
|
* [VIM-1570](https://youtrack.jetbrains.com/issue/VIM-1570) Support `g<C-A>` and `g<C-X>` commands for visual mode
|
||||||
|
* [VIM-1119](https://youtrack.jetbrains.com/issue/VIM-1119) Fixed 'e' search offset
|
||||||
|
* [VIM-1587](https://youtrack.jetbrains.com/issue/VIM-1587) Fixed end-of-line multi line percent match in visual mode
|
||||||
|
* [VIM-1303](https://youtrack.jetbrains.com/issue/VIM-1303) Fixed "Changing color schemes doesn't change find input"
|
||||||
|
* [VIM-944](https://youtrack.jetbrains.com/issue/VIM-944) Fixed navigation with keypad arrows
|
||||||
|
* [VIM-1569](https://youtrack.jetbrains.com/issue/VIM-1569) Fixed surround plugin bug by `S<tag attr="attr">`
|
||||||
|
* [VIM-1012](https://youtrack.jetbrains.com/issue/VIM-1012) Fixed wrong tab selection after`:q`
|
||||||
|
* [VIM-1245](https://youtrack.jetbrains.com/issue/VIM-1245) Clear switcher list after`:q`
|
||||||
|
* [VIM-1425](https://youtrack.jetbrains.com/issue/VIM-1425) Correct `%` command
|
||||||
|
* [VIM-1521](https://youtrack.jetbrains.com/issue/VIM-1521) Support `commentary` extension
|
||||||
|
* [VIM-907](https://youtrack.jetbrains.com/issue/VIM-907) Fix `va(` command
|
||||||
|
* [VIM-1067](https://youtrack.jetbrains.com/issue/VIM-1067) Fix repeating of `A` command
|
||||||
|
* [VIM-1615](https://youtrack.jetbrains.com/issue/VIM-1615) Fix `set so=999` command and line "bouncing" with inlays
|
||||||
|
* [VIM-1630](https://youtrack.jetbrains.com/issue/VIM-1630) Support `:tabonly` command
|
||||||
|
* [VIM-607](https://youtrack.jetbrains.com/issue/VIM-607) Fix memory leaks
|
||||||
|
* [VIM-1546](https://youtrack.jetbrains.com/issue/VIM-1546) Storing TAB key as input
|
||||||
|
* [VIM-1231](https://youtrack.jetbrains.com/issue/VIM-1231) Get indent from PsiFile
|
||||||
|
* [VIM-1633](https://youtrack.jetbrains.com/issue/VIM-1633) Fixed sequential text object commands in visual mode
|
||||||
|
* [VIM-1105](https://youtrack.jetbrains.com/issue/VIM-1105) Added the `:command` command
|
||||||
|
* [VIM-1090](https://youtrack.jetbrains.com/issue/VIM-1090) Fixed tag motion with duplicate tags
|
||||||
|
* [VIM-1644](https://youtrack.jetbrains.com/issue/VIM-1644) Fixed repeat with visual mode
|
||||||
|
* Fixed invoking IDE actions instead of command line actions with same shortcuts
|
||||||
|
* [VIM-1550](https://youtrack.jetbrains.com/issue/VIM-1550) Fixed leaving command line mode on backspace
|
||||||
|
* Fix insert position of `<C-R>` in ex commands
|
||||||
|
* Command line editing caret shape and insert digraph/register feedback
|
||||||
|
* [VIM-1419](https://youtrack.jetbrains.com/issue/VIM-1419),
|
||||||
|
[VIM-1493](https://youtrack.jetbrains.com/issue/VIM-1493) Correctly set focus when handling cmode mapping
|
||||||
|
* Fix incorrect handling of subsequent key strokes after ex command line loses focus
|
||||||
|
* [VIM-1240](https://youtrack.jetbrains.com/issue/VIM-1240) Improve UI of ex command line and output panel
|
||||||
|
* [VIM-1485](https://youtrack.jetbrains.com/issue/VIM-1485) Remove incorrect gap between ex command line label and text
|
||||||
|
* [VIM-1496](https://youtrack.jetbrains.com/issue/VIM-1496) Fix focus for Recent Files action
|
||||||
|
* [VIM-1275](https://youtrack.jetbrains.com/issue/VIM-1275) "Change In Brackets" for string
|
||||||
|
* [VIM-941](https://youtrack.jetbrains.com/issue/VIM-941) Fix tab for visual block mode
|
||||||
|
* [VIM-1002](https://youtrack.jetbrains.com/issue/VIM-1002) Fix dot command for tab
|
||||||
|
* [VIM-1426](https://youtrack.jetbrains.com/issue/VIM-1426) Correct `%` command
|
||||||
|
* [VIM-1655](https://youtrack.jetbrains.com/issue/VIM-1655) Deleted word should is not yanked with Ctrl-W in insert mode
|
||||||
|
* [VIM-1031](https://youtrack.jetbrains.com/issue/VIM-1031),
|
||||||
|
[VIM-1389](https://youtrack.jetbrains.com/issue/VIM-1389),
|
||||||
|
[VIM-1666](https://youtrack.jetbrains.com/issue/VIM-1666) Fix `<BS>` for digraphs
|
||||||
|
* [VIM-1628](https://youtrack.jetbrains.com/issue/VIM-1628) Fix dead keys for JBR11
|
||||||
|
* [VIM-1061](https://youtrack.jetbrains.com/issue/VIM-1061) Fix `^K` for digraphs
|
||||||
|
* [VIM-437](https://youtrack.jetbrains.com/issue/VIM-437) Support `keymode` option
|
||||||
|
* [VIM-274](https://youtrack.jetbrains.com/issue/VIM-274) Enter select mode for refactoring
|
||||||
|
* [VIM-510](https://youtrack.jetbrains.com/issue/VIM-510) Support `Extend Selection` for visual mode
|
||||||
|
* [VIM-606](https://youtrack.jetbrains.com/issue/VIM-606) Fix select text with mouse in insert mode
|
||||||
|
* [VIM-800](https://youtrack.jetbrains.com/issue/VIM-800) Fix surround with live template
|
||||||
|
* [VIM-1013](https://youtrack.jetbrains.com/issue/VIM-1013) Fix reformat code on selection
|
||||||
|
* [VIM-1214](https://youtrack.jetbrains.com/issue/VIM-1214) Fix insert text to empty row
|
||||||
|
* [VIM-1452](https://youtrack.jetbrains.com/issue/VIM-1452) Fix reselect visual block
|
||||||
|
* [VIM-1497](https://youtrack.jetbrains.com/issue/VIM-1497) Fix rename variable action
|
||||||
|
* [VIM-1541](https://youtrack.jetbrains.com/issue/VIM-1541) Fix visual block mode problems
|
||||||
|
* [VIM-1619](https://youtrack.jetbrains.com/issue/VIM-1619) Extract method for visual mode
|
||||||
|
* [VIM-1616](https://youtrack.jetbrains.com/issue/VIM-1616) `I` with multicaret works correctly
|
||||||
|
* [VIM-1631](https://youtrack.jetbrains.com/issue/VIM-1631) Fix visual block for tab character
|
||||||
|
* [VIM-1649](https://youtrack.jetbrains.com/issue/VIM-1649) Type variable for surround live template
|
||||||
|
* [VIM-1654](https://youtrack.jetbrains.com/issue/VIM-1654) Fix NPE while indent in visual block mode
|
||||||
|
* [VIM-1657](https://youtrack.jetbrains.com/issue/VIM-1657) Fix vim repeat in visual block
|
||||||
|
* [VIM-1659](https://youtrack.jetbrains.com/issue/VIM-1658) Fix selection on empty line
|
||||||
|
* [VIM-1473](https://youtrack.jetbrains.com/issue/VIM-1473) Yanked lines are not handled as block
|
||||||
|
selection when clipboard is used
|
||||||
|
* [VIM-714](https://youtrack.jetbrains.com/issue/VIM-714) Fixed problems with caret position by vertical movement
|
||||||
|
* [VIM-635](https://youtrack.jetbrains.com/issue/VIM-635) Supported `gn` commands
|
||||||
|
* [VIM-1535](https://youtrack.jetbrains.com/issue/VIM-1535) Use same text attributes and highlight layer as IntelliJ's own Find command
|
||||||
|
* [VIM-1413](https://youtrack.jetbrains.com/issue/VIM-1413) Fix `smartcase` option being ignored in incremental search
|
||||||
|
* Fix incremental search not matching with trailing options, e.g. `/Foo/+1`
|
||||||
|
* Move the current line as well as scrolling during incremental search
|
||||||
|
* [VIM-128](https://youtrack.jetbrains.com/issue/VIM-128) Fix `:substitute` not respecting `ignorecase` and `smartcase` options
|
||||||
|
* Fix next/previous search commands not respecting `smartcase` override
|
||||||
|
* Search highlights are updated when `ignorecase`, `smartcase` and `hlsearch` options are updated, and when plugin is disabled
|
||||||
|
* Incremental search highlights all matches in file, not just first
|
||||||
|
* Added incremental search highlights for `:substitute` command
|
||||||
|
* Fix exception when trying to highlight last CR in file
|
||||||
|
* Improve behavior of `<BS>` in command line entry
|
||||||
|
* [VIM-1626](https://youtrack.jetbrains.com/issue/VIM-1626) Add `ideajoin` option
|
||||||
|
* [VIM-959](https://youtrack.jetbrains.com/issue/VIM-959) Add `ideamarks` option
|
||||||
|
* [VIM-608](https://youtrack.jetbrains.com/issue/VIM-608) Automatic upload files on explicit save
|
||||||
|
* [VIM-1548](https://youtrack.jetbrains.com/issue/VIM-1548) Respect editor settings about tabs and spaces
|
||||||
|
* [VIM-1682](https://youtrack.jetbrains.com/issue/VIM-1682) Fix backward search with OR
|
||||||
|
* [VIM-752](https://youtrack.jetbrains.com/issue/VIM-752) Enter finishes template in normal mode
|
||||||
|
* [VIM-1668](https://youtrack.jetbrains.com/issue/VIM-1668) Fix smart step into
|
||||||
|
* [VIM-1697](https://youtrack.jetbrains.com/issue/VIM-1697) Fix wrong search with tab characters
|
||||||
|
* [VIM-1700](https://youtrack.jetbrains.com/issue/VIM-1700) Fix wrong search with tab characters
|
||||||
|
* [VIM-1698](https://youtrack.jetbrains.com/issue/VIM-1698) Paste doesn't clear clipboard
|
||||||
|
* [VIM-1359](https://youtrack.jetbrains.com/issue/VIM-1359) Fix behavior of i_CTRL-W action
|
||||||
|
|
||||||
|
## 0.51, 2019-02-12
|
||||||
|
|
||||||
* [VIM-1558](https://youtrack.jetbrains.com/issue/VIM-1558) Fixed scrolling for code with block inlays in Rider 2018.3
|
* [VIM-1558](https://youtrack.jetbrains.com/issue/VIM-1558) Fixed scrolling for code with block inlays in Rider 2018.3
|
||||||
* [VIM-1187](https://youtrack.jetbrains.com/issue/VIM-1187) Improved performance of `set relativelinenumber` on large files
|
* [VIM-1187](https://youtrack.jetbrains.com/issue/VIM-1187) Improved performance of `set relativelinenumber` on large files
|
||||||
@@ -31,8 +677,7 @@ To Be Released
|
|||||||
* [VIM-798](https://youtrack.jetbrains.com/issue/VIM-798) Allow arrow keys for window navigation commands
|
* [VIM-798](https://youtrack.jetbrains.com/issue/VIM-798) Allow arrow keys for window navigation commands
|
||||||
|
|
||||||
|
|
||||||
0.50, 2018-10-18
|
## 0.50, 2018-10-18
|
||||||
----------------
|
|
||||||
|
|
||||||
Moved "Vim Emulation" settings into "File | Settings | Vim Emulation". Support
|
Moved "Vim Emulation" settings into "File | Settings | Vim Emulation". Support
|
||||||
for vim-multiple-cursors commands `<A-n>`, `<A-x>`, `<A-p>`, `g<A-n>` (put `set
|
for vim-multiple-cursors commands `<A-n>`, `<A-x>`, `<A-p>`, `g<A-n>` (put `set
|
||||||
@@ -58,8 +703,7 @@ Vim commands for multiple cursors. Various bug fixes.
|
|||||||
* [VIM-1274](https://youtrack.jetbrains.com/issue/VIM-1274) Correctly process escaping when `smartcase` is on
|
* [VIM-1274](https://youtrack.jetbrains.com/issue/VIM-1274) Correctly process escaping when `smartcase` is on
|
||||||
|
|
||||||
|
|
||||||
0.49, 2017-12-12
|
## 0.49, 2017-12-12
|
||||||
----------------
|
|
||||||
|
|
||||||
Enabled zero-latency typing for Vim emulation. Added support for `iskeyword` option. Various bug fixes.
|
Enabled zero-latency typing for Vim emulation. Added support for `iskeyword` option. Various bug fixes.
|
||||||
|
|
||||||
@@ -67,8 +711,7 @@ Enabled zero-latency typing for Vim emulation. Added support for `iskeyword` opt
|
|||||||
* [VIM-1367](https://youtrack.jetbrains.com/issue/VIM-1367) Support `iskeyword` option
|
* [VIM-1367](https://youtrack.jetbrains.com/issue/VIM-1367) Support `iskeyword` option
|
||||||
* [VIM-523](https://youtrack.jetbrains.com/issue/VIM-523) Fixed global mark remembering only the line number
|
* [VIM-523](https://youtrack.jetbrains.com/issue/VIM-523) Fixed global mark remembering only the line number
|
||||||
|
|
||||||
0.48, 2017-01-15
|
## 0.48, 2017-01-15
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -82,8 +725,7 @@ Features:
|
|||||||
* Support for zero-latency rendering
|
* Support for zero-latency rendering
|
||||||
|
|
||||||
|
|
||||||
0.47, 2016-10-19
|
## 0.47, 2016-10-19
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -93,8 +735,7 @@ Bug fixes:
|
|||||||
* VIM-1190 Fixed exception "Write access is allowed from write-safe contexts only"
|
* VIM-1190 Fixed exception "Write access is allowed from write-safe contexts only"
|
||||||
|
|
||||||
|
|
||||||
0.46, 2016-07-07
|
## 0.46, 2016-07-07
|
||||||
----------------
|
|
||||||
|
|
||||||
Added `incsearch` option for incremental search. Added support for `it` and
|
Added `incsearch` option for incremental search. Added support for `it` and
|
||||||
`at` tag block selection. Added `vim-surround` commands `ys`, `cs`, `ds`,
|
`at` tag block selection. Added `vim-surround` commands `ys`, `cs`, `ds`,
|
||||||
@@ -122,8 +763,7 @@ Bug fixes:
|
|||||||
* VIM-1126 Fixed warning about modifying shortcuts of global actions for 2016.2
|
* VIM-1126 Fixed warning about modifying shortcuts of global actions for 2016.2
|
||||||
|
|
||||||
|
|
||||||
0.44, 2015-11-02
|
## 0.44, 2015-11-02
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -132,16 +772,14 @@ A bugfix release.
|
|||||||
plugin disabled
|
plugin disabled
|
||||||
|
|
||||||
|
|
||||||
0.43, 2015-11-02
|
## 0.43, 2015-11-02
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
* VIM-1039 Fixed running the plugin with Java 6
|
* VIM-1039 Fixed running the plugin with Java 6
|
||||||
|
|
||||||
|
|
||||||
0.42, 2015-11-01
|
## 0.42, 2015-11-01
|
||||||
----------------
|
|
||||||
|
|
||||||
This release is compatible with IntelliJ 15+ and other IDEs based on the
|
This release is compatible with IntelliJ 15+ and other IDEs based on the
|
||||||
IntelliJ platform branch 143+.
|
IntelliJ platform branch 143+.
|
||||||
@@ -149,8 +787,7 @@ IntelliJ platform branch 143+.
|
|||||||
* VIM-970 Fixed move commands in read-only files
|
* VIM-970 Fixed move commands in read-only files
|
||||||
|
|
||||||
|
|
||||||
0.41, 2015-06-10
|
## 0.41, 2015-06-10
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -158,8 +795,7 @@ A bugfix release.
|
|||||||
IntelliJ
|
IntelliJ
|
||||||
|
|
||||||
|
|
||||||
0.40, 2015-06-09
|
## 0.40, 2015-06-09
|
||||||
----------------
|
|
||||||
|
|
||||||
Added support for `mapleader`. Support comments in `%` brace matching. Various
|
Added support for `mapleader`. Support comments in `%` brace matching. Various
|
||||||
bug fixes.
|
bug fixes.
|
||||||
@@ -186,8 +822,7 @@ Bug fixes:
|
|||||||
* VIM-930 Fixed editor focus issues after closing Ex entry box on Oracle Java 6
|
* VIM-930 Fixed editor focus issues after closing Ex entry box on Oracle Java 6
|
||||||
|
|
||||||
|
|
||||||
0.39, 2014-12-03
|
## 0.39, 2014-12-03
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -199,8 +834,7 @@ Bug fixes:
|
|||||||
* EA-63022 Don't update line numbers in the caret movement event listener
|
* EA-63022 Don't update line numbers in the caret movement event listener
|
||||||
|
|
||||||
|
|
||||||
0.38, 2014-12-01
|
## 0.38, 2014-12-01
|
||||||
----------------
|
|
||||||
|
|
||||||
Added support for `number` and `relativenumber` options, `clipboard=unnamed`
|
Added support for `number` and `relativenumber` options, `clipboard=unnamed`
|
||||||
option. Added `:action` and `:actionlist` commands for executing arbitrary
|
option. Added `:action` and `:actionlist` commands for executing arbitrary
|
||||||
@@ -232,8 +866,7 @@ Bug fixes:
|
|||||||
* VIM-723 Fix pasting to an empty line
|
* VIM-723 Fix pasting to an empty line
|
||||||
|
|
||||||
|
|
||||||
0.37, 2014-10-15
|
## 0.37, 2014-10-15
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -244,8 +877,7 @@ Bug fixes:
|
|||||||
* VIM-407 Fixed `>>` to work if a line contains only one character
|
* VIM-407 Fixed `>>` to work if a line contains only one character
|
||||||
|
|
||||||
|
|
||||||
0.36, 2014-10-14
|
## 0.36, 2014-10-14
|
||||||
----------------
|
|
||||||
|
|
||||||
Added support for common window splitting and navigation commands. Various bug
|
Added support for common window splitting and navigation commands. Various bug
|
||||||
fixes.
|
fixes.
|
||||||
@@ -264,8 +896,7 @@ Bug fixes:
|
|||||||
* VIM-569 Fixed `<C-W>` when the caret is at the end of a line
|
* VIM-569 Fixed `<C-W>` when the caret is at the end of a line
|
||||||
|
|
||||||
|
|
||||||
0.35, 2014-05-15
|
## 0.35, 2014-05-15
|
||||||
----------------
|
|
||||||
|
|
||||||
The `~/.vimrc` initialization file is no longer read by default, use
|
The `~/.vimrc` initialization file is no longer read by default, use
|
||||||
`~/.ideavimrc` instead.
|
`~/.ideavimrc` instead.
|
||||||
@@ -286,8 +917,7 @@ Bug fixes:
|
|||||||
selection
|
selection
|
||||||
|
|
||||||
|
|
||||||
0.34, 2014-04-29
|
## 0.34, 2014-04-29
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -301,8 +931,7 @@ Bug fixes:
|
|||||||
* VIM-667 Ignore potentially nested lines of .vimrc based on leading whitespace
|
* VIM-667 Ignore potentially nested lines of .vimrc based on leading whitespace
|
||||||
|
|
||||||
|
|
||||||
0.33, 2014-04-28
|
## 0.33, 2014-04-28
|
||||||
----------------
|
|
||||||
|
|
||||||
Added support for `:map` key mapping commands. New keyboard shortcuts handler
|
Added support for `:map` key mapping commands. New keyboard shortcuts handler
|
||||||
that doesn't require a separate keymap for Vim emulation. Added support for
|
that doesn't require a separate keymap for Vim emulation. Added support for
|
||||||
@@ -321,14 +950,12 @@ Bug fixes:
|
|||||||
* VIM-281 Don't disable global reformat code action for Vim emulation
|
* VIM-281 Don't disable global reformat code action for Vim emulation
|
||||||
|
|
||||||
|
|
||||||
0.32, 2013-11-15
|
## 0.32, 2013-11-15
|
||||||
----------------
|
|
||||||
|
|
||||||
Fixed API compatibility with IntelliJ platform builds 132.1052+.
|
Fixed API compatibility with IntelliJ platform builds 132.1052+.
|
||||||
|
|
||||||
|
|
||||||
0.31, 2013-11-12
|
## 0.31, 2013-11-12
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -337,8 +964,7 @@ Bug fixes:
|
|||||||
* VIM-582 Fixed line comment and reformat commands with no visual selection
|
* VIM-582 Fixed line comment and reformat commands with no visual selection
|
||||||
|
|
||||||
|
|
||||||
0.30, 2013-11-11
|
## 0.30, 2013-11-11
|
||||||
----------------
|
|
||||||
|
|
||||||
Added support for a separate `.ideavimrc` config file. Fixed long-standing
|
Added support for a separate `.ideavimrc` config file. Fixed long-standing
|
||||||
issues with merged undo/redo commands and `<Esc>` during code completion.
|
issues with merged undo/redo commands and `<Esc>` during code completion.
|
||||||
@@ -358,8 +984,7 @@ Bug fixes:
|
|||||||
* Fixed several reported exceptions
|
* Fixed several reported exceptions
|
||||||
|
|
||||||
|
|
||||||
0.29, 2013-05-15
|
## 0.29, 2013-05-15
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -370,8 +995,7 @@ Bug fixes:
|
|||||||
* VIM-121 Don't move cursor while scrolling
|
* VIM-121 Don't move cursor while scrolling
|
||||||
|
|
||||||
|
|
||||||
0.28, 2013-04-06
|
## 0.28, 2013-04-06
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -381,8 +1005,7 @@ Bug fixes:
|
|||||||
* VIM-479 Don't try to activate insert mode for diff view
|
* VIM-479 Don't try to activate insert mode for diff view
|
||||||
|
|
||||||
|
|
||||||
0.27, 2013-04-03
|
## 0.27, 2013-04-03
|
||||||
----------------
|
|
||||||
|
|
||||||
New Vim keymap generator creates better keymaps, especially for Mac OS X.
|
New Vim keymap generator creates better keymaps, especially for Mac OS X.
|
||||||
Restart after reconfiguring the keymap is no longer required.
|
Restart after reconfiguring the keymap is no longer required.
|
||||||
@@ -403,8 +1026,7 @@ Bug fixes:
|
|||||||
* Fixed command window font size to match editor font size
|
* Fixed command window font size to match editor font size
|
||||||
|
|
||||||
|
|
||||||
0.26, 2012-12-26
|
## 0.26, 2012-12-26
|
||||||
----------------
|
|
||||||
|
|
||||||
Added support for paste in the command mode: from a register using `<C-R>`,
|
Added support for paste in the command mode: from a register using `<C-R>`,
|
||||||
from the clipboard using `<S-Insert>` or `<M-V>`. Added support for the last
|
from the clipboard using `<S-Insert>` or `<M-V>`. Added support for the last
|
||||||
@@ -423,8 +1045,7 @@ Bug fixes:
|
|||||||
* VIM-302 Fixed tab switching order for `gt` and `gT`
|
* VIM-302 Fixed tab switching order for `gt` and `gT`
|
||||||
|
|
||||||
|
|
||||||
0.25, 2012-12-19
|
## 0.25, 2012-12-19
|
||||||
----------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -433,8 +1054,7 @@ A bugfix release.
|
|||||||
character
|
character
|
||||||
|
|
||||||
|
|
||||||
0.24, 2012-12-03
|
## 0.24, 2012-12-03
|
||||||
----------------
|
|
||||||
|
|
||||||
Added Vim string object selection motions (see help topics `v_i"`, `v_a"`).
|
Added Vim string object selection motions (see help topics `v_i"`, `v_a"`).
|
||||||
Various bug fixes.
|
Various bug fixes.
|
||||||
@@ -464,7 +1084,7 @@ Bug fixes:
|
|||||||
* VIM-312 Fixed range and caret position after `dw` on the last single-word
|
* VIM-312 Fixed range and caret position after `dw` on the last single-word
|
||||||
line, `w` command argument for the last word in file
|
line, `w` command argument for the last word in file
|
||||||
* Fixed `w` motion at the last word
|
* Fixed `w` motion at the last word
|
||||||
* VIM-85 Bug fix for gi behaviour
|
* VIM-85 Bug fix for gi behavior
|
||||||
* Always move cursor at the beginning of the deleted range
|
* Always move cursor at the beginning of the deleted range
|
||||||
* VIM-275 Fixed edge cases for `i{` motion
|
* VIM-275 Fixed edge cases for `i{` motion
|
||||||
* VIM-314 Made `i{` motion characterwise, not linewise/characterwise in visual
|
* VIM-314 Made `i{` motion characterwise, not linewise/characterwise in visual
|
||||||
@@ -473,8 +1093,7 @@ Bug fixes:
|
|||||||
* VIM-157 Fixed regression in moving the cursor after `~`
|
* VIM-157 Fixed regression in moving the cursor after `~`
|
||||||
|
|
||||||
|
|
||||||
0.23.115, 2012-11-14
|
## 0.23.115, 2012-11-14
|
||||||
--------------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -483,8 +1102,7 @@ A bugfix release.
|
|||||||
* VIM-112 Delete a single previous word with <C-W> in insert mode, not all inserted words
|
* VIM-112 Delete a single previous word with <C-W> in insert mode, not all inserted words
|
||||||
|
|
||||||
|
|
||||||
0.23.111, 2012-11-12
|
## 0.23.111, 2012-11-12
|
||||||
--------------------
|
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -503,8 +1121,7 @@ A bugfix release.
|
|||||||
found
|
found
|
||||||
|
|
||||||
|
|
||||||
0.23.93, 2012-03-21
|
## 0.23.93, 2012-03-21
|
||||||
-------------------
|
|
||||||
|
|
||||||
A bugfix release. Vim.xml was fixed to use Command+C, Command+V on Mac OS.
|
A bugfix release. Vim.xml was fixed to use Command+C, Command+V on Mac OS.
|
||||||
Unfortunately you need to update Vim.xml manually this time.
|
Unfortunately you need to update Vim.xml manually this time.
|
||||||
|
|||||||
4
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
This project and the corresponding community is governed by the [JetBrains Open Source and Community Code of Conduct](https://confluence.jetbrains.com/display/ALL/JetBrains+Open+Source+and+Community+Code+of+Conduct). Please make sure you read it.
|
||||||
|
|
||||||
161
CONTRIBUTING.md
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
[![TeamCity Build][teamcity-build-status-svg]][teamcity-build-status]
|
||||||
|
|
||||||
|
IdeaVim is an open source project created by 80+ contributors. Would you like to make it even better? That’s wonderful!
|
||||||
|
|
||||||
|
This page is created to help you start contributing. And who knows, maybe in a few days this project will be brighter than ever!
|
||||||
|
|
||||||
|
:warning: The plugin is currently under a huge refactoring aiming to split into vim-engine and IdeaVim in order to
|
||||||
|
support the new [Fleet IDE](https://www.jetbrains.com/fleet/). Please see [Fleet refactoring](#Fleet-refactoring).
|
||||||
|
|
||||||
|
## Before you begin
|
||||||
|
|
||||||
|
- The project is written in Kotlin and Java. Choose whichever language you feel more comfortable with,
|
||||||
|
or maybe one that you’d like to get to know better (why not start [learning Kotlin](https://kotlinlang.org/docs/tutorials/) right now?).
|
||||||
|
|
||||||
|
- If you come across some IntelliJ Platform code, these links may prove helpful:
|
||||||
|
|
||||||
|
* [IntelliJ architectural overview](https://www.jetbrains.org/intellij/sdk/docs/platform/fundamentals.html)
|
||||||
|
* [IntelliJ plugin development resources](https://www.jetbrains.org/intellij/sdk/docs/welcome.html)
|
||||||
|
|
||||||
|
- Having any difficulties?
|
||||||
|
Join the brand new
|
||||||
|
[](https://gitter.im/JetBrains/ideavim?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
for IdeaVim developers and contributors!
|
||||||
|
|
||||||
|
OK, ready to do some coding?
|
||||||
|
|
||||||
|
## Yes, I'm ready for some coding
|
||||||
|
|
||||||
|
* Fork the repository and clone it to the local machine.
|
||||||
|
* Open the project with IntelliJ IDEA.
|
||||||
|
|
||||||
|
Yoo hoo! You’re all set to begin contributing.
|
||||||
|
We've prepared some useful configurations for you:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
And here are useful gradle commands:
|
||||||
|
|
||||||
|
* `./gradlew runIde` — start the dev version of IntelliJ IDEA with IdeaVim installed.
|
||||||
|
* `./gradlew test` — run tests.
|
||||||
|
* `./gradlew buildPlugin` — build the plugin. The result will be located in `build/distributions`. This file can be
|
||||||
|
installed by using `Settings | Plugin | >Gear Icon< | Install Plugin from Disk...`. You can stay with your personal build
|
||||||
|
for a few days or send it to a friend for testing.
|
||||||
|
|
||||||
|
## Warmup
|
||||||
|
|
||||||
|
- Pick a few relatively simple tasks that are tagged with
|
||||||
|
[#patch_welcome](https://youtrack.jetbrains.com/issues/VIM?q=%23patch_welcome%20%23Unresolved%20sort%20by:%20votes%20)
|
||||||
|
in the issue tracker.
|
||||||
|
- Read the javadoc for the `@VimBehaviorDiffers` annotation in the source code and fix the corresponding functionality.
|
||||||
|
- Implement one of the requested [#vim plugin](https://youtrack.jetbrains.com/issues/VIM?q=%23Unresolved%20tag:%20%7Bvim%20plugin%7D%20sort%20by:%20votes%20)s.
|
||||||
|
|
||||||
|
> :small_orange_diamond: Selected an issue to work on? Leave a comment in a YouTrack ticket or create a draft PR
|
||||||
|
> to indicate that you've started working on it so that you might get additional guidance and feedback from the maintainers.
|
||||||
|
|
||||||
|
## Where to start in the codebase
|
||||||
|
|
||||||
|
If you are looking for:
|
||||||
|
|
||||||
|
- Vim commands (`w`, `<C-O>`, `p`, etc.):
|
||||||
|
- Any particular command: `package-info.java`.
|
||||||
|
- How commands are executed in common: `EditorActionHandlerBase`.
|
||||||
|
- Key mapping: `KeyHandler.handleKey()`.
|
||||||
|
|
||||||
|
- Ex commands (`:set`, `:s`, `:nohlsearch`):
|
||||||
|
- Any particular ex command: package `com.maddyhome.idea.vim.ex.handler`.
|
||||||
|
- Vim script grammar: `Vimscript.g4`.
|
||||||
|
- Vim script parsing: package `com.maddyhome.idea.vim.vimscript.parser`.
|
||||||
|
- Vim script executor: `Executor`.
|
||||||
|
|
||||||
|
- Extensions:
|
||||||
|
- Extensions handler: `VimExtensionHandler`.
|
||||||
|
- Available extensions: package `com/maddyhome/idea/vim/extension`.
|
||||||
|
|
||||||
|
- Common features:
|
||||||
|
- State machine. How every particular keystroke is parsed in IdeaVim: `KeyHandler.handleKey()`.
|
||||||
|
- Options (`incsearch`, `iskeyword`, `relativenumber`): `OptionServiceImpl`.
|
||||||
|
- Plugin startup: `PluginStartup`.
|
||||||
|
- Notifications: `NotificationService`.
|
||||||
|
- Status bar icon: `StatusBar.kt`.
|
||||||
|
- On/off switch: `VimPlugin.setEnabled()`.
|
||||||
|
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Here are some guides for testing:
|
||||||
|
|
||||||
|
1. Read the javadoc for the `@VimBehaviorDiffers` annotation in the source code.
|
||||||
|
|
||||||
|
2. Please avoid senseless text like "dhjkwaldjwa", "asdasdasd", "123 123 123 123", etc. Try to choose an example
|
||||||
|
text that is easy to read and understand what is wrong if the test fails. For example, take a few lines from your
|
||||||
|
favorite poem, or use Vladimir Nabokov’s “A Discovery" if you don't have one.
|
||||||
|
|
||||||
|
3. Don't forget to test your functionality with line start, line end, file start, file end, empty line, multiple
|
||||||
|
carets, dollar motion, etc.
|
||||||
|
|
||||||
|
##### Neovim
|
||||||
|
IdeaVim has an experimental integration with neovim in tests. Tests that are performed with `doTest` also executed in
|
||||||
|
neovim instance, and the state of IdeaVim is asserted to be the same as the state of neovim.
|
||||||
|
- Only tests that use `doTest` are checked with neovim.
|
||||||
|
- Tests with `@VimBehaviorDiffers` or `@TestWithoutNeovim` annotations don't use neovim.
|
||||||
|
|
||||||
|
#### Property-based tests
|
||||||
|
Property-based tests are located under `propertybased` package. These tests a flaky by nature
|
||||||
|
although in most cases they are stable. If the test fails on your TeamCity run, try to check the test output and understand
|
||||||
|
if the fail is caused by your changes. If it's not, just ignore the test.
|
||||||
|
|
||||||
|
|
||||||
|
## A common direction
|
||||||
|
|
||||||
|
We’re trying to make IdeaVim close to the original Vim both in terms of functionality and architecture.
|
||||||
|
|
||||||
|
- Vim motions can be [either inclusive, exclusive, or linewise](http://vimdoc.sourceforge.net/htmldoc/motion.html#inclusive).
|
||||||
|
In IdeaVim, you can use `MotionType` for that.
|
||||||
|
- Have you read the [interesting things](https://github.com/JetBrains/ideavim#some-facts-about-vim) about IdeaVim?
|
||||||
|
Do you remember how `dd`, `yy`, and other similar commands work? `DuplicableOperatorAction` will help you with that.
|
||||||
|
And we also translate it to `d_` and `y_`: `KeyHandler.mapOpCommand()`.
|
||||||
|
- All IdeaVim extensions use the same command names as the originals (e.g. `<Plug>(CommentMotion)`, `<Plug>ReplaceWithRegisterLine`),
|
||||||
|
so you can reuse your `.vimrc` settings.
|
||||||
|
We also support proper command mappings (functions are mapped to `<Plug>...`), the operator function (`OperatorFunction`), and so on.
|
||||||
|
- Magic is supported as well. See `Magic`.
|
||||||
|
|
||||||
|
|
||||||
|
## Fleet refactoring
|
||||||
|
At the moment, IdeaVim is under an active refactoring aiming to split IdeaVim into two modules: vim-engine and IdeaVim.
|
||||||
|
|
||||||
|
If you develop a plugin that depends on IdeaVim: We have an instrument to check that our changes don't affect
|
||||||
|
the plugins in the marketplace. Also, we commit to support currently used API at least till the end of 2022.
|
||||||
|
If you still encounter any issues with the newer versions of IdeaVim, please [contact maintainers](https://github.com/JetBrains/ideavim#contact-maintainers).
|
||||||
|
We kindly ask you not to use anything from the new API (like `VimEditor`, `injector`) because at the moment we don't
|
||||||
|
guarantee the compatibility of this API in the future versions.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
### I read the whole page but something is still unclear.
|
||||||
|
|
||||||
|
Oh no! No cookies for the maintainers today! Please [tell us](https://github.com/JetBrains/ideavim#contact-maintainers) about it so we can help.
|
||||||
|
|
||||||
|
|
||||||
|
### I’ve found a bug in this documentation.
|
||||||
|
|
||||||
|
No beer in the bar for us unless it's fixed. [Let us know](https://github.com/JetBrains/ideavim#contact-maintainers) situation so we might be able to fix it.
|
||||||
|
|
||||||
|
|
||||||
|
### The lack of documentation or a javadoc/ktdoc makes it difficult to start contributing.
|
||||||
|
|
||||||
|
This is just terrible. [You know what to do](https://github.com/JetBrains/ideavim#contact-maintainers).
|
||||||
|
|
||||||
|
### Resources:
|
||||||
|
|
||||||
|
* [Continuous integration builds](https://teamcity.jetbrains.com/project.html?projectId=IdeaVim&guest=1)
|
||||||
|
* [Bug tracker](https://youtrack.jetbrains.com/issues/VIM)
|
||||||
|
* [Chat on gitter](https://gitter.im/JetBrains/ideavim)
|
||||||
|
* [IdeaVim Channel](https://jb.gg/bi6zp7) on [JetBrains Server](https://discord.gg/jetbrains)
|
||||||
|
* [Plugin homepage](https://plugins.jetbrains.com/plugin/164-ideavim)
|
||||||
|
* [Changelog](CHANGES.md)
|
||||||
|
* [Contributors listing](AUTHORS.md)
|
||||||
|
|
||||||
|
[teamcity-build-status]: https://teamcity.jetbrains.com/viewType.html?buildTypeId=IdeaVim_TestsForIntelliJEAP&guest=1
|
||||||
|
[teamcity-build-status-svg]: https://teamcity.jetbrains.com/app/rest/builds/buildType:(id:IdeaVim_TestsForIntelliJEAP)/statusIcon.svg?guest=1
|
||||||
43
LICENSE.txt
@@ -1,12 +1,12 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
Preamble
|
Preamble
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
The licenses for most software are designed to take away your
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
|
|||||||
General Public License applies to most of the Free Software
|
General Public License applies to most of the Free Software
|
||||||
Foundation's software and to any other program whose authors commit to
|
Foundation's software and to any other program whose authors commit to
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
your programs, too.
|
your programs, too.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
|
|||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
0. This License applies to any program or other work which contains
|
||||||
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
|
|||||||
License. (Exception: if the Program itself is interactive but
|
License. (Exception: if the Program itself is interactive but
|
||||||
does not normally print such an announcement, your work based on
|
does not normally print such an announcement, your work based on
|
||||||
the Program is not required to print an announcement.)
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
These requirements apply to the modified work as a whole. If
|
||||||
identifiable sections of that work are not derived from the Program,
|
identifiable sections of that work are not derived from the Program,
|
||||||
and can be reasonably considered independent and separate works in
|
and can be reasonably considered independent and separate works in
|
||||||
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
|
|||||||
access to copy the source code from the same place counts as
|
access to copy the source code from the same place counts as
|
||||||
distribution of the source code, even though third parties are not
|
distribution of the source code, even though third parties are not
|
||||||
compelled to copy the source along with the object code.
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
except as expressly provided under this License. Any attempt
|
except as expressly provided under this License. Any attempt
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
@@ -225,7 +225,7 @@ impose that choice.
|
|||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
This section is intended to make thoroughly clear what is believed to
|
||||||
be a consequence of the rest of this License.
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
original copyright holder who places the Program under this License
|
original copyright holder who places the Program under this License
|
||||||
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
|
|||||||
of preserving the free status of all derivatives of our free software and
|
of preserving the free status of all derivatives of our free software and
|
||||||
of promoting the sharing and reuse of software generally.
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
NO WARRANTY
|
NO WARRANTY
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
If you develop a new program, and you want it to be of the greatest
|
||||||
possible use to the public, the best way to achieve this is to make it
|
possible use to the public, the best way to achieve this is to make it
|
||||||
@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
|
|||||||
the "copyright" line and a pointer to where the full notice is found.
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
Copyright (C) 19yy <name of author>
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License along
|
||||||
along with this program; if not, write to the Free Software
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
If the program is interactive, make it output a short notice like this
|
||||||
when it starts in an interactive mode:
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
This is free software, and you are welcome to redistribute it
|
This is free software, and you are welcome to redistribute it
|
||||||
under certain conditions; type `show c' for details.
|
under certain conditions; type `show c' for details.
|
||||||
@@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names:
|
|||||||
This General Public License does not permit incorporating your program into
|
This General Public License does not permit incorporating your program into
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
consider it more useful to permit linking proprietary applications with the
|
consider it more useful to permit linking proprietary applications with the
|
||||||
library. If this is what you want to do, use the GNU Library General
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
Public License instead of this License.
|
Public License instead of this License.
|
||||||
455
README.md
@@ -1,233 +1,314 @@
|
|||||||
|
<img src="src/main/resources/META-INF/pluginIcon.svg" width="80" height="80" alt="icon" align="left"/>
|
||||||
|
|
||||||
IdeaVim
|
IdeaVim
|
||||||
=======
|
===
|
||||||
|
|
||||||
<div>
|
[![Official JetBrains Project][jb-official-svg]][jb-official]
|
||||||
<a href="https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub">
|
[![Contributions welcome][contributions-welcome-svg]][contributions-welcome]
|
||||||
<img src="http://jb.gg/badges/official.svg" alt="official JetBrains project"/>
|
[![Downloads][plugin-downloads-svg]][plugin-repo]
|
||||||
</a>
|
[![Rating][plugin-rating-svg]][plugin-repo]
|
||||||
</div>
|
[![Version][plugin-version-svg]][plugin-repo]
|
||||||
|
[![Gitter][gitter-svg]][gitter]
|
||||||
|
[![Twitter][twitter-svg]][twitter]
|
||||||
|
|
||||||
<div>
|
IdeaVim is a Vim emulation plugin for IntelliJ Platform-based IDEs.
|
||||||
<a href="http://teamcity.jetbrains.com/viewType.html?buildTypeId=IdeaVim_Build&guest=1">
|
|
||||||
<img src="http://teamcity.jetbrains.com/app/rest/builds/buildType:(id:IdeaVim_Build)/statusIcon.svg?guest=1"/>
|
|
||||||
</a>
|
|
||||||
<span>Build<span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
##### Contact maintainers:
|
||||||
<a href="http://teamcity.jetbrains.com/viewType.html?buildTypeId=IdeaVim_TestsForIntelliJ20182&guest=1">
|
* [Bug tracker](https://youtrack.jetbrains.com/issues/VIM)
|
||||||
<img src="http://teamcity.jetbrains.com/app/rest/builds/buildType:(id:IdeaVim_TestsForIntelliJ20182)/statusIcon.svg?guest=1"/>
|
* [@IdeaVim](https://twitter.com/ideavim) on Twitter
|
||||||
</a>
|
* [Chat on gitter](https://gitter.im/JetBrains/ideavim)
|
||||||
<span>Tests</span>
|
* [IdeaVim Channel](https://jb.gg/bi6zp7) on [JetBrains Server](https://discord.gg/jetbrains)
|
||||||
</div>
|
|
||||||
|
|
||||||
IdeaVim is a Vim emulation plugin for IDEs based on the IntelliJ platform.
|
##### Resources:
|
||||||
IdeaVim can be used with IntelliJ IDEA, PyCharm, CLion, PhpStorm, WebStorm,
|
|
||||||
RubyMine, AppCode, DataGrip, GoLand, Rider, Cursive, and Android Studio.
|
|
||||||
|
|
||||||
Resources:
|
* [Plugin homepage](https://plugins.jetbrains.com/plugin/164-ideavim)
|
||||||
|
|
||||||
* [Plugin homepage](http://plugins.jetbrains.com/plugin/164)
|
|
||||||
* [Changelog](CHANGES.md)
|
* [Changelog](CHANGES.md)
|
||||||
* [Bug tracker](http://youtrack.jetbrains.com/issues/VIM)
|
* [Continuous integration builds](https://teamcity.jetbrains.com/project.html?projectId=IdeaVim&guest=1)
|
||||||
* [Continuous integration builds](http://teamcity.jetbrains.com/project.html?projectId=IdeaVim&guest=1)
|
|
||||||
* [@IdeaVim](http://twitter.com/ideavim) in Twitter
|
|
||||||
|
|
||||||
|
#### Compatibility
|
||||||
|
|
||||||
Installation
|
IntelliJ IDEA, PyCharm, CLion, PhpStorm, WebStorm, RubyMine, AppCode, DataGrip, GoLand, Rider, Cursive,
|
||||||
|
Android Studio and other IntelliJ platform based IDEs.
|
||||||
|
|
||||||
|
Setup
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Use the IDE's plugin manager to install the latest version of the plugin.
|
- IdeaVim can be installed via `Settings | Plugins`.
|
||||||
Start the IDE normally and enable the Vim emulation using "Tools | Vim
|
See the [detailed instructions](https://www.jetbrains.com/help/idea/managing-plugins.html#).
|
||||||
Emulator" menu item. At this point you must use Vim keystrokes in all editors.
|
|
||||||
|
|
||||||
If you wish to disable the plugin, select the "Tools | Vim Emulator" menu so
|
- Use `Tools | Vim Emulator` in the menu to enable or disable emulation.
|
||||||
it is unchecked. At this point your IDE will work with its regular keyboard
|
|
||||||
shortcuts.
|
|
||||||
|
|
||||||
Keyboard shortcut conflicts between the Vim emulation and the IDE can be
|
- Use the `~/.ideavimrc` file as an analog of `~/.vimrc` ([learn more](#Files)). The XDG standard is supported, as well.
|
||||||
resolved via "File | Settings | Editor | Vim Emulation", "File | Settings |
|
|
||||||
Keymap" on Linux & Windows, and by "Preferences | Editor | Vim Emulation",
|
|
||||||
"Preferences | Keymap" on macOS. They can also be resolved by key mapping
|
|
||||||
commands in your ~/.ideavimrc file.
|
|
||||||
|
|
||||||
|
- Shortcut conflicts can be resolved by using:
|
||||||
|
- On Linux & Windows: `File | Settings | Editor | Vim` & `File | Settings | Keymap`,
|
||||||
|
- On macOS: `Preferences | Editor | Vim` & `Preferences | Keymap`,
|
||||||
|
- Regular Vim mappings in the `~/.ideavimrc` file.
|
||||||
|
|
||||||
Get an Early Access
|
Get Early Access
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Would you like to try new features and fixes? Join the Early Access Program and
|
Would you like to try new features and fixes? Join the Early Access Program and
|
||||||
receive EAP builds as updates! Add this URL to "Settings | Plugins |
|
receive EAP builds as updates!
|
||||||
Browse Repositories | Manage Repositories":
|
|
||||||
[https://plugins.jetbrains.com/plugins/eap/ideavim](https://plugins.jetbrains.com/plugins/eap/ideavim)
|
|
||||||
|
|
||||||
See [the changelog](CHANGES.md) for the list of hot unreleased features.
|
1. Click the IdeaVim icon <img src="src/main/resources/META-INF/pluginIcon_noBorders.svg" width="16" height="16" alt="icon"/>
|
||||||
|
in the status bar | `Early Access Program` | `Subscibe to EAP`
|
||||||
|
|
||||||
It is important to distinguish EAP from traditional pre-release software.
|
|
||||||
|
Or subscribe to EAP updates manually:
|
||||||
|
|
||||||
|
1. Open `Settings | Plugins`
|
||||||
|
2. Click the gear icon :gear:, select `Manage Plugin Repositories`, and add the following url:
|
||||||
|
```
|
||||||
|
https://plugins.jetbrains.com/plugins/eap/ideavim
|
||||||
|
```
|
||||||
|
|
||||||
|
See [the changelog](CHANGES.md) for the list of unreleased features.
|
||||||
|
|
||||||
|
It is important to distinguish EAP builds from traditional pre-release software.
|
||||||
Please note that the quality of EAP versions may at times be way below even
|
Please note that the quality of EAP versions may at times be way below even
|
||||||
usual beta standards.
|
usual beta standards.
|
||||||
|
|
||||||
|
You can always leave your feedback with:
|
||||||
|
* [@IdeaVim](https://twitter.com/ideavim) in Twitter
|
||||||
|
* [Bug tracker](https://youtrack.jetbrains.com/issues/VIM)
|
||||||
|
|
||||||
|
|
||||||
Summary of Supported Vim Features
|
Summary of Supported Vim Features
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
Supported:
|
Here are some examples of supported vim features and commands:
|
||||||
|
|
||||||
* Motion keys
|
* Normal / insert / visual / select / etc. modes
|
||||||
* Deletion/changing
|
* Motion / deletion / change / window / etc. commands
|
||||||
* Insert mode commands
|
|
||||||
* Marks
|
|
||||||
* Registers
|
|
||||||
* Undo/redo
|
|
||||||
* Visual mode commands
|
|
||||||
* Some Ex commands
|
|
||||||
* Some [:set options](doc/set-commands.md)
|
|
||||||
* Full Vim regexps for search and search/replace
|
|
||||||
* Key mappings
|
* Key mappings
|
||||||
* Macros
|
* Marks / Macros / Digraphs / Registers
|
||||||
* Digraphs
|
* Some [set commands](https://github.com/JetBrains/ideavim/wiki/%22set%22-commands)
|
||||||
* Command line and search history
|
* Full Vim regexps for search and search/replace
|
||||||
* Window commands
|
|
||||||
* Vim web help
|
* Vim web help
|
||||||
|
* `~/.ideavimrc` configuration file
|
||||||
|
|
||||||
Emulated Vim plugins:
|
[Emulated Vim plugins](https://github.com/JetBrains/ideavim/wiki/Emulated-plugins):
|
||||||
|
|
||||||
|
* vim-easymotion
|
||||||
|
* NERDTree
|
||||||
* vim-surround
|
* vim-surround
|
||||||
* vim-multiple-cursors
|
* vim-multiple-cursors
|
||||||
|
* vim-commentary
|
||||||
Not supported (yet):
|
* argtextobj.vim
|
||||||
|
* vim-textobj-entire
|
||||||
* Jump lists
|
* ReplaceWithRegister
|
||||||
* Various less used commands
|
* vim-exchange
|
||||||
|
* vim-highlightedyank
|
||||||
|
* vim-paragraph-motion
|
||||||
|
* vim-indent-object
|
||||||
|
* match.it
|
||||||
|
|
||||||
See also:
|
See also:
|
||||||
|
|
||||||
* [The list of all supported commands](src/com/maddyhome/idea/vim/package-info.java)
|
* [The list of all supported commands](src/main/java/com/maddyhome/idea/vim/package-info.java)
|
||||||
* [Top features and bugs](http://youtrack.jetbrains.com/issues/VIM?q=%23Unresolved+sort+by%3A+votes)
|
* [Top feature requests and bugs](https://youtrack.jetbrains.com/issues/VIM?q=%23Unresolved+sort+by%3A+votes)
|
||||||
|
* [Vimscript support roadmap](vimscript-info/VIMSCRIPT_ROADMAP.md)
|
||||||
|
* [List of supported in-build functions](vimscript-info/FUNCTIONS_INFO.MD)
|
||||||
|
|
||||||
Files
|
Files
|
||||||
-----
|
-----
|
||||||
|
|
||||||
* ~/.ideavimrc
|
* `~/.ideavimrc`
|
||||||
* Your IdeaVim-specific Vim initialization commands
|
* Your IdeaVim-specific Vim initialization commands
|
||||||
|
|
||||||
You can read your ~/.vimrc file from ~/.ideavimrc using this command:
|
<details>
|
||||||
|
<summary><strong>Example</strong> (click to see)</summary>
|
||||||
|
|
||||||
|
```vim
|
||||||
|
""" Map leader to space ---------------------
|
||||||
|
let mapleader=" "
|
||||||
|
|
||||||
|
""" Plugins --------------------------------
|
||||||
|
set surround
|
||||||
|
set multiple-cursors
|
||||||
|
set commentary
|
||||||
|
set argtextobj
|
||||||
|
set easymotion
|
||||||
|
set textobj-entire
|
||||||
|
set ReplaceWithRegister
|
||||||
|
|
||||||
|
""" Plugin settings -------------------------
|
||||||
|
let g:argtextobj_pairs="[:],(:),<:>"
|
||||||
|
|
||||||
|
""" Common settings -------------------------
|
||||||
|
set showmode
|
||||||
|
set so=5
|
||||||
|
set incsearch
|
||||||
|
set nu
|
||||||
|
|
||||||
|
""" Idea specific settings ------------------
|
||||||
|
set ideajoin
|
||||||
|
set ideastatusicon=gray
|
||||||
|
set idearefactormode=keep
|
||||||
|
|
||||||
|
""" Mappings --------------------------------
|
||||||
|
map <leader>f <Plug>(easymotion-s)
|
||||||
|
map <leader>e <Plug>(easymotion-f)
|
||||||
|
|
||||||
|
map <leader>d <Action>(Debug)
|
||||||
|
map <leader>r <Action>(RenameElement)
|
||||||
|
map <leader>c <Action>(Stop)
|
||||||
|
map <leader>z <Action>(ToggleDistractionFreeMode)
|
||||||
|
|
||||||
|
map <leader>s <Action>(SelectInProjectView)
|
||||||
|
map <leader>a <Action>(Annotate)
|
||||||
|
map <leader>h <Action>(Vcs.ShowTabbedFileHistory)
|
||||||
|
map <S-Space> <Action>(GotoNextError)
|
||||||
|
|
||||||
|
map <leader>b <Action>(ToggleLineBreakpoint)
|
||||||
|
map <leader>o <Action>(FileStructurePopup)
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>Suggested options</strong> (click to see)</summary>
|
||||||
|
|
||||||
|
Here is also a list of the suggested options from [defaults.vim](https://github.com/vim/vim/blob/master/runtime/defaults.vim)
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Show a few lines of context around the cursor. Note that this makes the
|
||||||
|
" text scroll if you mouse-click near the start or end of the window.
|
||||||
|
set scrolloff=5
|
||||||
|
|
||||||
|
" Do incremental searching.
|
||||||
|
set incsearch
|
||||||
|
|
||||||
|
" Don't use Ex mode, use Q for formatting.
|
||||||
|
map Q gq
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
You can read your `~/.vimrc` file from `~/.ideavimrc` with this command:
|
||||||
|
|
||||||
source ~/.vimrc
|
source ~/.vimrc
|
||||||
|
|
||||||
Note, that IdeaVim currently parses ~/.ideavimrc file via simple pattern matching,
|
|
||||||
see [VIM-669](http://youtrack.jetbrains.com/issue/VIM-669) for proper parsing
|
|
||||||
of VimL files.
|
|
||||||
|
|
||||||
Also note that if you have overridden the `user.home` JVM option, this
|
Also note that if you have overridden the `user.home` JVM option, this
|
||||||
will affect where IdeaVim looks for your .ideavimrc file. For example, if you
|
will affect where IdeaVim looks for your `.ideavimrc` file. For example, if you
|
||||||
have `-Duser.home=/my/alternate/home` then IdeaVim will source
|
have `-Duser.home=/my/alternate/home` then IdeaVim will source
|
||||||
`/my/alternate/home/.ideavimrc` instead of `~/.ideavimrc`.
|
`/my/alternate/home/.ideavimrc` instead of `~/.ideavimrc`.
|
||||||
|
|
||||||
|
Alternatively, you can set up initialization commands using [XDG](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) standard.
|
||||||
|
Put your settings to `$XDG_CONFIG_HOME/ideavim/ideavimrc` file.
|
||||||
|
|
||||||
|
|
||||||
Emulated Vim Plugins
|
Emulated Vim Plugins
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
IdeaVim extensions emulate some plugins of the original Vim. In order to use
|
See [doc/emulated-plugins.md](https://github.com/JetBrains/ideavim/wiki/Emulated-plugins)
|
||||||
IdeaVim extensions, you have to enable them via this command in your ~/.ideavimrc:
|
|
||||||
|
|
||||||
set <extension-name>
|
Executing IDE Actions
|
||||||
|
---------------------
|
||||||
|
|
||||||
Available extensions:
|
IdeaVim adds various commands for listing and executing arbitrary IDE actions as
|
||||||
|
|
||||||
* surround
|
|
||||||
* Emulates [vim-surround](https://github.com/tpope/vim-surround)
|
|
||||||
* Commands: `ys`, `cs`, `ds`, `S`
|
|
||||||
* multiple-cursors
|
|
||||||
* Emulates [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors)
|
|
||||||
* Commands: `<A-n>`, `<A-x>`, `<A-p>`, `g<A-n>`
|
|
||||||
|
|
||||||
|
|
||||||
Changes to the IDE
|
|
||||||
------------------
|
|
||||||
|
|
||||||
### Undo/Redo
|
|
||||||
|
|
||||||
The IdeaVim plugin uses the undo/redo functionality of the IntelliJ platform,
|
|
||||||
so the behaviour of the `u` and `<C-R>` commands may differ from the original
|
|
||||||
Vim. Vim compatibility of undo/redo may be improved in future releases.
|
|
||||||
|
|
||||||
See also [unresolved undo issues](http://youtrack.jetbrains.com/issues/VIM?q=%23Unresolved+Help+topic%3A+u).
|
|
||||||
|
|
||||||
### Escape
|
|
||||||
|
|
||||||
Using `<Esc>` in dialog windows remains problematic. For most dialog windows
|
|
||||||
the Vim emulator is put into the insert mode with `<Esc>` not working. You
|
|
||||||
should use `<C-c>` or `<C-[>` instead. In some dialog windows the normal mode is
|
|
||||||
on by default. The usage of the Vim emulator in dialog windows is an area for
|
|
||||||
improvements.
|
|
||||||
|
|
||||||
See also [unresolved escape issues](http://youtrack.jetbrains.com/issues/VIM?q=%23Unresolved+Help+topic%3A+i_Esc).
|
|
||||||
|
|
||||||
### Executing IDE Actions
|
|
||||||
|
|
||||||
IdeaVim adds two commands for listing and executing arbitrary IDE actions as
|
|
||||||
Ex commands or via `:map` command mappings:
|
Ex commands or via `:map` command mappings:
|
||||||
|
|
||||||
|
### Executing actions:
|
||||||
|
* `:action {action_id}`
|
||||||
|
* Execute an action by `{action_id}`. Works from Ex command line.
|
||||||
|
* Please don't use `:action` in mappings. Use `<Action>` instead.
|
||||||
|
* `<Action>({action_id})`
|
||||||
|
* For the mappings you can use a special `<Action>` keyword. Don't forget the parentheses.
|
||||||
|
* E.g. `map gh <Action>(ShowErrorDescription)` <- execute hover on `gh`.
|
||||||
|
* :warning: Mappings to `<Action>` don't work with `noremap`.
|
||||||
|
If you know the case when it's needed, please [let us know](https://github.com/JetBrains/ideavim#contact-maintainers).
|
||||||
|
|
||||||
|
### Finding action ids:
|
||||||
|
|
||||||
|
* IJ provides `IdeaVim: track action Ids` command to show the id of the executed actions.
|
||||||
|
This command can be found in "Search everywhere" (double `shift`).
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>"Track action Ids" Details</strong> (click to see)</summary>
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="assets/readme/track_action_dark.gif">
|
||||||
|
<img src="assets/readme/track_action_light.gif" alt="track action ids"/>
|
||||||
|
</picture>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
* `:actionlist [pattern]`
|
* `:actionlist [pattern]`
|
||||||
* Find IDE actions by name pattern
|
* Find IDE actions by id or keymap pattern (E.g. `:actionlist extract`, `:actionlist <C-D`)
|
||||||
* `:action {name}`
|
|
||||||
* Execute an action named `NAME`
|
|
||||||
|
|
||||||
For example, here `\r` is mapped to the Reformat Code action:
|
##### Examples:
|
||||||
|
|
||||||
:map \r :action ReformatCode<CR>
|
```vim
|
||||||
|
" Map \r to the Reformat Code action
|
||||||
|
:map \r <Action>(ReformatCode)
|
||||||
|
|
||||||
|
" Map <leader>d to start debug
|
||||||
|
:map <leader>d <Action>(Debug)
|
||||||
|
|
||||||
Contributing
|
" Map \b to toggle the breakpoint on the current line
|
||||||
|
:map \b <Action>(ToggleLineBreakpoint)
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Some popular actions:
|
||||||
|
|
||||||
|
```
|
||||||
|
QuickJavaDoc - Quick Documentation (not only for java, all languages)
|
||||||
|
ShowErrorDescription - Show description of the error under the caret (cursor hovering)
|
||||||
|
QuickImplementations - Quick Definition
|
||||||
|
```
|
||||||
|
|
||||||
|
Vim Script
|
||||||
------------
|
------------
|
||||||
|
|
||||||
### Where to Start
|
IdeaVim can execute custom scripts that are written with Vim Script.
|
||||||
|
At the moment we support all language features, but not all of the built-in functions and options are supported.
|
||||||
|
|
||||||
In order to contribute to IdeaVim you should have some understanding of Java.
|
Additionally, you may be interested in the
|
||||||
|
[Vim Script Discussion](https://github.com/JetBrains/ideavim/discussions/357) or
|
||||||
See also these docs on the IntelliJ API:
|
[Vim Script Roadmap](https://github.com/JetBrains/ideavim/blob/master/vimscript-info/VIMSCRIPT_ROADMAP.md).
|
||||||
|
|
||||||
* [IntelliJ architectural overview](http://confluence.jetbrains.com/display/IDEADEV/IntelliJ+IDEA+Architectural+Overview)
|
|
||||||
* [IntelliJ plugin development resources](http://confluence.jetbrains.com/display/IDEADEV/PluginDevelopment)
|
|
||||||
|
|
||||||
You can start by picking relatively simple tasks that are tagged with
|
|
||||||
[#patch_welcome](http://youtrack.jetbrains.com/issues/VIM?q=%23patch_welcome)
|
|
||||||
in the issue tracker.
|
|
||||||
|
|
||||||
|
|
||||||
### Development Environment
|
### IDE specific options
|
||||||
|
|
||||||
1. Fork IdeaVim on GitHub and clone the repository on your local machine.
|
You can evaluate the `has('ide')` function call and get `1` if it was called with IdeaVim or `0` if the function was called from Vim/NeoVim.
|
||||||
|
The option `&ide` contains the name and edition of your IDE, for example, "IntelliJ IDEA Ultimate Edition".
|
||||||
|
To see its value for the current IDE you are using, execute the `:echo &ide` command.
|
||||||
|
To write an IDE-specific configuration, use Vim's regexp match operators `=~?` (case-insensitive) / `=~#` (case-sensitive)
|
||||||
|
|
||||||
2. Import the project from existing sources in IntelliJ IDEA 2018.1 or newer (Community or
|
**Example config:**
|
||||||
Ultimate) using "File | New | Project from Existing Sources..." or "Import
|
|
||||||
Project" from the start window.
|
|
||||||
|
|
||||||
* In the project wizard select "Import project from external model | Gradle"
|
```vim
|
||||||
|
" options and mappings that are supported by both Vim and IdeaVim
|
||||||
|
set nu
|
||||||
|
set relativenumber
|
||||||
|
|
||||||
* Select your Java 8+ JDK as the Gradle JVM, leave other parameters unchanged
|
if has('ide')
|
||||||
|
" mappings and options that exist only in IdeaVim
|
||||||
|
map <leader>f <Action>(GotoFile)
|
||||||
|
map <leader>g <Action>(FindInPath)
|
||||||
|
map <leader>b <Action>(Switcher)
|
||||||
|
|
||||||
3. Run your IdeaVim plugin within IntelliJ via a Gradle task
|
if &ide =~? 'intellij idea'
|
||||||
|
if &ide =~? 'community'
|
||||||
|
" some mappings and options for IntelliJ IDEA Community Edition
|
||||||
|
elseif &ide =~? 'ultimate'
|
||||||
|
" some mappings and options for IntelliJ IDEA Ultimate Edition
|
||||||
|
endif
|
||||||
|
elseif &ide =~? 'pycharm'
|
||||||
|
" PyCharm specific mappings and options
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
" some mappings for Vim/Neovim
|
||||||
|
nnoremap <leader>f <cmd>Telescope find_files<cr>
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
|
||||||
* Select "View | Tool Windows | Gradle" tool window
|
:gem: Contributing
|
||||||
|
------------
|
||||||
|
|
||||||
* Launch "ideavim | intellij | runIde" from the tool window
|
The power of contributing drives IdeaVim :muscle:. Even small contributions matter!
|
||||||
|
|
||||||
4. Run IdeaVim tests via a Gradle task
|
|
||||||
|
|
||||||
* Select "View | Tool Windows | Gradle" tool window
|
|
||||||
|
|
||||||
* Launch "ideavim | verification | test" from the tool window
|
|
||||||
|
|
||||||
5. Build the plugin distribution by running `./gradlew clean buildPlugin` in the
|
|
||||||
terminal in your project root.
|
|
||||||
|
|
||||||
* The resulting distribution file is build/distributions/IdeaVim-VERSION.zip
|
|
||||||
|
|
||||||
* You can install this file using "Settings | Plugins | Install plugin
|
|
||||||
from disk"
|
|
||||||
|
|
||||||
|
See [CONTRIBUTING.md](CONTRIBUTING.md) to start bringing your value to the project.
|
||||||
|
|
||||||
Authors
|
Authors
|
||||||
-------
|
-------
|
||||||
@@ -235,8 +316,72 @@ Authors
|
|||||||
See [AUTHORS.md](AUTHORS.md)
|
See [AUTHORS.md](AUTHORS.md)
|
||||||
for a list of authors and contributors.
|
for a list of authors and contributors.
|
||||||
|
|
||||||
|
IdeaVim tips and tricks
|
||||||
|
-------
|
||||||
|
|
||||||
|
- Use the power of IJ and Vim:
|
||||||
|
- `set ideajoin` to enable join via the IDE. See the [examples](https://jb.gg/f9zji9).
|
||||||
|
- Make sure `ideaput` is enabled for `clipboard` to enable native IJ insertion in Vim.
|
||||||
|
- Sync IJ bookmarks and Vim marks: `set ideamarks`
|
||||||
|
- Check out more [ex commands](https://github.com/JetBrains/ideavim/wiki/%22set%22-commands).
|
||||||
|
|
||||||
|
- Use your vim settings with IdeaVim. Put `source ~/.vimrc` in `~/.ideavimrc`.
|
||||||
|
- Control the status bar icon via the [`ideastatusicon` option](https://github.com/JetBrains/ideavim/wiki/%22set%22-commands).
|
||||||
|
- Not familiar with the default behaviour during a refactoring? See the [`idearefactormode` option](https://github.com/JetBrains/ideavim/wiki/%22set%22-commands).
|
||||||
|
|
||||||
|
Some facts about Vim
|
||||||
|
-------
|
||||||
|
|
||||||
|
Let’s relax and have some fun now! Here are a few things we've found interesting during development
|
||||||
|
and would like to share with you.
|
||||||
|
|
||||||
|
- There are no such commands as `dd`, `yy`, or `cc`. For example, `dd` is not a separate command for deleting the line,
|
||||||
|
but a `d` command with a `d` motion.
|
||||||
|
Wait, but there isn't a `d` motion in Vim! That’s right, and that’s why Vim has a dedicated set of commands
|
||||||
|
for which it checks whether the
|
||||||
|
[command equals to motion](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/normal.c#L6468)
|
||||||
|
and if so, it executes `_` motion instead.
|
||||||
|
`_` is an interesting motion that isn't even documented in vi, and it refers to the current line.
|
||||||
|
So, commands like `dd`, `yy`, and similar ones are simply translated to `d_`, `y_`, etc.
|
||||||
|
[Here](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/normal.c#L6502)
|
||||||
|
is the source of this knowledge.
|
||||||
|
|
||||||
|
- `x`, `D`, and `&` are not separate commands either. They are synonyms of `dl`, `d$`, and `:s\r`, respectively.
|
||||||
|
[Here](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/normal.c#L5365)
|
||||||
|
is the full list of synonyms.
|
||||||
|
|
||||||
|
- Have you ever used `U` after `dd`? [Don't even try](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/ops.c#L874).
|
||||||
|
|
||||||
|
- A lot of variables that refers to visual mode start with two uppercase letters, e.g. `VIsual_active`. [Some examples](https://github.com/vim/vim/blob/master/src/normal.c#L17).
|
||||||
|
|
||||||
|
- Other [strange things](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/ex_docmd.c#L1845) from vi:
|
||||||
|
* ":3" jumps to line 3
|
||||||
|
* ":3|..." prints line 3
|
||||||
|
* ":|" prints current line
|
||||||
|
|
||||||
|
- Vim script doesn't skip white space before comma. `F(a ,b)` => E475.
|
||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
|
|
||||||
IdeaVim is licensed under the terms of the GNU Public license version 2.
|
IdeaVim is licensed under the terms of the GNU Public License version 2
|
||||||
|
or any later version.
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Badges -->
|
||||||
|
[jb-official]: https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub
|
||||||
|
[jb-official-svg]: https://jb.gg/badges/official.svg
|
||||||
|
|
||||||
|
[plugin-repo]: https://plugins.jetbrains.com/plugin/164-ideavim
|
||||||
|
[plugin-downloads-svg]: http://img.shields.io/jetbrains/plugin/d/IdeaVIM
|
||||||
|
[plugin-rating-svg]: http://img.shields.io/jetbrains/plugin/r/rating/IdeaVIM
|
||||||
|
[plugin-version-svg]: https://img.shields.io/jetbrains/plugin/v/ideavim?label=version
|
||||||
|
|
||||||
|
[gitter-svg]: https://badges.gitter.im/JetBrains/ideavim.svg
|
||||||
|
[gitter]: https://gitter.im/JetBrains/ideavim?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
||||||
|
|
||||||
|
[twitter]: https://twitter.com/ideavim
|
||||||
|
[twitter-svg]: https://img.shields.io/twitter/follow/ideavim?label=twitter%20%40ideavim
|
||||||
|
|
||||||
|
[contributions-welcome-svg]: http://img.shields.io/badge/contributions-welcome-brightgreen
|
||||||
|
[contributions-welcome]: https://github.com/JetBrains/ideavim/blob/master/CONTRIBUTING.md
|
||||||
|
|||||||
BIN
assets/changes/0.58/reload_ideavimrc.png
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
assets/changes/0.59/highlight_yank.gif
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
assets/changes/0.65/nerdtree.gif
Normal file
|
After Width: | Height: | Size: 32 MiB |
BIN
assets/contributing/configs-dark.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
assets/contributing/configs-light.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
assets/icons/github-off.png
Normal file
|
After Width: | Height: | Size: 638 B |
BIN
assets/icons/github.png
Normal file
|
After Width: | Height: | Size: 364 B |
BIN
assets/icons/mail.png
Normal file
|
After Width: | Height: | Size: 282 B |
BIN
assets/readme/track_action_dark.gif
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
assets/readme/track_action_light.gif
Normal file
|
After Width: | Height: | Size: 981 KiB |
54
build.gradle
@@ -1,54 +0,0 @@
|
|||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id 'org.jetbrains.intellij' version '0.3.12'
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'java'
|
|
||||||
apply plugin: 'kotlin'
|
|
||||||
|
|
||||||
sourceCompatibility = javaVersion
|
|
||||||
targetCompatibility = javaVersion
|
|
||||||
|
|
||||||
tasks.withType(JavaCompile) { options.encoding = 'UTF-8' }
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
main {
|
|
||||||
java.srcDir 'src'
|
|
||||||
resources.srcDir 'resources'
|
|
||||||
}
|
|
||||||
test {
|
|
||||||
java.srcDir 'test'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
intellij {
|
|
||||||
version ideaVersion
|
|
||||||
pluginName 'IdeaVim'
|
|
||||||
updateSinceUntilBuild false
|
|
||||||
downloadSources Boolean.valueOf(downloadIdeaSources)
|
|
||||||
instrumentCode Boolean.valueOf(instrumentPluginCode)
|
|
||||||
intellijRepo = "https://www.jetbrains.com/intellij-repository"
|
|
||||||
|
|
||||||
publishPlugin {
|
|
||||||
channels publishChannels.split(',')
|
|
||||||
username publishUsername
|
|
||||||
password publishPassword
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
|
|
||||||
}
|
|
||||||
615
build.gradle.kts
Normal file
@@ -0,0 +1,615 @@
|
|||||||
|
|
||||||
|
import dev.feedforward.markdownto.DownParser
|
||||||
|
import org.intellij.markdown.ast.getTextInNode
|
||||||
|
import java.net.HttpURLConnection
|
||||||
|
import java.net.URL
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven { url = uri("https://jitpack.io") }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21")
|
||||||
|
classpath("com.github.AlexPl292:mark-down-to-slack:1.1.2")
|
||||||
|
classpath("org.eclipse.jgit:org.eclipse.jgit:6.1.0.202203080745-r")
|
||||||
|
classpath("org.kohsuke:github-api:1.305")
|
||||||
|
|
||||||
|
// This comes from the changelog plugin
|
||||||
|
// classpath("org.jetbrains:markdown:0.3.1")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
antlr
|
||||||
|
java
|
||||||
|
kotlin("jvm") version "1.6.21"
|
||||||
|
|
||||||
|
id("org.jetbrains.intellij") version "1.8.0"
|
||||||
|
id("org.jetbrains.changelog") version "1.3.1"
|
||||||
|
|
||||||
|
// ktlint linter - read more: https://github.com/JLLeitschuh/ktlint-gradle
|
||||||
|
id("org.jlleitschuh.gradle.ktlint") version "10.3.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Import variables from gradle.properties file
|
||||||
|
val javaVersion: String by project
|
||||||
|
val kotlinVersion: String by project
|
||||||
|
val ideaVersion: String by project
|
||||||
|
val downloadIdeaSources: String by project
|
||||||
|
val instrumentPluginCode: String by project
|
||||||
|
val remoteRobotVersion: String by project
|
||||||
|
val antlrVersion: String by project
|
||||||
|
|
||||||
|
val publishChannels: String by project
|
||||||
|
val publishToken: String by project
|
||||||
|
|
||||||
|
val slackUrl: String by project
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven { url = uri("https://cache-redirector.jetbrains.com/intellij-dependencies") }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")
|
||||||
|
compileOnly("org.jetbrains:annotations:23.0.0")
|
||||||
|
|
||||||
|
// https://mvnrepository.com/artifact/com.ensarsarajcic.neovim.java/neovim-api
|
||||||
|
testImplementation("com.ensarsarajcic.neovim.java:neovim-api:0.2.3")
|
||||||
|
testImplementation("com.ensarsarajcic.neovim.java:core-rpc:0.2.3")
|
||||||
|
|
||||||
|
// https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-test
|
||||||
|
testImplementation("org.jetbrains.kotlin:kotlin-test:$kotlinVersion")
|
||||||
|
|
||||||
|
// https://mvnrepository.com/artifact/org.mockito.kotlin/mockito-kotlin
|
||||||
|
testImplementation("org.mockito.kotlin:mockito-kotlin:4.0.0")
|
||||||
|
|
||||||
|
testImplementation("com.intellij.remoterobot:remote-robot:$remoteRobotVersion")
|
||||||
|
testImplementation("com.intellij.remoterobot:remote-fixtures:$remoteRobotVersion")
|
||||||
|
testImplementation("com.automation-remarks:video-recorder-junit:2.0")
|
||||||
|
runtimeOnly("org.antlr:antlr4-runtime:$antlrVersion")
|
||||||
|
antlr("org.antlr:antlr4:$antlrVersion")
|
||||||
|
|
||||||
|
api(project(":vim-engine"))
|
||||||
|
|
||||||
|
testApi("com.squareup.okhttp3:okhttp:4.10.0")
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
runtimeClasspath {
|
||||||
|
exclude(group = "org.antlr", module = "antlr4")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Compilation
|
||||||
|
// This can be moved to other test registration when issue with tests in gradle will be fixed
|
||||||
|
tasks.register<Test>("testWithNeovim") {
|
||||||
|
group = "verification"
|
||||||
|
systemProperty("ideavim.nvim.test", "true")
|
||||||
|
exclude("/ui/**")
|
||||||
|
exclude("**/longrunning/**")
|
||||||
|
exclude("**/propertybased/**")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Test>("testPropertyBased") {
|
||||||
|
group = "verification"
|
||||||
|
// include("**/propertybased/**")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Test>("testLongRunning") {
|
||||||
|
group = "verification"
|
||||||
|
// include("**/longrunning/**")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
// Issue in gradle 7.3
|
||||||
|
val test by getting(Test::class) {
|
||||||
|
isScanForTestClasses = false
|
||||||
|
// Only run tests from classes that end with "Test"
|
||||||
|
include("**/*Test.class")
|
||||||
|
include("**/*test.class")
|
||||||
|
include("**/*Tests.class")
|
||||||
|
exclude("**/ParserTest.class")
|
||||||
|
}
|
||||||
|
|
||||||
|
val testWithNeovim by getting(Test::class) {
|
||||||
|
isScanForTestClasses = false
|
||||||
|
// Only run tests from classes that end with "Test"
|
||||||
|
include("**/*Test.class")
|
||||||
|
include("**/*test.class")
|
||||||
|
include("**/*Tests.class")
|
||||||
|
exclude("**/ParserTest.class")
|
||||||
|
exclude("**/longrunning/**")
|
||||||
|
exclude("**/propertybased/**")
|
||||||
|
}
|
||||||
|
|
||||||
|
val testPropertyBased by getting(Test::class) {
|
||||||
|
isScanForTestClasses = false
|
||||||
|
// Only run tests from classes that end with "Test"
|
||||||
|
include("**/propertybased/*Test.class")
|
||||||
|
include("**/propertybased/*test.class")
|
||||||
|
include("**/propertybased/*Tests.class")
|
||||||
|
}
|
||||||
|
|
||||||
|
val testLongRunning by getting(Test::class) {
|
||||||
|
isScanForTestClasses = false
|
||||||
|
// Only run tests from classes that end with "Test"
|
||||||
|
include("**/longrunning/**/*Test.class")
|
||||||
|
include("**/longrunning/**/*test.class")
|
||||||
|
include("**/longrunning/**/*Tests.class")
|
||||||
|
exclude("**/longrunning/**/ParserTest.class")
|
||||||
|
}
|
||||||
|
|
||||||
|
compileJava {
|
||||||
|
sourceCompatibility = javaVersion
|
||||||
|
targetCompatibility = javaVersion
|
||||||
|
|
||||||
|
options.encoding = "UTF-8"
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin {
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = javaVersion
|
||||||
|
apiVersion = "1.6"
|
||||||
|
freeCompilerArgs = listOf("-Xjvm-default=all-compatibility")
|
||||||
|
// allWarningsAsErrors = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileTestKotlin {
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = javaVersion
|
||||||
|
apiVersion = "1.6"
|
||||||
|
// allWarningsAsErrors = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gradle.projectsEvaluated {
|
||||||
|
tasks.compileJava {
|
||||||
|
// options.compilerArgs.add("-Werror")
|
||||||
|
options.compilerArgs.add("-Xlint:deprecation")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Intellij plugin
|
||||||
|
|
||||||
|
intellij {
|
||||||
|
version.set(ideaVersion)
|
||||||
|
pluginName.set("IdeaVim")
|
||||||
|
|
||||||
|
updateSinceUntilBuild.set(false)
|
||||||
|
|
||||||
|
downloadSources.set(downloadIdeaSources.toBoolean())
|
||||||
|
instrumentCode.set(instrumentPluginCode.toBoolean())
|
||||||
|
intellijRepository.set("https://www.jetbrains.com/intellij-repository")
|
||||||
|
// Yaml is only used for testing. It's part of the IdeaIC distribution, but needs to be included as a reference
|
||||||
|
plugins.set(listOf("java", "AceJump:3.8.4", "yaml"))
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
downloadRobotServerPlugin {
|
||||||
|
version.set(remoteRobotVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
publishPlugin {
|
||||||
|
channels.set(publishChannels.split(","))
|
||||||
|
token.set(publishToken)
|
||||||
|
}
|
||||||
|
|
||||||
|
runIdeForUiTests {
|
||||||
|
systemProperty("robot-server.port", "8082")
|
||||||
|
systemProperty("ide.mac.message.dialogs.as.sheets", "false")
|
||||||
|
systemProperty("jb.privacy.policy.text", "<!--999.999-->")
|
||||||
|
systemProperty("jb.consents.confirmation.enabled", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
runPluginVerifier {
|
||||||
|
downloadDir.set("${project.buildDir}/pluginVerifier/ides")
|
||||||
|
teamCityOutputFormat.set(true)
|
||||||
|
// ideVersions.set(listOf("IC-2021.3.4"))
|
||||||
|
}
|
||||||
|
|
||||||
|
generateGrammarSource {
|
||||||
|
maxHeapSize = "128m"
|
||||||
|
arguments.addAll(listOf("-package", "com.maddyhome.idea.vim.vimscript.parser.generated", "-visitor"))
|
||||||
|
outputDirectory = file("src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated")
|
||||||
|
}
|
||||||
|
|
||||||
|
named("compileKotlin") {
|
||||||
|
dependsOn("generateGrammarSource")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add plugin open API sources to the plugin ZIP
|
||||||
|
val createOpenApiSourceJar by registering(Jar::class) {
|
||||||
|
// Java sources
|
||||||
|
from(sourceSets.main.get().java) {
|
||||||
|
include("**/com/maddyhome/idea/vim/**/*.java")
|
||||||
|
}
|
||||||
|
// Kotlin sources
|
||||||
|
from(kotlin.sourceSets.main.get().kotlin) {
|
||||||
|
include("**/com/maddyhome/idea/vim/**/*.kt")
|
||||||
|
}
|
||||||
|
destinationDirectory.set(layout.buildDirectory.dir("libs"))
|
||||||
|
archiveClassifier.set("src")
|
||||||
|
}
|
||||||
|
|
||||||
|
buildPlugin {
|
||||||
|
dependsOn(createOpenApiSourceJar)
|
||||||
|
from(createOpenApiSourceJar) { into("lib/src") }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't forget to update plugin.xml
|
||||||
|
patchPluginXml {
|
||||||
|
sinceBuild.set("222")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Linting
|
||||||
|
|
||||||
|
ktlint {
|
||||||
|
disabledRules.add("no-wildcard-imports")
|
||||||
|
version.set("0.43.0")
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Tests
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
test {
|
||||||
|
exclude("**/propertybased/**")
|
||||||
|
exclude("**/longrunning/**")
|
||||||
|
exclude("/ui/**")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Test>("testUi") {
|
||||||
|
group = "verification"
|
||||||
|
include("/ui/**")
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Changelog
|
||||||
|
|
||||||
|
changelog {
|
||||||
|
groups.set(listOf("Features:", "Changes:", "Deprecations:", "Fixes:", "Merged PRs:"))
|
||||||
|
itemPrefix.set("*")
|
||||||
|
path.set("${project.projectDir}/CHANGES.md")
|
||||||
|
unreleasedTerm.set("To Be Released")
|
||||||
|
headerParserRegex.set("(\\d\\.\\d+(.\\d+)?)".toRegex())
|
||||||
|
// header = { "${project.version}" }
|
||||||
|
// version = "0.60"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("getUnreleasedChangelog") {
|
||||||
|
group = "changelog"
|
||||||
|
doLast {
|
||||||
|
val log = changelog.getUnreleased().toHTML()
|
||||||
|
println(log)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Slack notification
|
||||||
|
|
||||||
|
tasks.register("slackNotification") {
|
||||||
|
doLast {
|
||||||
|
if (slackUrl.isBlank()) {
|
||||||
|
println("Slack Url is not defined")
|
||||||
|
return@doLast
|
||||||
|
}
|
||||||
|
val changeLog = changelog.getLatest().toText()
|
||||||
|
val slackDown = DownParser(changeLog, true).toSlack().toString()
|
||||||
|
|
||||||
|
//language=JSON
|
||||||
|
val message = """
|
||||||
|
{
|
||||||
|
"text": "New version of IdeaVim",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"type": "section",
|
||||||
|
"text": {
|
||||||
|
"type": "mrkdwn",
|
||||||
|
"text": "IdeaVim $version has been released\n$slackDown"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
""".trimIndent()
|
||||||
|
|
||||||
|
println("Parsed data: $slackDown")
|
||||||
|
val post = URL(slackUrl)
|
||||||
|
with(post.openConnection() as HttpURLConnection) {
|
||||||
|
requestMethod = "POST"
|
||||||
|
doOutput = true
|
||||||
|
setRequestProperty("Content-Type", "application/json")
|
||||||
|
|
||||||
|
outputStream.write(message.toByteArray())
|
||||||
|
|
||||||
|
val postRc = responseCode
|
||||||
|
println("Response code: $postRc")
|
||||||
|
if (postRc == 200) {
|
||||||
|
println(inputStream.bufferedReader().use { it.readText() })
|
||||||
|
} else {
|
||||||
|
println(errorStream.bufferedReader().use { it.readText() })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- Update authors
|
||||||
|
|
||||||
|
tasks.register("updateAuthors") {
|
||||||
|
doLast {
|
||||||
|
val uncheckedEmails = setOf(
|
||||||
|
"aleksei.plate@jetbrains.com",
|
||||||
|
"aleksei.plate@teamcity",
|
||||||
|
"aleksei.plate@TeamCity",
|
||||||
|
"alex.plate@192.168.0.109",
|
||||||
|
"nikita.koshcheev@TeamCity",
|
||||||
|
)
|
||||||
|
updateAuthors(uncheckedEmails)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val prId: String by project
|
||||||
|
|
||||||
|
tasks.register("updateMergedPr") {
|
||||||
|
doLast {
|
||||||
|
if (project.hasProperty("prId")) {
|
||||||
|
println("Got pr id: $prId")
|
||||||
|
updateMergedPr(prId.toInt())
|
||||||
|
} else {
|
||||||
|
error("Cannot get prId")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("updateChangelog") {
|
||||||
|
doLast {
|
||||||
|
updateChangelog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("testUpdateChangelog") {
|
||||||
|
group = "verification"
|
||||||
|
description = "This is a task to manually assert the correctness of the update tasks"
|
||||||
|
doLast {
|
||||||
|
val changesFile = File("$projectDir/CHANGES.md")
|
||||||
|
val changes = changesFile.readText()
|
||||||
|
|
||||||
|
val changesBuilder = StringBuilder(changes)
|
||||||
|
val insertOffset = setupSection(changes, changesBuilder, "### Changes:")
|
||||||
|
|
||||||
|
changesBuilder.insert(insertOffset, "--Hello--\n")
|
||||||
|
|
||||||
|
changesFile.writeText(changesBuilder.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateChangelog() {
|
||||||
|
println("Start update authors")
|
||||||
|
println(projectDir)
|
||||||
|
val repository = org.eclipse.jgit.lib.RepositoryBuilder().setGitDir(File("$projectDir/.git")).build()
|
||||||
|
val git = org.eclipse.jgit.api.Git(repository)
|
||||||
|
val lastSuccessfulCommit = System.getenv("SUCCESS_COMMIT")!!
|
||||||
|
val messages = git.log().call()
|
||||||
|
.takeWhile {
|
||||||
|
!it.id.name.equals(lastSuccessfulCommit, ignoreCase = true)
|
||||||
|
}
|
||||||
|
.map { it.shortMessage }
|
||||||
|
|
||||||
|
// Collect fixes
|
||||||
|
val newFixes = mutableListOf<Change>()
|
||||||
|
println("Last successful commit: $lastSuccessfulCommit")
|
||||||
|
println("Amount of commits: ${messages.size}")
|
||||||
|
println("Start emails processing")
|
||||||
|
for (message in messages) {
|
||||||
|
println("Processing '$message'...")
|
||||||
|
val lowercaseMessage = message.toLowerCase()
|
||||||
|
val regex = "^fix\\((vim-\\d+)\\):".toRegex()
|
||||||
|
val findResult = regex.find(lowercaseMessage)
|
||||||
|
if (findResult != null) {
|
||||||
|
println("Message matches")
|
||||||
|
val value = findResult.groups[1]!!.value.toUpperCase()
|
||||||
|
val shortMessage = message.drop(findResult.range.last + 1).trim()
|
||||||
|
newFixes += Change(value, shortMessage)
|
||||||
|
} else {
|
||||||
|
println("Message doesn't match")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update changes file
|
||||||
|
val changesFile = File("$projectDir/CHANGES.md")
|
||||||
|
val changes = changesFile.readText()
|
||||||
|
|
||||||
|
val changesBuilder = StringBuilder(changes)
|
||||||
|
val insertOffset = setupSection(changes, changesBuilder, "### Fixes:")
|
||||||
|
|
||||||
|
if (insertOffset < 50) error("Incorrect offset: $insertOffset")
|
||||||
|
|
||||||
|
val firstPartOfChanges = changes.take(insertOffset)
|
||||||
|
val actualFixes = newFixes
|
||||||
|
.filterNot { it.id in firstPartOfChanges }
|
||||||
|
val newUpdates = actualFixes
|
||||||
|
.joinToString("") { "* [${it.id}](https://youtrack.jetbrains.com/issue/${it.id}) ${it.text}\n" }
|
||||||
|
|
||||||
|
changesBuilder.insert(insertOffset, newUpdates)
|
||||||
|
if (actualFixes.isNotEmpty()) {
|
||||||
|
changesFile.writeText(changesBuilder.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateAuthors(uncheckedEmails: Set<String>) {
|
||||||
|
println("Start update authors")
|
||||||
|
println(projectDir)
|
||||||
|
val repository = org.eclipse.jgit.lib.RepositoryBuilder().setGitDir(File("$projectDir/.git")).build()
|
||||||
|
val git = org.eclipse.jgit.api.Git(repository)
|
||||||
|
val lastSuccessfulCommit = System.getenv("SUCCESS_COMMIT")!!
|
||||||
|
val hashesAndEmailes = git.log().call()
|
||||||
|
.takeWhile {
|
||||||
|
!it.id.name.equals(lastSuccessfulCommit, ignoreCase = true)
|
||||||
|
}
|
||||||
|
.associate { it.authorIdent.emailAddress to it.name }
|
||||||
|
|
||||||
|
println("Last successful commit: $lastSuccessfulCommit")
|
||||||
|
println("Amount of commits: ${hashesAndEmailes.size}")
|
||||||
|
println("Emails: ${hashesAndEmailes.keys}")
|
||||||
|
val gitHub = org.kohsuke.github.GitHub.connect()
|
||||||
|
val ghRepository = gitHub.getRepository("JetBrains/ideavim")
|
||||||
|
val users = mutableSetOf<Author>()
|
||||||
|
println("Start emails processing")
|
||||||
|
for ((email, hash) in hashesAndEmailes) {
|
||||||
|
println("Processing '$email'...")
|
||||||
|
if (email in uncheckedEmails) {
|
||||||
|
println("Email '$email' is in unchecked emails. Skip it")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ("dependabot[bot]@users.noreply.github.com" in email) {
|
||||||
|
println("Email '$email' is from dependabot. Skip it")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
val user = ghRepository.getCommit(hash).author
|
||||||
|
val htmlUrl = user.htmlUrl.toString()
|
||||||
|
val name = user.name ?: user.login
|
||||||
|
users.add(Author(name, htmlUrl, email))
|
||||||
|
}
|
||||||
|
|
||||||
|
println("Emails processed")
|
||||||
|
val authorsFile = File("$projectDir/AUTHORS.md")
|
||||||
|
val authors = authorsFile.readText()
|
||||||
|
val parser =
|
||||||
|
org.intellij.markdown.parser.MarkdownParser(org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor())
|
||||||
|
val tree = parser.buildMarkdownTreeFromString(authors)
|
||||||
|
|
||||||
|
val contributorsSection = tree.children[24]
|
||||||
|
val existingEmails = mutableSetOf<String>()
|
||||||
|
for (child in contributorsSection.children) {
|
||||||
|
if (child.children.size > 1) {
|
||||||
|
existingEmails.add(
|
||||||
|
child.children[1].children[0].children[2].children[2].getTextInNode(authors).toString()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val newAuthors = users.filterNot { it.mail in existingEmails }
|
||||||
|
if (newAuthors.isEmpty()) return
|
||||||
|
|
||||||
|
val authorNames = newAuthors.joinToString(", ") { it.name }
|
||||||
|
println("::set-output name=authors::$authorNames")
|
||||||
|
|
||||||
|
val insertionString = newAuthors.toMdString()
|
||||||
|
val resultingString = StringBuffer(authors).insert(contributorsSection.endOffset, insertionString).toString()
|
||||||
|
|
||||||
|
authorsFile.writeText(resultingString)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun List<Author>.toMdString(): String {
|
||||||
|
return this.joinToString {
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|* [![icon][mail]](mailto:${it.mail})
|
||||||
|
| [![icon][github]](${it.url})
|
||||||
|
|
|
||||||
|
| ${it.name}
|
||||||
|
""".trimMargin()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class Author(val name: String, val url: String, val mail: String)
|
||||||
|
data class Change(val id: String, val text: String)
|
||||||
|
|
||||||
|
fun updateMergedPr(number: Int) {
|
||||||
|
val gitHub = org.kohsuke.github.GitHub.connect()
|
||||||
|
println("Connecting to the repo...")
|
||||||
|
val repository = gitHub.getRepository("JetBrains/ideavim")
|
||||||
|
println("Getting pull requests...")
|
||||||
|
val pullRequest = repository.getPullRequest(number)
|
||||||
|
if (pullRequest.user.login == "dependabot[bot]") return
|
||||||
|
|
||||||
|
val changesFile = File("$projectDir/CHANGES.md")
|
||||||
|
val changes = changesFile.readText()
|
||||||
|
|
||||||
|
val changesBuilder = StringBuilder(changes)
|
||||||
|
val insertOffset = setupSection(changes, changesBuilder, "### Merged PRs:")
|
||||||
|
|
||||||
|
if (insertOffset < 50) error("Incorrect offset: $insertOffset")
|
||||||
|
if (pullRequest.user.login == "dependabot[bot]") return
|
||||||
|
|
||||||
|
val prNumber = pullRequest.number
|
||||||
|
val userName = pullRequest.user.name
|
||||||
|
val login = pullRequest.user.login
|
||||||
|
val title = pullRequest.title
|
||||||
|
val section =
|
||||||
|
"* [$prNumber](https://github.com/JetBrains/ideavim/pull/$prNumber) by [$userName](https://github.com/$login): $title\n"
|
||||||
|
changesBuilder.insert(insertOffset, section)
|
||||||
|
|
||||||
|
changesFile.writeText(changesBuilder.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setupSection(
|
||||||
|
changes: String,
|
||||||
|
authorsBuilder: StringBuilder,
|
||||||
|
sectionName: String,
|
||||||
|
): Int {
|
||||||
|
val parser =
|
||||||
|
org.intellij.markdown.parser.MarkdownParser(org.intellij.markdown.flavours.gfm.GFMFlavourDescriptor())
|
||||||
|
val tree = parser.buildMarkdownTreeFromString(changes)
|
||||||
|
|
||||||
|
var idx = -1
|
||||||
|
for (index in tree.children.indices) {
|
||||||
|
if (tree.children[index].getTextInNode(changes).startsWith("## ")) {
|
||||||
|
idx = index
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val hasToBeReleased = tree.children[idx].getTextInNode(changes).contains("To Be Released")
|
||||||
|
return if (hasToBeReleased) {
|
||||||
|
var mrgIdx = -1
|
||||||
|
for (index in (idx + 1) until tree.children.lastIndex) {
|
||||||
|
val textInNode = tree.children[index].getTextInNode(changes)
|
||||||
|
val foundIndex = textInNode.startsWith(sectionName)
|
||||||
|
if (foundIndex) {
|
||||||
|
var filledPr = index + 2
|
||||||
|
while (tree.children[filledPr].getTextInNode(changes).startsWith("*")) {
|
||||||
|
filledPr++
|
||||||
|
}
|
||||||
|
mrgIdx = tree.children[filledPr].startOffset + 1
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
val currentSectionIndex = sections.indexOf(sectionName)
|
||||||
|
val insertHere = textInNode.startsWith("## ") ||
|
||||||
|
textInNode.startsWith("### ") &&
|
||||||
|
sections.indexOfFirst { textInNode.startsWith(it) }
|
||||||
|
.let { if (it < 0) false else it > currentSectionIndex }
|
||||||
|
if (insertHere) {
|
||||||
|
val section = """
|
||||||
|
$sectionName
|
||||||
|
|
||||||
|
|
||||||
|
""".trimIndent()
|
||||||
|
authorsBuilder.insert(tree.children[index].startOffset, section)
|
||||||
|
mrgIdx = tree.children[index].startOffset + (section.length - 1)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mrgIdx
|
||||||
|
} else {
|
||||||
|
val section = """
|
||||||
|
## To Be Released
|
||||||
|
|
||||||
|
$sectionName
|
||||||
|
|
||||||
|
|
||||||
|
""".trimIndent()
|
||||||
|
authorsBuilder.insert(tree.children[idx].startOffset, section)
|
||||||
|
tree.children[idx].startOffset + (section.length - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val sections = listOf(
|
||||||
|
"### Features:",
|
||||||
|
"### Changes:",
|
||||||
|
"### Fixes:",
|
||||||
|
"### Merged PRs:",
|
||||||
|
)
|
||||||
6
config/ktlint/baseline.xml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<baseline version="1.0">
|
||||||
|
<file name="src/main/java/com/maddyhome/idea/vim/listener/RiderSpecifics.kt">
|
||||||
|
<error line="1" column="1" source="filename" />
|
||||||
|
</file>
|
||||||
|
</baseline>
|
||||||
248
doc/Emulated-plugins.md
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
Emulated Vim Plugins
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
IdeaVim extensions emulate plugins of the original Vim. In order to use
|
||||||
|
IdeaVim extensions, you have to enable them via this command in your `~/.ideavimrc`:
|
||||||
|
|
||||||
|
```
|
||||||
|
Plug '<extension-github-reference>'
|
||||||
|
```
|
||||||
|
|
||||||
|
If you reuse your existing `.vimrc` file using `source ~/.vimrc`, IdeaVim can parse and enable plugins that are defined
|
||||||
|
using [vim-plug](https://github.com/junegunn/vim-plug) or [vundle](https://github.com/VundleVim/Vundle.vim).
|
||||||
|
No additional set commands in `~/.ideavimrc` are required.
|
||||||
|
If you'd like to disable some plugin that's enabled in `.vimrc`, you can use `set no<extension-name>`
|
||||||
|
in `~/.ideavimrc`. E.g. `set nosurround`.
|
||||||
|
|
||||||
|
Available extensions:
|
||||||
|
|
||||||
|
## easymotion
|
||||||
|
|
||||||
|
* Setup:
|
||||||
|
* Install [IdeaVim-EasyMotion](https://plugins.jetbrains.com/plugin/13360-ideavim-easymotion/)
|
||||||
|
and [AceJump](https://plugins.jetbrains.com/plugin/7086-acejump/) plugins.
|
||||||
|
* `Plug 'easymotion/vim-easymotion'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/easymotion/vim-easymotion'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-easymotion'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set easymotion</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-easymotion](https://github.com/easymotion/vim-easymotion)
|
||||||
|
* Commands: All commands with the mappings are supported. See the [full list of supported commands](https://github.com/AlexPl292/IdeaVim-EasyMotion#supported-commands).
|
||||||
|
|
||||||
|
## NERDTree
|
||||||
|
* Setup: `Plug 'preservim/nerdtree'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/preservim/nerdtree'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'nerdtree'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set NERDTree</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [NERDTree](https://github.com/preservim/nerdtree)
|
||||||
|
* Commands: [[see here|NERDTree-support]]
|
||||||
|
|
||||||
|
## surround
|
||||||
|
|
||||||
|
* Setup: `Plug 'tpope/vim-surround'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/tpope/vim-surround'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-surround'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=1697'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set surround</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-surround](https://github.com/tpope/vim-surround)
|
||||||
|
* Commands: `ys`, `cs`, `ds`, `S`
|
||||||
|
|
||||||
|
## multiple-cursors
|
||||||
|
|
||||||
|
* Setup: `Plug 'terryma/vim-multiple-cursors'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/terryma/vim-multiple-cursors'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-multiple-cursors'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set multiple-cursors</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors)
|
||||||
|
* Commands: `<A-n>`, `<A-x>`, `<A-p>`, `g<A-n>`
|
||||||
|
|
||||||
|
## commentary
|
||||||
|
|
||||||
|
* Setup: `Plug 'tpope/vim-commentary'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/tpope/vim-commentary'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-commentary'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=3695'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'tomtom/tcomment_vim'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'tcomment_vim'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=1173'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set commentary</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [commentary.vim](https://github.com/tpope/vim-commentary)
|
||||||
|
* Commands: `gcc`, `gc + motion`, `v_gc`
|
||||||
|
* By [Daniel Leong](https://github.com/dhleong)
|
||||||
|
|
||||||
|
## ReplaceWithRegister
|
||||||
|
|
||||||
|
* Setup: `Plug 'vim-scripts/ReplaceWithRegister'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/vim-scripts/ReplaceWithRegister'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'ReplaceWithRegister'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://github.com/inkarkat/vim-ReplaceWithRegister'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'inkarkat/vim-ReplaceWithRegister'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-ReplaceWithRegister'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=2703'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set ReplaceWithRegister</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [ReplaceWithRegister](https://github.com/vim-scripts/ReplaceWithRegister)
|
||||||
|
* Commands: `gr`, `grr`
|
||||||
|
* By [igrekster](https://github.com/igrekster)
|
||||||
|
|
||||||
|
## argtextobj
|
||||||
|
|
||||||
|
* Setup:
|
||||||
|
* `Plug 'vim-scripts/argtextobj.vim'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/vim-scripts/argtextobj.vim'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'argtextobj.vim'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=2699'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set argtextobj</code>
|
||||||
|
</details>
|
||||||
|
* By default, only the arguments inside parenthesis are considered. To extend the functionality
|
||||||
|
to other types of brackets, set `g:argtextobj_pairs` variable to a comma-separated
|
||||||
|
list of colon-separated pairs (same as VIM's `matchpairs` option), like
|
||||||
|
`let g:argtextobj_pairs="(:),{:},<:>"`. The order of pairs matters when
|
||||||
|
handling symbols that can also be operators: `func(x << 5, 20) >> 17`. To handle
|
||||||
|
this syntax parenthesis, must come before angle brackets in the list.
|
||||||
|
* Emulates [argtextobj.vim](https://www.vim.org/scripts/script.php?script_id=2699)
|
||||||
|
* Additional text objects: `aa`, `ia`
|
||||||
|
|
||||||
|
## exchange
|
||||||
|
|
||||||
|
* Setup: `Plug 'tommcdo/vim-exchange'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/tommcdo/vim-exchange'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-exchange'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set exchange</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-exchange](https://github.com/tommcdo/vim-exchange)
|
||||||
|
* Commands: `cx`, `cxx`, `X`, `cxc`
|
||||||
|
* By [fan-tom](https://github.com/fan-tom)
|
||||||
|
|
||||||
|
## textobj-entire
|
||||||
|
|
||||||
|
* Setup: `Plug 'kana/vim-textobj-entire'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/kana/vim-textobj-entire'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-textobj-entire'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=2610'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set textobj-entire</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-textobj-entire](https://github.com/kana/vim-textobj-entire)
|
||||||
|
* Additional text objects: `ae`, `ie`
|
||||||
|
* By [Alexandre Grison](https://github.com/agrison)
|
||||||
|
|
||||||
|
## highlightedyank
|
||||||
|
|
||||||
|
* Setup:
|
||||||
|
* `Plug 'machakann/vim-highlightedyank'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/machakann/vim-highlightedyank'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-highlightedyank'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set highlightedyank</code>
|
||||||
|
</details>
|
||||||
|
* if you want to optimize highlight duration, assign a time in milliseconds:
|
||||||
|
`let g:highlightedyank_highlight_duration = "1000"`
|
||||||
|
A negative number makes the highlight persistent.
|
||||||
|
`let g:highlightedyank_highlight_duration = "-1"`
|
||||||
|
* if you want to change background color of highlight you can provide the rgba of the color you want e.g.
|
||||||
|
`let g:highlightedyank_highlight_color = "rgba(160, 160, 160, 155)"`
|
||||||
|
* Emulates [vim-highlightedyank](https://github.com/machakann/vim-highlightedyank)
|
||||||
|
* By [KostkaBrukowa](https://github.com/KostkaBrukowa)
|
||||||
|
|
||||||
|
## vim-paragraph-motion
|
||||||
|
|
||||||
|
* Setup: `Plug 'dbakker/vim-paragraph-motion'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/dbakker/vim-paragraph-motion'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-paragraph-motion'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://github.com/vim-scripts/Improved-paragraph-motion'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-scripts/Improved-paragraph-motion'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'Improved-paragraph-motion'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set vim-paragraph-motion</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-paragraph-motion](https://github.com/dbakker/vim-paragraph-motion)
|
||||||
|
|
||||||
|
## vim-indent-object
|
||||||
|
|
||||||
|
* Setup: `Plug 'michaeljsmith/vim-indent-object'`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/michaeljsmith/vim-indent-object'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-indent-object'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set textobj-indent</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-indent-object](https://github.com/michaeljsmith/vim-indent-object)
|
||||||
|
* Additional text objects: `ai`, `ii`, `aI`
|
||||||
|
* By [Shrikant Sharat Kandula](https://github.com/sharat87)
|
||||||
|
|
||||||
|
## matchit.vim
|
||||||
|
|
||||||
|
* Setup: `packadd matchit`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'vim-matchit'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'chrisbra/matchit'</code>
|
||||||
|
<br/>
|
||||||
|
<code>set matchit</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [matchit.vim](https://github.com/chrisbra/matchit)
|
||||||
|
* Currently works for HTML/XML and ruby
|
||||||
|
* By [Martin Yzeiri](https://github.com/myzeiri)
|
||||||
6
doc/Home.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Welcome to the IdeaVim wiki!
|
||||||
|
|
||||||
|
- List of emulated plugins: [[plugins|Emulated-plugins]]
|
||||||
|
- Examples of `ideajoin` option (also known as "smart join"): [["ideajoin" examples|"ideajoin"-examples]]
|
||||||
|
- List of "set" commands: [["set" commands|"set"-commands]]
|
||||||
|
- Docs about "select" mode in vim: [[select mode|Select-mode]]
|
||||||
73
doc/NERDTree-support.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# NERDTree
|
||||||
|
|
||||||
|
IdeaVim supports emulation of the NERDTree plugin. Update your `~/.ideavimrc` to turn it on:
|
||||||
|
```vim
|
||||||
|
Plug 'preservim/nerdtree`
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```vim
|
||||||
|
set NERDTree
|
||||||
|
```
|
||||||
|
Use `set noNERDTree` to disable this extension.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Full list of aliases</summary>
|
||||||
|
|
||||||
|
```vim
|
||||||
|
set NERDTree
|
||||||
|
Plug 'preservim/nerdtree`
|
||||||
|
Plug 'https://github.com/preservim/nerdtree'
|
||||||
|
Plug 'https://github.com/scrooloose/nerdtree'
|
||||||
|
Plug 'scrooloose/nerdtree'
|
||||||
|
Plug 'nerdtree'
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
### Preview
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Click to the the preview</summary>
|
||||||
|
<img src="images/nerdtree.gif" alt="NERDTree example"/>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Supported commands
|
||||||
|
|
||||||
|
- `:NERDTree`
|
||||||
|
- `:NERDTreeFocus`
|
||||||
|
- `:NERDTreeToggle`
|
||||||
|
- `:NERDTreeClose`
|
||||||
|
- `:NERDTreeFind`
|
||||||
|
- `:NERDTreeRefreshRoot`
|
||||||
|
|
||||||
|
| Key | Description | Map Setting |
|
||||||
|
|---------|---------------------------------------------------------|--------------------------------|
|
||||||
|
| `o` | Open files, directories and bookmarks | `g:NERDTreeMapActivateNode` |
|
||||||
|
| `go` | Open selected file, but leave cursor in the NERDTree | `g:NERDTreeMapPreview` |
|
||||||
|
| `t` | Open selected node/bookmark in a new tab | `g:NERDTreeMapOpenInTab` |
|
||||||
|
| `T` | Same as 't' but keep the focus on the current tab | `g:NERDTreeMapOpenInTabSilent` |
|
||||||
|
| `i` | Open selected file in a split window | `g:NERDTreeMapOpenSplit` |
|
||||||
|
| `gi` | Same as i, but leave the cursor on the NERDTree | `g:NERDTreeMapPreviewSplit` |
|
||||||
|
| `s` | Open selected file in a new vsplit | `g:NERDTreeMapOpenVSplit` |
|
||||||
|
| `gs` | Same as s, but leave the cursor on the NERDTree | `g:NERDTreeMapPreviewVSplit` |
|
||||||
|
| `O` | Recursively open the selected directory | `g:NERDTreeMapOpenRecursively` |
|
||||||
|
| `x` | Close the current nodes parent | `g:NERDTreeMapCloseDir` |
|
||||||
|
| `X` | Recursively close all children of the current node | `g:NERDTreeMapCloseChildren` |
|
||||||
|
| `P` | Jump to the root node | `g:NERDTreeMapJumpRoot` |
|
||||||
|
| `p` | Jump to current nodes parent | `g:NERDTreeMapJumpParent` |
|
||||||
|
| `K` | Jump up inside directories at the current tree depth | `g:NERDTreeMapJumpFirstChild` |
|
||||||
|
| `J` | Jump down inside directories at the current tree depth | `g:NERDTreeMapJumpLastChild` |
|
||||||
|
| `<C-J>` | Jump down to next sibling of the current directory | `g:NERDTreeMapJumpNextSibling` |
|
||||||
|
| `<C-K>` | Jump up to previous sibling of the current directory | `g:NERDTreeMapJumpPrevSibling` |
|
||||||
|
| `r` | Recursively refresh the current directory | `g:NERDTreeMapRefresh` |
|
||||||
|
| `R` | Recursively refresh the current root | `g:NERDTreeMapRefreshRoot` |
|
||||||
|
| `m` | Display the NERDTree menu | `g:NERDTreeMapMenu` |
|
||||||
|
| `q` | Close the NERDTree window | `g:NERDTreeMapQuit` |
|
||||||
|
| `A` | Zoom (maximize/minimize) the NERDTree window | `g:NERDTreeMapToggleZoom` |
|
||||||
|
|
||||||
|
### Troubleshooting
|
||||||
|
|
||||||
|
If you see the the file is opened automatically on every movement in the Project View (`j`, `k`, etc.)
|
||||||
|
please make sure that you have "Open Files with Single click" disabled.
|
||||||
|
|
||||||
|
<img src="images/disable-one-click.png" alt="Disable one click"/>
|
||||||
24
doc/Select-mode.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# FAQ
|
||||||
|
|
||||||
|
## What is select mode?
|
||||||
|
|
||||||
|
This mode is where the selection works the same as system selection. When you start typing, the text in the selected area is removed and replaced by the new characters that are being typed in.
|
||||||
|
|
||||||
|
## Why is select mode enabled during refactoring?
|
||||||
|
|
||||||
|
With the help of the select mode, you can immediately enter the variable name during refactoring. You can go to the beginning or the end of a variable using the arrow keys. If you need to make more complex changes, you can always go back to normal mode with `<ESC>`.
|
||||||
|
|
||||||
|
## What if I want to use visual mode during refactoring?
|
||||||
|
|
||||||
|
Select mode is controlled by the `keymodel`, `selectmode` and `idearefactormode` options. Set `idearefactormode` to `visual` to adjust this behavior.
|
||||||
|
`set idearefactormode=visual`
|
||||||
|
|
||||||
|
## What if I don't want to change the mode during refactoring?
|
||||||
|
|
||||||
|
`set idearefactormode=keep`
|
||||||
|
|
||||||
|
# See Also
|
||||||
|
|
||||||
|
* IdeaVim options: https://github.com/JetBrains/ideavim/blob/master/doc/set-commands.md
|
||||||
|
* Vim documentation about select mode: https://vimhelp.org/visual.txt.html#Select-mode
|
||||||
|
* Stackoverflow explanation: https://vi.stackexchange.com/questions/4891/what-is-the-select-mode-and-when-is-it-relevant-to-use-it
|
||||||
60
doc/ideajoin-examples.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
Some examples of join command with `ideajoin` option enabled.
|
||||||
|
Put `set ideajoin` to your `~/.ideavimrc` to enable this functionality.
|
||||||
|
|
||||||
|
Now, you can press `J` (`shift+j`) on a line or a selected block of text to join the lines together.
|
||||||
|
|
||||||
|
* Automatic join concatenated lines:
|
||||||
|
|
||||||
|
```
|
||||||
|
"Hello" + -> "Hello world"
|
||||||
|
" world!"
|
||||||
|
```
|
||||||
|
|
||||||
|
* Nested if's:
|
||||||
|
|
||||||
|
```
|
||||||
|
if (a) { -> if (a && b) {
|
||||||
|
if (b) { ...
|
||||||
|
... }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* Comments:
|
||||||
|
|
||||||
|
```
|
||||||
|
// Hello -> // Hello world
|
||||||
|
// world
|
||||||
|
```
|
||||||
|
|
||||||
|
* Remove braces from one line for / if / while:
|
||||||
|
|
||||||
|
```
|
||||||
|
if (fail) { -> if (fail) return;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* Kotlin one line method:
|
||||||
|
|
||||||
|
```
|
||||||
|
fun myNumber(): Int { -> fun myNumber(): Int = 42
|
||||||
|
return 42
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* Join declaration and initialization:
|
||||||
|
|
||||||
|
```
|
||||||
|
int a; -> int a = 5;
|
||||||
|
a = 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
* Chain call:
|
||||||
|
|
||||||
|
```
|
||||||
|
sb.append("a"); -> sb.append("a").append("b");
|
||||||
|
sb.append("b");
|
||||||
|
```
|
||||||
|
|
||||||
|
And other features provided by the plugins.
|
||||||
BIN
doc/images/disable-one-click.png
Normal file
|
After Width: | Height: | Size: 223 KiB |
BIN
doc/images/nerdtree.gif
Normal file
|
After Width: | Height: | Size: 32 MiB |
@@ -1,32 +1,140 @@
|
|||||||
List of Supported Set Commands
|
List of Supported Set Commands
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
The following `:set` commands can appear in `~/.ideavimrc` or set manually in the command mode:
|
The following `:set` commands can appear in `~/.ideavimrc` or be set manually in the command mode:
|
||||||
|
|
||||||
|
'clipboard' 'cb' clipboard options
|
||||||
|
Standard clipboard options plus
|
||||||
|
|
||||||
|
`ideaput` (default on) - IdeaVim ONLY
|
||||||
|
enable native idea paste action for put operations
|
||||||
|
|
||||||
|
'digraph' 'dg' enable the entering of digraphs in Insert mode
|
||||||
|
'gdefault' 'gd' the ":substitute" flag 'g' is by default
|
||||||
|
'history' 'hi' number of command-lines that are remembered
|
||||||
|
'hlsearch' 'hls' highlight matches with the last search pattern
|
||||||
|
'ignorecase' 'ic' ignore case in search patterns
|
||||||
|
'iskeyword' 'isk' defines keywords for commands like 'w', '*', etc.
|
||||||
|
'incsearch' 'is' show where search pattern typed so far matches
|
||||||
|
|
||||||
|
`keymodel` `km` String (default "continueselect,stopselect")
|
||||||
|
|
||||||
|
List of comma separated words, which enable special things that keys
|
||||||
|
can do. These values can be used:
|
||||||
|
startsel Using a shifted special[1] key starts selection (either
|
||||||
|
Select mode or Visual mode, depending on "key" being
|
||||||
|
present in 'selectmode').
|
||||||
|
stopsel Using a NOT-shifted special[1] key stops selection.
|
||||||
|
Automatically enables `stopselect` and `stopvisual`
|
||||||
|
stopselect Using a NOT-shifted special[1] key stops - IdeaVim ONLY
|
||||||
|
select mode and removes selection.
|
||||||
|
stopvisual Using a NOT-shifted special[1] key stops - IdeaVim ONLY
|
||||||
|
visual mode and removes selection.
|
||||||
|
continueselect Using a shifted arrow key doesn't - IdeaVim ONLY
|
||||||
|
start selection, but in select mode
|
||||||
|
acts like startsel is enabled
|
||||||
|
continuevisual Using a shifted arrow key doesn't - IdeaVim ONLY
|
||||||
|
start selection, but in visual mode
|
||||||
|
acts like startsel is enabled
|
||||||
|
|
||||||
'clipboard' 'cb' clipboard options
|
|
||||||
'digraph' 'dg' enable the entering of digraphs in Insert mode
|
|
||||||
'gdefault' 'gd' the ":substitute" flag 'g' is default on
|
|
||||||
'history' 'hi' number of command-lines that are remembered
|
|
||||||
'hlsearch' 'hls' highlight matches with last search pattern
|
|
||||||
'ignorecase' 'ic' ignore case in search patterns
|
|
||||||
'iskeyword' 'isk' defines keywords for commands like 'w', '*', etc.
|
|
||||||
'incsearch' 'is' show where search pattern typed so far matches
|
|
||||||
'matchpairs' 'mps' pairs of characters that "%" can match
|
'matchpairs' 'mps' pairs of characters that "%" can match
|
||||||
|
'maxmapdepth' 'mmd' Maximum depth of mappings
|
||||||
|
'more' 'more' When on, listings pause when the whole screen is filled.
|
||||||
'nrformats' 'nf' number formats recognized for CTRL-A command
|
'nrformats' 'nf' number formats recognized for CTRL-A command
|
||||||
'number' 'nu' print the line number in front of each line
|
'number' 'nu' print the line number in front of each line
|
||||||
'relativenumber' 'rnu' show the line number relative to the line with
|
'relativenumber' 'rnu' show the line number relative to the line with
|
||||||
the cursor
|
the cursor
|
||||||
'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D
|
'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D
|
||||||
'scrolljump' 'sj' minimum number of lines to scroll
|
'scrolljump' 'sj' minimum number of lines to scroll
|
||||||
'scrolloff' 'so' minimum nr. of lines above and below cursor
|
'scrolloff' 'so' minimum number of lines above and below the cursor
|
||||||
'selection' 'sel' what type of selection to use
|
'selection' 'sel' what type of selection to use
|
||||||
'showmode' 'smd' message on status line to show current mode
|
|
||||||
'sidescroll' 'ss' minimum number of columns to scroll horizontal
|
`selectmode` `slm` String (default "")
|
||||||
'sidescrolloff' 'siso' min. nr. of columns to left and right of cursor
|
|
||||||
'smartcase' 'scs' no ignore case when pattern has uppercase
|
This is a comma-separated list of words, which specify when to start
|
||||||
'timeout' 'to' use timeout for mapped key sequences
|
Select mode instead of Visual mode, when a selection is started.
|
||||||
'timeoutlen' 'tm' time that is waited for a mapped key sequence
|
Possible values:
|
||||||
'undolevels' 'ul' maximum number of changes that can be undone
|
mouse when using the mouse
|
||||||
'viminfo' 'vi' information to remember after restart
|
key when using shifted special[1] keys
|
||||||
'visualbell' 'vb' use visual bell instead of beeping
|
cmd when using "v", "V", or <C-V>
|
||||||
'wrapscan' 'ws' searches wrap around the end of the file
|
ideaselection when IDE sets a selection - IdeaVim ONLY
|
||||||
|
(examples: extend selection, wrap with while, etc.)
|
||||||
|
|
||||||
|
`startofline` `sol` When "on" some commands move the cursor to the first non-blank of the line.
|
||||||
|
When off the cursor is kept in the same column (if possible).
|
||||||
|
|
||||||
|
'showmode' 'smd' message on the status line to show current mode
|
||||||
|
'showcmd' 'sc' show (partial) command in the status bar
|
||||||
|
'sidescroll' 'ss' minimum number of columns to scroll horizontally
|
||||||
|
'sidescrolloff' 'siso' min. number of columns to left and right of cursor
|
||||||
|
'smartcase' 'scs' no ignore case when pattern is uppercase
|
||||||
|
'timeout' 'to' use timeout for mapped key sequences
|
||||||
|
'timeoutlen' 'tm' timeout duration for a mapped key sequence
|
||||||
|
'undolevels' 'ul' maximum number of changes that can be undone
|
||||||
|
'viminfo' 'vi' information to remember after restart
|
||||||
|
'visualbell' 'vb' use visual bell instead of beeping
|
||||||
|
'wrapscan' 'ws' searches wrap around the end of file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IdeaVim only commands:
|
||||||
|
|
||||||
|
`ideamarks` `ideamarks` Boolean (default true)
|
||||||
|
|
||||||
|
If true, creation of global mark will trigger creation of IDE's bookmark
|
||||||
|
and vice versa.
|
||||||
|
|
||||||
|
`idearefactormode` `idearefactormode` String(default "select")
|
||||||
|
|
||||||
|
Define the mode that would be enabled during
|
||||||
|
the refactoring (renaming, live template, introduce variable, etc)
|
||||||
|
|
||||||
|
Use one of the following values:
|
||||||
|
- keep - keep the mode that was enabled before starting a refactoring
|
||||||
|
- select - start refactoring in select mode
|
||||||
|
- visual - start refactoring in visual mode
|
||||||
|
|
||||||
|
This option has effect if you are in normal, insert or replace mode before refactoring start.
|
||||||
|
Visual or select mode are not changed.
|
||||||
|
|
||||||
|
|
||||||
|
`ideajoin` `ideajoin` Boolean (default false)
|
||||||
|
|
||||||
|
If true, join command will be performed via IDE
|
||||||
|
See wiki/`ideajoin` examples
|
||||||
|
|
||||||
|
`ideastatusicon` `ideastatusicon` String(default "enabled")
|
||||||
|
|
||||||
|
Define the behavior of IdeaVim icon in the status bar.
|
||||||
|
|
||||||
|
Use one of the following values:
|
||||||
|
- enabled - icon is shown in the status bar
|
||||||
|
- gray - use the gray version of the icon
|
||||||
|
- disabled - hide the icon
|
||||||
|
|
||||||
|
`ideawrite` `ideawrite` String (default "all")
|
||||||
|
"file" or "all". Defines the behaviour of ":w" command.
|
||||||
|
Value "all" enables execution of ":wa" (save all) command on ":w" (save).
|
||||||
|
This feature exists because some IJ options like "Prettier on save" or "ESlint on save"
|
||||||
|
work only with "save all" action. If this option is set to "all", these actions work
|
||||||
|
also with ":w" command.
|
||||||
|
|
||||||
|
`lookupkeys` `lookupkeys` List of strings
|
||||||
|
|
||||||
|
List of keys that should be processed by the IDE during the active lookup (autocompletion).
|
||||||
|
For example, <Tab> and <Enter> are used by the IDE to finish the lookup,
|
||||||
|
but <C-W> should be passed to IdeaVim.
|
||||||
|
Default value:
|
||||||
|
"<Tab>", "<Down>", "<Up>", "<Enter>", "<Left>", "<Right>",
|
||||||
|
"<C-Down>", "<C-Up>", "<PageUp>", "<PageDown>",
|
||||||
|
"<C-J>", "<C-Q>"
|
||||||
|
|
||||||
|
`ideavimsupport` `ideavimsupport` List of strings (default "dialog")
|
||||||
|
|
||||||
|
Define the list of additional buffers where IdeaVim is enabled.
|
||||||
|
|
||||||
|
- dialog - enable IdeaVim in dialogs
|
||||||
|
- singleline - enable IdeaVim in single line editors (not suggested)
|
||||||
|
|
||||||
|
----------
|
||||||
|
[1] - cursor keys, <End>, <Home>, <PageUp> and <PageDown>
|
||||||
|
|||||||
34
doc/sethandler.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Configuring conflicting keys via .ideavimrc
|
||||||
|
|
||||||
|
IdeaVim allows defining handlers for the shortcuts that exist for both IDE and Vim (e.g. `<C-C>`).
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Use ctrl-c as an ide shortcut in normal and visual modes
|
||||||
|
sethandler <C-C> n-v:ide i:vim
|
||||||
|
```
|
||||||
|
|
||||||
|
This option consist of an optional shortcut and a list of space separated list of handlers:
|
||||||
|
`mode-list:handler mode-list:handler ...`
|
||||||
|
The `mode-list` is a dash separated list of modes that is similar to `guicursor` notation
|
||||||
|
and defines the following modes:
|
||||||
|
- n - normal mode
|
||||||
|
- i - insert mode
|
||||||
|
- x - visual mode
|
||||||
|
- v - visual and select modes
|
||||||
|
- a - all modes
|
||||||
|
|
||||||
|
The `handler` is an argument that may accept the following values:
|
||||||
|
- ide - use IDE handler
|
||||||
|
- vim - use Vim handler
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
- `n:ide` - use IDE handler in normal mode
|
||||||
|
- `i-v:vim` - use Vim handler in normal, visual, and select modes
|
||||||
|
- `a:ide` - use IDE handler in all modes
|
||||||
|
|
||||||
|
By using `sethandler` you can define handlers:
|
||||||
|
- For a single shortcut: `sethandler <C-A> n:vim i-x:ide` - use Vim handler in normal mode and IDE handler in insert and visual modes,
|
||||||
|
- For all shortcuts: `sethandler n:vim i:ide` - use Vim handlers in normal mode and IDE handlers in insert mode.
|
||||||
|
|
||||||
|
If the definition of the handler is missing for some mode, it defaults to `vim`:
|
||||||
|
`sethandler <C-X> i:ide` - use IDE handler in insert mode and Vim handler in all other modes.
|
||||||
@@ -1,9 +1,20 @@
|
|||||||
ideaVersion IC-2018.3
|
# suppress inspection "UnusedProperty" for whole file
|
||||||
downloadIdeaSources true
|
|
||||||
instrumentPluginCode true
|
ideaVersion=LATEST-EAP-SNAPSHOT
|
||||||
version SNAPSHOT
|
downloadIdeaSources=true
|
||||||
javaVersion 1.8
|
instrumentPluginCode=true
|
||||||
kotlinVersion 1.3.11
|
version=SNAPSHOT
|
||||||
publishUsername username
|
javaVersion=11
|
||||||
publishPassword password
|
remoteRobotVersion=0.11.15
|
||||||
publishChannels eap
|
antlrVersion=4.10.1
|
||||||
|
|
||||||
|
|
||||||
|
# Please don't forget to update kotlin version in buildscript section
|
||||||
|
kotlinVersion=1.6.21
|
||||||
|
publishToken=token
|
||||||
|
publishChannels=eap
|
||||||
|
|
||||||
|
slackUrl=
|
||||||
|
|
||||||
|
# Gradle settings
|
||||||
|
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
||||||
|
|||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,5 @@
|
|||||||
#Fri Dec 29 11:00:46 MSK 2017
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip
|
|
||||||
|
|||||||
286
gradlew
vendored
@@ -1,78 +1,129 @@
|
|||||||
#!/usr/bin/env sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
#
|
||||||
## Gradle start up script for UN*X
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
##
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
# Resolve links: $0 may be a link
|
# Resolve links: $0 may be a link
|
||||||
PRG="$0"
|
app_path=$0
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
# Need this for daisy-chained symlinks.
|
||||||
ls=`ls -ld "$PRG"`
|
while
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
[ -h "$app_path" ]
|
||||||
PRG="$link"
|
do
|
||||||
else
|
ls=$( ls -ld "$app_path" )
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
link=${ls#*' -> '}
|
||||||
fi
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >/dev/null
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
APP_NAME="Gradle"
|
||||||
APP_BASE_NAME=`basename "$0"`
|
APP_BASE_NAME=${0##*/}
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
DEFAULT_JVM_OPTS=""
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD="maximum"
|
MAX_FD=maximum
|
||||||
|
|
||||||
warn () {
|
warn () {
|
||||||
echo "$*"
|
echo "$*"
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
die () {
|
die () {
|
||||||
echo
|
echo
|
||||||
echo "$*"
|
echo "$*"
|
||||||
echo
|
echo
|
||||||
exit 1
|
exit 1
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
# OS specific support (must be 'true' or 'false').
|
||||||
cygwin=false
|
cygwin=false
|
||||||
msys=false
|
msys=false
|
||||||
darwin=false
|
darwin=false
|
||||||
nonstop=false
|
nonstop=false
|
||||||
case "`uname`" in
|
case "$( uname )" in #(
|
||||||
CYGWIN* )
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
cygwin=true
|
Darwin* ) darwin=true ;; #(
|
||||||
;;
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
Darwin* )
|
NONSTOP* ) nonstop=true ;;
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
NONSTOP* )
|
|
||||||
nonstop=true
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
else
|
else
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
fi
|
fi
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
@@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
|
|||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD="java"
|
JAVACMD=java
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
@@ -89,84 +140,95 @@ location of your Java installation."
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
case $MAX_FD in #(
|
||||||
if [ $? -eq 0 ] ; then
|
max*)
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
warn "Could not query maximum file descriptor limit"
|
||||||
fi
|
esac
|
||||||
ulimit -n $MAX_FD
|
case $MAX_FD in #(
|
||||||
if [ $? -ne 0 ] ; then
|
'' | soft) :;; #(
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
*)
|
||||||
fi
|
ulimit -n "$MAX_FD" ||
|
||||||
else
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Darwin, add options to specify how the application appears in the dock
|
|
||||||
if $darwin; then
|
|
||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Cygwin, switch paths to Windows format before running java
|
|
||||||
if $cygwin ; then
|
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
||||||
SEP=""
|
|
||||||
for dir in $ROOTDIRSRAW ; do
|
|
||||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
||||||
SEP="|"
|
|
||||||
done
|
|
||||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
||||||
# Add a user-defined pattern to the cygpath arguments
|
|
||||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
||||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
||||||
fi
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
i=0
|
|
||||||
for arg in "$@" ; do
|
|
||||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
||||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
||||||
else
|
|
||||||
eval `echo args$i`="\"$arg\""
|
|
||||||
fi
|
|
||||||
i=$((i+1))
|
|
||||||
done
|
|
||||||
case $i in
|
|
||||||
(0) set -- ;;
|
|
||||||
(1) set -- "$args0" ;;
|
|
||||||
(2) set -- "$args0" "$args1" ;;
|
|
||||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
|
||||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
||||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
||||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
||||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
||||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
||||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Escape application args
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
save () {
|
# * args from the command line
|
||||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
# * the main class name
|
||||||
echo " "
|
# * -classpath
|
||||||
}
|
# * -D...appname settings
|
||||||
APP_ARGS=$(save "$@")
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
|
||||||
cd "$(dirname "$0")"
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command;
|
||||||
|
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||||
|
# shell script including quotes and variable substitutions, so put them in
|
||||||
|
# double quotes to make sure that they get re-expanded; and
|
||||||
|
# * put everything else in single quotes, so that it's not re-expanded.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
exec "$JAVACMD" "$@"
|
||||||
|
|||||||
43
gradlew.bat
vendored
@@ -1,3 +1,19 @@
|
|||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
@if "%DEBUG%" == "" @echo off
|
@if "%DEBUG%" == "" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
@@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
set DEFAULT_JVM_OPTS=
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
@@ -35,7 +54,7 @@ goto fail
|
|||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
@@ -45,28 +64,14 @@ echo location of your Java installation.
|
|||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windows variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
|||||||
191
index.txt
@@ -1,191 +0,0 @@
|
|||||||
*index.txt*
|
|
||||||
|
|
||||||
|
|
||||||
IDEAVIM REFERENCE MANUAL based on Vim Reference Manual
|
|
||||||
|
|
||||||
*index*
|
|
||||||
This file contains a list of commands that are covered with tests, for each
|
|
||||||
mode, with a tag and a short description. The lists are sorted on ASCII value.
|
|
||||||
|
|
||||||
Tip: When looking for certain functionality, use a search command. E.g.,
|
|
||||||
to look for deleting something, use: "/delete".
|
|
||||||
|
|
||||||
1. Insert mode |insert-index|
|
|
||||||
2. Normal mode |normal-index|
|
|
||||||
2.1. Text objects |objects|
|
|
||||||
2.3. Square bracket commands |[|
|
|
||||||
3. Visual mode |visual-index|
|
|
||||||
5. EX commands |ex-cmd-index|
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
1. Insert mode *insert-index*
|
|
||||||
|
|
||||||
tag char action in Insert mode ~
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|i_CTRL-K| CTRL-K {char1} {char2}
|
|
||||||
enter digraph
|
|
||||||
|i_CTRL-O| CTRL-O execute a single command and return to insert
|
|
||||||
mode
|
|
||||||
|i_CTRL-R| CTRL-R {0-9a-z"%#*:=}
|
|
||||||
insert the contents of a register
|
|
||||||
|i_CTRL-W| CTRL-W delete word before the cursor
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2. Normal mode *normal-index*
|
|
||||||
|
|
||||||
CHAR any non-blank character
|
|
||||||
WORD a sequence of non-blank characters
|
|
||||||
N a number entered before the command
|
|
||||||
{motion} a cursor movement command
|
|
||||||
Nmove the text that is moved over with a {motion}
|
|
||||||
SECTION a section that possibly starts with '}' instead of '{'
|
|
||||||
|
|
||||||
note: 1 = cursor movement command; 2 = can be undone/redone
|
|
||||||
|
|
||||||
tag char note action in Normal mode ~
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|quote| "{a-zA-Z0-9.%#:-"} use register {a-zA-Z0-9.%#:-"} for next
|
|
||||||
delete, yank or put (uppercase to append)
|
|
||||||
({.%#:} only work with put)
|
|
||||||
|%| % 1 find the next (curly/square) bracket on
|
|
||||||
this line and go to its match, or go to
|
|
||||||
matching comment bracket, or go to matching
|
|
||||||
preprocessor directive.
|
|
||||||
|/| /{pattern}<CR> 1 search forward for the Nth occurrence of
|
|
||||||
{pattern}
|
|
||||||
|count| 0 1 cursor to the first char of the line
|
|
||||||
|count| 1 prepend to command to give a count
|
|
||||||
|count| 2 "
|
|
||||||
|count| 3 "
|
|
||||||
|count| 4 "
|
|
||||||
|count| 5 "
|
|
||||||
|count| 6 "
|
|
||||||
|count| 7 "
|
|
||||||
|count| 8 "
|
|
||||||
|count| 9 "
|
|
||||||
|F| F{char} 1 cursor to the Nth occurrence of {char} to
|
|
||||||
the left
|
|
||||||
|O| O 2 begin a new line above the cursor and
|
|
||||||
insert text, repeat N times
|
|
||||||
|P| ["x]P 2 put the text [from buffer x] before the
|
|
||||||
cursor N times
|
|
||||||
|T| T{char} 1 cursor till after Nth occurrence of {char}
|
|
||||||
to the left
|
|
||||||
|Y| ["x]Y yank N lines [into buffer x]; synonym for
|
|
||||||
"yy"
|
|
||||||
|c| ["x]c{motion} 2 delete Nmove text [into buffer x] and start
|
|
||||||
insert
|
|
||||||
|cc| ["x]cc 2 delete N lines [into buffer x] and start
|
|
||||||
|d| ["x]d{motion} 2 delete Nmove text [into buffer x]
|
|
||||||
|f| f{char} 1 cursor to Nth occurrence of {char} to the
|
|
||||||
right
|
|
||||||
|i| i 2 insert text before the cursor N times
|
|
||||||
|p| ["x]p 2 put the text [from register x] after the
|
|
||||||
cursor N times
|
|
||||||
|q| q{0-9a-zA-Z"} record typed characters into named register
|
|
||||||
{0-9a-zA-Z"} (uppercase to append)
|
|
||||||
|q| q (while recording) stops recording
|
|
||||||
|t| t{char} 1 cursor till before Nth occurrence of {char}
|
|
||||||
to the right
|
|
||||||
|y| ["x]y{motion} yank Nmove text [into buffer x]
|
|
||||||
|yy| ["x]yy yank N lines [into buffer x]
|
|
||||||
|~| ~ 2 'tildeop' off: switch case of N characters
|
|
||||||
under cursor and move the cursor N
|
|
||||||
characters to the right
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2.1 Text objects *objects*
|
|
||||||
|
|
||||||
These can be used after an operator or in Visual mode to select an object.
|
|
||||||
|
|
||||||
tag command action in op-pending and Visual mode ~
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|v_aquote| a" double quoted string
|
|
||||||
|v_a'| a' single quoted string
|
|
||||||
|v_a(| a( same as ab
|
|
||||||
|v_a)| a) same as ab
|
|
||||||
|v_a<| a< "a <>" from '<' to the matching '>'
|
|
||||||
|v_a>| a> same as a<
|
|
||||||
|v_aB| aB "a Block" from "[{" to "]}" (with brackets)
|
|
||||||
|v_aW| aW "a WORD" (with white space)
|
|
||||||
|v_a[| a[ "a []" from '[' to the matching ']'
|
|
||||||
|v_a]| a] same as a[
|
|
||||||
|v_a`| a` string in backticks
|
|
||||||
|v_ab| ab "a block" from "[(" to "])" (with braces)
|
|
||||||
|v_ap| ap "a paragraph" (with white space)
|
|
||||||
|v_as| as "a sentence" (with white space)
|
|
||||||
|v_aw| aw "a word" (with white space)
|
|
||||||
|v_a{| a{ same as aB
|
|
||||||
|v_a}| a} same as aB
|
|
||||||
|v_iquote| i" double quoted string without the quotes
|
|
||||||
|v_i'| i' single quoted string without the quotes
|
|
||||||
|v_i(| i( same as ib
|
|
||||||
|v_i)| i) same as ib
|
|
||||||
|v_i<| i< "inner <>" from '<' to the matching '>'
|
|
||||||
|v_i>| i> same as i<
|
|
||||||
|v_iB| iB "inner Block" from "[{" and "]}"
|
|
||||||
|v_iW| iW "inner WORD"
|
|
||||||
|v_i[| i[ "inner []" from '[' to the matching ']'
|
|
||||||
|v_i]| i] same as i[
|
|
||||||
|v_i`| i` string in backticks without the backticks
|
|
||||||
|v_ib| ib "inner block" from "[(" to "])"
|
|
||||||
|v_ip| ip "inner paragraph"
|
|
||||||
|v_is| is "inner sentence"
|
|
||||||
|v_iw| iw "inner word"
|
|
||||||
|v_i{| i{ same as iB
|
|
||||||
|v_i}| i} same as iB
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2.3 Square bracket commands *[* *]*
|
|
||||||
|
|
||||||
tag char note action in Normal mode ~
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|[(| [( 1 cursor N times back to unmatched '('
|
|
||||||
|[{| [{ 1 cursor N times back to unmatched '{'
|
|
||||||
|])| ]) 1 cursor N times forward to unmatched ')'
|
|
||||||
|]}| ]} 1 cursor N times forward to unmatched '}'
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
2.4 Commands starting with 'g' *g*
|
|
||||||
|
|
||||||
tag char note action in Normal mode ~
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|gg| gg 1 cursor to line N, default first line
|
|
||||||
|gi| gi 2 like "i", but first move to the |'^| mark
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
3. Visual mode *visual-index*
|
|
||||||
|
|
||||||
Most commands in Visual mode are the same as in Normal mode. The ones listed
|
|
||||||
here are those that are different.
|
|
||||||
|
|
||||||
tag command note action in Visual mode ~
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|v_y| y yank the highlighted area
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
4. Command-line editing *ex-edit-index*
|
|
||||||
|
|
||||||
Get to the command-line with the ':', '!', '/' or '?' commands.
|
|
||||||
Normal characters are inserted at the current cursor position.
|
|
||||||
"Completion" below refers to context-sensitive completion. It will complete
|
|
||||||
file names, tags, commands etc. as appropriate.
|
|
||||||
|
|
||||||
tag command action in Command-line editing mode ~
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|c_CTRL-R| CTRL-R {0-9a-z"%#*:= CTRL-F CTRL-P CTRL-W CTRL-A}
|
|
||||||
insert the contents of a register or object
|
|
||||||
under the cursor as if typed
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
5. EX commands *ex-cmd-index*
|
|
||||||
|
|
||||||
This is a brief but complete listing of all the ":" commands, without
|
|
||||||
mentioning any arguments. The optional part of the command name is inside [].
|
|
||||||
The commands are sorted on the non-optional part of their name.
|
|
||||||
|
|
||||||
tag command action ~
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|:display| :di[splay] display registers
|
|
||||||
|:registers| :reg[isters] display the contents of registers
|
|
||||||
|:substitute| :s[ubstitute] find and replace text
|
|
||||||
79982
qodana.sarif.json
Normal file
25
qodana.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
version: 1.0
|
||||||
|
profile:
|
||||||
|
name: Qodana
|
||||||
|
include:
|
||||||
|
- name: CheckDependencyLicenses
|
||||||
|
exclude:
|
||||||
|
- name: MoveVariableDeclarationIntoWhen
|
||||||
|
- name: PluginXmlValidity
|
||||||
|
- name: RedundantThrows
|
||||||
|
- name: SuperTearDownInFinally
|
||||||
|
- name: UnusedReturnValue
|
||||||
|
- name: All
|
||||||
|
paths:
|
||||||
|
- build.gradle.kts
|
||||||
|
- gradle/wrapper/gradle-wrapper.properties
|
||||||
|
- src/main/resources/icons/youtrack.svg
|
||||||
|
- src/main/java/com/maddyhome/idea/vim/helper/SearchHelper.java
|
||||||
|
- src/main/java/com/maddyhome/idea/vim/regexp/RegExp.kt
|
||||||
|
- src/test/java/org/jetbrains/plugins/ideavim/propertybased/samples/JavaText.kt
|
||||||
|
- src/test/java/org/jetbrains/plugins/ideavim/propertybased/samples/LoremText.kt
|
||||||
|
- src/test/java/org/jetbrains/plugins/ideavim/propertybased/samples/SimpleText.kt
|
||||||
|
- src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated/VimscriptListener.java
|
||||||
|
- src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated/VimscriptLexer.java
|
||||||
|
- src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated/VimscriptParser.java
|
||||||
|
- src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated/VimscriptVisitor.java
|
||||||
@@ -1,366 +0,0 @@
|
|||||||
<idea-plugin url="http://plugins.jetbrains.com/plugin/164">
|
|
||||||
<name>IdeaVim</name>
|
|
||||||
<id>IdeaVIM</id>
|
|
||||||
<change-notes><![CDATA[
|
|
||||||
<p>0.51:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.50:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Moved "Vim Emulation" settings into "File | Settings | Editor"</li>
|
|
||||||
<li>Support for vim-multiple-cursors commands <code><A-n></code>, <code><A-x></code>, <code><A-p></code>, <code>g<A-n></code> (put <code>set multiple-cursors</code> into your ~/.ideavimrc to enable it)</li>
|
|
||||||
<li>Support for running Vim commands for multiple cursors</li>
|
|
||||||
<li>The <a href="https://github.com/JetBrains/ideavim/blob/master/src/com/maddyhome/idea/vim/package-info.java">index of supported commands</a> on the GitHub page</li>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.49:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Enabled zero-latency typing for Vim emulation</li>
|
|
||||||
<li>Support for <code>iskeyword</code> option</li>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.48:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.47:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.46:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Support for <code>incsearch</code> option for showing search results while typing</li>
|
|
||||||
<li>Support for <code>it</code> and <code>at</code> tag block selection</li>
|
|
||||||
<li>Support for vim-surround commands <code>ys</code>, <code>cs</code>, <code>ds</code>, <code>S</code>, enable it with <code>set surround</code> in your ~/.ideavimrc</li>
|
|
||||||
<li>Support for <code>={motion}</code> formatting command</li>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>See also the complete <a href="https://github.com/JetBrains/ideavim/blob/master/CHANGES.md">changelog</a>.</p>
|
|
||||||
]]></change-notes>
|
|
||||||
<description><![CDATA[
|
|
||||||
<p>Vim emulation plug-in for IDEs based on the IntelliJ platform.</p>
|
|
||||||
<p>IdeaVim supports many Vim features including normal/insert/visual modes, motion keys, deletion/changing, marks, registers, some Ex commands, Vim regexps, configuration via ~/.ideavimrc, macros, window commands, etc.</p>
|
|
||||||
<p>See also:</p>
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://github.com/JetBrains/ideavim">GitHub repository</a>: documentation and contributing</li>
|
|
||||||
<li><a href="http://youtrack.jetbrains.com/issues/VIM">Issue tracker</a>: feature requests and bug reports</li>
|
|
||||||
</ul>
|
|
||||||
]]></description>
|
|
||||||
<version>SNAPSHOT</version>
|
|
||||||
<vendor>JetBrains</vendor>
|
|
||||||
|
|
||||||
<idea-version since-build="183.2940.10"/>
|
|
||||||
|
|
||||||
<!-- Mark the plugin as compatible with RubyMine and other products based on the IntelliJ platform -->
|
|
||||||
<depends>com.intellij.modules.lang</depends>
|
|
||||||
<resource-bundle xmlns="">messages</resource-bundle>
|
|
||||||
|
|
||||||
<application-components>
|
|
||||||
<component>
|
|
||||||
<implementation-class>com.maddyhome.idea.vim.VimPlugin</implementation-class>
|
|
||||||
</component>
|
|
||||||
</application-components>
|
|
||||||
|
|
||||||
<extensionPoints>
|
|
||||||
<extensionPoint qualifiedName="IdeaVIM.vimExtension" interface="com.maddyhome.idea.vim.extension.VimExtension"/>
|
|
||||||
</extensionPoints>
|
|
||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
|
||||||
<applicationConfigurable groupId="editor" instance="com.maddyhome.idea.vim.ui.VimEmulationConfigurable"/>
|
|
||||||
</extensions>
|
|
||||||
|
|
||||||
<extensions defaultExtensionNs="IdeaVIM">
|
|
||||||
<vimExtension implementation="com.maddyhome.idea.vim.extension.surround.VimSurroundExtension"/>
|
|
||||||
<vimExtension implementation="com.maddyhome.idea.vim.extension.multiplecursors.VimMultipleCursorsExtension"/>
|
|
||||||
</extensions>
|
|
||||||
|
|
||||||
<actions>
|
|
||||||
<action id="VimPluginToggle" class="com.maddyhome.idea.vim.action.VimPluginToggleAction" text="Vim Emulator" description="Toggle the Vim Plugin On/Off">
|
|
||||||
<keyboard-shortcut first-keystroke="control alt V" keymap="$default"/>
|
|
||||||
<add-to-group group-id="ToolsMenu" anchor="last"/>
|
|
||||||
</action>
|
|
||||||
|
|
||||||
<!-- Motions -->
|
|
||||||
<action id="VimMotionPreviousTab" class="com.maddyhome.idea.vim.action.motion.tabs.MotionPreviousTabAction" text="Move to Previous Tab"/>
|
|
||||||
<action id="VimMotionNextTab" class="com.maddyhome.idea.vim.action.motion.tabs.MotionNextTabAction" text="Move to Next Tab"/>
|
|
||||||
<!-- Left/Right -->
|
|
||||||
<action id="VimMotionColumn" class="com.maddyhome.idea.vim.action.motion.leftright.MotionColumnAction" text="Move to Column"/>
|
|
||||||
<action id="VimMotionFirstColumn" class="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstColumnAction" text="Start of Line"/>
|
|
||||||
<action id="VimMotionFirstScreenColumn" class="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstScreenColumnAction" text="Start of Screen Line"/>
|
|
||||||
<action id="VimMotionFirstNonSpace" class="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstNonSpaceAction" text="First Character of Line"/>
|
|
||||||
<action id="VimMotionFirstScreenNonSpace" class="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstScreenNonSpaceAction" text="First Character of Screen Line"/>
|
|
||||||
<action id="VimMotionLastColumn" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLastColumnAction" text="End of Line"/>
|
|
||||||
<action id="VimMotionLastScreenColumn" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLastScreenColumnAction" text="End of Screen Line"/>
|
|
||||||
<action id="VimMotionLastMatchChar" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLastMatchCharAction" text="Repeat Last Character Match"/>
|
|
||||||
<action id="VimMotionLastMatchCharReverse" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLastMatchCharReverseAction" text="Repeat Last Character Match in Reverse"/>
|
|
||||||
<action id="VimMotionLastNonSpace" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLastNonSpaceAction" text="Last Character of Line"/>
|
|
||||||
<action id="VimMotionLeft" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftAction" text="Left"/>
|
|
||||||
<action id="VimMotionLeftWrap" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftWrapAction" text="Left"/>
|
|
||||||
<action id="VimMotionLeftMatchChar" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftMatchCharAction" text="Move Left to Character"/>
|
|
||||||
<action id="VimMotionLeftTillMatchChar" class="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftTillMatchCharAction" text="Move Left till Character"/>
|
|
||||||
<action id="VimMotionMiddleColumn" class="com.maddyhome.idea.vim.action.motion.leftright.MotionMiddleColumnAction" text="Middle of Screen"/>
|
|
||||||
<action id="VimMotionRight" class="com.maddyhome.idea.vim.action.motion.leftright.MotionRightAction" text="Right"/>
|
|
||||||
<action id="VimMotionRightWrap" class="com.maddyhome.idea.vim.action.motion.leftright.MotionRightWrapAction" text="Right"/>
|
|
||||||
<action id="VimMotionRightMatchChar" class="com.maddyhome.idea.vim.action.motion.leftright.MotionRightMatchCharAction" text="Move Right to Character"/>
|
|
||||||
<action id="VimMotionRightTillMatchChar" class="com.maddyhome.idea.vim.action.motion.leftright.MotionRightTillMatchCharAction" text="Move Right till Character"/>
|
|
||||||
<!-- Up/Down -->
|
|
||||||
<action id="VimMotionDown" class="com.maddyhome.idea.vim.action.motion.updown.MotionDownAction" text="Down"/>
|
|
||||||
<action id="VimMotionDownFirstNonSpace" class="com.maddyhome.idea.vim.action.motion.updown.MotionDownFirstNonSpaceAction" text="Down to First non-Space"/>
|
|
||||||
<action id="VimMotionDownLess1FirstNonSpace" class="com.maddyhome.idea.vim.action.motion.updown.MotionDownLess1FirstNonSpaceAction" text="Down to First non-Space"/>
|
|
||||||
<action id="VimMotionGotoLineFirst" class="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineFirstAction" text="Goto Line"/>
|
|
||||||
<action id="VimMotionGotoLineLast" class="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineLastAction" text="Goto Line"/>
|
|
||||||
<action id="VimMotionGotoLineLastEnd" class="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineLastEndAction" text="Goto Line End"/>
|
|
||||||
<action id="VimMotionPercentOrMatch" class="com.maddyhome.idea.vim.action.motion.updown.MotionPercentOrMatchAction" text="Percent Down or Match"/>
|
|
||||||
<action id="VimMotionUp" class="com.maddyhome.idea.vim.action.motion.updown.MotionUpAction" text="Up"/>
|
|
||||||
<action id="VimMotionUpFirstNonSpace" class="com.maddyhome.idea.vim.action.motion.updown.MotionUpFirstNonSpaceAction" text="Up to First non-Space"/>
|
|
||||||
<!-- Text -->
|
|
||||||
<action id="VimMotionCamelEndLeft" class="com.maddyhome.idea.vim.action.motion.text.MotionCamelEndLeftAction" text="Camel Word End Left"/>
|
|
||||||
<action id="VimMotionCamelEndRight" class="com.maddyhome.idea.vim.action.motion.text.MotionCamelEndRightAction" text="Camel Word End Right"/>
|
|
||||||
<action id="VimMotionCamelLeft" class="com.maddyhome.idea.vim.action.motion.text.MotionCamelLeftAction" text="Camel Word Left"/>
|
|
||||||
<action id="VimMotionCamelRight" class="com.maddyhome.idea.vim.action.motion.text.MotionCamelRightAction" text="Camel Word Right"/>
|
|
||||||
<action id="VimMotionNthCharacter" class="com.maddyhome.idea.vim.action.motion.text.MotionNthCharacterAction" text="Nth Character"/>
|
|
||||||
<action id="VimMotionWordEndLeft" class="com.maddyhome.idea.vim.action.motion.text.MotionWordEndLeftAction" text="Word End Left"/>
|
|
||||||
<action id="VimMotionBigWordEndLeft" class="com.maddyhome.idea.vim.action.motion.text.MotionBigWordEndLeftAction" text="BigWord End Left"/>
|
|
||||||
<action id="VimMotionWordEndRight" class="com.maddyhome.idea.vim.action.motion.text.MotionWordEndRightAction" text="Word End Right"/>
|
|
||||||
<action id="VimMotionBigWordEndRight" class="com.maddyhome.idea.vim.action.motion.text.MotionBigWordEndRightAction" text="BigWord End Right"/>
|
|
||||||
<action id="VimMotionWordLeft" class="com.maddyhome.idea.vim.action.motion.text.MotionWordLeftAction" text="Word Left"/>
|
|
||||||
<action id="VimMotionBigWordLeft" class="com.maddyhome.idea.vim.action.motion.text.MotionBigWordLeftAction" text="BigWord Left"/>
|
|
||||||
<action id="VimMotionWordRight" class="com.maddyhome.idea.vim.action.motion.text.MotionWordRightAction" text="Word Right"/>
|
|
||||||
<action id="VimMotionBigWordRight" class="com.maddyhome.idea.vim.action.motion.text.MotionBigWordRightAction" text="BigWord Right"/>
|
|
||||||
<action id="VimMotionSentenceStartNext" class="com.maddyhome.idea.vim.action.motion.text.MotionSentenceNextStartAction" text="Next Sentence Start"/>
|
|
||||||
<action id="VimMotionSentenceStartPrevious" class="com.maddyhome.idea.vim.action.motion.text.MotionSentencePreviousStartAction" text="Previous Sentence Start"/>
|
|
||||||
<action id="VimMotionSentenceEndNext" class="com.maddyhome.idea.vim.action.motion.text.MotionSentenceNextEndAction" text="Next Sentence End"/>
|
|
||||||
<action id="VimMotionSentenceEndPrevious" class="com.maddyhome.idea.vim.action.motion.text.MotionSentencePreviousEndAction" text="Previous Sentence End"/>
|
|
||||||
<action id="VimMotionParagraphNext" class="com.maddyhome.idea.vim.action.motion.text.MotionParagraphNextAction" text="Next Paragraph"/>
|
|
||||||
<action id="VimMotionParagraphPrevious" class="com.maddyhome.idea.vim.action.motion.text.MotionParagraphPreviousAction" text="Previous Paragraph"/>
|
|
||||||
<action id="VimMotionUnmatchedBraceClose" class="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedBraceCloseAction" text="Unmatched }"/>
|
|
||||||
<action id="VimMotionUnmatchedBraceOpen" class="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedBraceOpenAction" text="Unmatched {"/>
|
|
||||||
<action id="VimMotionUnmatchedParenClose" class="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedParenCloseAction" text="Unmatched )"/>
|
|
||||||
<action id="VimMotionUnmatchedParenOpen" class="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedParenOpenAction" text="Unmatched ("/>
|
|
||||||
<action id="VimMotionSectionBackwardEnd" class="com.maddyhome.idea.vim.action.motion.text.MotionSectionBackwardEndAction" text="Section End Backward"/>
|
|
||||||
<action id="VimMotionSectionBackwardStart" class="com.maddyhome.idea.vim.action.motion.text.MotionSectionBackwardStartAction" text="Section Start Backward"/>
|
|
||||||
<action id="VimMotionSectionForwardEnd" class="com.maddyhome.idea.vim.action.motion.text.MotionSectionForwardEndAction" text="Section End Forward"/>
|
|
||||||
<action id="VimMotionSectionForwardStart" class="com.maddyhome.idea.vim.action.motion.text.MotionSectionForwardStartAction" text="Section Start Forward"/>
|
|
||||||
<action id="VimMotionMethodBackwardEnd" class="com.maddyhome.idea.vim.action.motion.text.MotionMethodPreviousEndAction" text="Previous Method End"/>
|
|
||||||
<action id="VimMotionMethodBackwardStart" class="com.maddyhome.idea.vim.action.motion.text.MotionMethodPreviousStartAction" text="Previous Method Start"/>
|
|
||||||
<action id="VimMotionMethodForwardEnd" class="com.maddyhome.idea.vim.action.motion.text.MotionMethodNextEndAction" text="Next Method End"/>
|
|
||||||
<action id="VimMotionMethodForwardStart" class="com.maddyhome.idea.vim.action.motion.text.MotionMethodNextStartAction" text="Next Method Start"/>
|
|
||||||
<!-- Text Objects -->
|
|
||||||
<action id="VimMotionTextOuterWord" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterWordAction" text="Select outer word"/>
|
|
||||||
<action id="VimMotionTextOuterBigWord" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBigWordAction" text="Select outer WORD"/>
|
|
||||||
<action id="VimMotionTextInnerWord" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerWordAction" text="Select inner word"/>
|
|
||||||
<action id="VimMotionTextInnerBigWord" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBigWordAction" text="Select inner WORD"/>
|
|
||||||
<action id="VimMotionInnerBlockAngle" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockAngleAction" text="Select inner < block"/>
|
|
||||||
<action id="VimMotionInnerBlockBrace" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockBraceAction" text="Select inner { block"/>
|
|
||||||
<action id="VimMotionInnerBlockBracket" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockBracketAction" text="Select inner [ block"/>
|
|
||||||
<action id="VimMotionInnerBlockParen" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockParenAction" text="Select inner ( block"/>
|
|
||||||
<action id="VimMotionInnerBlockDoubleQuote" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockDoubleQuoteAction" text="Select inner double quote block"/>
|
|
||||||
<action id="VimMotionInnerBlockSingleQuote" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockSingleQuoteAction" text="Select inner single quote block"/>
|
|
||||||
<action id="VimMotionInnerBlockBackQuote" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockBackQuoteAction" text="Select inner back quote block"/>
|
|
||||||
<action id="VimMotionInnerBlockTag" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockTagAction" text="Select inner >< block >/<"/>
|
|
||||||
<action id="VimMotionOuterBlockAngle" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockAngleAction" text="Select outer < block"/>
|
|
||||||
<action id="VimMotionOuterBlockBrace" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockBraceAction" text="Select outer { block"/>
|
|
||||||
<action id="VimMotionOuterBlockBracket" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockBracketAction" text="Select outer [ block"/>
|
|
||||||
<action id="VimMotionOuterBlockParen" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockParenAction" text="Select outer ( block"/>
|
|
||||||
<action id="VimMotionOuterBlockDoubleQuote" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockDoubleQuoteAction" text="Select outer double quote block"/>
|
|
||||||
<action id="VimMotionOuterBlockSingleQuote" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockSingleQuoteAction" text="Select outer single quote block"/>
|
|
||||||
<action id="VimMotionOuterBlockBackQuote" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockBackQuoteAction" text="Select outer back quote block"/>
|
|
||||||
<action id="VimMotionOuterBlockTag" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockTagAction" text="Select outer >< block >/<"/>
|
|
||||||
<action id="VimMotionInnerParagraph" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerParagraphAction" text="Select Inner Paragraph"/>
|
|
||||||
<action id="VimMotionOuterParagraph" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterParagraphAction" text="Select Outer Paragraph"/>
|
|
||||||
<action id="VimMotionInnerSentence" class="com.maddyhome.idea.vim.action.motion.object.MotionInnerSentenceAction" text="Select Inner Sentence"/>
|
|
||||||
<action id="VimMotionOuterSentence" class="com.maddyhome.idea.vim.action.motion.object.MotionOuterSentenceAction" text="Select Outer Sentence"/>
|
|
||||||
<!-- Marks -->
|
|
||||||
<action id="VimMotionMark" class="com.maddyhome.idea.vim.action.motion.mark.MotionMarkAction" text="Mark"/>
|
|
||||||
<action id="VimMotionGotoFileMark" class="com.maddyhome.idea.vim.action.motion.mark.MotionGotoFileMarkAction" text="Goto Mark"/>
|
|
||||||
<action id="VimMotionGotoFileMarkLine" class="com.maddyhome.idea.vim.action.motion.mark.MotionGotoFileMarkLineAction" text="Goto Mark Line"/>
|
|
||||||
<action id="VimMotionGotoMark" class="com.maddyhome.idea.vim.action.motion.mark.MotionGotoMarkAction" text="Goto Mark"/>
|
|
||||||
<action id="VimMotionGotoMarkLine" class="com.maddyhome.idea.vim.action.motion.mark.MotionGotoMarkLineAction" text="Goto Mark Line"/>
|
|
||||||
<action id="VimMotionJumpNext" class="com.maddyhome.idea.vim.action.motion.mark.MotionJumpNextAction" text="Goto Next Jump"/>
|
|
||||||
<action id="VimMotionJumpPrevious" class="com.maddyhome.idea.vim.action.motion.mark.MotionJumpPreviousAction" text="Goto Previous Jump"/>
|
|
||||||
<action id="VimForward" class="com.maddyhome.idea.vim.action.motion.mark.MotionJumpNextAction" text="Forward"/>
|
|
||||||
<action id="VimBack" class="com.maddyhome.idea.vim.action.motion.mark.MotionJumpPreviousAction" text="Back"/>
|
|
||||||
<!-- Screen -->
|
|
||||||
<action id="VimMotionFirstScreenLine" class="com.maddyhome.idea.vim.action.motion.screen.MotionFirstScreenLineAction" text="First Screen Line"/>
|
|
||||||
<action id="VimMotionLastScreenLine" class="com.maddyhome.idea.vim.action.motion.screen.MotionLastScreenLineAction" text="Last Screen Line"/>
|
|
||||||
<action id="VimMotionMiddleScreenLine" class="com.maddyhome.idea.vim.action.motion.screen.MotionMiddleScreenLineAction" text="Middle Screen Line"/>
|
|
||||||
<!-- Scroll -->
|
|
||||||
<action id="VimMotionScrollFirstScreenLinePageStart" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenLinePageStartAction" text="Scroll Line to Top"/>
|
|
||||||
<action id="VimMotionScrollFirstScreenLineStart" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenLineStartAction" text="Scroll Line to Top"/>
|
|
||||||
<action id="VimMotionScrollFirstScreenLine" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenLineAction" text="Scroll Line to Top"/>
|
|
||||||
<action id="VimMotionScrollHalfPageDown" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollHalfPageDownAction" text="Scroll Half Page Down"/>
|
|
||||||
<action id="VimMotionScrollHalfPageUp" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollHalfPageUpAction" text="Scroll Half Page Up"/>
|
|
||||||
<action id="VimMotionScrollLastScreenLine" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenLineAction" text="Scroll Line to Bottom"/>
|
|
||||||
<action id="VimMotionScrollLastScreenLinePageStart" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenLinePageStartAction" text="Scroll Line to Bottom"/>
|
|
||||||
<action id="VimMotionScrollLastScreenLineStart" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenLineStartAction" text="Scroll Line to Bottom"/>
|
|
||||||
<action id="VimMotionScrollLineDown" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLineDownAction" text="Scroll Line Down"/>
|
|
||||||
<action id="VimMotionScrollLineUp" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLineUpAction" text="Scroll Line Up"/>
|
|
||||||
<action id="VimMotionScrollMiddleScreenLine" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollMiddleScreenLineAction" text="Scroll Line to Middle"/>
|
|
||||||
<action id="VimMotionScrollMiddleScreenLineStart" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollMiddleScreenLineStartAction" text="Scroll Line to Middle"/>
|
|
||||||
<action id="VimMotionScrollPageDown" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollPageDownAction" text="Scroll Page Down"/>
|
|
||||||
<action id="VimMotionScrollPageUp" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollPageUpAction" text="Scroll Page Up"/>
|
|
||||||
<action id="VimMotionScrollFirstScreenColumn" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenColumnAction" text="Scroll Column to first column"/>
|
|
||||||
<action id="VimMotionScrollLastScreenColumn" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenColumnAction" text="Scroll Column to last column"/>
|
|
||||||
<action id="VimMotionScrollColumnLeft" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollColumnLeftAction" text="Scroll Column Left"/>
|
|
||||||
<action id="VimMotionScrollColumnRight" class="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollColumnRightAction" text="Scroll Column Right"/>
|
|
||||||
<!-- Visual -->
|
|
||||||
<action id="VimVisualExitMode" class="com.maddyhome.idea.vim.action.motion.visual.VisualExitModeAction" text="Exit Visual Mode"/>
|
|
||||||
<action id="VimVisualToggleCharacterMode" class="com.maddyhome.idea.vim.action.motion.visual.VisualToggleCharacterModeAction" text="Toggle Character Selection"/>
|
|
||||||
<action id="VimVisualToggleLineMode" class="com.maddyhome.idea.vim.action.motion.visual.VisualToggleLineModeAction" text="Toggle Line Selection"/>
|
|
||||||
<action id="VimVisualToggleBlockMode" class="com.maddyhome.idea.vim.action.motion.visual.VisualToggleBlockModeAction" text="Toggle Block Selection"/>
|
|
||||||
<action id="VimVisualSwapEnds" class="com.maddyhome.idea.vim.action.motion.visual.VisualSwapEndsAction" text="Swap Visual Selection Ends"/>
|
|
||||||
<action id="VimVisualSwapEndsBlock" class="com.maddyhome.idea.vim.action.motion.visual.VisualSwapEndsBlockAction" text="Swap Visual Selection Ends"/>
|
|
||||||
<action id="VimVisualSelectPrevious" class="com.maddyhome.idea.vim.action.motion.visual.VisualSelectPreviousAction" text="Visual Select Previous"/>
|
|
||||||
<action id="VimVisualSwapSelections" class="com.maddyhome.idea.vim.action.motion.visual.VisualSwapSelectionsAction" text="Swap Visual Selection Ends"/>
|
|
||||||
|
|
||||||
<!-- Insert -->
|
|
||||||
<action id="VimInsertAfterCursor" class="com.maddyhome.idea.vim.action.change.insert.InsertAfterCursorAction" text="Insert After Cursor"/>
|
|
||||||
<action id="VimInsertAfterLineEnd" class="com.maddyhome.idea.vim.action.change.insert.InsertAfterLineEndAction" text="Insert After Line End"/>
|
|
||||||
<action id="VimInsertAtPreviousInsert" class="com.maddyhome.idea.vim.action.change.insert.InsertAtPreviousInsertAction" text="Insert Before Cursor"/>
|
|
||||||
<action id="VimInsertBeforeCursor" class="com.maddyhome.idea.vim.action.change.insert.InsertBeforeCursorAction" text="Insert Before Cursor"/>
|
|
||||||
<action id="VimInsertBeforeFirstNonBlank" class="com.maddyhome.idea.vim.action.change.insert.InsertBeforeFirstNonBlankAction" text="Insert Before First non-Blank"/>
|
|
||||||
<action id="VimInsertCharacterAboveCursor" class="com.maddyhome.idea.vim.action.change.insert.InsertCharacterAboveCursorAction" text="Insert Character Above Cursor"/>
|
|
||||||
<action id="VimInsertCharacterBelowCursor" class="com.maddyhome.idea.vim.action.change.insert.InsertCharacterBelowCursorAction" text="Insert Character Below Cursor"/>
|
|
||||||
<action id="VimInsertDeleteInsertedText" class="com.maddyhome.idea.vim.action.change.insert.InsertDeleteInsertedTextAction" text="Delete Inserted Text"/>
|
|
||||||
<action id="VimInsertDeletePreviousWord" class="com.maddyhome.idea.vim.action.change.insert.InsertDeletePreviousWordAction" text="Delete Previous Word"/>
|
|
||||||
<action id="VimInsertEnter" class="com.maddyhome.idea.vim.action.change.insert.InsertEnterAction" text="Enter"/>
|
|
||||||
<action id="VimInsertExitMode" class="com.maddyhome.idea.vim.action.change.insert.InsertExitModeAction" text="Exit Insert Mode"/>
|
|
||||||
<action id="VimInsertLineStart" class="com.maddyhome.idea.vim.action.change.insert.InsertLineStartAction" text="Insert at Line Start"/>
|
|
||||||
<action id="VimInsertNewLineAbove" class="com.maddyhome.idea.vim.action.change.insert.InsertNewLineAboveAction" text="Insert New Line Above"/>
|
|
||||||
<action id="VimInsertNewLineBelow" class="com.maddyhome.idea.vim.action.change.insert.InsertNewLineBelowAction" text="Insert New Line Below"/>
|
|
||||||
<action id="VimInsertPreviousInsert" class="com.maddyhome.idea.vim.action.change.insert.InsertPreviousInsertAction" text="Insert Previous Text"/>
|
|
||||||
<action id="VimInsertPreviousInsertExit" class="com.maddyhome.idea.vim.action.change.insert.InsertPreviousInsertExitAction" text="Insert Previous Text"/>
|
|
||||||
<action id="VimInsertRegister" class="com.maddyhome.idea.vim.action.change.insert.InsertRegisterAction" text="Insert Register"/>
|
|
||||||
<action id="VimInsertReplaceToggle" class="com.maddyhome.idea.vim.action.change.insert.InsertInsertAction" text="Toggle Insert/Replace"/>
|
|
||||||
<action id="VimInsertSingleCommand" class="com.maddyhome.idea.vim.action.change.insert.InsertSingleCommandAction" text="Execute Command"/>
|
|
||||||
<action id="VimVisualBlockInsert" class="com.maddyhome.idea.vim.action.change.insert.VisualBlockInsertAction" text="Visual Block Insert"/>
|
|
||||||
<action id="VimVisualBlockAppend" class="com.maddyhome.idea.vim.action.change.insert.VisualBlockAppendAction" text="Visual Block Append"/>
|
|
||||||
|
|
||||||
<!-- Delete -->
|
|
||||||
<action id="VimDeleteCharacter" class="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterAction" text="Delete Character"/>
|
|
||||||
<action id="VimDeleteCharacterLeft" class="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterLeftAction" text="Delete Character Left"/>
|
|
||||||
<action id="VimDeleteCharacterRight" class="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterRightAction" text="Delete Character Right"/>
|
|
||||||
<action id="VimDeleteEndOfLine" class="com.maddyhome.idea.vim.action.change.delete.DeleteEndOfLineAction" text="Delete End-of-Line"/>
|
|
||||||
<action id="VimDeleteJoinLines" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinLinesAction" text="Delete Join Lines"/>
|
|
||||||
<action id="VimDeleteJoinLinesSpaces" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinLinesSpacesAction" text="Delete Join Lines"/>
|
|
||||||
<action id="VimDeleteJoinVisualLines" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinVisualLinesAction" text="Delete Join Lines"/>
|
|
||||||
<action id="VimDeleteJoinVisualLinesSpaces" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinVisualLinesSpacesAction" text="Delete Join Lines"/>
|
|
||||||
<action id="VimDeleteLine" class="com.maddyhome.idea.vim.action.change.delete.DeleteLineAction" text="Delete Line"/>
|
|
||||||
<action id="VimDeleteMotion" class="com.maddyhome.idea.vim.action.change.delete.DeleteMotionAction" text="Delete Motion"/>
|
|
||||||
<action id="VimDeleteVisual" class="com.maddyhome.idea.vim.action.change.delete.DeleteVisualAction" text="Delete Selection"/>
|
|
||||||
<action id="VimDeleteVisualLines" class="com.maddyhome.idea.vim.action.change.delete.DeleteVisualLinesAction" text="Delete Selected Lines"/>
|
|
||||||
<action id="VimDeleteVisualLinesEnd" class="com.maddyhome.idea.vim.action.change.delete.DeleteVisualLinesEndAction" text="Delete Selected Lines"/>
|
|
||||||
|
|
||||||
<!-- Change -->
|
|
||||||
<action id="VimChangeCaseLowerMotion" class="com.maddyhome.idea.vim.action.change.change.ChangeCaseLowerMotionAction" text="Change Motion to Lower Case"/>
|
|
||||||
<action id="VimChangeCaseLowerVisual" class="com.maddyhome.idea.vim.action.change.change.ChangeCaseLowerVisualAction" text="Change Motion to Lower Case"/>
|
|
||||||
<action id="VimChangeCaseToggleCharacter" class="com.maddyhome.idea.vim.action.change.change.ChangeCaseToggleCharacterAction" text="Change Toggle Case"/>
|
|
||||||
<action id="VimChangeCaseToggleMotion" class="com.maddyhome.idea.vim.action.change.change.ChangeCaseToggleMotionAction" text="Change Motion Toggle Case"/>
|
|
||||||
<action id="VimChangeCaseToggleVisual" class="com.maddyhome.idea.vim.action.change.change.ChangeCaseToggleVisualAction" text="Change Motion Toggle Case"/>
|
|
||||||
<action id="VimChangeCaseUpperMotion" class="com.maddyhome.idea.vim.action.change.change.ChangeCaseUpperMotionAction" text="Change Motion to Upper Case"/>
|
|
||||||
<action id="VimChangeCaseUpperVisual" class="com.maddyhome.idea.vim.action.change.change.ChangeCaseUpperVisualAction" text="Change Motion to Upper Case"/>
|
|
||||||
<action id="VimChangeCharacter" class="com.maddyhome.idea.vim.action.change.change.ChangeCharacterAction" text="Change Character"/>
|
|
||||||
<action id="VimChangeCharacters" class="com.maddyhome.idea.vim.action.change.change.ChangeCharactersAction" text="Change Characters"/>
|
|
||||||
<action id="VimChangeEndOfLine" class="com.maddyhome.idea.vim.action.change.change.ChangeEndOfLineAction" text="Change to End-of-Line"/>
|
|
||||||
<action id="VimChangeLine" class="com.maddyhome.idea.vim.action.change.change.ChangeLineAction" text="Change Line"/>
|
|
||||||
<action id="VimChangeMotion" class="com.maddyhome.idea.vim.action.change.change.ChangeMotionAction" text="Change Motion"/>
|
|
||||||
<action id="VimChangeNumberInc" class="com.maddyhome.idea.vim.action.change.change.ChangeNumberIncAction" text="Increment Number"/>
|
|
||||||
<action id="VimChangeNumberDec" class="com.maddyhome.idea.vim.action.change.change.ChangeNumberDecAction" text="Decrement Number"/>
|
|
||||||
<action id="VimChangeReplace" class="com.maddyhome.idea.vim.action.change.change.ChangeReplaceAction" text="Replace"/>
|
|
||||||
<action id="VimChangeVisual" class="com.maddyhome.idea.vim.action.change.change.ChangeVisualAction" text="Change Motion"/>
|
|
||||||
<action id="VimChangeVisualCharacter" class="com.maddyhome.idea.vim.action.change.change.ChangeVisualCharacterAction" text="Change Motion"/>
|
|
||||||
<action id="VimChangeVisualLines" class="com.maddyhome.idea.vim.action.change.change.ChangeVisualLinesAction" text="Change Motion"/>
|
|
||||||
<action id="VimChangeVisualLinesEnd" class="com.maddyhome.idea.vim.action.change.change.ChangeVisualLinesEndAction" text="Change Motion"/>
|
|
||||||
<action id="VimFilterMotion" class="com.maddyhome.idea.vim.action.change.change.FilterMotionAction" text="Filter Lines"/>
|
|
||||||
<action id="VimFilterCountLines" class="com.maddyhome.idea.vim.action.change.change.FilterCountLinesAction" text="Filter Lines"/>
|
|
||||||
<action id="VimFilterVisualLines" class="com.maddyhome.idea.vim.action.change.change.FilterVisualLinesAction" text="Filter Visual Lines"/>
|
|
||||||
<action id="VimAutoIndentVisual" class="com.maddyhome.idea.vim.action.change.change.AutoIndentLinesVisualAction" text="Auto Indent Selection"/>
|
|
||||||
<action id="VimReformatVisual" class="com.maddyhome.idea.vim.action.change.change.ReformatCodeVisualAction" text="Reformat Selection"/>
|
|
||||||
|
|
||||||
<!-- Shift -->
|
|
||||||
<action id="VimAutoIndentLines" class="com.maddyhome.idea.vim.action.change.shift.AutoIndentLinesAction" text="Auto Indent Lines"/>
|
|
||||||
<action id="VimAutoIndentMotion" class="com.maddyhome.idea.vim.action.change.shift.AutoIndentMotionAction" text="Auto Indent Lines"/>
|
|
||||||
<action id="VimShiftLeftLines" class="com.maddyhome.idea.vim.action.change.shift.ShiftLeftLinesAction" text="Shift Lines Left"/>
|
|
||||||
<action id="VimShiftLeftMotion" class="com.maddyhome.idea.vim.action.change.shift.ShiftLeftMotionAction" text="Shift Motion Left"/>
|
|
||||||
<action id="VimShiftLeftVisual" class="com.maddyhome.idea.vim.action.change.shift.ShiftLeftVisualAction" text="Shift Visual Left"/>
|
|
||||||
<action id="VimShiftRightLines" class="com.maddyhome.idea.vim.action.change.shift.ShiftRightLinesAction" text="Shift Lines Right"/>
|
|
||||||
<action id="VimShiftRightMotion" class="com.maddyhome.idea.vim.action.change.shift.ShiftRightMotionAction" text="Shift Motion Right"/>
|
|
||||||
<action id="VimShiftRightVisual" class="com.maddyhome.idea.vim.action.change.shift.ShiftRightVisualAction" text="Shift Visual Right"/>
|
|
||||||
|
|
||||||
<!-- Copy -->
|
|
||||||
<action id="VimCopyPutTextAfterCursor" class="com.maddyhome.idea.vim.action.copy.PutTextAfterCursorAction" text="Put Text"/>
|
|
||||||
<action id="VimCopyPutTextBeforeCursor" class="com.maddyhome.idea.vim.action.copy.PutTextBeforeCursorAction" text="Put Text"/>
|
|
||||||
<action id="VimCopyPutTextAfterCursorNoIndent" class="com.maddyhome.idea.vim.action.copy.PutTextAfterCursorNoIndentAction" text="Put Text"/>
|
|
||||||
<action id="VimCopyPutTextBeforeCursorNoIndent" class="com.maddyhome.idea.vim.action.copy.PutTextBeforeCursorNoIndentAction" text="Put Text"/>
|
|
||||||
<action id="VimCopyPutTextAfterCursorMoveCursor" class="com.maddyhome.idea.vim.action.copy.PutTextAfterCursorActionMoveCursor" text="Put Text"/>
|
|
||||||
<action id="VimCopyPutTextBeforeCursorMoveCursor" class="com.maddyhome.idea.vim.action.copy.PutTextBeforeCursorActionMoveCursor" text="Put Text"/>
|
|
||||||
<action id="VimCopySelectRegister" class="com.maddyhome.idea.vim.action.copy.SelectRegisterAction" text="Select Register"/>
|
|
||||||
<action id="VimCopyYankLine" class="com.maddyhome.idea.vim.action.copy.YankLineAction" text="Yank Line"/>
|
|
||||||
<action id="VimCopyYankMotion" class="com.maddyhome.idea.vim.action.copy.YankMotionAction" text="Yank Motion"/>
|
|
||||||
<action id="VimCopyYankVisual" class="com.maddyhome.idea.vim.action.copy.YankVisualAction" text="Yank Motion"/>
|
|
||||||
<action id="VimCopyYankVisualLines" class="com.maddyhome.idea.vim.action.copy.YankVisualLinesAction" text="Yank Motion"/>
|
|
||||||
<action id="VimVisualPutText" class="com.maddyhome.idea.vim.action.copy.PutVisualTextAction" text="Paste over Selection"/>
|
|
||||||
<action id="VimVisualPutTextNoIndent" class="com.maddyhome.idea.vim.action.copy.PutVisualTextNoIndentAction" text="Paste over Selection"/>
|
|
||||||
<action id="VimVisualPutTextMoveCursor" class="com.maddyhome.idea.vim.action.copy.PutVisualTextMoveCursorAction" text="Paste over Selection"/>
|
|
||||||
|
|
||||||
<!-- File -->
|
|
||||||
<action id="VimFileSaveClose" class="com.maddyhome.idea.vim.action.file.FileSaveCloseAction" text="Save and Close Editor"/>
|
|
||||||
<action id="VimFilePrevious" class="com.maddyhome.idea.vim.action.file.FilePreviousAction" text="Selects Previous Editor"/>
|
|
||||||
<action id="VimFileGetAscii" class="com.maddyhome.idea.vim.action.file.FileGetAsciiAction" text="Get ASCII Info"/>
|
|
||||||
<action id="VimFileGetHex" class="com.maddyhome.idea.vim.action.file.FileGetHexAction" text="Get Hex Info"/>
|
|
||||||
<action id="VimFileGetFileInfo" class="com.maddyhome.idea.vim.action.file.FileGetFileInfoAction" text="Get File Info"/>
|
|
||||||
<action id="VimFileGetLocationInfo" class="com.maddyhome.idea.vim.action.file.FileGetLocationInfoAction" text="Get Location Info"/>
|
|
||||||
|
|
||||||
<!-- Window -->
|
|
||||||
<action id="VimWindowSplitVertical" class="com.maddyhome.idea.vim.action.window.VerticalSplitAction" text="Split window vertically"/>
|
|
||||||
<action id="VimWindowSplitHorizontal" class="com.maddyhome.idea.vim.action.window.HorizontalSplitAction" text="Split window horizontally"/>
|
|
||||||
<action id="VimWindowClose" class="com.maddyhome.idea.vim.action.window.CloseWindowAction" text="Close current window"/>
|
|
||||||
<action id="VimWindowOnly" class="com.maddyhome.idea.vim.action.window.WindowOnlyAction" text="Close all windows except current"/>
|
|
||||||
<action id="VimWindowNext" class="com.maddyhome.idea.vim.action.window.WindowNextAction" text="Select next window"/>
|
|
||||||
<action id="VimWindowPrev" class="com.maddyhome.idea.vim.action.window.WindowPrevAction" text="Select previous window"/>
|
|
||||||
<action id="VimWindowLeft" class="com.maddyhome.idea.vim.action.window.WindowLeftAction" text="Go to left window"/>
|
|
||||||
<action id="VimWindowRight" class="com.maddyhome.idea.vim.action.window.WindowRightAction" text="Go to right window"/>
|
|
||||||
<action id="VimWindowUp" class="com.maddyhome.idea.vim.action.window.WindowUpAction" text="Go to window up"/>
|
|
||||||
<action id="VimWindowDown" class="com.maddyhome.idea.vim.action.window.WindowDownAction" text="Go to window down"/>
|
|
||||||
|
|
||||||
<!-- Search -->
|
|
||||||
<action id="VimSearchFwdEntry" class="com.maddyhome.idea.vim.action.motion.search.SearchEntryFwdAction" text="Search Forward"/>
|
|
||||||
<action id="VimSearchRevEntry" class="com.maddyhome.idea.vim.action.motion.search.SearchEntryRevAction" text="Search Backward"/>
|
|
||||||
<action id="VimSearchAgainNext" class="com.maddyhome.idea.vim.action.motion.search.SearchAgainNextAction" text="Search Again"/>
|
|
||||||
<action id="VimSearchAgainPrevious" class="com.maddyhome.idea.vim.action.motion.search.SearchAgainPreviousAction" text="Search Again"/>
|
|
||||||
<action id="VimSearchWholeWordForward" class="com.maddyhome.idea.vim.action.motion.search.SearchWholeWordForwardAction" text="Search Again"/>
|
|
||||||
<action id="VimSearchWholeWordBackward" class="com.maddyhome.idea.vim.action.motion.search.SearchWholeWordBackwardAction" text="Search Again"/>
|
|
||||||
<action id="VimSearchWordForward" class="com.maddyhome.idea.vim.action.motion.search.SearchWordForwardAction" text="Search Again"/>
|
|
||||||
<action id="VimSearchWordBackward" class="com.maddyhome.idea.vim.action.motion.search.SearchWordBackwardAction" text="Search Again"/>
|
|
||||||
<action id="VimGotoDeclaration" class="com.maddyhome.idea.vim.action.motion.search.GotoDeclarationAction" text="Goto Declaration"/>
|
|
||||||
|
|
||||||
<!-- Macro -->
|
|
||||||
<action id="VimToggleRecording" class="com.maddyhome.idea.vim.action.macro.ToggleRecordingAction" text="Record Keystrokes"/>
|
|
||||||
<action id="VimPlaybackRegister" class="com.maddyhome.idea.vim.action.macro.PlaybackRegisterAction" text="Playback Register"/>
|
|
||||||
<action id="VimPlaybackLastRegister" class="com.maddyhome.idea.vim.action.macro.PlaybackLastRegisterAction" text="Playback Last Register"/>
|
|
||||||
|
|
||||||
<!-- Command Line -->
|
|
||||||
<action id="VimExBackspace" class="com.maddyhome.idea.vim.action.ex.BackspaceAction" text="Backspace"/>
|
|
||||||
<action id="VimProcessExEntry" class="com.maddyhome.idea.vim.action.ex.ProcessExEntryAction" text="Process Ex Entry"/>
|
|
||||||
<action id="VimProcessExKey" class="com.maddyhome.idea.vim.action.ex.ProcessExKeyAction" text="Process Ex Key"/>
|
|
||||||
<action id="VimCancelExEntry" class="com.maddyhome.idea.vim.action.ex.CancelExEntryAction" text="Cancel Ex Entry"/>
|
|
||||||
|
|
||||||
<!-- Other -->
|
|
||||||
<action id="VimLastSearchReplace" class="com.maddyhome.idea.vim.action.change.change.ChangeLastSearchReplaceAction" text="Repeat Last :s"/>
|
|
||||||
<action id="VimLastGlobalSearchReplace" class="com.maddyhome.idea.vim.action.change.change.ChangeLastGlobalSearchReplaceAction" text="Repeat Last :s"/>
|
|
||||||
<action id="VimRepeatChange" class="com.maddyhome.idea.vim.action.change.RepeatChangeAction" text="Repeat Change"/>
|
|
||||||
<action id="VimRepeatExCommand" class="com.maddyhome.idea.vim.action.change.RepeatExCommandAction" text="Repeat Ex Command"/>
|
|
||||||
<action id="VimExEntry" class="com.maddyhome.idea.vim.action.ExEntryAction" text="Enter Ex Command"/>
|
|
||||||
<action id="VimResetMode" class="com.maddyhome.idea.vim.action.ResetModeAction" text="Reset Mode"/>
|
|
||||||
<action id="VimRedo" class="com.maddyhome.idea.vim.action.change.RedoAction" text="Redo"/>
|
|
||||||
<action id="VimUndo" class="com.maddyhome.idea.vim.action.change.UndoAction" text="Undo"/>
|
|
||||||
|
|
||||||
<!-- Internal -->
|
|
||||||
<action id="VimInternalAddInlays" class="com.maddyhome.idea.vim.action.internal.AddInlaysAction" text="Vim (internal) add test inlays" internal="true"/>
|
|
||||||
|
|
||||||
<!-- Keys -->
|
|
||||||
<action id="VimShortcutKeyAction" class="com.maddyhome.idea.vim.action.VimShortcutKeyAction" text="Shortcuts"/>
|
|
||||||
<action id="VimOperatorAction" class="com.maddyhome.idea.vim.action.change.OperatorAction" text="Operator"/>
|
|
||||||
</actions>
|
|
||||||
</idea-plugin>
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
notexcmd=Not an editor command: {0}
|
|
||||||
intbadcmd=Internal error - invalid command: {0}
|
|
||||||
e_backslash=E10: \\ should be followed by /, ? or &
|
|
||||||
e_badrange=Unexpected character ''{0}'' in range
|
|
||||||
e_norange=No range allowed
|
|
||||||
e_argreq=Argument required
|
|
||||||
e_noprev=E34: No previous command
|
|
||||||
e_nopresub=E33: No previous substitute regular expression
|
|
||||||
E191=E191: Argument must be a letter or forward/backward quote
|
|
||||||
e_backrange=Backwards range given
|
|
||||||
E146=E146: Regular expressions can''t be delimited by letters
|
|
||||||
e_zerocount=Zero count
|
|
||||||
e_trailing=Trailing characters
|
|
||||||
e_invcmd=Invalid command
|
|
||||||
e_null=Null argument
|
|
||||||
E50=E50: Too many \\z(
|
|
||||||
E51=E51: Too many {0}(
|
|
||||||
E52=E52: Unmatched \\z(
|
|
||||||
E53=E53: Unmatched {0}%(
|
|
||||||
E54=E54: Unmatched {0}(
|
|
||||||
E55=E55: Unmatched {0})
|
|
||||||
E56=E56: {0}* operand could be empty
|
|
||||||
E57=E57: {0}+ operand could be empty
|
|
||||||
E58=E58: {0}{ operand could be empty
|
|
||||||
E59=E59: invalid character after {0}@
|
|
||||||
E60=E60: Too many complex {0}{...}s
|
|
||||||
E61=E61: Nested {0}*
|
|
||||||
E62=E62: Nested {0}{1}
|
|
||||||
E63=E63: invalid use of \\_
|
|
||||||
E64=E64: {0}{1} follows nothing
|
|
||||||
E65=E65: Illegal back reference
|
|
||||||
E66=E66: \\z( not allowed here
|
|
||||||
E67=E67: \\z1 et al. not allowed here
|
|
||||||
E68=E68: Invalid character after \\z
|
|
||||||
E69=E69: Missing ] after {0}%[
|
|
||||||
E70=E70: Empty {0}%[]
|
|
||||||
E71=E71: Invalid character after {0}%
|
|
||||||
e_invrange=E16: Invalid range
|
|
||||||
e_toomsbra=E76: Too many [
|
|
||||||
e_internal=Internal error
|
|
||||||
synerror=Syntax error in {0}{...}
|
|
||||||
E363=E363: pattern caused out-of-stack error
|
|
||||||
e_re_corr=E44: Currupted regexp program
|
|
||||||
e_re_damg=E43: Damaged match string
|
|
||||||
E369=E369: invalid item in {0}%[]
|
|
||||||
E384=E384: search hit TOP without match for: {0}
|
|
||||||
E385=E385: search hit BOTTOM without match for: {0}
|
|
||||||
e_patnotf2=Pattern not found: {0}
|
|
||||||
unkopt=Unknown option: {0}
|
|
||||||
e_invarg=Invalid argument: {0}
|
|
||||||
E774=E774: 'operatorfunc' is empty
|
|
||||||
13
settings.gradle
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// Set repository for snapshot versions of gradle plugin
|
||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url 'https://oss.sonatype.org/content/repositories/snapshots/'
|
||||||
|
}
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.name = 'IdeaVIM'
|
||||||
|
include 'vim-engine'
|
||||||
|
|
||||||
@@ -1,752 +0,0 @@
|
|||||||
/*
|
|
||||||
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
|
||||||
* Copyright (C) 2003-2016 The IdeaVim authors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
import com.intellij.openapi.actionSystem.ActionManager;
|
|
||||||
import com.intellij.openapi.actionSystem.AnAction;
|
|
||||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
|
||||||
import com.intellij.openapi.actionSystem.DataContext;
|
|
||||||
import com.intellij.openapi.application.Application;
|
|
||||||
import com.intellij.openapi.application.ApplicationManager;
|
|
||||||
import com.intellij.openapi.application.ModalityState;
|
|
||||||
import com.intellij.openapi.command.CommandProcessor;
|
|
||||||
import com.intellij.openapi.editor.Editor;
|
|
||||||
import com.intellij.openapi.editor.actionSystem.ActionPlan;
|
|
||||||
import com.intellij.openapi.editor.actionSystem.TypedActionHandler;
|
|
||||||
import com.intellij.openapi.project.Project;
|
|
||||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
|
||||||
import com.maddyhome.idea.vim.command.Argument;
|
|
||||||
import com.maddyhome.idea.vim.command.Command;
|
|
||||||
import com.maddyhome.idea.vim.command.CommandState;
|
|
||||||
import com.maddyhome.idea.vim.command.MappingMode;
|
|
||||||
import com.maddyhome.idea.vim.extension.VimExtensionHandler;
|
|
||||||
import com.maddyhome.idea.vim.group.RegisterGroup;
|
|
||||||
import com.maddyhome.idea.vim.helper.DigraphSequence;
|
|
||||||
import com.maddyhome.idea.vim.helper.EditorDataContext;
|
|
||||||
import com.maddyhome.idea.vim.helper.RunnableHelper;
|
|
||||||
import com.maddyhome.idea.vim.helper.StringHelper;
|
|
||||||
import com.maddyhome.idea.vim.key.*;
|
|
||||||
import com.maddyhome.idea.vim.option.Options;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Stack;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This handlers every keystroke that the user can argType except those that are still valid hotkeys for various Idea
|
|
||||||
* actions. This is a singleton.
|
|
||||||
*/
|
|
||||||
public class KeyHandler {
|
|
||||||
/**
|
|
||||||
* Returns a reference to the singleton instance of this class
|
|
||||||
*
|
|
||||||
* @return A reference to the singleton
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public static KeyHandler getInstance() {
|
|
||||||
if (instance == null) {
|
|
||||||
instance = new KeyHandler();
|
|
||||||
}
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an instance
|
|
||||||
*/
|
|
||||||
private KeyHandler() {
|
|
||||||
reset(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the original key handler
|
|
||||||
*
|
|
||||||
* @param origHandler The original key handler
|
|
||||||
*/
|
|
||||||
public void setOriginalHandler(TypedActionHandler origHandler) {
|
|
||||||
this.origHandler = origHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the original key handler
|
|
||||||
*
|
|
||||||
* @return The original key handler
|
|
||||||
*/
|
|
||||||
public TypedActionHandler getOriginalHandler() {
|
|
||||||
return origHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Invoked before acquiring a write lock and actually handling the keystroke.
|
|
||||||
*
|
|
||||||
* Drafts an optional {@link ActionPlan} that will be used as a base for zero-latency rendering in editor.
|
|
||||||
*
|
|
||||||
* @param editor The editor the key was typed into
|
|
||||||
* @param key The keystroke typed by the user
|
|
||||||
* @param context The data context
|
|
||||||
* @param plan The current action plan
|
|
||||||
*/
|
|
||||||
public void beforeHandleKey(@NotNull Editor editor, @NotNull KeyStroke key,
|
|
||||||
@NotNull DataContext context, @NotNull ActionPlan plan) {
|
|
||||||
|
|
||||||
final CommandState.Mode mode = CommandState.getInstance(editor).getMode();
|
|
||||||
|
|
||||||
if (mode == CommandState.Mode.INSERT || mode == CommandState.Mode.REPLACE) {
|
|
||||||
VimPlugin.getChange().beforeProcessKey(editor, context, key, plan);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the main key handler for the Vim plugin. Every keystroke not handled directly by Idea is sent here for
|
|
||||||
* processing.
|
|
||||||
*
|
|
||||||
* @param editor The editor the key was typed into
|
|
||||||
* @param key The keystroke typed by the user
|
|
||||||
* @param context The data context
|
|
||||||
*/
|
|
||||||
public void handleKey(@NotNull Editor editor, @NotNull KeyStroke key, @NotNull DataContext context) {
|
|
||||||
handleKey(editor, key, context, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleKey(@NotNull Editor editor, @NotNull KeyStroke key, @NotNull DataContext context,
|
|
||||||
boolean allowKeyMappings) {
|
|
||||||
VimPlugin.clearError();
|
|
||||||
// All the editor actions should be performed with top level editor!!!
|
|
||||||
// Be careful: all the EditorActionHandler implementation should correctly process InjectedEditors
|
|
||||||
editor = InjectedLanguageUtil.getTopLevelEditor(editor);
|
|
||||||
final CommandState editorState = CommandState.getInstance(editor);
|
|
||||||
|
|
||||||
// If this is a "regular" character keystroke, get the character
|
|
||||||
char chKey = key.getKeyChar() == KeyEvent.CHAR_UNDEFINED ? 0 : key.getKeyChar();
|
|
||||||
|
|
||||||
final boolean isRecording = editorState.isRecording();
|
|
||||||
boolean shouldRecord = true;
|
|
||||||
|
|
||||||
// Check for command count before key mappings - otherwise e.g. ':map 0 ^' breaks command counts that contain a zero
|
|
||||||
if (isCommandCount(editorState, chKey)) {
|
|
||||||
// Update the count
|
|
||||||
count = count * 10 + (chKey - '0');
|
|
||||||
}
|
|
||||||
else if (allowKeyMappings && handleKeyMapping(editor, key, context)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Pressing delete while entering a count "removes" the last digit entered
|
|
||||||
// Unlike the digits, this must be checked *after* checking for key mappings
|
|
||||||
else if (isDeleteCommandCount(key, editorState)) {
|
|
||||||
// "Remove" the last digit sent to us
|
|
||||||
count /= 10;
|
|
||||||
}
|
|
||||||
else if (isEditorReset(key, editorState)) {
|
|
||||||
handleEditorReset(editor, key, context);
|
|
||||||
}
|
|
||||||
// If we got this far the user is entering a command or supplying an argument to an entered command.
|
|
||||||
// First let's check to see if we are at the point of expecting a single character argument to a command.
|
|
||||||
else if (currentArg == Argument.Type.CHARACTER) {
|
|
||||||
handleCharArgument(key, chKey);
|
|
||||||
}
|
|
||||||
// If we are this far, then the user must be entering a command or a non-single-character argument
|
|
||||||
// to an entered command. Let's figure out which it is
|
|
||||||
else {
|
|
||||||
// For debugging purposes we track the keys entered for this command
|
|
||||||
keys.add(key);
|
|
||||||
|
|
||||||
// Ask the key/action tree if this is an appropriate key at this point in the command and if so,
|
|
||||||
// return the node matching this keystroke
|
|
||||||
final Node node = editorState.getCurrentNode().getChild(key);
|
|
||||||
|
|
||||||
if (handleDigraph(editor, key, context, node)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If this is a branch node we have entered only part of a multi-key command
|
|
||||||
if (node instanceof BranchNode) {
|
|
||||||
handleBranchNode(editor, context, editorState, chKey, (BranchNode)node);
|
|
||||||
}
|
|
||||||
// If this is a command node the user has entered a valid key sequence of a known command
|
|
||||||
else if (node instanceof CommandNode) {
|
|
||||||
handleCommandNode(editor, context, (CommandNode)node);
|
|
||||||
}
|
|
||||||
// If this is an argument node then the last keystroke was not part of the current command but should
|
|
||||||
// be the first keystroke of the argument of the current command
|
|
||||||
else if (node instanceof ArgumentNode) {
|
|
||||||
shouldRecord = handleArgumentNode(editor, key, context, editorState, (ArgumentNode)node);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (lastWasBS && lastChar != 0 && Options.getInstance().isSet("digraph")) {
|
|
||||||
char dig = VimPlugin.getDigraph().getDigraph(lastChar, key.getKeyChar());
|
|
||||||
key = KeyStroke.getKeyStroke(dig);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we are in insert/replace mode send this key in for processing
|
|
||||||
if (editorState.getMode() == CommandState.Mode.INSERT || editorState.getMode() == CommandState.Mode.REPLACE) {
|
|
||||||
if (!VimPlugin.getChange().processKey(editor, context, key)) {
|
|
||||||
shouldRecord = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (editorState.getMappingMode() == MappingMode.CMD_LINE) {
|
|
||||||
if (!VimPlugin.getProcess().processExKey(editor, key)) {
|
|
||||||
shouldRecord = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// If we get here then the user has entered an unrecognized series of keystrokes
|
|
||||||
else {
|
|
||||||
state = State.BAD_COMMAND;
|
|
||||||
}
|
|
||||||
|
|
||||||
lastChar = key.getKeyChar();
|
|
||||||
partialReset(editor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do we have a fully entered command at this point? If so, lets execute it
|
|
||||||
if (state == State.READY) {
|
|
||||||
executeCommand(editor, key, context, editorState);
|
|
||||||
}
|
|
||||||
else if (state == State.BAD_COMMAND) {
|
|
||||||
if (editorState.getMappingMode() == MappingMode.OP_PENDING) {
|
|
||||||
editorState.popState();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
VimPlugin.indicateError();
|
|
||||||
reset(editor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// We had some sort of error so reset the handler and let the user know (beep)
|
|
||||||
else if (state == State.ERROR) {
|
|
||||||
VimPlugin.indicateError();
|
|
||||||
fullReset(editor);
|
|
||||||
}
|
|
||||||
else if (isRecording && shouldRecord) {
|
|
||||||
VimPlugin.getRegister().recordKeyStroke(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handleKeyMapping(@NotNull final Editor editor, @NotNull final KeyStroke key,
|
|
||||||
@NotNull final DataContext context) {
|
|
||||||
final CommandState commandState = CommandState.getInstance(editor);
|
|
||||||
commandState.stopMappingTimer();
|
|
||||||
|
|
||||||
final List<KeyStroke> mappingKeys = commandState.getMappingKeys();
|
|
||||||
final List<KeyStroke> fromKeys = new ArrayList<KeyStroke>(mappingKeys);
|
|
||||||
fromKeys.add(key);
|
|
||||||
|
|
||||||
final MappingMode mappingMode = commandState.getMappingMode();
|
|
||||||
if (MappingMode.NVO.contains(mappingMode) && (state != State.NEW_COMMAND || currentArg != Argument.Type.NONE)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
final KeyMapping mapping = VimPlugin.getKey().getKeyMapping(mappingMode);
|
|
||||||
final MappingInfo currentMappingInfo = mapping.get(fromKeys);
|
|
||||||
final MappingInfo prevMappingInfo = mapping.get(mappingKeys);
|
|
||||||
final MappingInfo mappingInfo = currentMappingInfo != null ? currentMappingInfo : prevMappingInfo;
|
|
||||||
|
|
||||||
final Application application = ApplicationManager.getApplication();
|
|
||||||
|
|
||||||
if (mapping.isPrefix(fromKeys)) {
|
|
||||||
mappingKeys.add(key);
|
|
||||||
if (!application.isUnitTestMode() && Options.getInstance().isSet(Options.TIMEOUT)) {
|
|
||||||
commandState.startMappingTimer(actionEvent -> application.invokeLater(() -> {
|
|
||||||
mappingKeys.clear();
|
|
||||||
if (editor.isDisposed()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (KeyStroke keyStroke : fromKeys) {
|
|
||||||
handleKey(editor, keyStroke, new EditorDataContext(editor), false);
|
|
||||||
}
|
|
||||||
}, ModalityState.stateForComponent(editor.getComponent())));
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (mappingInfo != null) {
|
|
||||||
mappingKeys.clear();
|
|
||||||
final Runnable handleMappedKeys = new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (editor.isDisposed()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final List<KeyStroke> toKeys = mappingInfo.getToKeys();
|
|
||||||
final VimExtensionHandler extensionHandler = mappingInfo.getExtensionHandler();
|
|
||||||
final EditorDataContext currentContext = new EditorDataContext(editor);
|
|
||||||
if (toKeys != null) {
|
|
||||||
final boolean fromIsPrefix = isPrefix(mappingInfo.getFromKeys(), toKeys);
|
|
||||||
boolean first = true;
|
|
||||||
for (KeyStroke keyStroke : toKeys) {
|
|
||||||
final boolean recursive = mappingInfo.isRecursive() && !(first && fromIsPrefix);
|
|
||||||
handleKey(editor, keyStroke, currentContext, recursive);
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (extensionHandler != null) {
|
|
||||||
final CommandProcessor processor = CommandProcessor.getInstance();
|
|
||||||
processor.executeCommand(editor.getProject(),
|
|
||||||
() -> extensionHandler.execute(editor, context),
|
|
||||||
"Vim " + extensionHandler.getClass().getSimpleName(),
|
|
||||||
null);
|
|
||||||
}
|
|
||||||
if (prevMappingInfo != null) {
|
|
||||||
handleKey(editor, key, currentContext);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (application.isUnitTestMode()) {
|
|
||||||
handleMappedKeys.run();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
application.invokeLater(handleMappedKeys);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
final List<KeyStroke> unhandledKeys = new ArrayList<KeyStroke>(mappingKeys);
|
|
||||||
mappingKeys.clear();
|
|
||||||
for (KeyStroke keyStroke : unhandledKeys) {
|
|
||||||
handleKey(editor, keyStroke, context, false);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static <T> boolean isPrefix(@NotNull List<T> list1, @NotNull List<T> list2) {
|
|
||||||
if (list1.size() > list2.size()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
for (int i = 0; i < list1.size(); i++) {
|
|
||||||
if (!list1.get(i).equals(list2.get(i))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleEditorReset(@NotNull Editor editor, @NotNull KeyStroke key, @NotNull final DataContext context) {
|
|
||||||
if (state != State.COMMAND && count == 0 && currentArg == Argument.Type.NONE && currentCmd.size() == 0) {
|
|
||||||
RegisterGroup register = VimPlugin.getRegister();
|
|
||||||
if (register.getCurrentRegister() == register.getDefaultRegister()) {
|
|
||||||
if (key.getKeyCode() == KeyEvent.VK_ESCAPE) {
|
|
||||||
CommandProcessor.getInstance().executeCommand(editor.getProject(), new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
KeyHandler.executeAction("EditorEscape", context);
|
|
||||||
}
|
|
||||||
}, "", null);
|
|
||||||
}
|
|
||||||
VimPlugin.indicateError();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reset(editor);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isDeleteCommandCount(@NotNull KeyStroke key, @NotNull CommandState editorState) {
|
|
||||||
return (editorState.getMode() == CommandState.Mode.COMMAND || editorState.getMode() == CommandState.Mode.VISUAL) &&
|
|
||||||
state == State.NEW_COMMAND && currentArg != Argument.Type.CHARACTER && currentArg != Argument.Type.DIGRAPH &&
|
|
||||||
key.getKeyCode() == KeyEvent.VK_DELETE && count != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isCommandCount(@NotNull CommandState editorState, char chKey) {
|
|
||||||
return (editorState.getMode() == CommandState.Mode.COMMAND || editorState.getMode() == CommandState.Mode.VISUAL) &&
|
|
||||||
state == State.NEW_COMMAND && currentArg != Argument.Type.CHARACTER && currentArg != Argument.Type.DIGRAPH &&
|
|
||||||
Character.isDigit(chKey) &&
|
|
||||||
(count != 0 || chKey != '0');
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isEditorReset(@NotNull KeyStroke key, @NotNull CommandState editorState) {
|
|
||||||
return (editorState.getMode() == CommandState.Mode.COMMAND || state == State.COMMAND) &&
|
|
||||||
StringHelper.isCloseKeyStroke(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleCharArgument(@NotNull KeyStroke key, char chKey) {
|
|
||||||
// We are expecting a character argument - is this a regular character the user typed?
|
|
||||||
// Some special keys can be handled as character arguments - let's check for them here.
|
|
||||||
if (chKey == 0) {
|
|
||||||
switch (key.getKeyCode()) {
|
|
||||||
case KeyEvent.VK_TAB:
|
|
||||||
chKey = '\t';
|
|
||||||
break;
|
|
||||||
case KeyEvent.VK_ENTER:
|
|
||||||
chKey = '\n';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (chKey != 0) {
|
|
||||||
// Create the character argument, add it to the current command, and signal we are ready to process
|
|
||||||
// the command
|
|
||||||
Argument arg = new Argument(chKey);
|
|
||||||
Command cmd = currentCmd.peek();
|
|
||||||
cmd.setArgument(arg);
|
|
||||||
state = State.READY;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Oops - this isn't a valid character argument
|
|
||||||
state = State.BAD_COMMAND;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handleDigraph(@NotNull Editor editor, @NotNull KeyStroke key, @NotNull DataContext context,
|
|
||||||
@Nullable Node node) {
|
|
||||||
if (digraph == null && !(node instanceof CommandNode) && DigraphSequence.isDigraphStart(key)) {
|
|
||||||
digraph = new DigraphSequence();
|
|
||||||
}
|
|
||||||
if (digraph != null) {
|
|
||||||
DigraphSequence.DigraphResult res = digraph.processKey(key, editor);
|
|
||||||
switch (res.getResult()) {
|
|
||||||
case DigraphSequence.DigraphResult.RES_OK:
|
|
||||||
return true;
|
|
||||||
case DigraphSequence.DigraphResult.RES_BAD:
|
|
||||||
digraph = null;
|
|
||||||
return true;
|
|
||||||
case DigraphSequence.DigraphResult.RES_DONE:
|
|
||||||
if (currentArg == Argument.Type.DIGRAPH) {
|
|
||||||
currentArg = Argument.Type.CHARACTER;
|
|
||||||
}
|
|
||||||
digraph = null;
|
|
||||||
final KeyStroke stroke = res.getStroke();
|
|
||||||
if (stroke == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
handleKey(editor, stroke, context);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void executeCommand(@NotNull Editor editor, @NotNull KeyStroke key, @NotNull DataContext context,
|
|
||||||
@NotNull CommandState editorState) {
|
|
||||||
// Let's go through the command stack and merge it all into one command. At this time there should never
|
|
||||||
// be more than two commands on the stack - one is the actual command and the other would be a motion
|
|
||||||
// command argument needed by the first command
|
|
||||||
Command cmd = currentCmd.pop();
|
|
||||||
while (currentCmd.size() > 0) {
|
|
||||||
Command top = currentCmd.pop();
|
|
||||||
top.setArgument(new Argument(cmd));
|
|
||||||
cmd = top;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we have a command and a motion command argument, both could possibly have their own counts. We
|
|
||||||
// need to adjust the counts so the motion gets the product of both counts and the count associated with
|
|
||||||
// the command gets reset. Example 3c2w (change 2 words, three times) becomes c6w (change 6 words)
|
|
||||||
final Argument arg = cmd.getArgument();
|
|
||||||
if (arg != null && arg.getType() == Argument.Type.MOTION) {
|
|
||||||
final Command mot = arg.getMotion();
|
|
||||||
// If no count was entered for either command then nothing changes. If either had a count then
|
|
||||||
// the motion gets the product of both.
|
|
||||||
if (mot != null) {
|
|
||||||
int cnt = cmd.getRawCount() == 0 && mot.getRawCount() == 0 ? 0 : cmd.getCount() * mot.getCount();
|
|
||||||
mot.setCount(cnt);
|
|
||||||
}
|
|
||||||
cmd.setCount(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we were in "operator pending" mode, reset back to normal mode.
|
|
||||||
if (editorState.getMappingMode() == MappingMode.OP_PENDING) {
|
|
||||||
editorState.popState();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save off the command we are about to execute
|
|
||||||
editorState.setCommand(cmd);
|
|
||||||
|
|
||||||
lastWasBS = ((cmd.getFlags() & Command.FLAG_IS_BACKSPACE) != 0);
|
|
||||||
|
|
||||||
Project project = editor.getProject();
|
|
||||||
final Command.Type type = cmd.getType();
|
|
||||||
if (type.isWrite() && !editor.getDocument().isWritable()) {
|
|
||||||
VimPlugin.indicateError();
|
|
||||||
reset(editor);
|
|
||||||
}
|
|
||||||
if (ApplicationManager.getApplication().isDispatchThread()) {
|
|
||||||
Runnable action = new ActionRunner(editor, context, cmd, key);
|
|
||||||
String name = cmd.getAction().getTemplatePresentation().getText();
|
|
||||||
name = name != null ? "Vim " + name : "";
|
|
||||||
if (type.isWrite()) {
|
|
||||||
RunnableHelper.runWriteCommand(project, action, name, action);
|
|
||||||
}
|
|
||||||
else if (type.isRead()) {
|
|
||||||
RunnableHelper.runReadCommand(project, action, name, action);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
CommandProcessor.getInstance().executeCommand(project, action, name, action);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handleArgumentNode(@NotNull Editor editor, @NotNull KeyStroke key, @NotNull DataContext context,
|
|
||||||
@NotNull CommandState editorState, @NotNull ArgumentNode node) {
|
|
||||||
// Create a new command based on what the user has typed so far, excluding this keystroke.
|
|
||||||
Command cmd = new Command(count, node.getActionId(), node.getAction(), node.getCmdType(), node.getFlags());
|
|
||||||
cmd.setKeys(keys);
|
|
||||||
currentCmd.push(cmd);
|
|
||||||
// What type of argument does this command expect?
|
|
||||||
switch (node.getArgType()) {
|
|
||||||
case DIGRAPH:
|
|
||||||
//digraphState = 0;
|
|
||||||
digraph = new DigraphSequence();
|
|
||||||
// No break - fall through
|
|
||||||
case CHARACTER:
|
|
||||||
case MOTION:
|
|
||||||
state = State.NEW_COMMAND;
|
|
||||||
currentArg = node.getArgType();
|
|
||||||
// Is the current command an operator? If so set the state to only accept "operator pending"
|
|
||||||
// commands
|
|
||||||
if ((node.getFlags() & Command.FLAG_OP_PEND) != 0) {
|
|
||||||
editorState.pushState(editorState.getMode(), editorState.getSubMode(), MappingMode.OP_PENDING);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case EX_STRING:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Oops - we aren't expecting any other type of argument
|
|
||||||
state = State.ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the current keystroke is really the first character of an argument the user needs to enter,
|
|
||||||
// recursively go back and handle this keystroke again with all the state properly updated to
|
|
||||||
// handle the argument
|
|
||||||
if (currentArg != Argument.Type.NONE) {
|
|
||||||
partialReset(editor);
|
|
||||||
handleKey(editor, key, context);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleCommandNode(@NotNull Editor editor, @NotNull DataContext context, @NotNull CommandNode node) {
|
|
||||||
// If all does well we are ready to process this command
|
|
||||||
state = State.READY;
|
|
||||||
// Did we just get the completed sequence for a motion command argument?
|
|
||||||
if (currentArg == Argument.Type.MOTION) {
|
|
||||||
// We have been expecting a motion argument - is this one?
|
|
||||||
if (node.getCmdType() == Command.Type.MOTION) {
|
|
||||||
// Create the motion command and add it to the stack
|
|
||||||
Command cmd = new Command(count, node.getActionId(), node.getAction(), node.getCmdType(), node.getFlags());
|
|
||||||
cmd.setKeys(keys);
|
|
||||||
currentCmd.push(cmd);
|
|
||||||
}
|
|
||||||
else if (node.getCmdType() == Command.Type.RESET) {
|
|
||||||
currentCmd.clear();
|
|
||||||
Command cmd = new Command(1, node.getActionId(), node.getAction(), node.getCmdType(), node.getFlags());
|
|
||||||
cmd.setKeys(keys);
|
|
||||||
currentCmd.push(cmd);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Oops - this wasn't a motion command. The user goofed and typed something else
|
|
||||||
state = State.BAD_COMMAND;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (currentArg == Argument.Type.EX_STRING && (node.getFlags() & Command.FLAG_COMPLETE_EX) != 0) {
|
|
||||||
String text = VimPlugin.getProcess().endSearchCommand(editor, context);
|
|
||||||
Argument arg = new Argument(text);
|
|
||||||
Command cmd = currentCmd.peek();
|
|
||||||
cmd.setArgument(arg);
|
|
||||||
CommandState.getInstance(editor).popState();
|
|
||||||
}
|
|
||||||
// The user entered a valid command that doesn't take any arguments
|
|
||||||
else {
|
|
||||||
// Create the command and add it to the stack
|
|
||||||
Command cmd = new Command(count, node.getActionId(), node.getAction(), node.getCmdType(), node.getFlags());
|
|
||||||
cmd.setKeys(keys);
|
|
||||||
currentCmd.push(cmd);
|
|
||||||
|
|
||||||
// This is a sanity check that the command has a valid action. This should only fail if the
|
|
||||||
// programmer made a typo or forgot to add the action to the plugin.xml file
|
|
||||||
if (cmd.getAction() == null) {
|
|
||||||
state = State.ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleBranchNode(@NotNull Editor editor, @NotNull DataContext context, @NotNull CommandState editorState,
|
|
||||||
char key, @NotNull BranchNode node) {
|
|
||||||
// Flag that we aren't allowing any more count digits (unless it's OK)
|
|
||||||
if ((node.getFlags() & Command.FLAG_ALLOW_MID_COUNT) == 0) {
|
|
||||||
state = State.COMMAND;
|
|
||||||
}
|
|
||||||
editorState.setCurrentNode(node);
|
|
||||||
|
|
||||||
ArgumentNode arg = (ArgumentNode)((BranchNode)editorState.getCurrentNode()).getArgumentNode();
|
|
||||||
if (arg != null) {
|
|
||||||
if (currentArg == Argument.Type.MOTION && arg.getCmdType() != Command.Type.MOTION) {
|
|
||||||
editorState.popState();
|
|
||||||
state = State.BAD_COMMAND;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (editorState.isRecording() && (arg.getFlags() & Command.FLAG_NO_ARG_RECORDING) != 0) {
|
|
||||||
handleKey(editor, KeyStroke.getKeyStroke(' '), context);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arg.getArgType() == Argument.Type.EX_STRING) {
|
|
||||||
VimPlugin.getProcess().startSearchCommand(editor, context, count, key);
|
|
||||||
state = State.NEW_COMMAND;
|
|
||||||
currentArg = Argument.Type.EX_STRING;
|
|
||||||
editorState.pushState(CommandState.Mode.EX_ENTRY, CommandState.SubMode.NONE, MappingMode.CMD_LINE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute an action by name
|
|
||||||
*
|
|
||||||
* @param name The name of the action to execute
|
|
||||||
* @param context The context to run it in
|
|
||||||
*/
|
|
||||||
public static boolean executeAction(@NotNull String name, @NotNull DataContext context) {
|
|
||||||
ActionManager aMgr = ActionManager.getInstance();
|
|
||||||
AnAction action = aMgr.getAction(name);
|
|
||||||
return action != null && executeAction(action, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute an action
|
|
||||||
*
|
|
||||||
* @param action The action to execute
|
|
||||||
* @param context The context to run it in
|
|
||||||
*/
|
|
||||||
public static boolean executeAction(@NotNull AnAction action, @NotNull DataContext context) {
|
|
||||||
// Hopefully all the arguments are sufficient. So far they all seem to work OK.
|
|
||||||
// We don't have a specific InputEvent so that is null
|
|
||||||
// What is "place"? Leave it the empty string for now.
|
|
||||||
// Is the template presentation sufficient?
|
|
||||||
// What are the modifiers? Is zero OK?
|
|
||||||
final AnActionEvent event = new AnActionEvent(null, context, "", action.getTemplatePresentation(),
|
|
||||||
ActionManager.getInstance(), 0);
|
|
||||||
action.update(event);
|
|
||||||
if (event.getPresentation().isEnabled()) {
|
|
||||||
action.actionPerformed(event);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Partially resets the state of this handler. Resets the command count, clears the key list, resets the key tree
|
|
||||||
* node to the root for the current mode we are in.
|
|
||||||
*
|
|
||||||
* @param editor The editor to reset.
|
|
||||||
*/
|
|
||||||
private void partialReset(@Nullable Editor editor) {
|
|
||||||
count = 0;
|
|
||||||
keys = new ArrayList<KeyStroke>();
|
|
||||||
CommandState editorState = CommandState.getInstance(editor);
|
|
||||||
editorState.stopMappingTimer();
|
|
||||||
editorState.getMappingKeys().clear();
|
|
||||||
editorState.setCurrentNode(VimPlugin.getKey().getKeyRoot(editorState.getMappingMode()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resets the state of this handler. Does a partial reset then resets the mode, the command, and the argument
|
|
||||||
*
|
|
||||||
* @param editor The editor to reset.
|
|
||||||
*/
|
|
||||||
public void reset(@Nullable Editor editor) {
|
|
||||||
partialReset(editor);
|
|
||||||
state = State.NEW_COMMAND;
|
|
||||||
currentCmd.clear();
|
|
||||||
currentArg = Argument.Type.NONE;
|
|
||||||
digraph = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Completely resets the state of this handler. Resets the command mode to normal, resets, and clears the selected
|
|
||||||
* register.
|
|
||||||
*
|
|
||||||
* @param editor The editor to reset.
|
|
||||||
*/
|
|
||||||
public void fullReset(@Nullable Editor editor) {
|
|
||||||
VimPlugin.clearError();
|
|
||||||
CommandState.getInstance(editor).reset();
|
|
||||||
reset(editor);
|
|
||||||
lastChar = 0;
|
|
||||||
lastWasBS = false;
|
|
||||||
VimPlugin.getRegister().resetRegister();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This was used as an experiment to execute actions as a runnable.
|
|
||||||
*/
|
|
||||||
static class ActionRunner implements Runnable {
|
|
||||||
public ActionRunner(Editor editor, DataContext context, Command cmd, KeyStroke key) {
|
|
||||||
this.editor = editor;
|
|
||||||
this.context = context;
|
|
||||||
this.cmd = cmd;
|
|
||||||
this.key = key;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
CommandState editorState = CommandState.getInstance(editor);
|
|
||||||
boolean wasRecording = editorState.isRecording();
|
|
||||||
|
|
||||||
executeAction(cmd.getAction(), context);
|
|
||||||
if (editorState.getMode() == CommandState.Mode.INSERT || editorState.getMode() == CommandState.Mode.REPLACE) {
|
|
||||||
VimPlugin.getChange().processCommand(editor, cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now that the command has been executed let's clean up a few things.
|
|
||||||
|
|
||||||
// By default the "empty" register is used by all commands so we want to reset whatever the last register
|
|
||||||
// selected by the user was to the empty register - unless we just executed the "select register" command.
|
|
||||||
if (cmd.getType() != Command.Type.SELECT_REGISTER) {
|
|
||||||
VimPlugin.getRegister().resetRegister();
|
|
||||||
}
|
|
||||||
|
|
||||||
// If, at this point, we are not in insert, replace, or visual modes, we need to restore the previous
|
|
||||||
// mode we were in. This handles commands in those modes that temporarily allow us to execute normal
|
|
||||||
// mode commands. An exception is if this command should leave us in the temporary mode such as
|
|
||||||
// "select register"
|
|
||||||
if (editorState.getSubMode() == CommandState.SubMode.SINGLE_COMMAND &&
|
|
||||||
(cmd.getFlags() & Command.FLAG_EXPECT_MORE) == 0) {
|
|
||||||
editorState.popState();
|
|
||||||
}
|
|
||||||
|
|
||||||
KeyHandler.getInstance().reset(editor);
|
|
||||||
|
|
||||||
if (wasRecording && editorState.isRecording()) {
|
|
||||||
VimPlugin.getRegister().recordKeyStroke(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Editor editor;
|
|
||||||
private final DataContext context;
|
|
||||||
private final Command cmd;
|
|
||||||
private final KeyStroke key;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static enum State {
|
|
||||||
NEW_COMMAND,
|
|
||||||
COMMAND,
|
|
||||||
READY,
|
|
||||||
ERROR,
|
|
||||||
BAD_COMMAND
|
|
||||||
}
|
|
||||||
|
|
||||||
private int count;
|
|
||||||
private List<KeyStroke> keys;
|
|
||||||
private State state;
|
|
||||||
@NotNull private final Stack<Command> currentCmd = new Stack<Command>();
|
|
||||||
@NotNull private Argument.Type currentArg;
|
|
||||||
private TypedActionHandler origHandler;
|
|
||||||
@Nullable private DigraphSequence digraph = null;
|
|
||||||
private char lastChar;
|
|
||||||
private boolean lastWasBS;
|
|
||||||
|
|
||||||
private static KeyHandler instance;
|
|
||||||
}
|
|
||||||
@@ -1,772 +0,0 @@
|
|||||||
/*
|
|
||||||
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
|
||||||
* Copyright (C) 2003-2016 The IdeaVim authors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
import com.intellij.openapi.actionSystem.AnAction;
|
|
||||||
import com.intellij.openapi.actionSystem.ex.ActionManagerEx;
|
|
||||||
import com.maddyhome.idea.vim.action.VimCommandAction;
|
|
||||||
import com.maddyhome.idea.vim.command.Argument;
|
|
||||||
import com.maddyhome.idea.vim.command.Command;
|
|
||||||
import com.maddyhome.idea.vim.command.MappingMode;
|
|
||||||
import com.maddyhome.idea.vim.group.KeyGroup;
|
|
||||||
import com.maddyhome.idea.vim.key.Shortcut;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
|
|
||||||
public class RegisterActions {
|
|
||||||
/**
|
|
||||||
* Register all the key/action mappings for the plugin.
|
|
||||||
*/
|
|
||||||
public static void registerActions() {
|
|
||||||
registerVimCommandActions();
|
|
||||||
|
|
||||||
registerInsertModeActions();
|
|
||||||
registerNormalModeActions();
|
|
||||||
registerNVOModesActions();
|
|
||||||
registerCommandLineActions();
|
|
||||||
registerVariousModesActions();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void registerVimCommandActions() {
|
|
||||||
final ActionManagerEx manager = ActionManagerEx.getInstanceEx();
|
|
||||||
for (String actionId : manager.getPluginActions(VimPlugin.getPluginId())) {
|
|
||||||
final AnAction action = manager.getAction(actionId);
|
|
||||||
if (action instanceof VimCommandAction) {
|
|
||||||
VimPlugin.getKey().registerCommandAction((VimCommandAction)action, actionId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void registerVariousModesActions() {
|
|
||||||
final KeyGroup parser = VimPlugin.getKey();
|
|
||||||
parser.registerAction(MappingMode.NV, "VimVisualToggleLineMode", Command.Type.OTHER_READONLY, Command.FLAG_MOT_LINEWISE,
|
|
||||||
new Shortcut('V'));
|
|
||||||
parser.registerAction(MappingMode.NV, "VimVisualToggleBlockMode", Command.Type.OTHER_READONLY,
|
|
||||||
Command.FLAG_MOT_BLOCKWISE,
|
|
||||||
new Shortcut[]{new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK))}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.NV, "VimMotionMark", Command.Type.OTHER_READONLY, new Shortcut('m'),
|
|
||||||
Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.NV, "VimGotoDeclaration", Command.Type.OTHER_READONLY, Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut[]{new Shortcut("gD"), new Shortcut("gd"),
|
|
||||||
// TODO: <C-]> is a tag command similar to gD, the tag stack is not implemented
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, KeyEvent.CTRL_MASK)),}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.NV, "VimFileGetLocationInfo", Command.Type.OTHER_READONLY, new Shortcut(
|
|
||||||
new KeyStroke[]{KeyStroke.getKeyStroke('g'),
|
|
||||||
KeyStroke.getKeyStroke(KeyEvent.VK_G, KeyEvent.CTRL_MASK)})
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.NV, "CollapseAllRegions", Command.Type.OTHER_READONLY, new Shortcut("zM"));
|
|
||||||
parser.registerAction(MappingMode.NV, "CollapseRegion", Command.Type.OTHER_READONLY, new Shortcut("zc"));
|
|
||||||
parser.registerAction(MappingMode.NV, "CollapseRegionRecursively", Command.Type.OTHER_READONLY, new Shortcut("zC"));
|
|
||||||
parser.registerAction(MappingMode.NV, "ExpandAllRegions", Command.Type.OTHER_READONLY, new Shortcut("zR"));
|
|
||||||
parser.registerAction(MappingMode.NV, "ExpandRegion", Command.Type.OTHER_READONLY, new Shortcut("zo"));
|
|
||||||
parser.registerAction(MappingMode.NV, "ExpandRegionRecursively", Command.Type.OTHER_READONLY, new Shortcut("zO"));
|
|
||||||
parser.registerAction(MappingMode.NV, "VimToggleRecording",
|
|
||||||
Command.Type.OTHER_READONLY,
|
|
||||||
Command.FLAG_NO_ARG_RECORDING,
|
|
||||||
new Shortcut('q'), Argument.Type.CHARACTER);
|
|
||||||
|
|
||||||
// Text Object Actions for Visual and Operator Pending Modes
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionGotoFileMark", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP, new Shortcut('`'),
|
|
||||||
Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionGotoFileMarkLine", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP, new Shortcut('\''),
|
|
||||||
Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionGotoFileMark", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE,
|
|
||||||
new Shortcut("g`"), Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionGotoFileMarkLine", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE,
|
|
||||||
new Shortcut("g'"), Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionTextOuterWord", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE, new Shortcut("aw"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionTextOuterBigWord", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE, new Shortcut("aW"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionTextInnerWord", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE, new Shortcut("iw"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionTextInnerBigWord", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE, new Shortcut("iW"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerParagraph", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_LINEWISE | Command.FLAG_TEXT_BLOCK, new Shortcut("ip"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterParagraph", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_LINEWISE | Command.FLAG_TEXT_BLOCK, new Shortcut("ap"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerSentence",
|
|
||||||
Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut("is"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterSentence", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK, new Shortcut("as"));
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockAngle", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("i<"), new Shortcut("i>")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockBrace", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("iB"), new Shortcut("i{"), new Shortcut("i}")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockBracket", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("i["), new Shortcut("i]")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockParen", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("ib"), new Shortcut("i("), new Shortcut("i)")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockDoubleQuote", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("i\""),}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockSingleQuote", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("i'"),}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockBackQuote", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("i`"),}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockAngle",
|
|
||||||
Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK, new Shortcut[]{
|
|
||||||
new Shortcut("a<"),
|
|
||||||
new Shortcut("a>")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionInnerBlockTag", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("it")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockBrace", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("aB"), new Shortcut("a{"), new Shortcut("a}")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockBracket", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("a["), new Shortcut("a]")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockParen", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("ab"), new Shortcut("a("), new Shortcut("a)")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockDoubleQuote", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("a\""),}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockSingleQuote", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("a'"),}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockBackQuote", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK, new Shortcut[]{
|
|
||||||
new Shortcut("a`"),
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.VO, "VimMotionOuterBlockTag", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_CHARACTERWISE | Command.FLAG_MOT_INCLUSIVE | Command.FLAG_TEXT_BLOCK,
|
|
||||||
new Shortcut[]{new Shortcut("at")}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.NO, "VimResetMode", Command.Type.RESET, new Shortcut(new KeyStroke[]{
|
|
||||||
KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH, KeyEvent.CTRL_MASK),
|
|
||||||
KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK)
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void registerCommandLineActions() {
|
|
||||||
final KeyGroup parser = VimPlugin.getKey();
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.C, "VimProcessExEntry", Command.Type.OTHER_READ_WRITE, Command.FLAG_COMPLETE_EX,
|
|
||||||
new Shortcut[]{new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_M, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke((char)0x0a)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke((char)0x0d))});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register normal, visual, operator pending modes actions.
|
|
||||||
*/
|
|
||||||
private static void registerNVOModesActions() {
|
|
||||||
final KeyGroup parser = VimPlugin.getKey();
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimCopySelectRegister", Command.Type.SELECT_REGISTER, Command.FLAG_EXPECT_MORE,
|
|
||||||
new Shortcut('"'), Argument.Type.CHARACTER);
|
|
||||||
|
|
||||||
// Motion Actions
|
|
||||||
// TODO - add ['
|
|
||||||
// TODO - add [`
|
|
||||||
// TODO - add ]'
|
|
||||||
// TODO - add ]`
|
|
||||||
// TODO - add zj
|
|
||||||
// TODO - add zk
|
|
||||||
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionNextTab", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("gt"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionPreviousTab", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("gT"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionCamelEndLeft", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("]b"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionCamelEndRight", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("]w"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionCamelLeft", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE,
|
|
||||||
new Shortcut("[b"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionCamelRight", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE,
|
|
||||||
new Shortcut("[w"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionColumn", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE,
|
|
||||||
new Shortcut('|'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionDown", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE, new Shortcut[]{
|
|
||||||
new Shortcut('j'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK)),
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionDown", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut("gj"),
|
|
||||||
new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke('g'), KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)})
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionDownFirstNonSpace", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE, new Shortcut[]{
|
|
||||||
new Shortcut('+'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_M, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionDownLess1FirstNonSpace", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE,
|
|
||||||
new Shortcut('_'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionFirstColumn", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('0'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionFirstScreenColumn", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut("g0"),
|
|
||||||
new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke('g'), KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0)})
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionFirstNonSpace", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('^')
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionFirstScreenNonSpace", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut("g^")
|
|
||||||
});
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimMotionFirstScreenLine", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut[]{
|
|
||||||
new Shortcut('H')
|
|
||||||
});
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimMotionGotoLineFirst", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut[]{
|
|
||||||
new Shortcut("gg"),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimMotionGotoLineLast", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('G'));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimMotionGotoLineLastEnd", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_END, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLastColumn", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('$'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_END, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLastScreenColumn", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut("g$"),
|
|
||||||
new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke('g'), KeyStroke.getKeyStroke(KeyEvent.VK_END, 0)})
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLastMatchChar", Command.Type.MOTION,
|
|
||||||
new Shortcut(';'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLastMatchCharReverse", Command.Type.MOTION,
|
|
||||||
new Shortcut(','));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLastNonSpace", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("g_"));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimMotionLastScreenLine", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('L'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLeft", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('h'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLeftMatchChar", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_ALLOW_DIGRAPH,
|
|
||||||
new Shortcut('F'), Argument.Type.DIGRAPH);
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLeftTillMatchChar", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_ALLOW_DIGRAPH,
|
|
||||||
new Shortcut('T'), Argument.Type.DIGRAPH);
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionLeftWrap", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_H, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionMiddleColumn", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("gm"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionMiddleScreenLine", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('M'));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimMotionNthCharacter", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("go"));
|
|
||||||
// This represents two commands and one is linewise and the other is inclusive - the handler will fix it
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionPercentOrMatch", Command.Type.MOTION, Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('%'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionRight", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('l'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionRightMatchChar", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_INCLUSIVE | Command.FLAG_ALLOW_DIGRAPH,
|
|
||||||
new Shortcut('f'), Argument.Type.DIGRAPH);
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionRightTillMatchChar", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_INCLUSIVE | Command.FLAG_ALLOW_DIGRAPH,
|
|
||||||
new Shortcut('t'), Argument.Type.DIGRAPH);
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionRightWrap", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE,
|
|
||||||
new Shortcut(' '));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollFirstScreenLine", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("zt")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollFirstScreenColumn", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("zs")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollFirstScreenLineStart", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke('z'), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)})
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollFirstScreenLinePageStart", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("z+")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollHalfPageDown", Command.Type.OTHER_READONLY, Command.FLAG_IGNORE_SCROLL_JUMP,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_D, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollHalfPageUp", Command.Type.OTHER_READONLY, Command.FLAG_IGNORE_SCROLL_JUMP,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_U, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollLastScreenLine", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("zb")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollLastScreenColumn", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("ze")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollLastScreenLineStart", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("z-")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollLastScreenLinePageStart", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("z^")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollLineDown", Command.Type.OTHER_READONLY,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_E, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollLineUp", Command.Type.OTHER_READONLY,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_Y, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollMiddleScreenLine", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("zz")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollMiddleScreenLineStart", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut("z.")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollColumnLeft", Command.Type.OTHER_READONLY, Command.FLAG_IGNORE_SIDE_SCROLL_JUMP,
|
|
||||||
new Shortcut[]{
|
|
||||||
new Shortcut("zl"),
|
|
||||||
new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke('z'), KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0)})
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollColumnRight", Command.Type.OTHER_READONLY, Command.FLAG_IGNORE_SIDE_SCROLL_JUMP,
|
|
||||||
new Shortcut[]{
|
|
||||||
new Shortcut("zh"),
|
|
||||||
new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke('z'), KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0)})
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollPageDown", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionScrollPageUp", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionUp", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE, new Shortcut[]{
|
|
||||||
new Shortcut('k'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0)),
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionUp", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut("gk"),
|
|
||||||
new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke('g'), KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0)})
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionUpFirstNonSpace", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE,
|
|
||||||
new Shortcut('-'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionWordEndLeft", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("ge"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionWordEndRight", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut('e'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionWordLeft", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('b'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, KeyEvent.SHIFT_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionWordRight", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('w'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.SHIFT_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionBigWordEndLeft", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut("gE"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionBigWordEndRight", Command.Type.MOTION, Command.FLAG_MOT_INCLUSIVE,
|
|
||||||
new Shortcut('E'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionBigWordLeft", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('B'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionBigWordRight", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE, new Shortcut[]{
|
|
||||||
new Shortcut('W'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSentenceStartPrevious", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('('));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSentenceStartNext", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut(')'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSentenceEndPrevious", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("g("));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSentenceEndNext", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("g)"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionParagraphPrevious", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('{'));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimMotionParagraphNext", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('}'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionUnmatchedBraceOpen", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("[{"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionUnmatchedBraceClose", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("]}"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionUnmatchedParenOpen", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("[("));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionUnmatchedParenClose", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("])"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSectionBackwardEnd", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("[]"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSectionBackwardStart", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("[["));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSectionForwardEnd", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("]]"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionSectionForwardStart", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("]["));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionMethodBackwardEnd", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("[M"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionMethodBackwardStart", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("[m"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionMethodForwardEnd", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("]M"));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimMotionMethodForwardStart", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("]m"));
|
|
||||||
|
|
||||||
// Misc Actions
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimSearchFwdEntry", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SEARCH_FWD | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('/'), Argument.Type.EX_STRING);
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimSearchRevEntry", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SEARCH_REV | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('?'), Argument.Type.EX_STRING);
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimSearchAgainNext", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('n'));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimSearchAgainPrevious", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('N'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimExEntry", Command.Type.OTHER_READ_WRITE,
|
|
||||||
new Shortcut(':'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimSearchWholeWordForward", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('*'));
|
|
||||||
parser.registerAction(MappingMode.NVO, "VimSearchWholeWordBackward", Command.Type.MOTION,
|
|
||||||
Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('#'));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimSearchWordForward", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("g*"));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.NVO, "VimSearchWordBackward", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut("g#"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void registerNormalModeActions() {
|
|
||||||
final KeyGroup parser = VimPlugin.getKey();
|
|
||||||
// Copy/Paste Actions
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyPutTextBeforeCursor", Command.Type.PASTE,
|
|
||||||
new Shortcut('P'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyPutTextAfterCursor", Command.Type.PASTE,
|
|
||||||
new Shortcut('p'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyPutTextBeforeCursorMoveCursor", Command.Type.PASTE,
|
|
||||||
new Shortcut("gP"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyPutTextAfterCursorMoveCursor", Command.Type.PASTE,
|
|
||||||
new Shortcut("gp"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyPutTextBeforeCursorNoIndent", Command.Type.PASTE, new Shortcut[]{
|
|
||||||
new Shortcut("[P"),
|
|
||||||
new Shortcut("]P"),
|
|
||||||
new Shortcut("[p")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyPutTextAfterCursorNoIndent", Command.Type.PASTE, new Shortcut[]{
|
|
||||||
new Shortcut("]p")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyYankLine", Command.Type.COPY,
|
|
||||||
new Shortcut('Y'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyYankLine", Command.Type.COPY, Command.FLAG_ALLOW_MID_COUNT,
|
|
||||||
new Shortcut("yy"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimCopyYankMotion", Command.Type.COPY, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut('y'), Argument.Type.MOTION);
|
|
||||||
|
|
||||||
// Insert/Replace/Change Actions
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeCaseLowerMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut("gu"), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeCaseToggleCharacter", Command.Type.CHANGE,
|
|
||||||
new Shortcut('~'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeCaseToggleMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut("g~"), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeCaseUpperMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut("gU"), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeCharacter", Command.Type.CHANGE, Command.FLAG_ALLOW_DIGRAPH,
|
|
||||||
new Shortcut('r'), Argument.Type.DIGRAPH);
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.N, "VimChangeCharacters", Command.Type.CHANGE, Command.FLAG_NO_REPEAT | Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('s'));
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.N, "VimChangeEndOfLine", Command.Type.CHANGE, Command.FLAG_NO_REPEAT | Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('C'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeLine", Command.Type.CHANGE,
|
|
||||||
Command.FLAG_NO_REPEAT | Command.FLAG_ALLOW_MID_COUNT | Command.FLAG_MULTIKEY_UNDO, new Shortcut[]{
|
|
||||||
new Shortcut("cc"),
|
|
||||||
new Shortcut('S')
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeNumberInc", Command.Type.CHANGE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeNumberDec", Command.Type.CHANGE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND | Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('c'), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimChangeReplace", Command.Type.CHANGE, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('R'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteCharacter", Command.Type.DELETE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteCharacterLeft", Command.Type.DELETE,
|
|
||||||
new Shortcut('X'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteCharacterRight", Command.Type.DELETE,
|
|
||||||
new Shortcut('x'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteEndOfLine", Command.Type.DELETE,
|
|
||||||
new Shortcut('D'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteJoinLines", Command.Type.DELETE,
|
|
||||||
new Shortcut("gJ"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteJoinLinesSpaces", Command.Type.DELETE,
|
|
||||||
new Shortcut('J'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteLine", Command.Type.DELETE, Command.FLAG_ALLOW_MID_COUNT,
|
|
||||||
new Shortcut("dd"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimDeleteMotion", Command.Type.DELETE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut('d'), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimFilterCountLines", Command.Type.CHANGE,
|
|
||||||
new Shortcut("!!"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimFilterMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut('!'), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimInsertAfterCursor", Command.Type.INSERT, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('a'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimInsertAfterLineEnd", Command.Type.INSERT, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('A'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimInsertAtPreviousInsert", Command.Type.INSERT, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut("gi"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimInsertBeforeFirstNonBlank", Command.Type.INSERT, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('I'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimInsertLineStart", Command.Type.INSERT, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut("gI"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimInsertNewLineAbove", Command.Type.INSERT, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('O'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimInsertNewLineBelow", Command.Type.INSERT, Command.FLAG_MULTIKEY_UNDO,
|
|
||||||
new Shortcut('o'));
|
|
||||||
// Motion Actions
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.N, "VimMotionGotoMark", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('`'), Argument.Type.CHARACTER);
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.N, "VimMotionGotoMarkLine", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE | Command.FLAG_SAVE_JUMP,
|
|
||||||
new Shortcut('\''), Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.N, "VimMotionGotoMark", Command.Type.MOTION, Command.FLAG_MOT_EXCLUSIVE,
|
|
||||||
new Shortcut("g`"), Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.N, "VimMotionGotoMarkLine", Command.Type.MOTION, Command.FLAG_MOT_LINEWISE,
|
|
||||||
new Shortcut("g'"), Argument.Type.CHARACTER);
|
|
||||||
// Misc Actions
|
|
||||||
parser.registerAction(MappingMode.N, "VimLastSearchReplace", Command.Type.OTHER_WRITABLE,
|
|
||||||
new Shortcut('&'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimLastGlobalSearchReplace", Command.Type.OTHER_WRITABLE,
|
|
||||||
new Shortcut("g&"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimRepeatChange", Command.Type.OTHER_WRITABLE,
|
|
||||||
new Shortcut('.'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimRepeatExCommand", Command.Type.OTHER_WRITABLE,
|
|
||||||
new Shortcut("@:"));
|
|
||||||
parser.registerAction(MappingMode.N, "QuickJavaDoc", Command.Type.OTHER_READONLY,
|
|
||||||
new Shortcut('K'));
|
|
||||||
parser.registerAction(MappingMode.N, "VimRedo", Command.Type.OTHER_SELF_SYNCHRONIZED,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_R, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.N, "VimUndo", Command.Type.OTHER_SELF_SYNCHRONIZED, new Shortcut[]{
|
|
||||||
new Shortcut('u'),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UNDO, 0))
|
|
||||||
});
|
|
||||||
|
|
||||||
// File Actions
|
|
||||||
parser.registerAction(MappingMode.N, "VimFileSaveClose", Command.Type.OTHER_WRITABLE, new Shortcut[]{
|
|
||||||
new Shortcut("ZQ"),
|
|
||||||
new Shortcut("ZZ")
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.N, "VimFilePrevious", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_6, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_CIRCUMFLEX, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
|
|
||||||
// Shift Actions
|
|
||||||
parser.registerAction(MappingMode.N, "VimAutoIndentLines", Command.Type.CHANGE,
|
|
||||||
new Shortcut("=="));
|
|
||||||
parser.registerAction(MappingMode.N, "VimAutoIndentMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut('='), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimShiftLeftLines", Command.Type.CHANGE,
|
|
||||||
new Shortcut("<<"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimShiftLeftMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut('<'), Argument.Type.MOTION);
|
|
||||||
parser.registerAction(MappingMode.N, "VimShiftRightLines", Command.Type.CHANGE,
|
|
||||||
new Shortcut(">>"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimShiftRightMotion", Command.Type.CHANGE, Command.FLAG_OP_PEND,
|
|
||||||
new Shortcut('>'), Argument.Type.MOTION);
|
|
||||||
|
|
||||||
// Jump Actions
|
|
||||||
|
|
||||||
parser.registerAction(MappingMode.N, "VimMotionJumpNext", Command.Type.OTHER_READONLY, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_I, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.N, "VimMotionJumpPrevious", Command.Type.OTHER_READONLY,
|
|
||||||
new Shortcut[] {
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK)),
|
|
||||||
// TODO: <C-T> is a tag command similar to <C-O>, the tag stack is not implemented
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_T, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
|
|
||||||
parser.registerAction(MappingMode.N, "VimFileGetAscii", Command.Type.OTHER_READONLY,
|
|
||||||
new Shortcut("ga"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimFileGetHex", Command.Type.OTHER_READONLY,
|
|
||||||
new Shortcut("g8"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimFileGetFileInfo", Command.Type.OTHER_READONLY,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_G, KeyEvent.CTRL_MASK)));
|
|
||||||
|
|
||||||
// Macro Actions
|
|
||||||
parser.registerAction(MappingMode.N, "VimPlaybackLastRegister", Command.Type.OTHER_WRITABLE,
|
|
||||||
new Shortcut("@@"));
|
|
||||||
parser.registerAction(MappingMode.N, "VimPlaybackRegister", Command.Type.OTHER_WRITABLE,
|
|
||||||
new Shortcut('@'), Argument.Type.CHARACTER);
|
|
||||||
// TODO - support for :map macros
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void registerInsertModeActions() {
|
|
||||||
final KeyGroup parser = VimPlugin.getKey();
|
|
||||||
// Other insert actions
|
|
||||||
parser
|
|
||||||
.registerAction(MappingMode.I, "EditorBackSpace", Command.Type.INSERT, Command.FLAG_IS_BACKSPACE,
|
|
||||||
new Shortcut[]{new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_H, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0))}
|
|
||||||
);
|
|
||||||
parser.registerAction(MappingMode.I, "EditorDelete", Command.Type.INSERT, Command.FLAG_SAVE_STROKE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)));
|
|
||||||
parser.registerAction(MappingMode.I, "EditorDown", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_DOWN, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "EditorTab", Command.Type.INSERT, Command.FLAG_SAVE_STROKE, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_I, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "EditorUp", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_UP, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertCharacterAboveCursor", Command.Type.INSERT,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_Y, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertCharacterBelowCursor", Command.Type.INSERT,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_E, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertDeleteInsertedText", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_U, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertDeletePreviousWord", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertEnter", Command.Type.INSERT, Command.FLAG_SAVE_STROKE, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_M, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertPreviousInsert", Command.Type.INSERT,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertPreviousInsertExit", Command.Type.INSERT, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_2, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_2, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_AT, KeyEvent.CTRL_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertRegister", Command.Type.INSERT,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_R, KeyEvent.CTRL_MASK)),
|
|
||||||
Argument.Type.CHARACTER);
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertReplaceToggle", Command.Type.INSERT, Command.FLAG_SAVE_STROKE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, 0)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimInsertSingleCommand", Command.Type.INSERT,
|
|
||||||
Command.FLAG_CLEAR_STROKES | Command.FLAG_EXPECT_MORE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionFirstColumn", Command.Type.INSERT, Command.FLAG_SAVE_STROKE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionGotoLineFirst", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionGotoLineLastEnd", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_END, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionLastColumn", Command.Type.INSERT, Command.FLAG_SAVE_STROKE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_END, 0)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionLeft", Command.Type.INSERT, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_LEFT, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionRight", Command.Type.INSERT, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_RIGHT, 0))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionScrollPageUp", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_UP, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_UP, KeyEvent.SHIFT_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_UP, KeyEvent.SHIFT_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionScrollPageDown", Command.Type.INSERT, Command.FLAG_CLEAR_STROKES, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_DOWN, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, KeyEvent.SHIFT_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_DOWN, KeyEvent.SHIFT_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionWordLeft", Command.Type.INSERT, Command.FLAG_SAVE_STROKE, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_LEFT, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, KeyEvent.SHIFT_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_LEFT, KeyEvent.SHIFT_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimMotionWordRight", Command.Type.INSERT, Command.FLAG_SAVE_STROKE, new Shortcut[]{
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_RIGHT, KeyEvent.CTRL_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.SHIFT_MASK)),
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_KP_RIGHT, KeyEvent.SHIFT_MASK))
|
|
||||||
});
|
|
||||||
parser.registerAction(MappingMode.I, "VimShiftLeftLines", Command.Type.INSERT, Command.FLAG_SAVE_STROKE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_D, KeyEvent.CTRL_MASK)));
|
|
||||||
parser.registerAction(MappingMode.I, "VimShiftRightLines", Command.Type.INSERT, Command.FLAG_SAVE_STROKE,
|
|
||||||
new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_T, KeyEvent.CTRL_MASK)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||