Compare commits
2896 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
132f52785c | ||
|
|
0c1a08b231 | ||
|
|
b88f13ee32 | ||
|
|
c556ec2001 | ||
|
|
d49683ab2f | ||
|
|
810c3cd561 | ||
|
|
b909157f4b | ||
|
|
21c1232ba6 | ||
|
|
ff61a42670 | ||
|
|
f160d855c0 | ||
|
|
51685a2094 | ||
|
|
487c71ec15 | ||
|
|
39aa60850d | ||
|
|
872921e6b7 | ||
|
|
89788df95c | ||
|
|
6ccd8ed0b8 | ||
|
|
aa7e3bfa69 | ||
|
|
00154f2b9f | ||
|
|
531a9c28ae | ||
|
|
63be2c28e9 | ||
|
|
56c4e3e31f | ||
|
|
ef2497cadc | ||
|
|
95f56a8869 | ||
|
|
f5b1112304 | ||
|
|
333a5be30b | ||
|
|
6c9e697892 | ||
|
|
7663eb531e | ||
|
|
5e80e402ee | ||
|
|
33499fe945 | ||
|
|
2882b638e5 | ||
|
|
5529bf284a | ||
|
|
9e2400de69 | ||
|
|
81c92cda79 | ||
|
|
6506935d03 | ||
|
|
b6be26231f | ||
|
|
a96ba9f717 | ||
|
|
173f570230 | ||
|
|
57dcaba367 | ||
|
|
d9f7955356 | ||
|
|
9cf264998f | ||
|
|
0dc67ae467 | ||
|
|
75c1c0b839 | ||
|
|
1feac95069 | ||
|
|
ed3f87e6a8 | ||
|
|
43662318be | ||
|
|
785d1a04da | ||
|
|
cc76c7f0f3 | ||
|
|
57741cd5ce | ||
|
|
69bd71148c | ||
|
|
528e363d64 | ||
|
|
bd772daee0 | ||
|
|
23fa55ea11 | ||
|
|
0a052e7bb3 | ||
|
|
60a96e9542 | ||
|
|
f3f9abef0c | ||
|
|
58fc34d9f7 | ||
|
|
6fdd769d0f | ||
|
|
b54384bb33 | ||
|
|
c57f98591a | ||
|
|
7dcacd3b01 | ||
|
|
2225033b7c | ||
|
|
7c5194fbaa | ||
|
|
cded76d1a2 | ||
|
|
361284fe06 | ||
|
|
aa3e55cacc | ||
|
|
73987eaf23 | ||
|
|
06058a45c0 | ||
|
|
d46cab6fc8 | ||
|
|
77bd800d95 | ||
|
|
831373c292 | ||
|
|
9c5e5e117a | ||
|
|
346ada2eff | ||
|
|
485ff37b22 | ||
|
|
47ef6f4844 | ||
|
|
cd288ec125 | ||
|
|
bde2eb786d | ||
|
|
b6896e28c8 | ||
|
|
15dc233a86 | ||
|
|
b070549eca | ||
|
|
71a3df028b | ||
|
|
73ef8c821b | ||
|
|
bbd314b6df | ||
|
|
5764fe7555 | ||
|
|
44cc17cb84 | ||
|
|
dba8879576 | ||
|
|
1deb48bf60 | ||
|
|
11174b8581 | ||
|
|
bd35f71c6a | ||
|
|
d29ae6a64d | ||
|
|
5b69b9beae | ||
|
|
0c78741642 | ||
|
|
a9440f41a7 | ||
|
|
8fc4306d76 | ||
|
|
371d7385ed | ||
|
|
2cacdbaf00 | ||
|
|
3041fe7c3b | ||
|
|
436e96f734 | ||
|
|
67a9e1f8c5 | ||
|
|
fc0a950af1 | ||
|
|
e1872387d4 | ||
|
|
ac10b96280 | ||
|
|
d5313ebbda | ||
|
|
c3d1e5c58c | ||
|
|
478c0cd443 | ||
|
|
2be2d861c9 | ||
|
|
9731980fe6 | ||
|
|
392f8e5e60 | ||
|
|
a7e1275b5f | ||
|
|
29a6d47cca | ||
|
|
65483dd34a | ||
|
|
3b290fe356 | ||
|
|
2648913b61 | ||
|
|
d386e49bd5 | ||
|
|
f3c66d131e | ||
|
|
c1b4671435 | ||
|
|
cbeb0d229b | ||
|
|
7f8db50017 | ||
|
|
0c5ca37412 | ||
|
|
602071a440 | ||
|
|
7061b58940 | ||
|
|
76c2c54e5a | ||
|
|
f256da8a16 | ||
|
|
ffcf7d0630 | ||
|
|
b80205200c | ||
|
|
40d0f6c1e2 | ||
|
|
bddd4db2b2 | ||
|
|
7ee18e81c7 | ||
|
|
700240d441 | ||
|
|
539d38259c | ||
|
|
2efb0dfb17 | ||
|
|
f38bf65656 | ||
|
|
947d32d905 | ||
|
|
56569966a6 | ||
|
|
6092535041 | ||
|
|
d965eb0d7e | ||
|
|
44a53ce28e | ||
|
|
a228f32f34 | ||
|
|
2082981bd6 | ||
|
|
994ad0b06c | ||
|
|
3c59ee79f6 | ||
|
|
b3ebd7c29d | ||
|
|
fcc2355037 | ||
|
|
76a5c39fdc | ||
|
|
f4ec448d75 | ||
|
|
e38390f8a1 | ||
|
|
2990389ea5 | ||
|
|
249dfb166d | ||
|
|
4c06d21396 | ||
|
|
a046f2975f | ||
|
|
0bf217ef36 | ||
|
|
f2712d8cfb | ||
|
|
bb32e7adb4 | ||
|
|
cadaec585b | ||
|
|
11c2f5014f | ||
|
|
2326489658 | ||
|
|
01ec08e20b | ||
|
|
69ebcc17e9 | ||
|
|
b86bdd7847 | ||
|
|
fbd7409851 | ||
|
|
0773c886ee | ||
|
|
d05c7268d9 | ||
|
|
80d0748edd | ||
|
|
fcbf228d35 | ||
|
|
34feb27bef | ||
|
|
86f707bc51 | ||
|
|
07f74f82b5 | ||
|
|
60917433d2 | ||
|
|
dd59e0704a | ||
|
|
d4bf472291 | ||
|
|
039b650953 | ||
|
|
0148860b2d | ||
|
|
49590c831f | ||
|
|
9aed0ce621 | ||
|
|
9b653a7c63 | ||
|
|
8d919d6ec8 | ||
|
|
bb0094038a | ||
|
|
c29764b164 | ||
|
|
ae55f5d605 | ||
|
|
81ca21517a | ||
|
|
24a4167296 | ||
|
|
3ffd967b00 | ||
|
|
a2a1f4806a | ||
|
|
6b56d7d1cd | ||
|
|
b5a802bf30 | ||
|
|
b4586779b3 | ||
|
|
d92d5a1b33 | ||
|
|
52ec080343 | ||
|
|
5bff61c2ee | ||
|
|
c12b713543 | ||
|
|
7bafa0f8c8 | ||
|
|
a47cdb9f35 | ||
|
|
bd9ac3b031 | ||
|
|
22ad45cd58 | ||
|
|
58e0b7704b | ||
|
|
b78854b8de | ||
|
|
ae61ed456f | ||
|
|
bdc1103641 | ||
|
|
689d19759d | ||
|
|
7f34b826b2 | ||
|
|
064d3765c0 | ||
|
|
752814a5fb | ||
|
|
861028ef5c | ||
|
|
dad0d8e559 | ||
|
|
75f88c539c | ||
|
|
1109650fde | ||
|
|
704f8d7e9d | ||
|
|
4a2c3d9098 | ||
|
|
d21b04acb5 | ||
|
|
5403336c78 | ||
|
|
def6d2bd5b | ||
|
|
04db2764c1 | ||
|
|
0e9b2250bd | ||
|
|
654d345d78 | ||
|
|
99e379392b | ||
|
|
1debd99701 | ||
|
|
a099070c79 | ||
|
|
0a09b8bd5a | ||
|
|
b3750dd24d | ||
|
|
db1b0c2516 | ||
|
|
fc6208b95d | ||
|
|
e68d3eac7d | ||
|
|
d093b446c2 | ||
|
|
be839051d5 | ||
|
|
8937068b5f | ||
|
|
3f82020100 | ||
|
|
63ee6bbc56 | ||
|
|
7046680765 | ||
|
|
c17334f17f | ||
|
|
ecd40231a5 | ||
|
|
c3935aafc9 | ||
|
|
9b751da31c | ||
|
|
b464d99bd5 | ||
|
|
f3d168f19f | ||
|
|
bb8fa94668 | ||
|
|
4f4d9fda0b | ||
|
|
24994fa387 | ||
|
|
f4bb745519 | ||
|
|
a03258999a | ||
|
|
3f45200cb9 | ||
|
|
4703e75003 | ||
|
|
39b166b87f | ||
|
|
ded21efe5f | ||
|
|
4952ddc494 | ||
|
|
8ffc9b6581 | ||
|
|
f0be6581b2 | ||
|
|
356217a6af | ||
|
|
9b5c86211b | ||
|
|
ef470bd890 | ||
|
|
428d75968c | ||
|
|
dca4b0a399 | ||
|
|
2380e1b013 | ||
|
|
9718445b44 | ||
|
|
7f897440b7 | ||
|
|
5b21074b9d | ||
|
|
b0714075eb | ||
|
|
956b56a772 | ||
|
|
50b2093548 | ||
|
|
bc5ca28b13 | ||
|
|
653a62b5e4 | ||
|
|
08780e1a5c | ||
|
|
ce39355025 | ||
|
|
3eed987488 | ||
|
|
6f633700ae | ||
|
|
a7670829d5 | ||
|
|
6fb8817391 | ||
|
|
e90b7276cb | ||
|
|
a1ba5fec2b | ||
|
|
6606211233 | ||
|
|
b1daacc9fb | ||
|
|
03fe7d9ea2 | ||
|
|
2d3da163a8 | ||
|
|
49c59764ac | ||
|
|
06cc59b7a3 | ||
|
|
7754080323 | ||
|
|
ebf081e273 | ||
|
|
258467467b | ||
|
|
bbea7e787f | ||
|
|
4f468cace7 | ||
|
|
b2f736adf5 | ||
|
|
9ddedbe752 | ||
|
|
63b237114a | ||
|
|
29c789dcf3 | ||
|
|
59e2ae552e | ||
|
|
9d396a5cfa | ||
|
|
422557d4ce | ||
|
|
04ebbcc3a9 | ||
|
|
0919e9d560 | ||
|
|
8af14edf21 | ||
|
|
13c475d73c | ||
|
|
1373af6f66 | ||
|
|
291ad2906d | ||
|
|
be5532b35d | ||
|
|
b2402aad2e | ||
|
|
3b46e44e4f | ||
|
|
537ec30936 | ||
|
|
a75db02d05 | ||
|
|
4698f1be5c | ||
|
|
1db103e352 | ||
|
|
5037a1182f | ||
|
|
6b476fa75f | ||
|
|
4d46000ec6 | ||
|
|
56ad6b4c0d | ||
|
|
ab750b6e75 | ||
|
|
44a4a858fe | ||
|
|
74fb59640d | ||
|
|
797bfaaf3d | ||
|
|
0015a4357e | ||
|
|
dbdc15f21f | ||
|
|
c9236527e4 | ||
|
|
1a8c72d721 | ||
|
|
739ef487fa | ||
|
|
b7273bc4f2 | ||
|
|
c3e9452fdc | ||
|
|
a4e34caa5d | ||
|
|
fea2f0ba1e | ||
|
|
b98427472f | ||
|
|
bf42822626 | ||
|
|
b71eb465cb | ||
|
|
f072638c8c | ||
|
|
79afcd4b65 | ||
|
|
595482048c | ||
|
|
2c99da538e | ||
|
|
1393e60ca8 | ||
|
|
2e67c704f7 | ||
|
|
c0410131bf | ||
|
|
473a305e5f | ||
|
|
d53ca6cd90 | ||
|
|
bd84babecd | ||
|
|
1b83231b1c | ||
|
|
f39ad34057 | ||
|
|
942b64052d | ||
|
|
559aabd6b8 | ||
|
|
52d26f9fb6 | ||
|
|
b7d124ce8d | ||
|
|
6a5c70ee6a | ||
|
|
a76b41b737 | ||
|
|
2fc6553203 | ||
|
|
98b003e601 | ||
|
|
0dda443cc8 | ||
|
|
9322283cb1 | ||
|
|
95d412c78d | ||
|
|
6245b15d8f | ||
|
|
ab1d7ba6cb | ||
|
|
ef05491991 | ||
|
|
113642c8f5 | ||
|
|
088dd98e0d | ||
|
|
7e0046a715 | ||
|
|
1a11d5df35 | ||
|
|
57b5b319a7 | ||
|
|
0a4672c050 | ||
|
|
8808b651e2 | ||
|
|
e9fca757b7 | ||
|
|
98a3801f6a | ||
|
|
82dfcdd5df | ||
|
|
e97c49a032 | ||
|
|
0335b344a1 | ||
|
|
63b7bed61a | ||
|
|
44b9946bb0 | ||
|
|
6efd4023fd | ||
|
|
49ecfd6879 | ||
|
|
4d4b5967da | ||
|
|
a882e37d04 | ||
|
|
4734d23e29 | ||
|
|
b7416da26d | ||
|
|
36e768ab37 | ||
|
|
ede0bd8623 | ||
|
|
b4072eb62d | ||
|
|
120b69c439 | ||
|
|
b68daf3f3e | ||
|
|
c32a1a5e5b | ||
|
|
a5e303d1ca | ||
|
|
c4d8cef44d | ||
|
|
72fbe758b4 | ||
|
|
3344bb3254 | ||
|
|
6b9ab7163a | ||
|
|
563092cffb | ||
|
|
9a2a0c3b0e | ||
|
|
f3b4726b34 | ||
|
|
30d7c6edf1 | ||
|
|
f33f73d2f5 | ||
|
|
b595dfd443 | ||
|
|
a3e15b5c76 | ||
|
|
31d85c0221 | ||
|
|
124bd55e18 | ||
|
|
bb9b5b5bde | ||
|
|
f586e6dd29 | ||
|
|
c2b1b67b6b | ||
|
|
2cb29233c8 | ||
|
|
b0e0bebb7e | ||
|
|
364b3567fc | ||
|
|
b5ea2127d9 | ||
|
|
9522a51dc7 | ||
|
|
75335a8a01 | ||
|
|
0bf561e326 | ||
|
|
7e6c2c2a7c | ||
|
|
b132d490f0 | ||
|
|
3fde0fc209 | ||
|
|
24bc09796f | ||
|
|
758bff79d6 | ||
|
|
3b0660799b | ||
|
|
6880afa73c | ||
|
|
01aae065ff | ||
|
|
8ee49edef0 | ||
|
|
e09f6c7886 | ||
|
|
dd0a7207d5 | ||
|
|
17700a6537 | ||
|
|
949444f6dd | ||
|
|
31832ac230 | ||
|
|
33200f8208 | ||
|
|
893cd17c1a | ||
|
|
c471ddd12f | ||
|
|
b0ac8f89c5 | ||
|
|
a47338d8b7 | ||
|
|
76d00ab47f | ||
|
|
22b8552939 | ||
|
|
1d25a04377 | ||
|
|
52148f69c1 | ||
|
|
f280f8138d | ||
|
|
530846bc7a | ||
|
|
27adde7af0 | ||
|
|
e3869a201f | ||
|
|
745a356c87 | ||
|
|
b16a4a1343 | ||
|
|
36e41555ea | ||
|
|
3f824cf205 | ||
|
|
c61b3c2f29 | ||
|
|
fd97cfbd15 | ||
|
|
4b4c293008 | ||
|
|
69a573a279 | ||
|
|
c33d4d989e | ||
|
|
3cd1134973 | ||
|
|
4f42d4dc4f | ||
|
|
a3b4aecded | ||
|
|
534ae6aa81 | ||
|
|
7e1e50ffde | ||
|
|
ab3cbb113e | ||
|
|
1c7e6af1fc | ||
|
|
84f7e25c5e | ||
|
|
458fe97b75 | ||
|
|
31364607f5 | ||
|
|
56ec2c7ebc | ||
|
|
f944d91d62 | ||
|
|
2cf7d89581 | ||
|
|
91546700d4 | ||
|
|
a972aec9b0 | ||
|
|
6328575639 | ||
|
|
af534c9209 | ||
|
|
82a1e920e0 | ||
|
|
d46d292865 | ||
|
|
1a96533a3c | ||
|
|
2d86054fe8 | ||
|
|
50e3af7b82 | ||
|
|
27af4b926b | ||
|
|
1d035acb6d | ||
|
|
3704c321fa | ||
|
|
9c6f35f3bd | ||
|
|
47b49c3e03 | ||
|
|
7a99261979 | ||
|
|
8eda58825f | ||
|
|
6ee43c0014 | ||
|
|
bea3d58ddb | ||
|
|
71b121c15c | ||
|
|
7c8b6d2fe6 | ||
|
|
5d33c46e6b | ||
|
|
8aac0ebdb6 | ||
|
|
6072aae338 | ||
|
|
872b916d46 | ||
|
|
86303b58df | ||
|
|
78b1ad6df6 | ||
|
|
e5ac7ee607 | ||
|
|
480b32b5af | ||
|
|
8c9cf09bd8 | ||
|
|
7ceea17050 | ||
|
|
76333c5a24 | ||
|
|
85857a3319 | ||
|
|
5ad2bb4bea | ||
|
|
cb9d205336 | ||
|
|
e1a292ba33 | ||
|
|
fa4e54b32e | ||
|
|
3ba41ac458 | ||
|
|
2fbe85e60f | ||
|
|
676a518fa8 | ||
|
|
992c1923f6 | ||
|
|
a22afdd0f6 | ||
|
|
0da8625f30 | ||
|
|
4cc784eb95 | ||
|
|
ee3bec9eed | ||
|
|
24788ac86f | ||
|
|
9af3c732b5 | ||
|
|
e5873fe5f9 | ||
|
|
39f088cdcd | ||
|
|
e805852721 | ||
|
|
e136ecc1f8 | ||
|
|
efa4001440 | ||
|
|
52a0af1636 | ||
|
|
5fc66b5896 | ||
|
|
80dec29832 | ||
|
|
2c7d3c9971 | ||
|
|
30a16e9496 | ||
|
|
0d6526ea31 | ||
|
|
4428340fd9 | ||
|
|
900ce21445 | ||
|
|
68c20ed48d | ||
|
|
c5760ceaab | ||
|
|
8c7c9a67a6 | ||
|
|
efad5545de | ||
|
|
afb411dd35 | ||
|
|
fe1184b0d3 | ||
|
|
85231b314f | ||
|
|
210b2efd47 | ||
|
|
ae5b1385ea | ||
|
|
011ce28251 | ||
|
|
efb58b45df | ||
|
|
7d033787eb | ||
|
|
3a47583cf9 | ||
|
|
565b4b3f2f | ||
|
|
574f32a6dd | ||
|
|
0e67c8ff69 | ||
|
|
b886073c11 | ||
|
|
57c35b9a74 | ||
|
|
f5100694d6 | ||
|
|
3ff9bfcc13 | ||
|
|
6c8d2bfd9e | ||
|
|
637f7f48ad | ||
|
|
8eae80d30f | ||
|
|
9a103276e3 | ||
|
|
6386f011f7 | ||
|
|
742d6e63d9 | ||
|
|
f6141603ef | ||
|
|
7a5b4e565a | ||
|
|
373e1527c1 | ||
|
|
9cb05b6a7d | ||
|
|
74bf5ff044 | ||
|
|
0f7e9d11b6 | ||
|
|
5fadc2fb9f | ||
|
|
96bbcf623f | ||
|
|
89e853158c | ||
|
|
5c31fcc03e | ||
|
|
3fee4a803b | ||
|
|
8b61f559d7 | ||
|
|
4bd058f5dc | ||
|
|
999ccf87fc | ||
|
|
4e45e885b9 | ||
|
|
6aee9ccaf1 | ||
|
|
af3c6ff012 | ||
|
|
0c9bdf5168 | ||
|
|
82a9587b4f | ||
|
|
850f4d7ec5 | ||
|
|
8d1dcc4568 | ||
|
|
3650ab85df | ||
|
|
e1e1cc2666 | ||
|
|
79fd32088b | ||
|
|
458e0fc76d | ||
|
|
5090c81632 | ||
|
|
dcd035353b | ||
|
|
8606ce21bd | ||
|
|
72537c6ffb | ||
|
|
30f9888f51 | ||
|
|
d5a2b92121 | ||
|
|
fd3eee6870 | ||
|
|
2d6d1003b7 | ||
|
|
499c590f5a | ||
|
|
787b78ef36 | ||
|
|
88a0b0fa23 | ||
|
|
1519f04930 | ||
|
|
e0a1291de0 | ||
|
|
8a2d881002 | ||
|
|
4802b6f460 | ||
|
|
8c0e116a1c | ||
|
|
8862878011 | ||
|
|
bdf3361243 | ||
|
|
6b5216077b | ||
|
|
7e119f7963 | ||
|
|
933cbc7e51 | ||
|
|
65f30d4480 | ||
|
|
1f8d3f119e | ||
|
|
45fe858503 | ||
|
|
0cc06ad186 | ||
|
|
18cd7547ad | ||
|
|
7746a26062 | ||
|
|
a47fc9d3be | ||
|
|
8fdf75330c | ||
|
|
d6ebaa26b0 | ||
|
|
27bd7ec836 | ||
|
|
6752058922 | ||
|
|
b965108dad | ||
|
|
6bf0f36567 | ||
|
|
69f1a70968 | ||
|
|
47edfcac5e | ||
|
|
c34599b954 | ||
|
|
48b371c985 | ||
|
|
47165e7b9d | ||
|
|
69f4611552 | ||
|
|
31a25449a8 | ||
|
|
26a247c0bf | ||
|
|
1c7cd23475 | ||
|
|
296ef1bdf9 | ||
|
|
f2a0408801 | ||
|
|
642659bc9b | ||
|
|
f0e8d065b7 | ||
|
|
520d852c04 | ||
|
|
8d4d7a421a | ||
|
|
802b83b0fe | ||
|
|
7ccb6c8411 | ||
|
|
1518831f37 | ||
|
|
3bdfaa02e1 | ||
|
|
e8de9f915c | ||
|
|
31f598d1e1 | ||
|
|
46e6fd0847 | ||
|
|
1441a60f4b | ||
|
|
ebdf107946 | ||
|
|
38d672c9f9 | ||
|
|
75d34abd45 | ||
|
|
1d98738e4d | ||
|
|
3cfa0e1844 | ||
|
|
82211a4373 | ||
|
|
e324b04a94 | ||
|
|
49d0c51d97 | ||
|
|
fe4bc3b4a9 | ||
|
|
58d964063c | ||
|
|
17d3e37e1d | ||
|
|
54f6a16bd6 | ||
|
|
f4ffc5d198 | ||
|
|
3d8010bf88 | ||
|
|
ec2cc3a7f9 | ||
|
|
52b7b9bcd8 | ||
|
|
8ad0fcf42d | ||
|
|
aa6cc45988 | ||
|
|
da22b8297b | ||
|
|
798d82e941 | ||
|
|
ac8ac302ca | ||
|
|
22c3a73102 | ||
|
|
1222fdb043 | ||
|
|
78a50c2f53 | ||
|
|
6d261a7afa | ||
|
|
2e37292478 | ||
|
|
a4907ec9c8 | ||
|
|
992bfe73b6 | ||
|
|
c186254a7e | ||
|
|
1dc739f32c | ||
|
|
9804cd83a6 | ||
|
|
aa5b99c47a | ||
|
|
f95f5e8901 | ||
|
|
206b303407 | ||
|
|
751bff53ee | ||
|
|
b6ef0c509d | ||
|
|
30304d6836 | ||
|
|
f5df49b139 | ||
|
|
bf8ba1a49b | ||
|
|
9f2697658b | ||
|
|
36fd59b92c | ||
|
|
88d946546a | ||
|
|
6036c0c262 | ||
|
|
20e831b56a | ||
|
|
72b74e075c | ||
|
|
3c6ede2f8f | ||
|
|
5434edbd54 | ||
|
|
6a8c7e4b17 | ||
|
|
0ac659f2d1 | ||
|
|
7eae40ca9a | ||
|
|
b3d12c8b58 | ||
|
|
3f92dba1b7 | ||
|
|
0aedc08cfa | ||
|
|
8312f5cffd | ||
|
|
9f6338441e | ||
|
|
27efe0c9d6 | ||
|
|
b5bf6c08d8 | ||
|
|
e3fce51ea1 | ||
|
|
13b4e93bf4 | ||
|
|
4ec0ab281f | ||
|
|
39c96019b6 | ||
|
|
21f2f60355 | ||
|
|
0de654dcaf | ||
|
|
d59e472814 | ||
|
|
cc2ed452f0 | ||
|
|
d4d3843725 | ||
|
|
dee16da1c2 | ||
|
|
e09b85870f | ||
|
|
8596911a0e | ||
|
|
6c2de9f151 | ||
|
|
d3a6b1e39e | ||
|
|
3cb9b19aea | ||
|
|
86aa59bb29 | ||
|
|
c6eeaed7da | ||
|
|
edba90f188 | ||
|
|
26b49b1a0c | ||
|
|
ef32648ddc | ||
|
|
c873524cb1 | ||
|
|
7943e34bde | ||
|
|
74970c74b4 | ||
|
|
2d11561041 | ||
|
|
f7643b6bb3 | ||
|
|
d3afd83e8e | ||
|
|
969ca0119a | ||
|
|
722431f5b2 | ||
|
|
6a1c792cda | ||
|
|
c0ba39ab40 | ||
|
|
3e0e08c5e1 | ||
|
|
3d64373c22 | ||
|
|
2557688657 | ||
|
|
fcc564df25 | ||
|
|
4ecbb93d01 | ||
|
|
9bdc9b3634 | ||
|
|
f46c3b0aa9 | ||
|
|
095fdf07c5 | ||
|
|
648e988b64 | ||
|
|
b1add735d6 | ||
|
|
3f5882118e | ||
|
|
4e83f56696 | ||
|
|
ab250f1d9c | ||
|
|
4672dece51 | ||
|
|
a632de9214 | ||
|
|
e8ebba8b3d | ||
|
|
5cf8181474 | ||
|
|
a717e4785d | ||
|
|
16ce16c632 | ||
|
|
8d7bf2661a | ||
|
|
9e1b026a88 | ||
|
|
df8e455a6d | ||
|
|
b35bec2839 | ||
|
|
19365effa9 | ||
|
|
3750417323 | ||
|
|
d7bfb1ff10 | ||
|
|
1797771527 | ||
|
|
e564eb5878 | ||
|
|
9cd620af58 | ||
|
|
1414ef8a4f | ||
|
|
110623f6ef | ||
|
|
0887c72486 | ||
|
|
a516fd880e | ||
|
|
50e15112d6 | ||
|
|
8b6f99385a | ||
|
|
2d1b40f00c | ||
|
|
2fc2f30055 | ||
|
|
2094a19723 | ||
|
|
5b1416424d | ||
|
|
8b9e737c05 | ||
|
|
cc0f4acec6 | ||
|
|
30884162a0 | ||
|
|
f1e7a8c444 | ||
|
|
3271939c87 | ||
|
|
c9cb487cbc | ||
|
|
56f6b69adf | ||
|
|
77dcee1269 | ||
|
|
c9068ee4d1 | ||
|
|
e7addf7fa8 | ||
|
|
7cc0a8db92 | ||
|
|
bccb62a84f | ||
|
|
d47570664b | ||
|
|
a7137558cc | ||
|
|
0251c5a33d | ||
|
|
365722ef7e | ||
|
|
77e0c30e57 | ||
|
|
8a0cad765a | ||
|
|
272378b800 | ||
|
|
a34d17ff95 | ||
|
|
82c782e9f0 | ||
|
|
b7b46d2fee | ||
|
|
8916f0f314 | ||
|
|
8d727ef508 | ||
|
|
fd0be10492 | ||
|
|
a810f95101 | ||
|
|
8857545cf0 | ||
|
|
2300c0005f | ||
|
|
827b91286f | ||
|
|
4d8e35655d | ||
|
|
f7e6ae9f3c | ||
|
|
67679843b4 | ||
|
|
b67b072be2 | ||
|
|
d6896e4e76 | ||
|
|
f86c24a695 | ||
|
|
b200c842b4 | ||
|
|
c8df52a86c | ||
|
|
b17a592c95 | ||
|
|
f71d6c7fab | ||
|
|
30cfae91c0 | ||
|
|
5332128852 | ||
|
|
b593d90dff | ||
|
|
02fac3b931 | ||
|
|
446ffc3602 | ||
|
|
44c1a2e139 | ||
|
|
f6cb04c7ef | ||
|
|
276755ae9d | ||
|
|
6ee0b821cc | ||
|
|
72dc121fcd | ||
|
|
786c4dc817 | ||
|
|
c7cfbaed0a | ||
|
|
4351d5c366 | ||
|
|
ff3795798f | ||
|
|
45281adfd9 | ||
|
|
0d813afc67 | ||
|
|
e9e5c77cd3 | ||
|
|
4d4bcbb365 | ||
|
|
bd5a2976fd | ||
|
|
cc6488ee2d | ||
|
|
52068198a5 | ||
|
|
5cdcd9d4d4 | ||
|
|
fbeaa35d10 | ||
|
|
1ac4bb38be | ||
|
|
69c2a096ab | ||
|
|
3dccf1b215 | ||
|
|
035cb02362 | ||
|
|
43d33a4502 | ||
|
|
2b6e8dc566 | ||
|
|
6388cc0639 | ||
|
|
00bd6d2e3a | ||
|
|
1f842b6d31 | ||
|
|
954d7bd14c | ||
|
|
d358893579 | ||
|
|
3cb40cb09d | ||
|
|
a4a8faedbb | ||
|
|
c32fa2b53f | ||
|
|
1d0b1791c4 | ||
|
|
7251c8976d | ||
|
|
684531aaae | ||
|
|
4a1504f9e0 | ||
|
|
ee1a6bbbd9 | ||
|
|
52c86d8c27 | ||
|
|
07e59536f3 | ||
|
|
63f31b9b01 | ||
|
|
4b6bf1bb9f | ||
|
|
f03c202b46 | ||
|
|
eb8a4a0e6a | ||
|
|
c04b04f701 | ||
|
|
2a0833e3b5 | ||
|
|
6acc89331d | ||
|
|
35afd9b92f | ||
|
|
c16d83ceab | ||
|
|
a7820f4fd0 | ||
|
|
12dd338914 | ||
|
|
720d552a21 | ||
|
|
a0477f499b | ||
|
|
20a4639995 | ||
|
|
3d7a0e7917 | ||
|
|
c9c1295001 | ||
|
|
c93daf78f6 | ||
|
|
c77812d2a8 | ||
|
|
c7107b7ad7 | ||
|
|
a9a28b259f | ||
|
|
5f1a1d0aa0 | ||
|
|
2f5dd3f2b1 | ||
|
|
779909bdeb | ||
|
|
e76bee2afa | ||
|
|
bb9d551dad | ||
|
|
db6399f1c5 | ||
|
|
32ee6be7f9 | ||
|
|
33a5dd9e1c | ||
|
|
0c59182eb8 | ||
|
|
391e14a05b | ||
|
|
c3259faf42 | ||
|
|
f588e473a1 | ||
|
|
a076b4d71c | ||
|
|
4540c75498 | ||
|
|
239199462f | ||
|
|
b703a7eabb | ||
|
|
3cafe72f8f | ||
|
|
48375c37de | ||
|
|
f9ceb506d7 | ||
|
|
a7a054f4e4 | ||
|
|
f8781353a2 | ||
|
|
b0760222f0 | ||
|
|
66bcacc2c4 | ||
|
|
5868f8a2a5 | ||
|
|
8e54e24e03 | ||
|
|
f511e6ea34 | ||
|
|
6c9608a9ee | ||
|
|
4a0f95f0f0 | ||
|
|
e3e7bcffa0 | ||
|
|
9340208c2c | ||
|
|
a658b8d8bd | ||
|
|
0b9946eaf9 | ||
|
|
6ea255f125 | ||
|
|
0225975e20 | ||
|
|
af406c7d14 | ||
|
|
a146e2c303 | ||
|
|
f285051a9a | ||
|
|
936f7e5d7c | ||
|
|
463c8defa4 | ||
|
|
19f0399f28 | ||
|
|
05436427ee | ||
|
|
2f6d4c9ff2 | ||
|
|
64790c531e | ||
|
|
9c209d2fb2 | ||
|
|
8420ca355b | ||
|
|
0aebcbd71e | ||
|
|
13528667c8 | ||
|
|
3b3fa3a455 | ||
|
|
13d3d4e990 | ||
|
|
b69d475e15 | ||
|
|
b6f840aacb | ||
|
|
ea454d3c07 | ||
|
|
fb72d5d782 | ||
|
|
d4b8c09b02 | ||
|
|
254339037b | ||
|
|
800e3a3012 | ||
|
|
44a5021786 | ||
|
|
db80629cbb | ||
|
|
1c3a1c132b | ||
|
|
751831f3b7 | ||
|
|
d226d58e38 | ||
|
|
230364ac87 | ||
|
|
9df61bba7e | ||
|
|
9ee1910a01 | ||
|
|
46e10e1599 | ||
|
|
ed29f7c1db | ||
|
|
60f4c7b02e | ||
|
|
5616723fa4 | ||
|
|
724698df08 | ||
|
|
9bdb99d948 | ||
|
|
efc340a37a | ||
|
|
58548a39d3 | ||
|
|
638a205b6c | ||
|
|
3031dbc600 | ||
|
|
36dcb53e14 | ||
|
|
1a94f4f12f | ||
|
|
d87a241e34 | ||
|
|
ddd28c9a44 | ||
|
|
9637edf30e | ||
|
|
b0a5e6d375 | ||
|
|
6bec99b631 | ||
|
|
a95b65067d | ||
|
|
ac5c176deb | ||
|
|
5d385eb26d | ||
|
|
611620555f | ||
|
|
d44412c712 | ||
|
|
761719fffd | ||
|
|
3015a4a8a2 | ||
|
|
e8f579bf74 | ||
|
|
f8da48f61d | ||
|
|
5b21015f5b | ||
|
|
326d62d815 | ||
|
|
f5f6c92e59 | ||
|
|
b56654c217 | ||
|
|
f5e8572a73 | ||
|
|
95a395ed70 | ||
|
|
c08c122ea6 | ||
|
|
95460df473 | ||
|
|
ab489faa56 | ||
|
|
48e49fe92d | ||
|
|
441a296bde | ||
|
|
7359ed74ad | ||
|
|
dd56ec6b4c | ||
|
|
2d271008f3 | ||
|
|
d06340ac3c | ||
|
|
f9a67c5180 | ||
|
|
b4cce0980a | ||
|
|
4a7557c5ba | ||
|
|
4e84f056aa | ||
|
|
68f938d476 | ||
|
|
6a7135d2bc | ||
|
|
58ab3ab1bb | ||
|
|
78beef71ce | ||
|
|
b05892e97d | ||
|
|
f71e24d17e | ||
|
|
3968e7741f | ||
|
|
aa75245d79 | ||
|
|
e8c97ba6bf | ||
|
|
27bbae3ccd | ||
|
|
305c03458a | ||
|
|
8143114a86 | ||
|
|
a39a56cd39 | ||
|
|
c1c076830a | ||
|
|
d3d63395b3 | ||
|
|
5a9a53d235 | ||
|
|
b7e37aeb20 | ||
|
|
a86ef05d52 | ||
|
|
1be2d9affc | ||
|
|
43e9469546 | ||
|
|
23bb0679dd | ||
|
|
04c41414da | ||
|
|
3490d83ce6 | ||
|
|
13fc780287 | ||
|
|
f0c234a5de | ||
|
|
7f8050e645 | ||
|
|
e8b27724c9 | ||
|
|
327cd2c524 | ||
|
|
1366e859be | ||
|
|
17b779b494 | ||
|
|
7e30b7c7a7 | ||
|
|
b1b8c49c43 | ||
|
|
876c35c212 | ||
|
|
e758e3d457 | ||
|
|
91e7bfce1d | ||
|
|
2e6c53fb52 | ||
|
|
510edeb9a6 | ||
|
|
8566e7bf46 | ||
|
|
7dfea2feb6 | ||
|
|
fcb9de1930 | ||
|
|
2c7a3b877c | ||
|
|
e4ae7f8566 | ||
|
|
94f8544dfa | ||
|
|
0159155e1c | ||
|
|
b45e32dd3f | ||
|
|
f3d66b3356 | ||
|
|
f21190cb24 | ||
|
|
9554eb0990 | ||
|
|
9c04525df8 | ||
|
|
26555c6ad6 | ||
|
|
d6ee29dc91 | ||
|
|
e6dacd0b84 | ||
|
|
acf75ad080 | ||
|
|
92067b2577 | ||
|
|
24f197ce99 | ||
|
|
39cc7db50b | ||
|
|
510a6d12a7 | ||
|
|
cb8c1ea4b5 | ||
|
|
3284102dde | ||
|
|
4a5457ad49 | ||
|
|
39ed9265d7 | ||
|
|
2fc721f220 | ||
|
|
28c658810f | ||
|
|
2f2ecc252e | ||
|
|
9f2613c56a | ||
|
|
a58929d4fb | ||
|
|
fa13be1e15 | ||
|
|
7a4d900b06 | ||
|
|
421ce832dd | ||
|
|
987781f826 | ||
|
|
d85a41ea98 | ||
|
|
42f86a3f73 |
100
.detekt/baseline.xml
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<SmellBaseline>
|
||||||
|
<ManuallySuppressedIssues>
|
||||||
|
<ID>ComplexMethod:CmdHandler.kt$CmdHandler$private fun addAlias(cmd: ExCommand, editor: Editor?): Boolean</ID>
|
||||||
|
<ID>ComplexMethod:CommandState.kt$CommandState$ fun toVimNotation(): String</ID>
|
||||||
|
</ManuallySuppressedIssues>
|
||||||
|
<CurrentIssues>
|
||||||
|
<ID>ComplexMethod:HistoryHandler.kt$HistoryHandler$override fun execute(editor: Editor, context: DataContext, cmd: ExCommand): Boolean</ID>
|
||||||
|
<ID>ComplexMethod:OptionsManager.kt$OptionsManager$ fun parseOptionLine(editor: Editor?, args: String, failOnBad: Boolean): Boolean</ID>
|
||||||
|
<ID>ComplexMethod:PutGroup.kt$PutGroup$private fun prepareDocumentAndGetStartOffsets(editor: Editor, caret: Caret, typeInRegister: SelectionType, data: PutData, additionalData: Map<String, Any>): List<Int></ID>
|
||||||
|
<ID>ComplexMethod:SearchHelperKt.kt$// bounds are considered inside corresponding quotes fun checkInString(chars: CharSequence, currentPos: Int, str: Boolean): Boolean</ID>
|
||||||
|
<ID>ComplexMethod:SearchHighlightsHelper.kt$ private fun updateSearchHighlights( pattern: String?, shouldIgnoreSmartCase: Boolean, showHighlights: Boolean, initialOffset: Int, searchRange: LineRange?, forwards: Boolean, forceUpdate: Boolean ): Int</ID>
|
||||||
|
<ID>ComplexMethod:TabCloseHandler.kt$TabCloseHandler$ private fun getTabIndexToClose(arg: String, current: Int, last: Int): Int?</ID>
|
||||||
|
<ID>ComplexMethod:VimExchangeExtension.kt$VimExchangeExtension.Operator$private fun compareExchanges(x: Exchange, y: Exchange): ExchangeCompareResult</ID>
|
||||||
|
<ID>ComplexMethod:VimMultipleCursorsExtension.kt$VimMultipleCursorsExtension.NextOccurrenceHandler$override fun executeInWriteAction(editor: Editor, context: DataContext)</ID>
|
||||||
|
<ID>ComplexMethod:VimShortcutKeyAction.kt$VimShortcutKeyAction$private fun isEnabled(e: AnActionEvent): Boolean</ID>
|
||||||
|
<ID>LongMethod:CmdHandler.kt$CmdHandler$private fun addAlias(cmd: ExCommand, editor: Editor?): Boolean</ID>
|
||||||
|
<ID>LongMethod:HistoryHandler.kt$HistoryHandler$override fun execute(editor: Editor, context: DataContext, cmd: ExCommand): Boolean</ID>
|
||||||
|
<ID>LongMethod:OptionsManager.kt$OptionsManager$ fun parseOptionLine(editor: Editor?, args: String, failOnBad: Boolean): Boolean</ID>
|
||||||
|
<ID>LongMethod:VimMultipleCursorsExtension.kt$VimMultipleCursorsExtension.NextOccurrenceHandler$override fun executeInWriteAction(editor: Editor, context: DataContext)</ID>
|
||||||
|
<ID>LoopWithTooManyJumpStatements:SearchHighlightsHelper.kt$for (project in projectManager.openProjects) { val current = FileEditorManager.getInstance(project).selectedTextEditor ?: continue // [VERSION UPDATE] 202+ Use editors val editors = EditorFactory.getInstance().getEditors(current.document, project) ?: continue for (editor in editors) { // Try to keep existing highlights if possible. Update if hlsearch has changed or if the pattern has changed. // Force update for the situations where the text is the same, but the ignore case values have changed. // E.g. Use `*` to search for a word (which ignores smartcase), then use `/<Up>` to search for the same pattern, // which will match smartcase. Or changing the smartcase/ignorecase settings if (shouldRemoveSearchHighlights(editor, pattern, showHighlights) || forceUpdate) { removeSearchHighlights(editor) } if (pattern == null) continue if (shouldAddAllSearchHighlights(editor, pattern, showHighlights)) { // hlsearch (+ incsearch/noincsearch) val startLine = searchRange?.startLine ?: 0 val endLine = searchRange?.endLine ?: -1 val results = SearchHelper.findAll(editor, pattern, startLine, endLine, shouldIgnoreCase(pattern, shouldIgnoreSmartCase)) if (results.isNotEmpty()) { currentMatchOffset = findClosestMatch(editor, results, initialOffset, forwards) highlightSearchResults(editor, pattern, results, currentMatchOffset) } editor.vimLastSearch = pattern } else if (shouldAddCurrentMatchSearchHighlight(pattern, showHighlights, initialOffset)) { // nohlsearch + incsearch val searchOptions = EnumSet.of(SearchOptions.WHOLE_FILE) if (wrapscan.isSet) searchOptions.add(SearchOptions.WRAP) if (shouldIgnoreSmartCase) searchOptions.add(SearchOptions.IGNORE_SMARTCASE) if (!forwards) searchOptions.add(SearchOptions.BACKWARDS) val result = SearchHelper.findPattern(editor, pattern, initialOffset, 1, searchOptions) if (result != null) { currentMatchOffset = result.startOffset val results = listOf(result) highlightSearchResults(editor, pattern, results, currentMatchOffset) } } else if (shouldMaintainCurrentMatchOffset(pattern, initialOffset)) { // incsearch. If nothing has changed (e.g. we've edited offset values in `/foo/e+2`) make sure we return the // current match offset so the caret remains at the current incsarch match val offset = editor.vimIncsearchCurrentMatchOffset if (offset != null) { currentMatchOffset = offset } } } }</ID>
|
||||||
|
<ID>MagicNumber:ActionListHandler.kt$ActionListHandler$50</ID>
|
||||||
|
<ID>MagicNumber:AddBlockInlaysAction.kt$AddBlockInlaysAction$0.9f</ID>
|
||||||
|
<ID>MagicNumber:AddBlockInlaysAction.kt$AddBlockInlaysAction$1.75f</ID>
|
||||||
|
<ID>MagicNumber:AddBlockInlaysAction.kt$AddBlockInlaysAction$10</ID>
|
||||||
|
<ID>MagicNumber:AddBlockInlaysAction.kt$AddBlockInlaysAction$3</ID>
|
||||||
|
<ID>MagicNumber:AddBlockInlaysAction.kt$AddBlockInlaysAction$5</ID>
|
||||||
|
<ID>MagicNumber:AddBlockInlaysAction.kt$AddBlockInlaysAction$6</ID>
|
||||||
|
<ID>MagicNumber:AddBlockInlaysAction.kt$AddBlockInlaysAction$7</ID>
|
||||||
|
<ID>MagicNumber:AddInlineInlaysAction.kt$AddInlineInlaysAction$10</ID>
|
||||||
|
<ID>MagicNumber:AddInlineInlaysAction.kt$AddInlineInlaysAction$20</ID>
|
||||||
|
<ID>MagicNumber:AddInlineInlaysAction.kt$AddInlineInlaysAction$5</ID>
|
||||||
|
<ID>MagicNumber:AddInlineInlaysAction.kt$AddInlineInlaysAction$7</ID>
|
||||||
|
<ID>MagicNumber:BufferListHandler.kt$3</ID>
|
||||||
|
<ID>MagicNumber:CmdHandler.kt$CmdHandler$11</ID>
|
||||||
|
<ID>MagicNumber:CmdHandler.kt$CmdHandler$12</ID>
|
||||||
|
<ID>MagicNumber:CommandBuilder.kt$CommandBuilder$10</ID>
|
||||||
|
<ID>MagicNumber:CommandBuilder.kt$CommandBuilder$999999999</ID>
|
||||||
|
<ID>MagicNumber:ConfigurationMigrators.kt$Version 6 to 7 config migration$6</ID>
|
||||||
|
<ID>MagicNumber:ConfigurationMigrators.kt$Version 6 to 7 config migration$7</ID>
|
||||||
|
<ID>MagicNumber:ExKeyBindings.kt$ExKeyBindings$0x05</ID>
|
||||||
|
<ID>MagicNumber:ExKeyBindings.kt$ExKeyBindings$0x08</ID>
|
||||||
|
<ID>MagicNumber:HistoryHandler.kt$HistoryHandler$7</ID>
|
||||||
|
<ID>MagicNumber:JumpsHandler.kt$JumpsHandler$200</ID>
|
||||||
|
<ID>MagicNumber:JumpsHandler.kt$JumpsHandler$3</ID>
|
||||||
|
<ID>MagicNumber:JumpsHandler.kt$JumpsHandler$5</ID>
|
||||||
|
<ID>MagicNumber:MarksHandler.kt$MarksHandler$200</ID>
|
||||||
|
<ID>MagicNumber:MarksHandler.kt$MarksHandler$3</ID>
|
||||||
|
<ID>MagicNumber:MarksHandler.kt$MarksHandler$5</ID>
|
||||||
|
<ID>MagicNumber:OptionsManager.kt$OptionsManager$100</ID>
|
||||||
|
<ID>MagicNumber:OptionsManager.kt$OptionsManager$1000</ID>
|
||||||
|
<ID>MagicNumber:OptionsManager.kt$OptionsManager$19</ID>
|
||||||
|
<ID>MagicNumber:OptionsManager.kt$OptionsManager$20</ID>
|
||||||
|
<ID>MagicNumber:OptionsManager.kt$OptionsManager$3</ID>
|
||||||
|
<ID>MagicNumber:OptionsManager.kt$OptionsManager$50</ID>
|
||||||
|
<ID>MagicNumber:OptionsManager.kt$OptionsManager$80</ID>
|
||||||
|
<ID>MagicNumber:ProcessExEntryAction.kt$ProcessExEntryAction$0x0a</ID>
|
||||||
|
<ID>MagicNumber:RegistersHandler.kt$RegistersHandler$200</ID>
|
||||||
|
<ID>MagicNumber:SearchHelperKt.kt$3</ID>
|
||||||
|
<ID>MagicNumber:SelectLastFileHandler.kt$SelectLastFileHandler$999</ID>
|
||||||
|
<ID>MagicNumber:SelectionType.kt$SelectionType.BLOCK_WISE$3</ID>
|
||||||
|
<ID>MagicNumber:ShiftLeftHandler.kt$ShiftLeftHandler$31</ID>
|
||||||
|
<ID>MagicNumber:ShiftRightHandler.kt$ShiftRightHandler$31</ID>
|
||||||
|
<ID>MagicNumber:VimHighlightedYank.kt$VimHighlightedYank.HighlightHandler$3</ID>
|
||||||
|
<ID>MagicNumber:VimHighlightedYank.kt$VimHighlightedYank.HighlightHandler$4</ID>
|
||||||
|
<ID>MatchingDeclarationName:CommandDefinition.kt$CommandName</ID>
|
||||||
|
<ID>MaxLineLength:ExBeanClass.kt$ExBeanClass$logger<ExBeanClass>().error("IdeaVim doesn't accept contributions to `vimActions` extension points. Please create a plugin using `VimExtension`. Plugin to blame: ${this.pluginDescriptor.pluginId}")</ID>
|
||||||
|
<ID>MaxLineLength:ExRanges.kt$SearchRange$override</ID>
|
||||||
|
<ID>MaxLineLength:NotificationService.kt$NotificationService$notification.addAction(AppendToIdeaVimRcAction(notification, "set clipboard+=ideaput", "ideaput") { OptionsManager.clipboard.append(ClipboardOptionsData.ideaput) })</ID>
|
||||||
|
<ID>MaxLineLength:NotificationService.kt$NotificationService.AppendToIdeaVimRcAction$private inner</ID>
|
||||||
|
<ID>MaxLineLength:NotificationService.kt$NotificationService.AppendToIdeaVimRcAction$val successNotification = Notification(IDEAVIM_NOTIFICATION_ID, IDEAVIM_NOTIFICATION_TITLE, "<code>$optionName</code> is enabled", NotificationType.INFORMATION)</ID>
|
||||||
|
<ID>MaxLineLength:OptionsManager.kt$OptionsManager$val clipboard = addOption(ListOption(ClipboardOptionsData.name, ClipboardOptionsData.abbr, arrayOf(ClipboardOptionsData.ideaput, "autoselect,exclude:cons\\|linux"), null))</ID>
|
||||||
|
<ID>MaxLineLength:PutGroup.kt$PutGroup$private</ID>
|
||||||
|
<ID>MaxLineLength:PutLinesHandler.kt$PutLinesHandler$val textData = registerGroup.lastRegister?.let { PutData.TextData(it.text ?: StringHelper.toKeyNotation(it.keys), SelectionType.LINE_WISE, it.transferableData) }</ID>
|
||||||
|
<ID>MaxLineLength:PutTextAction.kt$PutTextBaseAction$val textData = if (lastRegister != null) TextData(lastRegister.text ?: StringHelper.toKeyNotation(lastRegister.keys), lastRegister.type, lastRegister.transferableData) else null</ID>
|
||||||
|
<ID>MaxLineLength:ReplaceWithRegister.kt$ReplaceWithRegister.Operator$val visualSelection = PutData.VisualSelection(mapOf(editor.caretModel.primaryCaret to VimSelection.create(range.startOffset, range.endOffset - 1, selectionType, editor)), selectionType)</ID>
|
||||||
|
<ID>MaxLineLength:StatisticReporter.kt$StatisticReporter$val url = "https://plugins.jetbrains.com/plugins/list?pluginId=${VimPlugin.getPluginId().idString}&build=$buildNumber&pluginVersion=$version&os=$os&uuid=$uid"</ID>
|
||||||
|
<ID>MaxLineLength:VimShortcutKeyAction.kt$VimShortcutKeyAction.Companion$@JvmField val VIM_ONLY_EDITOR_KEYS: Set<KeyStroke> = ImmutableSet.builder<KeyStroke>().addAll(getKeyStrokes(KeyEvent.VK_ENTER, 0)).addAll(getKeyStrokes(KeyEvent.VK_ESCAPE, 0)) .addAll(getKeyStrokes(KeyEvent.VK_TAB, 0)).addAll(getKeyStrokes(KeyEvent.VK_BACK_SPACE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_INSERT, 0)).addAll(getKeyStrokes(KeyEvent.VK_DELETE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_UP, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)).addAll(getKeyStrokes(KeyEvent.VK_DOWN, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_LEFT, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_RIGHT, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_HOME, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_END, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_PAGE_UP, 0, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_PAGE_DOWN, 0, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)).build()</ID>
|
||||||
|
<ID>MaxLineLength:VimShortcutKeyAction.kt$VimShortcutKeyAction.Companion$ImmutableSet.builder<KeyStroke>().addAll(getKeyStrokes(KeyEvent.VK_ENTER, 0)).addAll(getKeyStrokes(KeyEvent.VK_ESCAPE, 0)) .addAll(getKeyStrokes(KeyEvent.VK_TAB, 0)).addAll(getKeyStrokes(KeyEvent.VK_BACK_SPACE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_INSERT, 0)).addAll(getKeyStrokes(KeyEvent.VK_DELETE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_UP, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK))</ID>
|
||||||
|
<ID>MaxLineLength:VimShortcutKeyAction.kt$VimShortcutKeyAction.Companion$ImmutableSet.builder<KeyStroke>().addAll(getKeyStrokes(KeyEvent.VK_ENTER, 0)).addAll(getKeyStrokes(KeyEvent.VK_ESCAPE, 0)) .addAll(getKeyStrokes(KeyEvent.VK_TAB, 0)).addAll(getKeyStrokes(KeyEvent.VK_BACK_SPACE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_INSERT, 0)).addAll(getKeyStrokes(KeyEvent.VK_DELETE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_UP, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)).addAll(getKeyStrokes(KeyEvent.VK_DOWN, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_LEFT, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK))</ID>
|
||||||
|
<ID>MaxLineLength:VimShortcutKeyAction.kt$VimShortcutKeyAction.Companion$ImmutableSet.builder<KeyStroke>().addAll(getKeyStrokes(KeyEvent.VK_ENTER, 0)).addAll(getKeyStrokes(KeyEvent.VK_ESCAPE, 0)) .addAll(getKeyStrokes(KeyEvent.VK_TAB, 0)).addAll(getKeyStrokes(KeyEvent.VK_BACK_SPACE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_INSERT, 0)).addAll(getKeyStrokes(KeyEvent.VK_DELETE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_UP, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)).addAll(getKeyStrokes(KeyEvent.VK_DOWN, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_LEFT, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_RIGHT, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK))</ID>
|
||||||
|
<ID>MaxLineLength:VimShortcutKeyAction.kt$VimShortcutKeyAction.Companion$ImmutableSet.builder<KeyStroke>().addAll(getKeyStrokes(KeyEvent.VK_ENTER, 0)).addAll(getKeyStrokes(KeyEvent.VK_ESCAPE, 0)) .addAll(getKeyStrokes(KeyEvent.VK_TAB, 0)).addAll(getKeyStrokes(KeyEvent.VK_BACK_SPACE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_INSERT, 0)).addAll(getKeyStrokes(KeyEvent.VK_DELETE, 0, InputEvent.CTRL_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_UP, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)).addAll(getKeyStrokes(KeyEvent.VK_DOWN, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_LEFT, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_RIGHT, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK)) .addAll(getKeyStrokes(KeyEvent.VK_HOME, 0, InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK))</ID>
|
||||||
|
<ID>MemberNameEqualsClassName:Ranges.kt$Ranges$private val ranges: MutableList<Range> = mutableListOf()</ID>
|
||||||
|
<ID>NestedBlockDepth:OptionsManager.kt$OptionsManager$ fun parseOptionLine(editor: Editor?, args: String, failOnBad: Boolean): Boolean</ID>
|
||||||
|
<ID>ReturnCount:CmdHandler.kt$CmdHandler$private fun addAlias(cmd: ExCommand, editor: Editor?): Boolean</ID>
|
||||||
|
<ID>ReturnCount:ExRanges.kt$Range.Companion$ @JvmStatic fun createRange(str: String, offset: Int, move: Boolean): Array<Range>?</ID>
|
||||||
|
<ID>ReturnCount:VimMultipleCursorsExtension.kt$VimMultipleCursorsExtension.AllOccurrencesHandler$override fun executeInWriteAction(editor: Editor, context: DataContext)</ID>
|
||||||
|
<ID>ReturnCount:VimMultipleCursorsExtension.kt$VimMultipleCursorsExtension.NextOccurrenceHandler$override fun executeInWriteAction(editor: Editor, context: DataContext)</ID>
|
||||||
|
<ID>ReturnCount:VimShortcutKeyAction.kt$VimShortcutKeyAction$private fun isEnabled(e: AnActionEvent): Boolean</ID>
|
||||||
|
<ID>ReturnCount:VisualMotionGroup.kt$VisualMotionGroup$private fun seemsLikeBlockMode(editor: Editor): Boolean</ID>
|
||||||
|
<ID>ThrowsCount:CommandHandler.kt$CommandHandler$private fun checkArgs(cmd: ExCommand)</ID>
|
||||||
|
<ID>TooManyFunctions:CommandBuilder.kt$CommandBuilder</ID>
|
||||||
|
<ID>TooManyFunctions:CommandState.kt$CommandState</ID>
|
||||||
|
<ID>TooManyFunctions:PutGroup.kt$PutGroup</ID>
|
||||||
|
<ID>TooManyFunctions:Ranges.kt$Ranges</ID>
|
||||||
|
<ID>TooManyFunctions:SearchHighlightsHelper.kt$com.maddyhome.idea.vim.helper.SearchHighlightsHelper.kt</ID>
|
||||||
|
<ID>TooManyFunctions:VisualGroup.kt$com.maddyhome.idea.vim.group.visual.VisualGroup.kt</ID>
|
||||||
|
<ID>TooManyFunctions:VisualMotionGroup.kt$VisualMotionGroup</ID>
|
||||||
|
</CurrentIssues>
|
||||||
|
</SmellBaseline>
|
||||||
31
.detekt/config.yaml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
formatting:
|
||||||
|
Indentation:
|
||||||
|
indentSize: 2
|
||||||
|
continuationIndentSize: 8
|
||||||
|
ParameterListWrapping:
|
||||||
|
indentSize: 8
|
||||||
|
complexity:
|
||||||
|
LongParameterList:
|
||||||
|
functionThreshold: 12
|
||||||
|
NestedBlockDepth:
|
||||||
|
threshold: 6
|
||||||
|
ComplexCondition:
|
||||||
|
threshold: 6
|
||||||
|
ComplexMethod:
|
||||||
|
threshold: 20
|
||||||
|
exceptions:
|
||||||
|
TooGenericExceptionCaught:
|
||||||
|
active: false
|
||||||
|
naming:
|
||||||
|
ClassNaming:
|
||||||
|
excludes: "**/ConfigurationMigrators.kt, **/VersionDetectors.kt"
|
||||||
|
performance:
|
||||||
|
SpreadOperator:
|
||||||
|
active: false
|
||||||
|
style:
|
||||||
|
ForbiddenComment:
|
||||||
|
active: false
|
||||||
|
MaxLineLength:
|
||||||
|
maxLineLength: 160
|
||||||
|
ReturnCount:
|
||||||
|
max: 5
|
||||||
9
.editorconfig
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*.java]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
[*.kt]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
17
.gitignore
vendored
@@ -1,5 +1,20 @@
|
|||||||
*.swp
|
*.swp
|
||||||
|
/.gradle/
|
||||||
|
|
||||||
/.idea/
|
/.idea/
|
||||||
/idea/
|
!/.idea/scopes
|
||||||
|
!/.idea/copyright
|
||||||
|
!/.idea/icon.png
|
||||||
|
!/.idea/inspectionProfiles
|
||||||
|
!/.idea/fileTemplates
|
||||||
|
!/.idea/runConfigurations
|
||||||
|
|
||||||
|
/build/
|
||||||
/out/
|
/out/
|
||||||
/tmp/
|
/tmp/
|
||||||
|
|
||||||
|
*.DS_Store
|
||||||
|
|
||||||
|
.teamcity/.idea
|
||||||
|
.teamcity/target
|
||||||
|
.teamcity/*.iml
|
||||||
|
|||||||
280
.idea/codeStyleSettings.xml
generated
@@ -1,280 +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="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" />
|
|
||||||
</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="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="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
||||||
<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>
|
|
||||||
|
|
||||||
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 |
34
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<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="PluginXmlI18n" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
<inspection_tool class="UnstableApiUsage" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
47
.idea/inspectionProfiles/Qodana.xml
generated
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<description>Inspections profile for Qodana</description>
|
||||||
|
<option name="myName" value="Qodana" />
|
||||||
|
<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>
|
||||||
10
.idea/misc.xml
generated
@@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="EntryPointsManager">
|
|
||||||
<entry_points version="2.0" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="IntelliJ Plugin SDK" project-jdk-type="IDEA JDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
|
|
||||||
9
.idea/modules.xml
generated
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/ideavim.iml" filepath="$PROJECT_DIR$/ideavim.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
|
|
||||||
36
.idea/runConfigurations/All_tests.xml
generated
@@ -1,36 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="All tests" type="JUnit" factoryName="JUnit">
|
|
||||||
<extension name="coverage" enabled="false" merge="false" runner="idea">
|
|
||||||
<pattern>
|
|
||||||
<option name="PATTERN" value="com.maddyhome.idea.vim.*" />
|
|
||||||
<option name="ENABLED" value="true" />
|
|
||||||
</pattern>
|
|
||||||
<pattern>
|
|
||||||
<option name="PATTERN" value="org.jetbrains.plugins.ideavim.*" />
|
|
||||||
<option name="ENABLED" value="true" />
|
|
||||||
</pattern>
|
|
||||||
</extension>
|
|
||||||
<module name="ideavim" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
|
||||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
|
||||||
<option name="PACKAGE_NAME" value="org.jetbrains.plugins.ideavim" />
|
|
||||||
<option name="MAIN_CLASS_NAME" value="" />
|
|
||||||
<option name="METHOD_NAME" value="" />
|
|
||||||
<option name="TEST_OBJECT" value="package" />
|
|
||||||
<option name="VM_PARAMETERS" value="-ea" />
|
|
||||||
<option name="PARAMETERS" value="" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
|
|
||||||
<option name="ENV_VARIABLES" />
|
|
||||||
<option name="PASS_PARENT_ENVS" value="true" />
|
|
||||||
<option name="TEST_SEARCH_SCOPE">
|
|
||||||
<value defaultName="moduleWithDependencies" />
|
|
||||||
</option>
|
|
||||||
<envs />
|
|
||||||
<patterns />
|
|
||||||
<RunnerSettings RunnerId="Cover" />
|
|
||||||
<RunnerSettings RunnerId="Run" />
|
|
||||||
<ConfigurationWrapper RunnerId="Cover" />
|
|
||||||
<ConfigurationWrapper RunnerId="Run" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
||||||
10
.idea/runConfigurations/IdeaVim.xml
generated
@@ -1,10 +0,0 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="IdeaVim" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
|
|
||||||
<module name="ideavim" />
|
|
||||||
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -Didea.is.internal=true" />
|
|
||||||
<option name="PROGRAM_PARAMETERS" value="" />
|
|
||||||
<RunnerSettings RunnerId="Run" />
|
|
||||||
<ConfigurationWrapper RunnerId="Run" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
||||||
24
.idea/runConfigurations/IdeaVim_full_verification.xml
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="IdeaVim full verification" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<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>
|
||||||
23
.idea/runConfigurations/IdeaVim_tests.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="IdeaVim tests" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<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>
|
||||||
23
.idea/runConfigurations/Start_IJ_with_IdeaVim.xml
generated
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Start IJ with IdeaVim" type="GradleRunConfiguration" factoryName="Gradle">
|
||||||
|
<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]:com//*||file[IdeaVIM.test]:*/" />
|
||||||
|
</component>
|
||||||
7
.idea/vcs.xml
generated
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
|
|
||||||
94
.teamcity/_Self/Project.kt
vendored
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
package _Self
|
||||||
|
|
||||||
|
import _Self.buildTypes.GitHubPullRequests
|
||||||
|
import _Self.buildTypes.Nvim
|
||||||
|
import _Self.buildTypes.PluginVerifier
|
||||||
|
import _Self.buildTypes.Release
|
||||||
|
import _Self.buildTypes.ReleaseEap
|
||||||
|
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.TestsForIntelliJEAP
|
||||||
|
import _Self.vcsRoots.Branch_181
|
||||||
|
import _Self.vcsRoots.Branch_183
|
||||||
|
import _Self.vcsRoots.Branch_191_193
|
||||||
|
import _Self.vcsRoots.Branch_201
|
||||||
|
import _Self.vcsRoots.GitHubPullRequest
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
|
||||||
|
|
||||||
|
object Project : Project({
|
||||||
|
description = "Vim emulation plugin for the IntelliJ platform products"
|
||||||
|
|
||||||
|
vcsRoot(Branch_183)
|
||||||
|
vcsRoot(Branch_181)
|
||||||
|
vcsRoot(Branch_191_193)
|
||||||
|
vcsRoot(Branch_201)
|
||||||
|
vcsRoot(GitHubPullRequest)
|
||||||
|
|
||||||
|
buildType(GitHubPullRequests)
|
||||||
|
|
||||||
|
buildType(Release)
|
||||||
|
buildType(ReleaseEap)
|
||||||
|
|
||||||
|
buildType(TestsForIntelliJ20202)
|
||||||
|
buildType(TestsForIntelliJ20203)
|
||||||
|
buildType(TestsForIntelliJEAP)
|
||||||
|
|
||||||
|
buildType(Nvim)
|
||||||
|
buildType(PluginVerifier)
|
||||||
|
|
||||||
|
buildType(TestsForIntelliJ20201)
|
||||||
|
buildType(TestsForIntelliJ20191)
|
||||||
|
buildType(TestsForIntelliJ20181)
|
||||||
|
buildType(TestsForIntelliJ20192)
|
||||||
|
buildType(TestsForIntelliJ20182)
|
||||||
|
buildType(TestsForIntelliJ20193)
|
||||||
|
buildType(TestsForIntelliJ20183)
|
||||||
|
|
||||||
|
features {
|
||||||
|
feature {
|
||||||
|
id = "PROJECT_EXT_768"
|
||||||
|
type = "CloudImage"
|
||||||
|
param("use-spot-instances", "true")
|
||||||
|
param("user-tags", "project=idea-vim")
|
||||||
|
param("agent_pool_id", "41")
|
||||||
|
param("image-instances-limit", "")
|
||||||
|
param("subnet-id", "subnet-58839511")
|
||||||
|
param("ebs-optimized", "false")
|
||||||
|
param("instance-type", "c5d.large")
|
||||||
|
param("amazon-id", "ami-0d1a6a32faa92923e")
|
||||||
|
param("spot-instance-price", "0.1")
|
||||||
|
param("source-id", "BuildAgentsIdeaVim")
|
||||||
|
param("image-name-prefix", "BuildAgentsIdeaVim")
|
||||||
|
param("key-pair-name", "teamcity-prod-pub")
|
||||||
|
param("security-group-ids", "sg-eda08696,sg-7332cf0f,")
|
||||||
|
param("profileId", "amazon-48")
|
||||||
|
}
|
||||||
|
feature {
|
||||||
|
id = "amazon-48"
|
||||||
|
type = "CloudProfile"
|
||||||
|
param("profileServerUrl", "")
|
||||||
|
param("secure:access-id", "credentialsJSON:dbcdb2a2-de5f-4bc9-9421-292b19e83947")
|
||||||
|
param("system.cloud.profile_id", "amazon-48")
|
||||||
|
param("total-work-time", "")
|
||||||
|
param("description", "")
|
||||||
|
param("cloud-code", "amazon")
|
||||||
|
param("enabled", "true")
|
||||||
|
param("max-running-instances", "10")
|
||||||
|
param("agentPushPreset", "")
|
||||||
|
param("profileId", "amazon-48")
|
||||||
|
param("name", "Cloud Agents")
|
||||||
|
param("next-hour", "")
|
||||||
|
param("secure:secret-key", "credentialsJSON:65a87fe7-0977-4af9-96f1-344f2b82d269")
|
||||||
|
param("region", "eu-west-1")
|
||||||
|
param("terminate-idle-time", "15")
|
||||||
|
param("not-checked", "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
45
.teamcity/_Self/buildTypes/ActiveTests.kt
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
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.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean check"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
vcs {
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requirements {
|
||||||
|
noLessThanVer("teamcity.agent.jvm.version", "1.8")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJEAP : ActiveTests("Tests for IntelliJ Latest EAP", "LATEST-EAP-SNAPSHOT")
|
||||||
|
object TestsForIntelliJ20203 : ActiveTests("Tests for IntelliJ 2020.3", "2020.3")
|
||||||
|
object TestsForIntelliJ20202 : ActiveTests("Tests for IntelliJ 2020.2", "2020.2")
|
||||||
74
.teamcity/_Self/buildTypes/GitHubPullRequests.kt
vendored
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
package _Self.buildTypes
|
||||||
|
|
||||||
|
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 GitHubPullRequests : BuildType({
|
||||||
|
name = "GitHub Pull Requests"
|
||||||
|
description = "Test GitHub pull requests"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "2020.3")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(_Self.vcsRoots.GitHubPullRequest)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.ON_SERVER
|
||||||
|
branchFilter = """
|
||||||
|
+:*
|
||||||
|
-:<default>
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean test"
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
})
|
||||||
54
.teamcity/_Self/buildTypes/Nvim.kt
vendored
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
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.buildSteps.script
|
||||||
|
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", "LATEST-EAP-SNAPSHOT")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
|
||||||
|
param("env.ideavim.nvim.path", "./nvim-linux64/bin/nvim")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
name = "Set up NeoVim"
|
||||||
|
scriptContent = """
|
||||||
|
wget https://github.com/neovim/neovim/releases/download/v0.4.4/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")
|
||||||
|
}
|
||||||
|
})
|
||||||
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.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
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/Release.kt
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
object Release : BuildType({
|
||||||
|
name = "Publish Release"
|
||||||
|
description = "Build and publish IdeaVim plugin"
|
||||||
|
|
||||||
|
artifactRules = "build/distributions/*"
|
||||||
|
buildNumberPattern = "0.64"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "2020.2")
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_publishToken",
|
||||||
|
"credentialsJSON:ec1dc748-e289-47e1-88b6-f193d7999bf4",
|
||||||
|
label = "Password"
|
||||||
|
)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_publishUsername", "vlan")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_version", "%build.number%")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_publishChannels", "default,eap")
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean publishPlugin"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
75
.teamcity/_Self/buildTypes/ReleaseEap.kt
vendored
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
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.buildFeatures.vcsLabeling
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.ScheduleTrigger
|
||||||
|
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule
|
||||||
|
|
||||||
|
object ReleaseEap : BuildType({
|
||||||
|
name = "Publish EAP Build"
|
||||||
|
description = "Build and publish EAP of IdeaVim plugin"
|
||||||
|
|
||||||
|
artifactRules = "build/distributions/*"
|
||||||
|
buildNumberPattern = "0.64.%build.counter%"
|
||||||
|
|
||||||
|
params {
|
||||||
|
param("env.ORG_GRADLE_PROJECT_ideaVersion", "2020.2")
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_publishToken",
|
||||||
|
"credentialsJSON:ec1dc748-e289-47e1-88b6-f193d7999bf4",
|
||||||
|
label = "Token"
|
||||||
|
)
|
||||||
|
param("env.ORG_GRADLE_PROJECT_publishUsername", "vlan")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_version", "%build.number%")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
|
||||||
|
param("env.ORG_GRADLE_PROJECT_publishChannels", "eap")
|
||||||
|
password(
|
||||||
|
"env.ORG_GRADLE_PROJECT_slackUrl",
|
||||||
|
"credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5",
|
||||||
|
label = "Slack Token"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
vcs {
|
||||||
|
root(DslContext.settingsRoot)
|
||||||
|
|
||||||
|
checkoutMode = CheckoutMode.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
steps {
|
||||||
|
gradle {
|
||||||
|
tasks = "clean publishPlugin slackEapNotification"
|
||||||
|
buildFile = ""
|
||||||
|
enableStacktrace = true
|
||||||
|
param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
triggers {
|
||||||
|
schedule {
|
||||||
|
enabled = false
|
||||||
|
schedulingPolicy = daily {
|
||||||
|
hour = 22
|
||||||
|
}
|
||||||
|
branchFilter = ""
|
||||||
|
triggerBuild = onWatchedBuildChange {
|
||||||
|
buildType = "IdeaVim_TestsForIntelliJBranch146"
|
||||||
|
watchedBuildRule = ScheduleTrigger.WatchedBuildRule.LAST_SUCCESSFUL
|
||||||
|
watchedBuildBranchFilter = "<default>"
|
||||||
|
promoteWatchedBuild = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
features {
|
||||||
|
vcsLabeling {
|
||||||
|
vcsRootId = "${DslContext.settingsRoot.id}"
|
||||||
|
labelingPattern = "%system.build.number%-EAP"
|
||||||
|
successfulOnly = true
|
||||||
|
branchFilter = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
44
.teamcity/_Self/buildTypes/TestsForIntelliJ20183.kt
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
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.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.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
})
|
||||||
47
.teamcity/_Self/buildTypes/TestsForIntelliJ_181-182.kt
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
@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.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.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJ20181 : TestsForIntelliJ_181_branch("2018.1")
|
||||||
|
object TestsForIntelliJ20182 : TestsForIntelliJ_181_branch("2018.2")
|
||||||
49
.teamcity/_Self/buildTypes/TestsForIntelliJ_191-193.kt
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
@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.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.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJ20191 : TestsForIntelliJ_191_193_branch("2019.1")
|
||||||
|
object TestsForIntelliJ20192 : TestsForIntelliJ_191_193_branch("2019.2")
|
||||||
|
object TestsForIntelliJ20193 : TestsForIntelliJ_191_193_branch("2019.3")
|
||||||
46
.teamcity/_Self/buildTypes/TestsForIntelliJ_201.kt
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
@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.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.ON_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
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")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
object TestsForIntelliJ20201 : TestsForIntelliJ_201_branch("2020.1")
|
||||||
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/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"
|
||||||
|
}
|
||||||
|
})
|
||||||
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.1"
|
||||||
|
project(_Self.Project)
|
||||||
350
AUTHORS.md
@@ -3,25 +3,349 @@ 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:andrey.vlasovskikh@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/vlasovskikh)
|
||||||
|
|
||||||
|
Andrey Vlasovskikh
|
||||||
|
* [![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
|
||||||
|
|
||||||
Contributors:
|
Contributors:
|
||||||
|
* [![icon][mail]](mailto:yole@jetbrains.com)
|
||||||
* [Dmitry Jemerov](mailto:yole@jetbrains.com)
|
[![icon][github]](https://github.com/yole)
|
||||||
* [Marquis Wang](mailto:marquis@marquiswang.com)
|
|
||||||
* [Julien Hoarau](mailto:madgnome@gmail.com)
|
Dmitry Jemerov
|
||||||
* [Masanobu Imai](mailto:masanobu.imai@gmail.com)
|
* [![icon][mail]](mailto:marquis@marquiswang.com)
|
||||||
* [poxu](mailto:poxvuibr@gmail.com)
|
[![icon][github]](https://github.com/marquiswang)
|
||||||
* [Alexander Zolotov](mailto:alexander.zolotov@jetbrains.com)
|
|
||||||
* [John Lindquist](mailto:johnlindquist@gmail.com)
|
Marquis Wang
|
||||||
|
* [![icon][mail]](mailto:madgnome@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Julien Hoarau
|
||||||
|
* [![icon][mail]](mailto:masanobu.imai@gmail.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Masanobu Imai
|
||||||
|
* [![icon][mail]](mailto:poxvuibr@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/poxu)
|
||||||
|
|
||||||
|
poxu
|
||||||
|
* [![icon][mail]](mailto:alexander.zolotov@jetbrains.com)
|
||||||
|
[![icon][github]](https://github.com/zolotov)
|
||||||
|
|
||||||
|
Alexander Zolotov
|
||||||
|
* [![icon][mail]](mailto:johnlindquist@gmail.com)
|
||||||
|
[![icon][github]](https://github.com/johnlindquist)
|
||||||
|
|
||||||
|
John Lindquist
|
||||||
|
* [![icon][mail]](mailto:iklotzko@ltech.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
Ira Klotzko
|
||||||
|
* [![icon][mail]](mailto:alex@selesse.com)
|
||||||
|
[![icon][github]](https://github.com/selesse)
|
||||||
|
|
||||||
|
Alex Selesse
|
||||||
|
* [![icon][mail]](mailto:dbennett@palantir.com)
|
||||||
|
[![icon][github-off]](#)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
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]: resources/icons/mail.png
|
||||||
|
[github]: resources/icons/github.png
|
||||||
|
|
||||||
|
[github-off]: resources/icons/github-off.png
|
||||||
|
|||||||
748
CHANGES.md
@@ -3,9 +3,730 @@ 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 DOES NOT adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
0.28, 2013-04-06
|
Stable versions use X.Y format.
|
||||||
----------------
|
EAP versions use X.Y.Z format.
|
||||||
|
|
||||||
|
|
||||||
|
Get an Early Access
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Would you like to try new features and fixes? Join the Early Access Program and
|
||||||
|
receive EAP builds as updates! Use the `EAP` option in the status bar or
|
||||||
|
add this URL to "Settings | Plugins | Manage Plugin Repositories":
|
||||||
|
`https://plugins.jetbrains.com/plugins/eap/ideavim`
|
||||||
|
|
||||||
|
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
|
||||||
|
usual beta standards.
|
||||||
|
|
||||||
|
## 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`.
|
||||||
|
|
||||||
|
|
||||||
|
### 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="resources/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="resources/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-1187](https://youtrack.jetbrains.com/issue/VIM-1187) Improved performance of `set relativelinenumber` on large files
|
||||||
|
* [VIM-620](https://youtrack.jetbrains.com/issue/VIM-620) Fixed handling `<C-O>` and `<Esc>` in Insert and Replace modes
|
||||||
|
* [VIM-798](https://youtrack.jetbrains.com/issue/VIM-798) Allow arrow keys for window navigation commands
|
||||||
|
|
||||||
|
|
||||||
|
## 0.50, 2018-10-18
|
||||||
|
|
||||||
|
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
|
||||||
|
multiple-cursors` into your ~/.ideavimrc to enable it). Support for running
|
||||||
|
Vim commands for multiple cursors. Various bug fixes.
|
||||||
|
|
||||||
|
* [VIM-634](https://youtrack.jetbrains.com/issue/VIM-634) Support for vim-multiple-cursors commands `<A-n>`, `<A-x>`, `<A-p>`, `g<A-n>`
|
||||||
|
* [VIM-780](https://youtrack.jetbrains.com/issue/VIM-780) Support for running Vim commands for multiple cursors
|
||||||
|
* [VIM-176](https://youtrack.jetbrains.com/issue/VIM-176) Fixed arrow key navigation in Run/Debug tool windows
|
||||||
|
* [VIM-339](https://youtrack.jetbrains.com/issue/VIM-339) Fixed `<Esc>` in diff windows
|
||||||
|
* [VIM-862](https://youtrack.jetbrains.com/issue/VIM-862) Allow `:action` to work in visual mode
|
||||||
|
* [VIM-1110](https://youtrack.jetbrains.com/issue/VIM-1110) Put the caret in correct place after `I` in visual block mode
|
||||||
|
* [VIM-1329](https://youtrack.jetbrains.com/issue/VIM-1329) Request focus reliably for Ex entry and output panels
|
||||||
|
* [VIM-1368](https://youtrack.jetbrains.com/issue/VIM-1368) Wait for focus reliably before running an `:action`
|
||||||
|
* [VIM-1379](https://youtrack.jetbrains.com/issue/VIM-1379) Fixed `I` for short lines in visual block mode
|
||||||
|
* [VIM-1380](https://youtrack.jetbrains.com/issue/VIM-1380) Fixed `cw` with count at the end of a word
|
||||||
|
* [VIM-1404](https://youtrack.jetbrains.com/issue/VIM-1404) Fixed the ability to use `:e#` when editor tabs are hidden
|
||||||
|
* [VIM-1431](https://youtrack.jetbrains.com/issue/VIM-1431) Fixed pasting text into the empty document
|
||||||
|
* [VIM-1427](https://youtrack.jetbrains.com/issue/VIM-1427) Added the support for count to the `it` and `at` motions
|
||||||
|
* [VIM-1287](https://youtrack.jetbrains.com/issue/VIM-1287) Fixed `i(` actions inside string literals
|
||||||
|
* [VIM-1317](https://youtrack.jetbrains.com/issue/VIM-1317) Don't run Undo/Redo inside write actions
|
||||||
|
* [VIM-1366](https://youtrack.jetbrains.com/issue/VIM-1366) Don't wrap a secondary event loop for `input()` into a write action
|
||||||
|
* [VIM-1274](https://youtrack.jetbrains.com/issue/VIM-1274) Correctly process escaping when `smartcase` is on
|
||||||
|
|
||||||
|
|
||||||
|
## 0.49, 2017-12-12
|
||||||
|
|
||||||
|
Enabled zero-latency typing for Vim emulation. Added support for `iskeyword` option. Various bug fixes.
|
||||||
|
|
||||||
|
* [VIM-1254](https://youtrack.jetbrains.com/issue/VIM-1254) Enable zero-latency typing for Vim emulation
|
||||||
|
* [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
|
||||||
|
|
||||||
|
## 0.48, 2017-01-15
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* [VIM-1205](https://youtrack.jetbrains.com/issue/VIM-1205) Don't move key handling into separate event for raw handlers
|
||||||
|
* [VIM-1216](https://youtrack.jetbrains.com/issue/VIM-1216) Fixed `.` resetting the last find movement while repeating change that also uses movement
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* Support for zero-latency rendering
|
||||||
|
|
||||||
|
|
||||||
|
## 0.47, 2016-10-19
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-1098 Don't start visual selection when mouse click was actually drag over single character
|
||||||
|
* VIM-1190 Fixed exception "Write access is allowed from write-safe contexts only"
|
||||||
|
|
||||||
|
|
||||||
|
## 0.46, 2016-07-07
|
||||||
|
|
||||||
|
Added `incsearch` option for incremental search. Added support for `it` and
|
||||||
|
`at` tag block selection. Added `vim-surround` commands `ys`, `cs`, `ds`,
|
||||||
|
`S`. Various bug fixes.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* VIM-769 Added `vim-surround` commands `ys`, `cs`, `ds`, `S`
|
||||||
|
* VIM-264 Added tag block selection
|
||||||
|
* VIM-271 Added `incsearch` option for showing search results while typing
|
||||||
|
* VIM-217 Added support for `={motion}` formatting command
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-796 Fixed focus issues with `:action` command
|
||||||
|
* VIM-581 Fixed use of special registers `0`-`9` and `-` in delete commands
|
||||||
|
* VIM-965 Fixed exception in `[m` in some file types
|
||||||
|
* VIM-564 Fixed `g_` move to go to the current line
|
||||||
|
* VIM-964 Fixed marks behavior when the whole line got deleted
|
||||||
|
* VIM-259 Move caret to the line beginning after `==`
|
||||||
|
* VIM-246 Fixed `{count}==` formatting
|
||||||
|
* VIM-287 Fixed insert new line before and after folds
|
||||||
|
* VIM-139 Focus on current search and use modal confirmation for `:s///gc`
|
||||||
|
* VIM-843 Don't highlight search results after restart
|
||||||
|
* VIM-1126 Fixed warning about modifying shortcuts of global actions for 2016.2
|
||||||
|
|
||||||
|
|
||||||
|
## 0.44, 2015-11-02
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
|
||||||
|
* VIM-1040 Fixed typing keys in completion menus and typing with the
|
||||||
|
plugin disabled
|
||||||
|
|
||||||
|
|
||||||
|
## 0.43, 2015-11-02
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
* VIM-1039 Fixed running the plugin with Java 6
|
||||||
|
|
||||||
|
|
||||||
|
## 0.42, 2015-11-01
|
||||||
|
|
||||||
|
This release is compatible with IntelliJ 15+ and other IDEs based on the
|
||||||
|
IntelliJ platform branch 143+.
|
||||||
|
|
||||||
|
* VIM-970 Fixed move commands in read-only files
|
||||||
|
|
||||||
|
|
||||||
|
## 0.41, 2015-06-10
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
* VIM-957 Fixed plugin version 0.40 is not compatible with IDEs other than
|
||||||
|
IntelliJ
|
||||||
|
|
||||||
|
|
||||||
|
## 0.40, 2015-06-09
|
||||||
|
|
||||||
|
Added support for `mapleader`. Support comments in `%` brace matching. Various
|
||||||
|
bug fixes.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* VIM-650 Added support for `mapleader`
|
||||||
|
* VIM-932 Support comments in `%` brace matching
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-586 Invoke Vim shortcuts handler later to restore the sequence of input
|
||||||
|
events
|
||||||
|
* VIM-838 `J` shouldn't add whitespace if there is a trailing space
|
||||||
|
* VIM-855 Fixed regexp character class problem
|
||||||
|
* VIM-210 Fix focus issues with the Ex panel and splits
|
||||||
|
* VIM-575 Don't change cursor position of other splits in visual mode
|
||||||
|
* VIM-864 Fixed visual marks getting changed during visual substitute
|
||||||
|
* VIM-856 Fixed regex look-behind problem
|
||||||
|
* VIM-868 Allow count on `gt` and `gT`
|
||||||
|
* VIM-700 Remapping `0` should still allow it to be entered in command count
|
||||||
|
* VIM-781 Fixed expanding visual block selection past empty lines
|
||||||
|
* VIM-845 Fixed `c` and `x` functionality for visual block selections
|
||||||
|
* VIM-930 Fixed editor focus issues after closing Ex entry box on Oracle Java 6
|
||||||
|
|
||||||
|
|
||||||
|
## 0.39, 2014-12-03
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-848 Show line numbers if they are enabled in the settings and there is
|
||||||
|
no `set number`
|
||||||
|
* VIM-702 Fix infinite loop on `s/$/\r/g`
|
||||||
|
* EA-63022 Don't update line numbers in the caret movement event listener
|
||||||
|
|
||||||
|
|
||||||
|
## 0.38, 2014-12-01
|
||||||
|
|
||||||
|
Added support for `number` and `relativenumber` options, `clipboard=unnamed`
|
||||||
|
option. Added `:action` and `:actionlist` commands for executing arbitrary
|
||||||
|
IDE actions. Various bug fixes.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* VIM-476 Added support for `clipboard=unnamed` option
|
||||||
|
* VIM-410 Added support for `relativenumber` option
|
||||||
|
* VIM-483 Added support for `number` option
|
||||||
|
* VIM-652 Added `:action` and `:actionlist` commands for executing arbitrary
|
||||||
|
IDE actions
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-818 Enable key repeat on Mac OS X every time it gets reset by the OS
|
||||||
|
* VIM-624 Deselect visual selection range on opening the Ex entry field
|
||||||
|
* VIM-511 Fixed editing offset after `<BS>` for `.` command
|
||||||
|
* VIM-792 Fixed line-wise and block-wise paste commands for `*` and `+`
|
||||||
|
registers
|
||||||
|
* VIM-501 Fixed off-by-1 error in visual block-wise selection
|
||||||
|
* VIM-613 Fixed repeat after `d$`
|
||||||
|
* VIM-705 Fixed repeated multiline indent
|
||||||
|
* VIM-567 Fixed `:!` to allow running non-filter commands
|
||||||
|
* VIM-536 Fixed `cc` on the second-to-last line
|
||||||
|
* VIM-515 Fixed `cW` command detecting end-of-word incorrectly
|
||||||
|
* VIM-794 Fixed NCDFE related to 'number' in IDEs other than IntelliJ
|
||||||
|
* VIM-771 Fix semicolon repeat for 'till char' motion
|
||||||
|
* VIM-723 Fix pasting to an empty line
|
||||||
|
|
||||||
|
|
||||||
|
## 0.37, 2014-10-15
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-784 Fixed visual line selection where the start of the selection range
|
||||||
|
was greater than its end
|
||||||
|
* VIM-407 Fixed `>>` to work if a line contains only one character
|
||||||
|
|
||||||
|
|
||||||
|
## 0.36, 2014-10-14
|
||||||
|
|
||||||
|
Added support for common window splitting and navigation commands. Various bug
|
||||||
|
fixes.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* VIM-171 Window `<C-W>` commands: split, close, next/previous windows,
|
||||||
|
left/right/up/down windows
|
||||||
|
* VIM-265 Window `:split` and `:vsplit` commands
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-632 Restored visual block mode that was broken due to multiple carets support
|
||||||
|
* VIM-770 Close the current tab on `:quit` instead of all tabs with the current
|
||||||
|
file
|
||||||
|
* VIM-569 Fixed `<C-W>` when the caret is at the end of a line
|
||||||
|
|
||||||
|
|
||||||
|
## 0.35, 2014-05-15
|
||||||
|
|
||||||
|
The `~/.vimrc` initialization file is no longer read by default, use
|
||||||
|
`~/.ideavimrc` instead.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* VIM-690 Read initialization commands only from `~/.ideavimrc`
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-676 Handle control characters in `.ideavimrc` as pressed, not typed
|
||||||
|
keystrokes
|
||||||
|
* VIM-679 Parse characters less than U+0020 as `<C-$CHAR>`
|
||||||
|
* VIM-683 Allow `<C-PageUp>`/`<C-PagDown>` to be used outside of Vim emulation
|
||||||
|
* VIM-646 Don't update the visual selection if a command moves the caret and exits
|
||||||
|
the visual mode
|
||||||
|
* VIM-213 Use `'<` and `'>` marks for saving and restoring the last visual
|
||||||
|
selection
|
||||||
|
|
||||||
|
|
||||||
|
## 0.34, 2014-04-29
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-674 Don't handle `<Tab>` in Insert mode in Vim emulation
|
||||||
|
* VIM-672 Ignore mappings that contain `<Plug>` and `<SID>`
|
||||||
|
* VIM-670 First character of a recursive mapping shouldn't be mapped again
|
||||||
|
* VIM-666 Support `<Bar>` in Vim key notation
|
||||||
|
* VIM-666 Ignore characters after `|` in `:map` commands
|
||||||
|
* VIM-667 Ignore potentially nested lines of .vimrc based on leading whitespace
|
||||||
|
|
||||||
|
|
||||||
|
## 0.33, 2014-04-28
|
||||||
|
|
||||||
|
Added support for `:map` key mapping commands. New keyboard shortcuts handler
|
||||||
|
that doesn't require a separate keymap for Vim emulation. Added support for
|
||||||
|
`:source` and `:sort` commands.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* VIM-288 Support for `:map` key mapping commands
|
||||||
|
* VIM-543 Allow granular enable/disable of Vim shortcut keys
|
||||||
|
* VIM-643 Support for `:source` command
|
||||||
|
* VIM-439 Support for `:sort` command
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-528 Search and replace with grouping no longer works
|
||||||
|
* VIM-281 Don't disable global reformat code action for Vim emulation
|
||||||
|
|
||||||
|
|
||||||
|
## 0.32, 2013-11-15
|
||||||
|
|
||||||
|
Fixed API compatibility with IntelliJ platform builds 132.1052+.
|
||||||
|
|
||||||
|
|
||||||
|
## 0.31, 2013-11-12
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-582 Fixed line comment and reformat commands with no visual selection
|
||||||
|
|
||||||
|
|
||||||
|
## 0.30, 2013-11-11
|
||||||
|
|
||||||
|
Added support for a separate `.ideavimrc` config file. Fixed long-standing
|
||||||
|
issues with merged undo/redo commands and `<Esc>` during code completion.
|
||||||
|
Various bug fixes.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* VIM-425 Read config from .ideavimrc if available
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-98 Invoke actions in separate commands for better undo/redo
|
||||||
|
* VIM-193 Launch Vim action handler for `<Esc>` in completion windows
|
||||||
|
* VIM-440 Fixed `:e` open file dialog
|
||||||
|
* VIM-550 `:put` creates a new line
|
||||||
|
* VIM-551 Argument of `:put` is optional
|
||||||
|
* Fixed several reported exceptions
|
||||||
|
|
||||||
|
|
||||||
|
## 0.29, 2013-05-15
|
||||||
|
|
||||||
|
A bugfix release.
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* VIM-482 Fixed repeat buffer limits
|
||||||
|
* VIM-91 Enable normal `<Enter>` handling for one-line editors
|
||||||
|
* VIM-121 Don't move cursor while scrolling
|
||||||
|
|
||||||
|
|
||||||
|
## 0.28, 2013-04-06
|
||||||
|
|
||||||
A bugfix release.
|
A bugfix release.
|
||||||
|
|
||||||
@@ -15,8 +736,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.
|
||||||
@@ -37,8 +757,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
|
||||||
@@ -57,8 +776,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.
|
||||||
|
|
||||||
@@ -67,8 +785,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.
|
||||||
@@ -98,7 +815,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
|
||||||
@@ -107,8 +824,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.
|
||||||
|
|
||||||
@@ -117,8 +833,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.
|
||||||
|
|
||||||
@@ -137,8 +852,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.
|
||||||
|
|
||||||
145
CONTRIBUTING.md
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
[![TeamCity Build][teamcity-build-status-svg]][teamcity-build-status]
|
||||||
|
|
||||||
|
IdeaVim is an open source project created by 60+ 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!
|
||||||
|
|
||||||
|
## 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`.
|
||||||
|
- Ex command executor: `CommandHandler`.
|
||||||
|
|
||||||
|
- 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`): `OptionsManager`.
|
||||||
|
- 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`.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
### 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)
|
||||||
|
* [Unofficial discord server](https://jb.gg/bi6zp7)
|
||||||
|
* [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.
|
||||||
389
README.md
@@ -1,174 +1,325 @@
|
|||||||
|
<img src="resources/META-INF/pluginIcon.svg" width="80" height="80" alt="icon" align="left"/>
|
||||||
|
|
||||||
IdeaVim
|
IdeaVim
|
||||||
=======
|
===
|
||||||
|
|
||||||
IdeaVim is a Vim emulation plug-in for IDEs based on the IntelliJ platform.
|
[![Official JetBrains Project][jb-official-svg]][jb-official]
|
||||||
IdeaVim can be used with IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm
|
[![Contributions welcome][contributions-welcome-svg]][contributions-welcome]
|
||||||
and AppCode.
|
[![Downloads][plugin-downloads-svg]][plugin-repo]
|
||||||
|
[![Rating][plugin-rating-svg]][plugin-repo]
|
||||||
|
[![Version][plugin-version-svg]][plugin-repo]
|
||||||
|
[![Gitter][gitter-svg]][gitter]
|
||||||
|
[![Twitter][twitter-svg]][twitter]
|
||||||
|
|
||||||
Resources:
|
IdeaVim is a Vim emulation plugin for IntelliJ Platform-based IDEs.
|
||||||
|
|
||||||
* [Plugin homepage](http://plugins.intellij.net/plugin/?id=164)
|
##### Contact maintainers:
|
||||||
* [Changelog](https://github.com/JetBrains/ideavim/blob/master/CHANGES.md)
|
* [Bug tracker](https://youtrack.jetbrains.com/issues/VIM)
|
||||||
* [Bug tracker](http://youtrack.jetbrains.com/issues/VIM)
|
* [@IdeaVim](https://twitter.com/ideavim) on Twitter
|
||||||
* [Continuous integration builds](http://teamcity.jetbrains.com/project.html?projectId=project55)
|
* [Chat on gitter](https://gitter.im/JetBrains/ideavim)
|
||||||
* [@IdeaVim](http://twitter.com/ideavim) in Twitter
|
* [Unofficial discord server](https://jb.gg/bi6zp7)
|
||||||
|
|
||||||
|
##### Resources:
|
||||||
|
|
||||||
Installation
|
* [Plugin homepage](https://plugins.jetbrains.com/plugin/164-ideavim)
|
||||||
|
* [Changelog](CHANGES.md)
|
||||||
|
* [Continuous integration builds](https://teamcity.jetbrains.com/project.html?projectId=IdeaVim&guest=1)
|
||||||
|
|
||||||
|
#### Compatibility
|
||||||
|
|
||||||
|
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` to enable or disable emulation.
|
||||||
it is unchecked. At this point IDE will work with it's regular keyboard
|
|
||||||
shortcuts.
|
- Use the `~/.ideavimrc` file as an analog of `~/.vimrc` ([learn more](#Files)). The XDG standard is supported, as well.
|
||||||
|
|
||||||
|
- Shortcut conflicts can be resolved by using:
|
||||||
|
- On Linux & Windows: `File | Settings | Editor | Vim Emulation` & `File | Settings | Keymap`,
|
||||||
|
- On macOS: `Preferences | Editor | Vim Emulation` & `Preferences | Keymap`,
|
||||||
|
- Regular Vim mappings in the `~/.ideavimrc` file.
|
||||||
|
|
||||||
|
Get Early Access
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Would you like to try new features and fixes? Join the Early Access Program and
|
||||||
|
receive EAP builds as updates!
|
||||||
|
|
||||||
|
1. Click the IdeaVim icon <img src="resources/META-INF/pluginIcon_noBorders.svg" width="16" height="16" alt="icon"/>
|
||||||
|
in the status bar | `EAP` | `Get Early Access...`
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
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
|
|
||||||
* Deletion/Changing
|
|
||||||
* Insert mode commands
|
|
||||||
* Marks
|
|
||||||
* Registers
|
|
||||||
* Undo/redo
|
|
||||||
* Visual mode commands
|
|
||||||
* Some Ex commands
|
|
||||||
* Some [:set options](https://github.com/JetBrains/ideavim/blob/master/doc/set-commands.md)
|
|
||||||
* Full Vim regexps for search and search/replace
|
|
||||||
* Macros
|
|
||||||
* Digraphs
|
|
||||||
* Command line and search history
|
|
||||||
* Vim web help
|
|
||||||
|
|
||||||
Not supported (yet):
|
|
||||||
|
|
||||||
|
* Normal / insert / visual / select / etc. modes
|
||||||
|
* Motion / deletion / change / window / etc. commands
|
||||||
* Key mappings
|
* Key mappings
|
||||||
* Various less used commands
|
* Marks / Macros / Digraphs / Registers
|
||||||
* Jump lists
|
* Some [set commands](doc/set-commands.md)
|
||||||
* Window commands
|
* Full Vim regexps for search and search/replace
|
||||||
|
* Vim web help
|
||||||
|
* `~/.ideavimrc` configuration file
|
||||||
|
|
||||||
Please see the file [index.txt](https://github.com/JetBrains/ideavim/blob/master/index.txt)
|
[Emulated Vim plugins](doc/emulated-plugins.md):
|
||||||
for a list of commands covered with tests.
|
|
||||||
|
* vim-easymotion
|
||||||
|
* vim-surround
|
||||||
|
* vim-multiple-cursors
|
||||||
|
* vim-commentary
|
||||||
|
* argtextobj.vim
|
||||||
|
* vim-textobj-entire
|
||||||
|
* ReplaceWithRegister
|
||||||
|
* vim-exchange
|
||||||
|
* vim-highlightedyank
|
||||||
|
|
||||||
|
See also:
|
||||||
|
|
||||||
|
* [The list of all supported commands](src/com/maddyhome/idea/vim/package-info.java)
|
||||||
|
* [Top feature requests and bugs](https://youtrack.jetbrains.com/issues/VIM?q=%23Unresolved+sort+by%3A+votes)
|
||||||
|
|
||||||
|
|
||||||
Changes to the IDE
|
Files
|
||||||
------------------
|
-----
|
||||||
|
|
||||||
### Undo/Redo
|
* `~/.ideavimrc`
|
||||||
|
* Your IdeaVim-specific Vim initialization commands
|
||||||
|
|
||||||
The IdeaVim plugin uses the undo/redo functionality of the IntelliJ platform,
|
<details>
|
||||||
so the behaviour of the `u` and `<C-R>` commands may differ from the original
|
<summary><strong>Example</strong> (click to see)</summary>
|
||||||
Vim. Vim compatibility of undo/redo may be improved in the future releases.
|
|
||||||
|
|
||||||
### Escape
|
```vim
|
||||||
|
""" Map leader to space ---------------------
|
||||||
|
let mapleader=" "
|
||||||
|
|
||||||
In the IDE, the `<Esc>` key is used during editing to cancel code completion
|
""" Plugins --------------------------------
|
||||||
windows, dialog windows, and parameter tooltips. While in the Vim insert mode,
|
set surround
|
||||||
`<Esc>` is used to return back to the normal mode. If you are typing in the
|
set multiple-cursors
|
||||||
insert mode and a code completion window is popped up, pressing `<Esc>` cancel
|
set commentary
|
||||||
the window without exiting the insert mode.
|
set argtextobj
|
||||||
|
set easymotion
|
||||||
|
set textobj-entire
|
||||||
|
set ReplaceWithRegister
|
||||||
|
|
||||||
Using `<Esc>` in dialog windows remains problematic. For most dialog windows
|
""" Plugin settings -------------------------
|
||||||
the Vim emulator is put into the insert mode without the possibility to switch to
|
let g:argtextobj_pairs="[:],(:),<:>"
|
||||||
the normal mode. 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.
|
|
||||||
|
|
||||||
### Menu Changes
|
""" Common settings -------------------------
|
||||||
|
set showmode
|
||||||
|
set so=5
|
||||||
|
set incsearch
|
||||||
|
set nu
|
||||||
|
|
||||||
In order to emulate the keystrokes used by Vim, several of the default hotkeys
|
""" Idea specific settings ------------------
|
||||||
used by the IDE had to be changed. Below is a list of IDE menus, their default
|
set ideajoin
|
||||||
keyboard shortcuts, and their new VIM keystrokes.
|
set ideastatusicon=gray
|
||||||
|
set idearefactormode=keep
|
||||||
|
|
||||||
File
|
""" Mappings --------------------------------
|
||||||
Save All Ctrl-S :w
|
map <leader>f <Plug>(easymotion-s)
|
||||||
|
map <leader>e <Plug>(easymotion-f)
|
||||||
|
|
||||||
Edit
|
map <leader>d <Action>(Debug)
|
||||||
Undo Ctrl-Z u
|
map <leader>r <Action>(RenameElement)
|
||||||
Redo Ctrl-Shift-Z Ctrl-R
|
map <leader>c <Action>(Stop)
|
||||||
Cut Ctrl-X "+x
|
map <leader>z <Action>(ToggleDistractionFreeMode)
|
||||||
Copy Ctrl-C "+y
|
|
||||||
Paste Ctrl-V "+P
|
|
||||||
Select All Ctrl-A ggVG
|
|
||||||
|
|
||||||
Search
|
map <leader>s <Action>(SelectInProjectView)
|
||||||
Find Ctrl-F /
|
map <leader>a <Action>(Annotate)
|
||||||
Replace Ctrl-R :s
|
map <leader>h <Action>(Vcs.ShowTabbedFileHistory)
|
||||||
Find Next F3 n
|
map <S-Space> <Action>(GotoNextError)
|
||||||
Find Previous Shift-F3 N
|
|
||||||
|
|
||||||
View
|
map <leader>b <Action>(ToggleLineBreakpoint)
|
||||||
Quick JavaDoc Ctrl-Q K
|
map <leader>o <Action>(FileStructurePopup)
|
||||||
Parameter Info Ctrl-P Ctrl-Shift-P
|
```
|
||||||
Swap Panels Ctrl-U <None>
|
</details>
|
||||||
Recent Files... Ctrl-E <None>
|
|
||||||
Type Hierarchy Ctrl-H Ctrl-Alt-Shift-H
|
|
||||||
|
|
||||||
Goto
|
<details>
|
||||||
Class... Ctrl-N Alt-Shift-N
|
<summary><strong>Suggested options</strong> (click to see)</summary>
|
||||||
Line... Ctrl-G G
|
|
||||||
Declaration Ctrl-B gd
|
|
||||||
Super Method Ctrl-U Ctrl-Shift-U
|
|
||||||
|
|
||||||
Code
|
Here is also a list of the suggested options from [defaults.vim](https://github.com/vim/vim/blob/master/runtime/defaults.vim)
|
||||||
Override Methods... Ctrl-O Ctrl-Shift-O
|
|
||||||
Implement Methods... Ctrl-I Ctrl-Shift-I
|
|
||||||
Complete Code (Only in Insert mode)
|
|
||||||
Basic Ctrl-Space Ctrl-Space or Ctrl-N or Ctrl-P
|
|
||||||
Smart Type Ctrl-Shift-Space Ctrl-Shift-Space
|
|
||||||
Class Name Ctrl-Alt-Space Ctrl-Alt-Space
|
|
||||||
Insert Live Template Ctrl-J Ctrl-]
|
|
||||||
|
|
||||||
Tools
|
```vim
|
||||||
Version Control
|
" Show a few lines of context around the cursor. Note that this makes the
|
||||||
Check In Project Ctrl-K <None>
|
" 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>
|
||||||
|
|
||||||
|
|
||||||
Development
|
You can read your `~/.vimrc` file from `~/.ideavimrc` with this command:
|
||||||
-----------
|
|
||||||
|
|
||||||
### Development Environment
|
source ~/.vimrc
|
||||||
|
|
||||||
1. Fork IdeaVim on GitHub and clone the repository on your local machine.
|
> :warning: Please note that IdeaVim currently parses `~/.ideavimrc` & `~/.vimrc` files via simple pattern-matching.
|
||||||
|
See [VIM-669](https://youtrack.jetbrains.com/issue/VIM-669) for proper parsing
|
||||||
|
of VimL files.
|
||||||
|
|
||||||
2. Open the project in IntelliJ IDEA 11+ (Community or Ultimate) using "File |
|
Also note that if you have overridden the `user.home` JVM option, this
|
||||||
Open... | /path/to/ideavim".
|
will affect where IdeaVim looks for your `.ideavimrc` file. For example, if you
|
||||||
|
have `-Duser.home=/my/alternate/home` then IdeaVim will source
|
||||||
|
`/my/alternate/home/.ideavimrc` instead of `~/.ideavimrc`.
|
||||||
|
|
||||||
3. Set up a JDK if you haven't got it yet. Use "File | Project Structure | SDKs
|
Alternatively, you can set up initialization commands using [XDG](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) standard.
|
||||||
| Add new JDK".
|
Put your settings to `$XDG_CONFIG_HOME/ideavim/ideavimrc` file.
|
||||||
|
|
||||||
4. Set up an IntelliJ plugin SDK using "File | Project Structure | SDKs | Add
|
|
||||||
new IntelliJ IDEA Plugin SDK". The correct path to your current installation
|
|
||||||
of IntelliJ will be suggested automatically. You will be prompted to select a
|
|
||||||
JDK for your plugin SDK. Select the JDK from the previous step. You
|
|
||||||
**should** name your plugin SDK `IntelliJ Plugin SDK` in order to match the
|
|
||||||
name in the project settings stored in the Git repository.
|
|
||||||
|
|
||||||
5. Select a project SDK for your project using "File | Project Structure |
|
Emulated Vim Plugins
|
||||||
Project | Project SDK". Choose the plugin SDK you have created at the
|
--------------------
|
||||||
previous step.
|
|
||||||
|
|
||||||
6. Build IdeaVim and run IntelliJ with IdeaVim enabled using the "IdeaVim" run
|
See [doc/emulated-plugins.md](doc/emulated-plugins.md)
|
||||||
configuration (use "Run | Run... | IdeaVim").
|
|
||||||
|
|
||||||
7. In order to be able to run tests in your IntelliJ edition uncomment the
|
Executing IDE Actions
|
||||||
appropriate lines in the constructor of the `VimTestCase` class.
|
---------------------
|
||||||
|
|
||||||
|
IdeaVim adds various commands for listing and executing arbitrary IDE actions as
|
||||||
|
Ex commands or via `:map` command mappings:
|
||||||
|
|
||||||
|
**Executing actions:**
|
||||||
|
* `:action {action_id}`
|
||||||
|
* Execute an action by id. Works from Ex command line.
|
||||||
|
* `<Action>(*action_id*)`
|
||||||
|
* For the mappings you can use a special `<Action>` keyword. Don't forget the parentheses.
|
||||||
|
|
||||||
|
**Finding actions:**
|
||||||
|
* `:actionlist [pattern]`
|
||||||
|
* Find IDE actions by id or keymap pattern (E.g. `:actionlist extract`, `:actionlist <C-D`)
|
||||||
|
|
||||||
|
* In addition to `:actionlist` command, IdeaVim provides `IdeaVim: track action Ids` option to
|
||||||
|
extract the ids of executed command. This option can be found in "Search everywhere" (double `shift`).
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>"Track action Ids" Details</strong> (click to see)</summary>
|
||||||
|
<img src="resources/readme/track_action_id.gif" alt="track action ids"/>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
```vim
|
||||||
|
" Map \r to the Reformat Code action
|
||||||
|
:map \r <Action>(ReformatCode)
|
||||||
|
|
||||||
|
" Map <leader>d to start debug
|
||||||
|
:map <leader>d <Action>(Debug)
|
||||||
|
|
||||||
|
" Map \b to toggle the breakpoint on the current line
|
||||||
|
:map \b <Action>(ToggleLineBreakpoint)
|
||||||
|
```
|
||||||
|
|
||||||
|
:gem: Contributing
|
||||||
|
------------
|
||||||
|
|
||||||
|
The power of contributing drives IdeaVim :muscle:. Even small contributions matter!
|
||||||
|
|
||||||
|
See [CONTRIBUTING.md](CONTRIBUTING.md) to start bringing your value to the project.
|
||||||
|
|
||||||
Authors
|
Authors
|
||||||
-------
|
-------
|
||||||
|
|
||||||
See [AUTHORS.md](https://github.com/JetBrains/ideavim/blob/master/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](doc/set-commands.md).
|
||||||
|
|
||||||
|
- Use your vim settings with IdeaVim. Put `source ~/.vimrc` in `~/.ideavimrc`.
|
||||||
|
> :warning: Please note that IdeaVim currently parses `~/.ideavimrc` & `~/.vimrc` files via simple pattern-matching.
|
||||||
|
See [VIM-669](https://youtrack.jetbrains.com/issue/VIM-669) for proper parsing
|
||||||
|
of VimL files.
|
||||||
|
|
||||||
|
- Control the status bar icon via the [`ideastatusicon` option](doc/set-commands.md).
|
||||||
|
- Not familiar with the default behaviour during a refactoring? See the [`idearefactormode` option](doc/set-commands.md).
|
||||||
|
|
||||||
|
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
|
||||||
|
|||||||
164
build.gradle
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
import dev.feedforward.markdownto.DownParser
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven { url 'https://jitpack.io' }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||||
|
classpath "com.github.AlexPl292:mark-down-to-slack:1.1.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.intellij' version '0.6.5'
|
||||||
|
id 'io.gitlab.arturbosch.detekt' version '1.14.1'
|
||||||
|
id "org.jetbrains.changelog" version "0.6.2"
|
||||||
|
}
|
||||||
|
|
||||||
|
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"
|
||||||
|
plugins = ['java']
|
||||||
|
|
||||||
|
downloadRobotServerPlugin.version = "0.10.0"
|
||||||
|
|
||||||
|
publishPlugin {
|
||||||
|
channels publishChannels.split(',')
|
||||||
|
username publishUsername
|
||||||
|
token publishToken
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
runIdeForUiTests {
|
||||||
|
systemProperty "robot-server.port", "8082"
|
||||||
|
}
|
||||||
|
|
||||||
|
runPluginVerifier {
|
||||||
|
ideVersions = ["IC-2020.2.3", "IC-2020.3"]
|
||||||
|
downloadDirectory = "${project.buildDir}/pluginVerifier/ides"
|
||||||
|
teamCityOutputFormat = true
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
jcenter()
|
||||||
|
maven { url = "https://jetbrains.bintray.com/intellij-third-party-dependencies" }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
|
||||||
|
compileOnly "org.jetbrains:annotations:20.1.0"
|
||||||
|
|
||||||
|
// https://mvnrepository.com/artifact/com.ensarsarajcic.neovim.java/neovim-api
|
||||||
|
testImplementation("com.ensarsarajcic.neovim.java:neovim-api:0.1.16")
|
||||||
|
|
||||||
|
testImplementation("com.intellij.remoterobot:remote-robot:0.10.0")
|
||||||
|
testImplementation("com.intellij.remoterobot:remote-fixtures:1.1.18")
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin {
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = javaVersion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileTestKotlin {
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = javaVersion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
detekt {
|
||||||
|
config = files("${rootProject.projectDir}/.detekt/config.yaml")
|
||||||
|
baseline = file("${rootProject.projectDir}/.detekt/baseline.xml")
|
||||||
|
input = files("src")
|
||||||
|
|
||||||
|
buildUponDefaultConfig = true
|
||||||
|
|
||||||
|
reports {
|
||||||
|
html.enabled = false
|
||||||
|
xml.enabled = false
|
||||||
|
txt.enabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.detekt.jvmTarget = javaVersion
|
||||||
|
|
||||||
|
task testWithNeovim(type: Test) {
|
||||||
|
group = "verification"
|
||||||
|
systemProperty "ideavim.nvim.test", 'true'
|
||||||
|
}
|
||||||
|
|
||||||
|
changelog {
|
||||||
|
groups = ["Features:", "Changes:", "Deprecations:", "Fixes:", "Merged PRs:"]
|
||||||
|
itemPrefix = "*"
|
||||||
|
path = "${project.projectDir}/CHANGES.md"
|
||||||
|
unreleasedTerm = "To Be Released"
|
||||||
|
headerParserRegex = /0\.\d{2}(.\d+)?/
|
||||||
|
// header = { "${project.version}" }
|
||||||
|
// version = "0.60"
|
||||||
|
}
|
||||||
|
|
||||||
|
task getUnreleasedChangelog() {
|
||||||
|
group = "changelog"
|
||||||
|
doLast {
|
||||||
|
def log = changelog.getUnreleased().toHTML()
|
||||||
|
println log
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("slackEapNotification") {
|
||||||
|
doLast {
|
||||||
|
if (!slackUrl) return
|
||||||
|
def post = new URL(slackUrl).openConnection()
|
||||||
|
def changeLog = changelog.getUnreleased().toText()
|
||||||
|
def slackDown = new DownParser(changeLog, true).toSlack().toString()
|
||||||
|
def message = """
|
||||||
|
{
|
||||||
|
"text": "New version of IdeaVim",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"type": "section",
|
||||||
|
"text": {
|
||||||
|
"type": "mrkdwn",
|
||||||
|
"text": "IdeaVim EAP $version has been released\\n$slackDown"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
post.setRequestMethod("POST")
|
||||||
|
post.setDoOutput(true)
|
||||||
|
post.setRequestProperty("Content-Type", "application/json")
|
||||||
|
post.getOutputStream().write(message.getBytes("UTF-8"))
|
||||||
|
def postRC = post.getResponseCode()
|
||||||
|
println(postRC)
|
||||||
|
if (postRC == 200) {
|
||||||
|
println(post.getInputStream().getText())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
version-id:0.28
|
|
||||||
platform-version:110.0
|
|
||||||
idea.download.url=http://download.jetbrains.com/idea/ideaIU-12.1.zip
|
|
||||||
build.number=x
|
|
||||||
182
build.xml
@@ -1,182 +0,0 @@
|
|||||||
<project name="IdeaVim">
|
|
||||||
<!--
|
|
||||||
* IdeaVim - A Vim emulator plugin for IntelliJ Idea
|
|
||||||
* Copyright (C) 2003-2009 Rick Maddy, Oleg Shpynov
|
|
||||||
*
|
|
||||||
* 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, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
-->
|
|
||||||
<property file="build.properties"/>
|
|
||||||
|
|
||||||
<property name="idea" value="${basedir}/idea"/>
|
|
||||||
<property name="src" value="${basedir}/src"/>
|
|
||||||
<property name="resources" value="${basedir}/resources"/>
|
|
||||||
<property name="test" value="${basedir}/test"/>
|
|
||||||
<property name="keymap" value="${basedir}/resources/Vim.xml"/>
|
|
||||||
<property name="idea.home" value="${idea}/unzip"/>
|
|
||||||
<property environment="env"/>
|
|
||||||
<property name="tools.jar" value="${env.JAVA_HOME}/lib/tools.jar"/>
|
|
||||||
<property name="version" value="${version-id}"/>
|
|
||||||
<property name="filename" value="ideavim-${version}"/>
|
|
||||||
|
|
||||||
<!--Output-->
|
|
||||||
<property name="out" value="${basedir}/out"/>
|
|
||||||
<property name="classes" value="${out}/classes"/>
|
|
||||||
<property name="build" value="${out}/build"/>
|
|
||||||
<property name="dist" value="${out}/dist"/>
|
|
||||||
<property name="test-reports" value="${out}/test-reports"/>
|
|
||||||
|
|
||||||
<path id="build.classpath">
|
|
||||||
<fileset dir="${idea.home}/lib">
|
|
||||||
<include name="*.jar"/>
|
|
||||||
</fileset>
|
|
||||||
<fileset dir="${java.home}/lib">
|
|
||||||
<include name="*.jar"/>
|
|
||||||
</fileset>
|
|
||||||
<pathelement path="${classes}"/>
|
|
||||||
</path>
|
|
||||||
|
|
||||||
<path id="test.classpath">
|
|
||||||
<path refid="build.classpath"/>
|
|
||||||
<pathelement path="${tools.jar}"/>
|
|
||||||
</path>
|
|
||||||
|
|
||||||
<!-- Clean all the generated stuff -->
|
|
||||||
<target name="clean" description="Removes all generated files">
|
|
||||||
<delete dir="${out}"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<!-- Compile all the sources to the ${classes} folder -->
|
|
||||||
<target name="compile">
|
|
||||||
<mkdir dir="${classes}"/>
|
|
||||||
<taskdef name="javac2" classname="com.intellij.ant.Javac2">
|
|
||||||
<classpath refid="build.classpath"/>
|
|
||||||
</taskdef>
|
|
||||||
<!-- The task requires the following libraries from IntelliJ IDEA distribution: -->
|
|
||||||
<!-- javac2.jar; jdom.jar; asm.jar; asm-commons.jar -->
|
|
||||||
<javac2 destdir="${classes}" debug="on" fork="true" encoding="UTF-8" includeantruntime="false">
|
|
||||||
<classpath refid="build.classpath"/>
|
|
||||||
<src path="${src}"/>
|
|
||||||
<include name="com/maddyhome/idea/**"/>
|
|
||||||
</javac2>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<!-- Create ideavim.jar for packing inside zip plugin package -->
|
|
||||||
<target name="jar">
|
|
||||||
<mkdir dir="${classes}"/>
|
|
||||||
<mkdir dir="${classes}/META-INF"/>
|
|
||||||
<copy file="resources/META-INF/plugin.xml" todir="${classes}/META-INF">
|
|
||||||
<filterset>
|
|
||||||
<filter token="VERSION" value="${version}"/>
|
|
||||||
<filter token="SINCE-VERSION" value="${platform-version}"/>
|
|
||||||
</filterset>
|
|
||||||
</copy>
|
|
||||||
<copy todir="${classes}">
|
|
||||||
<fileset dir="${src}" excludes="**/*.java"/>
|
|
||||||
</copy>
|
|
||||||
<copy todir="${classes}">
|
|
||||||
<fileset dir="${resources}"/>
|
|
||||||
</copy>
|
|
||||||
<mkdir dir="${build}"/>
|
|
||||||
<jar basedir="${classes}" jarfile="${build}/IdeaVim.jar" compress="yes"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="build" depends="unzip, clean, compile, jar" description="Compiles all source code and created plugin jar file"/>
|
|
||||||
|
|
||||||
<!-- Download IntelliJ IDEA distribution -->
|
|
||||||
<target name="download" description="Downloads IntelliJ IDEA artifacts">
|
|
||||||
<mkdir dir="${idea}"/>
|
|
||||||
<get src="${idea.download.url}" dest="${idea}" skipexisting="true"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<!-- Unpack idea-*.zip file for ideavim compilation -->
|
|
||||||
<target name="unzip" depends="download" description="Unzip downloaded artifacts and set up idea.home">
|
|
||||||
<delete dir="${idea}/unzip"/>
|
|
||||||
<mkdir dir="${idea}/unzip"/>
|
|
||||||
<basename property="idea.filename" file="${idea.download.url}"/>
|
|
||||||
<unzip dest="${idea}/unzip">
|
|
||||||
<fileset dir="${idea}" includes="${idea.filename}"/>
|
|
||||||
</unzip>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="dist" depends="dist-src, dist-bin" description="Creates the src and bin distribution files"/>
|
|
||||||
|
|
||||||
<!-- Prepare layout for plugin distribution and creates zip file which can be published -->
|
|
||||||
<target name="dist-bin" depends="clean, build" description="Creates a zip file containing the plugin sources">
|
|
||||||
<delete dir="${build}/IdeaVim"/>
|
|
||||||
<mkdir dir="${build}/IdeaVim"/>
|
|
||||||
<copy file="${basedir}/LICENSE.txt" tofile="${build}/IdeaVim/LICENSE"/>
|
|
||||||
<copy file="${keymap}" todir="${build}/IdeaVim"/>
|
|
||||||
<copy todir="${build}/IdeaVim/lib">
|
|
||||||
<fileset dir="${build}" includes="*.jar"/>
|
|
||||||
</copy>
|
|
||||||
<copy file="${basedir}/README.md" tofile="${build}/IdeaVim/README"/>
|
|
||||||
<copy file="${basedir}/CHANGES.md" tofile="${build}/IdeaVim/CHANGES"/>
|
|
||||||
<zip basedir="${build}" zipfile="${dist}/${filename}.zip" compress="true" includes="IdeaVim/**"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<!-- Packs all the sources -->
|
|
||||||
<target name="dist-src" depends="clean" description="Creates the source tar file">
|
|
||||||
<mkdir dir="${dist}"/>
|
|
||||||
<tar basedir="." destfile="${dist}/${filename}-src.tar.gz" excludes=".git/**,.idea/**,idea/**,out/**,*.iws,*.iml" compression="gzip"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="compile-tests" depends="compile">
|
|
||||||
<mkdir dir="${classes}"/>
|
|
||||||
<taskdef name="javac2" classname="com.intellij.ant.Javac2">
|
|
||||||
<classpath refid="build.classpath"/>
|
|
||||||
</taskdef>
|
|
||||||
<javac2 destdir="${classes}" debug="on" fork="true" encoding="UTF-8" includeantruntime="false">
|
|
||||||
<classpath refid="build.classpath"/>
|
|
||||||
<src path="${test}"/>
|
|
||||||
<include name="org/jetbrains/plugins/ideavim/**"/>
|
|
||||||
</javac2>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="prepare-tests" depends="compile-tests">
|
|
||||||
<mkdir dir="${classes}/META-INF"/>
|
|
||||||
<copy file="resources/META-INF/plugin.xml" todir="${classes}/META-INF">
|
|
||||||
<filterset>
|
|
||||||
<filter token="VERSION" value="${version}"/>
|
|
||||||
<filter token="SINCE-VERSION" value="${platform-version}"/>
|
|
||||||
</filterset>
|
|
||||||
</copy>
|
|
||||||
<copy todir="${classes}">
|
|
||||||
<fileset dir="${resources}"/>
|
|
||||||
</copy>
|
|
||||||
<mkdir dir="${out}/IdeaVim"/>
|
|
||||||
<copy file="${keymap}" todir="${build}/IdeaVim"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="test" depends="unzip, clean, prepare-tests">
|
|
||||||
<mkdir dir="${test-reports}"/>
|
|
||||||
<junit fork="true" logfailedtests="false" printsummary="true">
|
|
||||||
<classpath refid="test.classpath"/>
|
|
||||||
|
|
||||||
<jvmarg value="-Xmx256M"/>
|
|
||||||
<jvmarg value="-ea"/>
|
|
||||||
<jvmarg value="-Djava.awt.headless=true"/>
|
|
||||||
<jvmarg value="-Didea.plugins.path=${out}"/>
|
|
||||||
<jvmarg value="-Didea.load.plugins.id=IdeaVIM"/>
|
|
||||||
|
|
||||||
<formatter type="plain"/>
|
|
||||||
|
|
||||||
<batchtest todir="${test-reports}">
|
|
||||||
<fileset dir="${test}">
|
|
||||||
<include name="**/*Test.java"/>
|
|
||||||
</fileset>
|
|
||||||
</batchtest>
|
|
||||||
</junit>
|
|
||||||
</target>
|
|
||||||
</project>
|
|
||||||
178
doc/emulated-plugins.md
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
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`:
|
||||||
|
|
||||||
|
```
|
||||||
|
set <extension-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
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.
|
||||||
|
* `set easymotion`
|
||||||
|
* 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).
|
||||||
|
|
||||||
|
## surround
|
||||||
|
|
||||||
|
* Setup: `set surround`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/tpope/vim-surround'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'tpope/vim-surround'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-surround'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'https://www.vim.org/scripts/script.php?script_id=1697'</code>
|
||||||
|
</details>
|
||||||
|
* Emulates [vim-surround](https://github.com/tpope/vim-surround)
|
||||||
|
* Commands: `ys`, `cs`, `ds`, `S`
|
||||||
|
|
||||||
|
## multiple-cursors
|
||||||
|
|
||||||
|
* Setup: `set multiple-cursors`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/terryma/vim-multiple-cursors'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'terryma/vim-multiple-cursors'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-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: `set commentary`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/tpope/vim-commentary'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug '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>
|
||||||
|
</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: `set ReplaceWithRegister`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/vim-scripts/ReplaceWithRegister'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug '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>
|
||||||
|
</details>
|
||||||
|
* Emulates [ReplaceWithRegister](https://github.com/vim-scripts/ReplaceWithRegister)
|
||||||
|
* Commands: `gr`, `grr`
|
||||||
|
* By [igrekster](https://github.com/igrekster)
|
||||||
|
|
||||||
|
## argtextobj
|
||||||
|
|
||||||
|
* Setup:
|
||||||
|
* `set argtextobj`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/vim-scripts/argtextobj.vim'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug '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>
|
||||||
|
</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: `set exchange`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/tommcdo/vim-exchange'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'tommcdo/vim-exchange'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-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: `set textobj-entire`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/kana/vim-textobj-entire'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug '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>
|
||||||
|
</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:
|
||||||
|
* `set highlightedyank`
|
||||||
|
* <details>
|
||||||
|
<summary>Alternative vim-plug / vundle syntax</summary>
|
||||||
|
<code>Plug 'https://github.com/machakann/vim-highlightedyank'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'machakann/vim-highlightedyank'</code>
|
||||||
|
<br/>
|
||||||
|
<code>Plug 'vim-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)
|
||||||
51
doc/ideajoin-examples.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
Some examples of join command with `ideajoin` option enabled.
|
||||||
|
Put `set ideajoin` to your `~/.ideavimrc` to enable this functionality.
|
||||||
|
|
||||||
|
1) Automatic join concatenated lines:
|
||||||
|
|
||||||
|
```
|
||||||
|
"Hello" + -> "Hello world"
|
||||||
|
" world!"
|
||||||
|
```
|
||||||
|
|
||||||
|
2) Nested if's:
|
||||||
|
|
||||||
|
```
|
||||||
|
if (a) { -> if (a && b) {
|
||||||
|
if (b) { ...
|
||||||
|
... }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
3) Remove braces from one line for / if / while:
|
||||||
|
|
||||||
|
```
|
||||||
|
if (fail) { -> if (fail) return;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
4) Kotlin one line method:
|
||||||
|
|
||||||
|
```
|
||||||
|
fun myNumber(): Int { -> fun myNumber(): Int = 42
|
||||||
|
return 42
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
5) Join declaration and initialization:
|
||||||
|
|
||||||
|
```
|
||||||
|
int a; -> int a = 5;
|
||||||
|
a = 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
6) Chain call:
|
||||||
|
|
||||||
|
```
|
||||||
|
sb.append("a"); -> sb.append("a").append("b");
|
||||||
|
sb.append("b");
|
||||||
|
```
|
||||||
|
|
||||||
|
And other functions provided by the plugins.
|
||||||
@@ -1,23 +1,136 @@
|
|||||||
List of Supported Set Commands
|
List of Supported Set Commands
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
The following `:set` commands can appear in `~/.vimrc` or set manually in the command mode:
|
The following `:set` commands can appear in `~/.ideavimrc` or be set manually in the command mode:
|
||||||
|
|
||||||
'digraph' 'dg' enable the entering of digraphs in Insert mode
|
'clipboard' 'cb' clipboard options
|
||||||
'gdefault' 'gd' the ":substitute" flag 'g' is default on
|
Standard clipboard options plus
|
||||||
'history' 'hi' number of command-lines that are remembered
|
|
||||||
'hlsearch' 'hls' highlight matches with last search pattern
|
`ideaput` (default on) - IdeaVim ONLY
|
||||||
'ignorecase' 'ic' ignore case in search patterns
|
enable native idea paste action for put operations
|
||||||
'matchpairs' 'mps' pairs of characters that "%" can match
|
|
||||||
'nrformats' 'nf' number formats recognized for CTRL-A command
|
'digraph' 'dg' enable the entering of digraphs in Insert mode
|
||||||
'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D
|
'gdefault' 'gd' the ":substitute" flag 'g' is by default
|
||||||
'scrolljump' 'sj' minimum number of lines to scroll
|
'history' 'hi' number of command-lines that are remembered
|
||||||
'scrolloff' 'so' minimum nr. of lines above and below cursor
|
'hlsearch' 'hls' highlight matches with the last search pattern
|
||||||
'selection' 'sel' what type of selection to use
|
'ignorecase' 'ic' ignore case in search patterns
|
||||||
'showmode' 'smd' message on status line to show current mode
|
'iskeyword' 'isk' defines keywords for commands like 'w', '*', etc.
|
||||||
'sidescroll' 'ss' minimum number of columns to scroll horizontal
|
'incsearch' 'is' show where search pattern typed so far matches
|
||||||
'sidescrolloff' 'siso' min. nr. of columns to left and right of cursor
|
|
||||||
'smartcase' 'scs' no ignore case when pattern has uppercase
|
`keymodel` `km` String (default "continueselect,stopselect")
|
||||||
'undolevels' 'ul' maximum number of changes that can be undone
|
|
||||||
'visualbell' 'vb' use visual bell instead of beeping
|
List of comma separated words, which enable special things that keys
|
||||||
'wrapscan' 'ws' searches wrap around the end of the file
|
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
|
||||||
|
|
||||||
|
'matchpairs' 'mps' pairs of characters that "%" can match
|
||||||
|
'more' 'more' When on, listings pause when the whole screen is filled.
|
||||||
|
'nrformats' 'nf' number formats recognized for CTRL-A command
|
||||||
|
'number' 'nu' print the line number in front of each line
|
||||||
|
'relativenumber' 'rnu' show the line number relative to the line with
|
||||||
|
the cursor
|
||||||
|
'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D
|
||||||
|
'scrolljump' 'sj' minimum number of lines to scroll
|
||||||
|
'scrolloff' 'so' minimum number of lines above and below the cursor
|
||||||
|
'selection' 'sel' what type of selection to use
|
||||||
|
|
||||||
|
`selectmode` `slm` String (default "")
|
||||||
|
|
||||||
|
This is a comma-separated list of words, which specify when to start
|
||||||
|
Select mode instead of Visual mode, when a selection is started.
|
||||||
|
Possible values:
|
||||||
|
mouse when using the mouse
|
||||||
|
key when using shifted special[1] keys
|
||||||
|
cmd when using "v", "V", or <C-V>
|
||||||
|
ideaselection when IDE sets a selection - IdeaVim ONLY
|
||||||
|
(examples: extend selection, wrap with while, etc.)
|
||||||
|
|
||||||
|
'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>
|
||||||
|
|||||||
13
gradle.properties
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# suppress inspection "UnusedProperty" for whole file
|
||||||
|
|
||||||
|
ideaVersion=LATEST-EAP-SNAPSHOT
|
||||||
|
downloadIdeaSources=true
|
||||||
|
instrumentPluginCode=true
|
||||||
|
version=SNAPSHOT
|
||||||
|
javaVersion=1.8
|
||||||
|
kotlinVersion=1.3.71
|
||||||
|
publishUsername=username
|
||||||
|
publishToken=token
|
||||||
|
publishChannels=eap
|
||||||
|
|
||||||
|
slackUrl=
|
||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
5
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
||||||
185
gradlew
vendored
Executable file
@@ -0,0 +1,185 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright 2015 the original author or 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
|
||||||
|
##
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
PRG="$0"
|
||||||
|
# Need this for relative symlinks.
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`"/$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
SAVED="`pwd`"
|
||||||
|
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||||
|
APP_HOME="`pwd -P`"
|
||||||
|
cd "$SAVED" >/dev/null
|
||||||
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
|
APP_BASE_NAME=`basename "$0"`
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD="maximum"
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN* )
|
||||||
|
cygwin=true
|
||||||
|
;;
|
||||||
|
Darwin* )
|
||||||
|
darwin=true
|
||||||
|
;;
|
||||||
|
MINGW* )
|
||||||
|
msys=true
|
||||||
|
;;
|
||||||
|
NONSTOP* )
|
||||||
|
nonstop=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||||
|
else
|
||||||
|
JAVACMD="$JAVA_HOME/bin/java"
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
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.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||||
|
MAX_FD_LIMIT=`ulimit -H -n`
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||||
|
MAX_FD="$MAX_FD_LIMIT"
|
||||||
|
fi
|
||||||
|
ulimit -n $MAX_FD
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
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 or MSYS, switch paths to Windows format before running java
|
||||||
|
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; 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=`expr $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
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Escape application args
|
||||||
|
save () {
|
||||||
|
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||||
|
echo " "
|
||||||
|
}
|
||||||
|
APP_ARGS=`save "$@"`
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||||
|
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
104
gradlew.bat
vendored
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
@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
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
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.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if "%ERRORLEVEL%" == "0" goto init
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto init
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
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
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@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%
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
||||||
15
ideavim.iml
@@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="PLUGIN_MODULE" version="4">
|
|
||||||
<component name="DevKit.ModuleBuildProperties" url="file://$MODULE_DIR$/resources/META-INF/plugin.xml" />
|
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
||||||
<exclude-output />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/resources" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
||||||
|
|
||||||
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
|
|
||||||
23
resources/META-INF/includes/ApplicationServices.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<idea-plugin>
|
||||||
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.MotionGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.ChangeGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.CommandGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.MarkGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.RegisterGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.FileGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.SearchGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.ProcessGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.MacroGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.DigraphGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.HistoryGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.KeyGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.WindowGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.EditorGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.visual.VisualMotionGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.copy.YankGroup"/>
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.copy.PutGroup"/>
|
||||||
|
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.group.NotificationService"/>
|
||||||
|
</extensions>
|
||||||
|
</idea-plugin>
|
||||||
351
resources/META-INF/includes/VimActions.xml
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
<idea-plugin>
|
||||||
|
<extensions defaultExtensionNs="IdeaVIM">
|
||||||
|
<!-- Motions -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.tabs.MotionPreviousTabAction" mappingModes="NXO" keys="gT"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.tabs.MotionNextTabAction" mappingModes="NXO" keys="gt"/>
|
||||||
|
<!-- Left/Right -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionColumnAction" mappingModes="NXO" keys="|"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstColumnAction" mappingModes="NXO" keys="0"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstColumnInsertModeAction" mappingModes="I" keys="«Home»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstScreenColumnAction" mappingModes="NXO" keys="g0,g«Home»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstNonSpaceAction" mappingModes="NXO" keys="^"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionFirstScreenNonSpaceAction" mappingModes="NXO" keys="g^"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLastColumnAction" mappingModes="NXO" keys="$"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLastColumnInsertAction" mappingModes="I" keys="«End»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLastScreenColumnAction" mappingModes="NXO" keys="g$,g«End»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLastMatchCharAction" mappingModes="NXO" keys=";"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLastMatchCharReverseAction" mappingModes="NXO" keys="«COMMA»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLastNonSpaceAction" mappingModes="NXO" keys="g_"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftAction" mappingModes="NXO" keys="h"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftInsertModeAction" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftWrapAction" mappingModes="NXO" keys="«BS»,«C-H»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftMatchCharAction" mappingModes="NXO" keys="F"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionLeftTillMatchCharAction" mappingModes="NXO" keys="T"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionMiddleColumnAction" mappingModes="NXO" keys="gm"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionRightAction" mappingModes="NXO" keys="l"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionRightInsertAction" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionRightWrapAction" mappingModes="NXO" keys=" "/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionRightMatchCharAction" mappingModes="NXO" keys="f"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionRightTillMatchCharAction" mappingModes="NXO" keys="t"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionHomeAction" mappingModes="NV" keys="«Home»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionShiftHomeAction" mappingModes="INV" keys="«S-Home»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionEndAction" mappingModes="NVO" keys="«End»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionShiftEndAction" mappingModes="INV" keys="«S-End»"/>
|
||||||
|
<!-- Up/Down -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionDownAction" mappingModes="NXO" keys="j"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionDownCtrlNAction" mappingModes="NXO" keys="«C-N»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionDownNotLineWiseAction" mappingModes="NXO" keys="gj,g«Down»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionDownFirstNonSpaceAction" mappingModes="NXO" keys="+,«C-M»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.EnterNormalAction" mappingModes="NXO" keys="«CR»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionDownLess1FirstNonSpaceAction" mappingModes="NXO" keys="_"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineFirstAction" mappingModes="NXO" keys="gg,«C-Home»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineFirstInsertAction" mappingModes="I" keys="«C-Home»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineLastAction" mappingModes="NXO" keys="G"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineLastEndAction" mappingModes="NXO" keys="«C-End»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionGotoLineLastEndInsertAction" mappingModes="I" keys="«C-End»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionPercentOrMatchAction" mappingModes="NXO" keys="%"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionUpAction" mappingModes="NXO" keys="k"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionUpCtrlPAction" mappingModes="NXO" keys="«C-P»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionUpNotLineWiseAction" mappingModes="NXO" keys="gk,g«Up»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionUpFirstNonSpaceAction" mappingModes="NXO" keys="-"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionArrowDownAction" mappingModes="NVO"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionArrowUpAction" mappingModes="NVO"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionArrowLeftAction" mappingModes="NXO"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionArrowRightAction" mappingModes="NXO"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.LookupDownAction" mappingModes="I" keys="«C-N»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.LookupUpAction" mappingModes="I" keys="«C-P»"/>
|
||||||
|
<!-- Text -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionCamelEndLeftAction" mappingModes="NXO" keys="]b"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionCamelEndRightAction" mappingModes="NXO" keys="]w"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionCamelLeftAction" mappingModes="NXO" keys="[b"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionCamelRightAction" mappingModes="NXO" keys="[w"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionNthCharacterAction" mappingModes="NXO" keys="go"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionWordEndLeftAction" mappingModes="NXO" keys="ge"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionBigWordEndLeftAction" mappingModes="NXO" keys="gE"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionWordEndRightAction" mappingModes="NXO" keys="e"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionBigWordEndRightAction" mappingModes="NXO" keys="E"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionWordLeftAction" mappingModes="NXO" keys="b"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionWordLeftInsertAction" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionBigWordLeftAction" mappingModes="NXO" keys="B,«C-Left»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionWordRightAction" mappingModes="NXO" keys="w"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionWordRightInsertAction" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionBigWordRightAction" mappingModes="NXO" keys="W,«C-Right»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSentenceNextStartAction" mappingModes="NXO" keys=")"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSentencePreviousStartAction" mappingModes="NXO" keys="("/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSentenceNextEndAction" mappingModes="NXO" keys="g)"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSentencePreviousEndAction" mappingModes="NXO" keys="g("/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionParagraphNextAction" mappingModes="NXO" keys="}"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionParagraphPreviousAction" mappingModes="NXO" keys="{"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedBraceCloseAction" mappingModes="NXO" keys="]}"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedBraceOpenAction" mappingModes="NXO" keys="[{"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedParenCloseAction" mappingModes="NXO" keys="])"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionUnmatchedParenOpenAction" mappingModes="NXO" keys="[("/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSectionBackwardEndAction" mappingModes="NXO" keys="[]"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSectionBackwardStartAction" mappingModes="NXO" keys="[["/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSectionForwardEndAction" mappingModes="NXO" keys="]]"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionSectionForwardStartAction" mappingModes="NXO" keys="]["/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionMethodPreviousEndAction" mappingModes="NXO" keys="[M"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionMethodPreviousStartAction" mappingModes="NXO" keys="[m"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionMethodNextEndAction" mappingModes="NXO" keys="]M"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.text.MotionMethodNextStartAction" mappingModes="NXO" keys="]m"/>
|
||||||
|
<!-- Text Objects -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterWordAction" mappingModes="XO" keys="aw"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBigWordAction" mappingModes="XO" keys="aW"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerWordAction" mappingModes="XO" keys="iw"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBigWordAction" mappingModes="XO" keys="iW"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockAngleAction" mappingModes="XO" keys="i>,i<"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockBraceAction" mappingModes="XO" keys="iB,i{,i}"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockBracketAction" mappingModes="XO" keys="i[,i]"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockParenAction" mappingModes="XO" keys="ib,i(,i)"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockDoubleQuoteAction" mappingModes="XO" keys='i"'/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockSingleQuoteAction" mappingModes="XO" keys="i'"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockBackQuoteAction" mappingModes="XO" keys="i`"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerBlockTagAction" mappingModes="XO" keys="it"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockAngleAction" mappingModes="XO" keys="a<,a>"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockBraceAction" mappingModes="XO" keys="aB,a{,a}"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockBracketAction" mappingModes="XO" keys="a[,a]"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockParenAction" mappingModes="XO" keys="ab,a(,a)"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockDoubleQuoteAction" mappingModes="XO" keys='a"'/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockSingleQuoteAction" mappingModes="XO" keys="a'"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockBackQuoteAction" mappingModes="XO" keys="a`"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterBlockTagAction" mappingModes="XO" keys="at"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerParagraphAction" mappingModes="XO" keys="ip"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterParagraphAction" mappingModes="XO" keys="ap"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionInnerSentenceAction" mappingModes="XO" keys="is"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.object.MotionOuterSentenceAction" mappingModes="XO" keys="as"/>
|
||||||
|
<!-- Marks -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionMarkAction" mappingModes="NX" keys="m"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoFileMarkAction" mappingModes="XO" keys="`"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoFileMarkNoSaveJumpAction" mappingModes="XO" keys="g`"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoFileMarkLineAction" mappingModes="XO" keys="'"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoFileMarkLineNoSaveJumpAction" mappingModes="XO" keys="g'"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoMarkAction" mappingModes="N" keys="`"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoMarkNoSaveJumpAction" mappingModes="N" keys="g`"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoMarkLineAction" mappingModes="N" keys="'"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionGotoMarkLineNoSaveJumpAction" mappingModes="N" keys="g'"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionJumpNextAction" mappingModes="N" keys="«C-I»,«Tab»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.mark.MotionJumpPreviousAction" mappingModes="N" keys="«C-O»,«C-T»"/>
|
||||||
|
<!-- Screen -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.screen.MotionFirstScreenLineAction" mappingModes="NXO" keys="H"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.screen.MotionLastScreenLineAction" mappingModes="NXO" keys="L"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.screen.MotionMiddleScreenLineAction" mappingModes="NXO" keys="M"/>
|
||||||
|
<!-- Scroll -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenLinePageStartAction" mappingModes="NXO" keys="z+"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenLineStartAction" mappingModes="NXO" keys="z«CR»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenLineAction" mappingModes="NXO" keys="zt"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollHalfPageDownAction" mappingModes="NXO" keys="«C-D»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollHalfPageUpAction" mappingModes="NXO" keys="«C-U»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenLineAction" mappingModes="NXO" keys="zb"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenLinePageStartAction" mappingModes="NXO" keys="z^"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenLineStartAction" mappingModes="NXO" keys="z-"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLineDownAction" mappingModes="NXO" keys="«C-E»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLineUpAction" mappingModes="NXO" keys="«C-Y»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollMiddleScreenLineAction" mappingModes="NXO" keys="zz"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollMiddleScreenLineStartAction" mappingModes="NXO" keys="z."/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollPageDownAction" mappingModes="NXO" keys="«C-F»,«PageDown»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollPageDownInsertModeAction" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollPageUpAction" mappingModes="NXO" keys="«C-B»,«PageUp»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollPageUpInsertModeAction" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollFirstScreenColumnAction" mappingModes="NXO" keys="zs"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollLastScreenColumnAction" mappingModes="NXO" keys="ze"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollColumnLeftAction" mappingModes="NXO" keys="zl,z«Right»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollColumnRightAction" mappingModes="NXO" keys="zh,z«Left»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollHalfWidthLeftAction" mappingModes="NXO" keys="zL"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.MotionScrollHalfWidthRightAction" mappingModes="NXO" keys="zH"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionShiftDownAction" mappingModes="INV" keys="«S-Down»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.updown.MotionShiftUpAction" mappingModes="INV" keys="«S-Up»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionShiftRightAction" mappingModes="INV" keys="«S-Right»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.leftright.MotionShiftLeftAction" mappingModes="INV" keys="«S-Left»"/>
|
||||||
|
<!-- Visual -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualExitModeAction" mappingModes="X" keys="«Esc»,«C-[»,«C-C»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualToggleCharacterModeAction" mappingModes="NX" keys="v"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualToggleLineModeAction" mappingModes="NX" keys="V"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualToggleBlockModeAction" mappingModes="NX" keys="«C-q»,«C-v»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualSwapEndsAction" mappingModes="X" keys="o"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualSwapEndsBlockAction" mappingModes="X" keys="O"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualSelectPreviousAction" mappingModes="N" keys="gv"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.visual.VisualSwapSelectionsAction" mappingModes="X" keys="gv"/>
|
||||||
|
|
||||||
|
<!-- Select-->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.SelectEnableCharacterModeAction" mappingModes="N" keys="gh"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.SelectEnableLineModeAction" mappingModes="N" keys="gH"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.SelectEnableBlockModeAction" mappingModes="N" keys="g«C-h»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.motion.SelectMotionRightAction" mappingModes="S" keys="«Right»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.motion.SelectMotionLeftAction" mappingModes="S" keys="«Left»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.SelectToggleVisualMode" mappingModes="V" keys="«C-G»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.SelectEnterAction" mappingModes="S" keys="«enter»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.SelectEscapeAction" mappingModes="S" keys="«esc»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.select.SelectDeleteAction" mappingModes="S" keys="«BS»,«DEL»"/>
|
||||||
|
|
||||||
|
<!-- Insert -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertAfterCursorAction" mappingModes="N" keys="a"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertAfterLineEndAction" mappingModes="N" keys="A"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertAtPreviousInsertAction" mappingModes="N" keys="gi"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertBeforeCursorAction" mappingModes="N" keys="i,«Insert»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertBeforeFirstNonBlankAction" mappingModes="N" keys="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertCharacterAboveCursorAction" mappingModes="I" keys="«C-Y»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertCharacterBelowCursorAction" mappingModes="I" keys="«C-E»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertDeleteInsertedTextAction" mappingModes="I" keys="«C-U»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertDeletePreviousWordAction" mappingModes="I" keys="«C-W»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertEnterAction" mappingModes="I" keys="«C-M»,«CR»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertExitModeAction" mappingModes="I" keys="«C-[»,«C-C»,«Esc»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertLineStartAction" mappingModes="N" keys="gI"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertNewLineAboveAction" mappingModes="N" keys="O"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertNewLineBelowAction" mappingModes="N" keys="o"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertPreviousInsertAction" mappingModes="I" keys="«C-A»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertPreviousInsertExitAction" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertRegisterAction" mappingModes="I" keys="«C-R»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertInsertAction" mappingModes="I" keys="«Ins»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertSingleCommandAction" mappingModes="I" keys="«C-O»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.VisualBlockInsertAction" mappingModes="X" keys="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.VisualBlockAppendAction" mappingModes="X" keys="A"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertCompletedDigraphAction" mappingModes="IC" keys="«C-K»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.insert.InsertCompletedLiteralAction" mappingModes="IC" keys="«C-V»,«C-Q»"/>
|
||||||
|
|
||||||
|
<!-- Delete -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterAction" mappingModes="N" keys="«DEL»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterLeftAction" mappingModes="N" keys="X"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterRightAction" mappingModes="N" keys="x"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteEndOfLineAction" mappingModes="N" keys="D"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteJoinLinesAction" mappingModes="N" keys="gJ"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteJoinLinesSpacesAction" mappingModes="N" keys="J"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteJoinVisualLinesAction" mappingModes="X" keys="gJ"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteJoinVisualLinesSpacesAction" mappingModes="X" keys="J"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteMotionAction" mappingModes="N" keys="d"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteVisualAction" mappingModes="X" keys="d,x,«Del»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteVisualLinesAction" mappingModes="X" keys="X"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.delete.DeleteVisualLinesEndAction" mappingModes="X" keys="D"/>
|
||||||
|
|
||||||
|
<!-- Change -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCaseLowerMotionAction" mappingModes="N" keys="gu"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCaseLowerVisualAction" mappingModes="X" keys="u"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCaseToggleCharacterAction" mappingModes="N" keys="~"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCaseToggleMotionAction" mappingModes="N" keys="g~"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCaseToggleVisualAction" mappingModes="X" keys="~"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCaseUpperMotionAction" mappingModes="N" keys="gU"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCaseUpperVisualAction" mappingModes="X" keys="U"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCharacterAction" mappingModes="N" keys="r"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeCharactersAction" mappingModes="N" keys="s"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeEndOfLineAction" mappingModes="N" keys="C"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeLineAction" mappingModes="N" keys="S"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeMotionAction" mappingModes="N" keys="c"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.number.ChangeNumberIncAction" mappingModes="N" keys="«C-A»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.number.ChangeNumberDecAction" mappingModes="N" keys="«C-X»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.number.ChangeVisualNumberIncAction" mappingModes="X" keys="«C-A»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.number.ChangeVisualNumberDecAction" mappingModes="X" keys="«C-X»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.number.ChangeVisualNumberAvalancheIncAction" mappingModes="X" keys="g«C-A»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.number.ChangeVisualNumberAvalancheDecAction" mappingModes="X" keys="g«C-X»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeReplaceAction" mappingModes="N" keys="R"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeVisualAction" mappingModes="X" keys="c,s"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeVisualCharacterAction" mappingModes="X" keys="r"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeVisualLinesAction" mappingModes="X" keys="R,S"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeVisualLinesEndAction" mappingModes="X" keys="C"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.FilterMotionAction" mappingModes="N" keys="!"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.FilterVisualLinesAction" mappingModes="X" keys="!"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.AutoIndentLinesVisualAction" mappingModes="X" keys="="/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ReformatCodeVisualAction" mappingModes="X" keys="gq"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ReformatCodeMotionAction" mappingModes="N" keys="gq"/>
|
||||||
|
|
||||||
|
<!-- Shift -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.shift.AutoIndentMotionAction" mappingModes="N" keys="="/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.shift.ShiftLeftLinesAction" mappingModes="I" keys="«C-D»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.shift.ShiftLeftMotionAction" mappingModes="N" keys="<"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.shift.ShiftLeftVisualAction" mappingModes="X" keys="<"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.shift.ShiftRightLinesAction" mappingModes="I" keys="«C-T»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.shift.ShiftRightMotionAction" mappingModes="N" keys=">"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.shift.ShiftRightVisualAction" mappingModes="X" keys=">"/>
|
||||||
|
|
||||||
|
<!-- Copy -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutTextAfterCursorAction" mappingModes="N" keys="p"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutTextBeforeCursorAction" mappingModes="N" keys="P"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutTextAfterCursorNoIndentAction" mappingModes="N" keys="]p"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutTextBeforeCursorNoIndentAction" mappingModes="N" keys="[P,]P,[p"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutTextAfterCursorActionMoveCursor" mappingModes="N" keys="gp"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutTextBeforeCursorActionMoveCursor" mappingModes="N" keys="gP"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.YankLineAction" mappingModes="N" keys="Y"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.YankMotionAction" mappingModes="N" keys="y"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.YankVisualAction" mappingModes="X" keys="y"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.YankVisualLinesAction" mappingModes="X" keys="Y"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutVisualTextBeforeCursorAction" mappingModes="X" keys="P"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutVisualTextAfterCursorAction" mappingModes="X" keys="p"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutVisualTextBeforeCursorNoIndentAction" mappingModes="X" keys="]P,[P"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutVisualTextAfterCursorNoIndentAction" mappingModes="X" keys="[p,]p"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutVisualTextBeforeCursorMoveCursorAction" mappingModes="X" keys="gP"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.copy.PutVisualTextAfterCursorMoveCursorAction" mappingModes="X" keys="gp"/>
|
||||||
|
|
||||||
|
<!-- File -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.file.FileSaveCloseAction" mappingModes="N" keys="ZQ,ZZ"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.file.FilePreviousAction" mappingModes="N"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.file.FileGetAsciiAction" mappingModes="N" keys="ga"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.file.FileGetHexAction" mappingModes="N" keys="g8"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.file.FileGetFileInfoAction" mappingModes="N" keys="«C-G»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.file.FileGetLocationInfoAction" mappingModes="NX" keys="g«C-G»"/>
|
||||||
|
|
||||||
|
<!-- Window -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.VerticalSplitAction" mappingModes="N" keys="«C-W»v,«C-W»«C-V»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.HorizontalSplitAction" mappingModes="N" keys="«C-W»s,«C-W»S,«C-W»«C-S»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.CloseWindowAction" mappingModes="N" keys="«C-W»c"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.WindowOnlyAction" mappingModes="N" keys="«C-W»o,«C-W»«C-O»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.WindowNextAction" mappingModes="N" keys="«C-W»w,«C-W»«C-W»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.WindowPrevAction" mappingModes="N" keys="«C-W»W"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.WindowLeftAction" mappingModes="N" keys="«C-W»h,«C-W»«C-H»,«C-W»«Left»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.WindowRightAction" mappingModes="N" keys="«C-W»l,«C-W»«C-L»,«C-W»«Right»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.WindowUpAction" mappingModes="N" keys="«C-W»k,«C-W»«C-K»,«C-W»«Up»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.window.WindowDownAction" mappingModes="N" keys="«C-W»j,«C-W»«C-J»,«C-W»«Down»"/>
|
||||||
|
|
||||||
|
<!-- Search -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchEntryFwdAction" mappingModes="NXO" keys="/"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchEntryRevAction" mappingModes="NXO" keys="?"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchAgainNextAction" mappingModes="NXO" keys="n"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchAgainPreviousAction" mappingModes="NXO" keys="N"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchWholeWordForwardAction" mappingModes="NXO" keys="*"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchWholeWordBackwardAction" mappingModes="NXO" keys="#"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchWordForwardAction" mappingModes="NXO" keys="g*"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.SearchWordBackwardAction" mappingModes="NXO" keys="g#"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.search.GotoDeclarationAction" mappingModes="NX" keys="gD,gd,«C-]»"/>
|
||||||
|
|
||||||
|
<!-- Macro -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.macro.ToggleRecordingAction" mappingModes="NX" keys="q"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.macro.PlaybackRegisterAction" mappingModes="N" keys="@"/>
|
||||||
|
|
||||||
|
<!-- Command Line -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.ex.ProcessExEntryAction" mappingModes="C"/>
|
||||||
|
|
||||||
|
<!-- Other -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeLastSearchReplaceAction" mappingModes="N" keys="&"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.change.ChangeLastGlobalSearchReplaceAction" mappingModes="N" keys="g&"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.RepeatChangeAction" mappingModes="N" keys="."/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.ExEntryAction" mappingModes="NXO" keys=":"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.ResetModeAction" mappingModes="ALL" keys="«C-\»«C-N»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.RedoAction" mappingModes="N" keys="«C-R»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.UndoAction" mappingModes="N"/>
|
||||||
|
|
||||||
|
<!-- Keys -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.change.OperatorAction" mappingModes="N" keys="g@"/>
|
||||||
|
|
||||||
|
<!-- Visual Selection of last Search Pattern (gn) -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.gn.VisualSelectNextSearch" mappingModes="NX" keys="gn"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.gn.VisualSelectPreviousSearch" mappingModes="NX" keys="gN"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.gn.GnNextTextObject" mappingModes="O" keys="gn"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.gn.GnPreviousTextObject" mappingModes="O" keys="gN"/>
|
||||||
|
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.CtrlDownAction" mappingModes="N" keys="«C-Down»"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.motion.scroll.CtrlUpAction" mappingModes="N" keys="«C-Up»"/>
|
||||||
|
|
||||||
|
<!-- Folds -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.fold.VimCollapseAllRegions" mappingModes="NX" keys="zM"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.fold.VimCollapseRegion" mappingModes="NX" keys="zc"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.fold.VimCollapseRegionRecursively" mappingModes="NX" keys="zC"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.fold.VimExpandAllRegions" mappingModes="NX" keys="zR"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.fold.VimExpandRegion" mappingModes="NX" keys="zo"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.fold.VimExpandRegionRecursively" mappingModes="NX" keys="zO"/>
|
||||||
|
|
||||||
|
<!-- Editor Actions -->
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.editor.VimEditorBackSpace" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.editor.VimEditorDelete" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.editor.VimEditorDown" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.editor.VimEditorTab" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.editor.VimEditorUp" mappingModes="I"/>
|
||||||
|
<vimAction implementation="com.maddyhome.idea.vim.action.editor.VimQuickJavaDoc" mappingModes="N" keys="K"/>
|
||||||
|
</extensions>
|
||||||
|
</idea-plugin>
|
||||||
71
resources/META-INF/includes/VimExCommands.xml
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<idea-plugin>
|
||||||
|
<extensions defaultExtensionNs="IdeaVIM">
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.ActionListHandler" names="actionlist"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.AsciiHandler" names="as[cii]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.CmdFilterHandler" names="!"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.CmdHandler" names="com[mand]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.CmdClearHandler" names="comc[lear]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.CopyTextHandler" names="co[py],t"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.DelCmdHandler" names="delc[ommand]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.DeleteLinesHandler" names="d[elete]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.DeleteMarksHandler" names="delm[arks]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.DigraphHandler" names="dig[raphs]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.DumpLineHandler" names="dump[line]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.EditFileHandler" names="bro[wse],e[dit]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.ActionHandler" names="action"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.EchoHandler" names="ec[ho]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.ExitHandler" names="qa[ll],quita[ll],wqa[ll],xa[ll]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.FileHandler" names="f[ile]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.FindClassHandler" names="cla[ss]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.FindFileHandler" names="fin[d]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.FindSymbolHandler" names="sym[bol]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.GotoCharacterHandler" names="go[to]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.HelpHandler" names="h[elp]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.HistoryHandler" names="his[tory]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.JoinLinesHandler" names="j[oin]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.JumpsHandler" names="ju[mps]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.LetHandler" names="let"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.mapping.MapHandler"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.mapping.UnMapHandler"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.mapping.MapClearHandler"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.MarkHandler" names="ma[rk],k"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.MarksHandler" names="marks"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.MoveTextHandler" names="m[ove]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.NextFileHandler" names="n[ext]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.NoHLSearchHandler" names="noh[lsearch]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.OnlyHandler" names="on[ly]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.PreviousFileHandler" names="N[ext],prev[ious]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.PromptFindHandler" names="pro[mptfind]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.PromptReplaceHandler" names="promptr[epl]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.PutLinesHandler" names="pu[t]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.QuitHandler" names="q[uit],clo[se],hid[e]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.RedoHandler" names="red[o]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.RegistersHandler" names="di[splay],reg[isters]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.RepeatHandler" names="@"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SelectFileHandler" names="argu[ment]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SelectFirstFileHandler" names="fir[st],rew[ind]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SelectLastFileHandler" names="la[st]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SetHandler" names="se[t]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.ShiftLeftHandler"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.ShiftRightHandler"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SourceHandler" names="so[urce]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SortHandler" names="sor[t]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SplitHandler" names="vs[plit],sp[lit]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.SubstituteHandler" names="s[ubstitute],&,~"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.UndoHandler" names="u[ndo]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.WriteAllHandler" names="wa[ll]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.WriteHandler" names="w[rite]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.WriteNextFileHandler" names="wn[ext]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.WritePreviousFileHandler" names="wN[ext],wp[revious]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.WriteQuitHandler" names="wq,exi[t],x[it]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.YankLinesHandler" names="y[ank]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.ShellHandler" names="sh[ell]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.NextTabHandler" names="tabn[ext]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.PreviousTabHandler" names="tabp[revious],tabN[ext]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.TabOnlyHandler" names="tabo[nly]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.TabCloseHandler" names="tabc[lose]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.BufferListHandler" names="buffers,ls,files"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.BufferHandler" names="b[uffer]"/>
|
||||||
|
<vimExCommand implementation="com.maddyhome.idea.vim.ex.handler.PlugHandler" names="Plug[in]"/>
|
||||||
|
</extensions>
|
||||||
|
</idea-plugin>
|
||||||
84
resources/META-INF/includes/VimExtensions.xml
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<idea-plugin>
|
||||||
|
<extensions defaultExtensionNs="IdeaVIM">
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.surround.VimSurroundExtension" name="surround">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/tpope/vim-surround"/>
|
||||||
|
<alias name="tpope/vim-surround"/>
|
||||||
|
<alias name="vim-surround"/>
|
||||||
|
<alias name="https://www.vim.org/scripts/script.php?script_id=1697"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.multiplecursors.VimMultipleCursorsExtension"
|
||||||
|
name="multiple-cursors">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/terryma/vim-multiple-cursors"/>
|
||||||
|
<alias name="terryma/vim-multiple-cursors"/>
|
||||||
|
<alias name="vim-multiple-cursors"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.commentary.CommentaryExtension" name="commentary">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/tpope/vim-commentary"/>
|
||||||
|
<alias name="tpope/vim-commentary"/>
|
||||||
|
<alias name="vim-commentary"/>
|
||||||
|
<alias name="https://www.vim.org/scripts/script.php?script_id=3695"/>
|
||||||
|
<alias name="https://github.com/tomtom/tcomment_vim"/>
|
||||||
|
<alias name="tomtom/tcomment_vim"/>
|
||||||
|
<alias name="tcomment_vim"/>
|
||||||
|
<alias name="https://www.vim.org/scripts/script.php?script_id=1173"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.textobjentire.VimTextObjEntireExtension"
|
||||||
|
name="textobj-entire">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/kana/vim-textobj-entire"/>
|
||||||
|
<alias name="kana/vim-textobj-entire"/>
|
||||||
|
<alias name="vim-textobj-entire"/>
|
||||||
|
<alias name="https://www.vim.org/scripts/script.php?script_id=2610"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.argtextobj.VimArgTextObjExtension"
|
||||||
|
name="argtextobj">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/vim-scripts/argtextobj.vim"/>
|
||||||
|
<alias name="vim-scripts/argtextobj.vim"/>
|
||||||
|
<alias name="argtextobj.vim"/>
|
||||||
|
<alias name="https://www.vim.org/scripts/script.php?script_id=2699"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.replacewithregister.ReplaceWithRegister"
|
||||||
|
name="ReplaceWithRegister">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/vim-scripts/ReplaceWithRegister"/>
|
||||||
|
<alias name="vim-scripts/ReplaceWithRegister"/>
|
||||||
|
<alias name="ReplaceWithRegister"/>
|
||||||
|
<alias name="https://github.com/inkarkat/vim-ReplaceWithRegister"/>
|
||||||
|
<alias name="inkarkat/vim-ReplaceWithRegister"/>
|
||||||
|
<alias name="vim-ReplaceWithRegister"/>
|
||||||
|
<alias name="https://www.vim.org/scripts/script.php?script_id=2703"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.exchange.VimExchangeExtension" name="exchange">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/tommcdo/vim-exchange"/>
|
||||||
|
<alias name="tommcdo/vim-exchange"/>
|
||||||
|
<alias name="vim-exchange"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
|
||||||
|
<vimExtension implementation="com.maddyhome.idea.vim.extension.highlightedyank.VimHighlightedYank"
|
||||||
|
name="highlightedyank">
|
||||||
|
<aliases>
|
||||||
|
<alias name="https://github.com/machakann/vim-highlightedyank"/>
|
||||||
|
<alias name="machakann/vim-highlightedyank"/>
|
||||||
|
<alias name="vim-highlightedyank"/>
|
||||||
|
</aliases>
|
||||||
|
</vimExtension>
|
||||||
|
</extensions>
|
||||||
|
</idea-plugin>
|
||||||
27
resources/META-INF/includes/VimListeners.xml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<idea-plugin>
|
||||||
|
<applicationListeners>
|
||||||
|
<listener class="com.maddyhome.idea.vim.ui.ex.ExEntryPanel$LafListener"
|
||||||
|
topic="com.intellij.ide.ui.LafManagerListener"/>
|
||||||
|
<listener class="com.maddyhome.idea.vim.extension.highlightedyank.HighlightColorResetter"
|
||||||
|
topic="com.intellij.ide.ui.LafManagerListener"/>
|
||||||
|
</applicationListeners>
|
||||||
|
<projectListeners>
|
||||||
|
<listener class="com.maddyhome.idea.vim.ui.ExOutputPanel$LafListener"
|
||||||
|
topic="com.intellij.ide.ui.LafManagerListener"/>
|
||||||
|
|
||||||
|
<listener class="com.maddyhome.idea.vim.listener.VimListenerManager$VimFileEditorManagerListener"
|
||||||
|
topic="com.intellij.openapi.fileEditor.FileEditorManagerListener"/>
|
||||||
|
|
||||||
|
<listener class="com.maddyhome.idea.vim.listener.IdeaSpecifics$VimActionListener"
|
||||||
|
topic="com.intellij.openapi.actionSystem.ex.AnActionListener"/>
|
||||||
|
|
||||||
|
<listener class="com.maddyhome.idea.vim.listener.IdeaSpecifics$VimTemplateManagerListener"
|
||||||
|
topic="com.intellij.codeInsight.template.TemplateManagerListener"/>
|
||||||
|
|
||||||
|
<listener class="com.maddyhome.idea.vim.group.MarkGroup$MarkListener"
|
||||||
|
topic="com.intellij.ide.bookmarks.BookmarksListener"/>
|
||||||
|
|
||||||
|
<listener class="com.maddyhome.idea.vim.listener.IdeaSpecifics$VimFindModelListener"
|
||||||
|
topic="com.intellij.find.FindModelListener"/>
|
||||||
|
</projectListeners>
|
||||||
|
</idea-plugin>
|
||||||
@@ -1,385 +1,117 @@
|
|||||||
<idea-plugin url="http://plugins.intellij.net/plugin/?id=164">
|
<idea-plugin url="https://plugins.jetbrains.com/plugin/164" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||||
<name>IdeaVim</name>
|
<name>IdeaVim</name>
|
||||||
<id>IdeaVIM</id>
|
<id>IdeaVIM</id>
|
||||||
<change-notes>
|
<change-notes><![CDATA[
|
||||||
<![CDATA[
|
<h3>Merged PRs:</h3>
|
||||||
<p>0.28:</p>
|
<ul>
|
||||||
<ul>
|
<li>
|
||||||
<li>Fixed reconfigure Vim keymap for user-defined base keymaps</li>
|
<a href="https://github.com/JetBrains/ideavim/pull/260">260</a>
|
||||||
</ul>
|
by <a href="https://github.com/citizenmatt">Matt Ellis</a>: Refactor SearchGroup
|
||||||
<p>0.27:</p>
|
</li>
|
||||||
<ul>
|
</ul>
|
||||||
<li>Better Vim keymaps for Mac OS X</li>
|
|
||||||
<li>Ask if the plugin should enable repeating keys in Mac OS X</li>
|
|
||||||
<li>Fixed a long-standing bug with code completion and repeat last change command ('<code>.</code>')</li>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.26:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Added support for paste in the command mode: from a register using <code><C-R></code>, from the clipboard using <code><S-Insert></code> or <code><M-V></code></li>
|
|
||||||
<li>Added support for the last change position mark (the dot <code>.</code> mark)</li>
|
|
||||||
<li>New shortcuts for Go to declaration <code><C-]></code> and Navigate back <code><C-T></code></li>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.25:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Various bug fixes</li>
|
|
||||||
</ul>
|
|
||||||
<p>0.24:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Added Vim string object selection motions (see help topics <code>v_i"</code>, <code>v_a"</code>)</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. IdeaVim can be used with IntelliJ IDEA, RubyMine, PyCharm, PhpStorm, WebStorm and AppCode.</p>
|
|
||||||
<p>Supported functionality:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Motion keys</li>
|
|
||||||
<li>Deletion/Changing</li>
|
|
||||||
<li>Insert mode commands</li>
|
|
||||||
<li>Marks</li>
|
|
||||||
<li>Registers</li>
|
|
||||||
<li>Undo/redo</li>
|
|
||||||
<li>Visual mode commands</li>
|
|
||||||
<li>Some Ex commands</li>
|
|
||||||
<li>Some :set options</li>
|
|
||||||
<li>Full Vim regexps for search and search/replace</li>
|
|
||||||
<li>Macros</li>
|
|
||||||
<li>Digraphs</li>
|
|
||||||
<li>Command line and search history</li>
|
|
||||||
<li>Vim web help</li>
|
|
||||||
</ul>
|
|
||||||
]]>
|
|
||||||
</description>
|
|
||||||
<version>@VERSION@</version>
|
|
||||||
<vendor logo="/icons/vim16x16.png">JetBrains</vendor>
|
|
||||||
|
|
||||||
<idea-version since-build="@SINCE-VERSION@"/>
|
<h3>Fixes:</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://youtrack.jetbrains.com/issue/VIM-2194">VIM-2194</a>
|
||||||
|
Fix caret shape during editing a new file
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
]]>
|
||||||
|
</change-notes>
|
||||||
|
<description><![CDATA[
|
||||||
|
<p>Vim emulation plugin for IntelliJ Platform-based IDEs.</p>
|
||||||
|
<br/>
|
||||||
|
<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, Vim plugins, etc.</p>
|
||||||
|
<br/>
|
||||||
|
<p>See also:</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://github.com/JetBrains/ideavim">GitHub repository</a>: documentation and contributing</li>
|
||||||
|
<li><a href="https://youtrack.jetbrains.com/issues/VIM">Issue tracker</a>: feature requests and bug reports</li>
|
||||||
|
</ul>
|
||||||
|
]]></description>
|
||||||
|
<version>SNAPSHOT</version>
|
||||||
|
<vendor>JetBrains</vendor>
|
||||||
|
|
||||||
|
<!-- Please search for "[VERSION UPDATE]" in project in case you update the since-build version -->
|
||||||
|
<!-- Check for [Version Update] tag in YouTrack as well -->
|
||||||
|
<idea-version since-build="202.5103.13"/>
|
||||||
|
|
||||||
<!-- Mark the plugin as compatible with RubyMine and other products based on the IntelliJ platform -->
|
<!-- Mark the plugin as compatible with RubyMine and other products based on the IntelliJ platform -->
|
||||||
<depends>com.intellij.modules.lang</depends>
|
<depends>com.intellij.modules.lang</depends>
|
||||||
<resource-bundle xmlns="">messages</resource-bundle>
|
<resource-bundle>messages.IdeaVimBundle</resource-bundle>
|
||||||
|
|
||||||
<application-components>
|
<application-components>
|
||||||
<component>
|
<component>
|
||||||
<implementation-class>com.maddyhome.idea.vim.VimPlugin</implementation-class>
|
<implementation-class>com.maddyhome.idea.vim.DynamicLoaderStopper</implementation-class>
|
||||||
</component>
|
</component>
|
||||||
</application-components>
|
</application-components>
|
||||||
|
|
||||||
|
<extensionPoints>
|
||||||
|
<extensionPoint name="vimExtension" beanClass="com.maddyhome.idea.vim.extension.ExtensionBeanClass" dynamic="true">
|
||||||
|
<with attribute="implementation" implements="com.maddyhome.idea.vim.extension.VimExtension"/>
|
||||||
|
|
||||||
|
</extensionPoint>
|
||||||
|
|
||||||
|
<!-- For internal use only -->
|
||||||
|
<extensionPoint name="vimExCommand" beanClass="com.maddyhome.idea.vim.ex.ExBeanClass" dynamic="true">
|
||||||
|
<with attribute="implementation" implements="com.maddyhome.idea.vim.ex.CommandHandler"/>
|
||||||
|
</extensionPoint>
|
||||||
|
<!-- For internal use only -->
|
||||||
|
<extensionPoint name="vimAction" beanClass="com.maddyhome.idea.vim.handler.ActionBeanClass" dynamic="true">
|
||||||
|
<with attribute="implementation" implements="com.maddyhome.idea.vim.handler.EditorActionHandlerBase"/>
|
||||||
|
</extensionPoint>
|
||||||
|
</extensionPoints>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<errorHandler implementation="com.intellij.diagnostic.ITNReporter"/>
|
<applicationConfigurable groupId="editor" instance="com.maddyhome.idea.vim.ui.VimEmulationConfigurable"/>
|
||||||
|
<projectService serviceImplementation="com.maddyhome.idea.vim.group.NotificationService"/>
|
||||||
|
<statusBarWidgetFactory implementation="com.maddyhome.idea.vim.ui.StatusBarIconFactory"/>
|
||||||
|
<statusBarWidgetFactory implementation="com.maddyhome.idea.vim.ui.ShowCmdStatusBarWidgetFactory" order="first"/>
|
||||||
|
|
||||||
|
<applicationService serviceImplementation="com.maddyhome.idea.vim.VimPlugin"/>
|
||||||
|
|
||||||
|
<!-- Initialise as early as possible so that we're ready to edit quickly. This is especially important for Rider,
|
||||||
|
which (at least for 2020.1) has some long running activities that block other startup extensions. None of the
|
||||||
|
core platform activities have IDs, so we can't use "before ID". We have to use "first" -->
|
||||||
|
<postStartupActivity implementation="com.maddyhome.idea.vim.PluginStartup" order="first"/>
|
||||||
|
|
||||||
|
<editorFloatingToolbarProvider implementation="com.maddyhome.idea.vim.ui.ReloadFloatingToolbar"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<actions>
|
<xi:include href="/META-INF/includes/ApplicationServices.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
<action id="VimPluginToggle" class="com.maddyhome.idea.vim.VimPluginToggleAction" text="Vim Emulator" description="Toggle the Vim Plugin On/Off">
|
<xi:include href="/META-INF/includes/VimActions.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
<keyboard-shortcut first-keystroke="control alt V" keymap="$default"/>
|
<xi:include href="/META-INF/includes/VimExCommands.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
|
<xi:include href="/META-INF/includes/VimExtensions.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
|
<xi:include href="/META-INF/includes/VimListeners.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
|
|
||||||
|
<actions resource-bundle="messages.IdeaVimBundle">
|
||||||
|
<action id="VimPluginToggle" class="com.maddyhome.idea.vim.action.VimPluginToggleAction">
|
||||||
<add-to-group group-id="ToolsMenu" anchor="last"/>
|
<add-to-group group-id="ToolsMenu" anchor="last"/>
|
||||||
</action>
|
</action>
|
||||||
<action id="VimReconfigureKeymap" class="com.maddyhome.idea.vim.VimReconfigureKeymapAction" text="Reconfigure Vim Keymap" description="Reconfigure Vim keymap">
|
|
||||||
<add-to-group group-id="ToolsMenu" relative-to-action="after VimPluginToggle"/>
|
|
||||||
</action>
|
|
||||||
|
|
||||||
<!-- Motions -->
|
<!-- Internal -->
|
||||||
<action id="VimMotionPreviousTab" class="com.maddyhome.idea.vim.action.motion.tabs.MotionPreviousTabAction" text="Move to Previous Tab"/>
|
<action id="VimInternalAddBlockInlays" class="com.maddyhome.idea.vim.action.internal.AddBlockInlaysAction" text="Add Test Block Inlays | IdeaVim Internal" internal="true"/>
|
||||||
<action id="VimMotionNextTab" class="com.maddyhome.idea.vim.action.motion.tabs.MotionNextTabAction" text="Move to Next Tab"/>
|
<action id="VimInternalAddInlineInlays" class="com.maddyhome.idea.vim.action.internal.AddInlineInlaysAction" text="Add Test Inline Inlays | IdeaVim Internal" internal="true"/>
|
||||||
<!-- 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="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="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="VimMotionLastScreenLineEnd" class="com.maddyhome.idea.vim.action.motion.screen.MotionLastScreenLineEndAction" text="Last Screen Line End"/>
|
|
||||||
<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="Swap Visual Selection Ends"/>
|
|
||||||
<action id="VimVisualSwapSelections" class="com.maddyhome.idea.vim.action.motion.visual.VisualSwapSelectionsAction" text="Swap Visual Selection Ends"/>
|
|
||||||
|
|
||||||
<!-- Insert -->
|
<action id="VimShortcutKeyAction" class="com.maddyhome.idea.vim.action.VimShortcutKeyAction"/>
|
||||||
<action id="VimInsertAfterCursor" class="com.maddyhome.idea.vim.action.change.insert.InsertAfterCursorAction" text="Insert After Cursor"/>
|
<action id="VimActions" class="com.maddyhome.idea.vim.ui.VimActions"/>
|
||||||
<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="VimInsertHelp" class="com.maddyhome.idea.vim.action.change.insert.InsertHelpAction" text="Help"/>
|
|
||||||
<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 -->
|
<!-- [Version Update] 202+ use-shortcut-of="ExternalSystem.ProjectRefreshAction" -->
|
||||||
<action id="VimDeleteCharacter" class="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterAction" text="Delete Character"/>
|
<group id="IdeaVim.ReloadVimRc.group" class="com.maddyhome.idea.vim.ui.ReloadFloatingToolbarActionGroup">
|
||||||
<action id="VimDeleteCharacterLeft" class="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterLeftAction" text="Delete Character Left"/>
|
<action id="IdeaVim.ReloadVimRc.reload" class="com.maddyhome.idea.vim.ui.ReloadVimRc">
|
||||||
<action id="VimDeleteCharacterRight" class="com.maddyhome.idea.vim.action.change.delete.DeleteCharacterRightAction" text="Delete Character Right"/>
|
<keyboard-shortcut first-keystroke="control shift O" keymap="$default"/>
|
||||||
<action id="VimDeleteEndOfLine" class="com.maddyhome.idea.vim.action.change.delete.DeleteEndOfLineAction" text="Delete End-of-Line"/>
|
<keyboard-shortcut first-keystroke="control shift O" keymap="Eclipse" remove="true"/>
|
||||||
<action id="VimDeleteJoinLines" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinLinesAction" text="Delete Join Lines"/>
|
<keyboard-shortcut first-keystroke="control shift O" keymap="NetBeans 6.5" remove="true"/>
|
||||||
<action id="VimDeleteJoinLinesSpaces" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinLinesSpacesAction" text="Delete Join Lines"/>
|
<keyboard-shortcut first-keystroke="control shift O" keymap="Visual Studio" remove="true"/>
|
||||||
<action id="VimDeleteJoinVisualLines" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinVisualLinesAction" text="Delete Join Lines"/>
|
<keyboard-shortcut first-keystroke="meta shift O" keymap="Mac OS X" replace-all="true"/>
|
||||||
<action id="VimDeleteJoinVisualLinesSpaces" class="com.maddyhome.idea.vim.action.change.delete.DeleteJoinVisualLinesSpacesAction" text="Delete Join Lines"/>
|
<keyboard-shortcut first-keystroke="meta shift O" keymap="Eclipse (Mac OS X)" replace-all="true" remove="true"/>
|
||||||
<action id="VimDeleteLine" class="com.maddyhome.idea.vim.action.change.delete.DeleteLineAction" text="Delete Line"/>
|
<keyboard-shortcut first-keystroke="meta shift O" keymap="Xcode" replace-all="true" remove="true"/>
|
||||||
<action id="VimDeleteMotion" class="com.maddyhome.idea.vim.action.change.delete.DeleteMotionAction" text="Delete Motion"/>
|
<keyboard-shortcut first-keystroke="meta shift I" keymap="Mac OS X 10.5+" replace-all="true"/>
|
||||||
<action id="VimDeleteVisual" class="com.maddyhome.idea.vim.action.change.delete.DeleteVisualAction" text="Delete Selection"/>
|
</action>
|
||||||
<action id="VimDeleteVisualLines" class="com.maddyhome.idea.vim.action.change.delete.DeleteVisualLinesAction" text="Delete Selected Lines"/>
|
</group>
|
||||||
<action id="VimDeleteVisualLinesEnd" class="com.maddyhome.idea.vim.action.change.delete.DeleteVisualLinesEndAction" text="Delete Selected Lines"/>
|
|
||||||
|
|
||||||
<!-- Change -->
|
<action id="VimFindActionIdAction" class="com.maddyhome.idea.vim.listener.FindActionIdAction"/>
|
||||||
<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.visual.VisualOperatorDelegateAction" text="Auto Indent Selection"/>
|
|
||||||
<action id="VimReformatVisual" class="com.maddyhome.idea.vim.action.visual.VisualOperatorDelegateAction" text="Reformat Selection"/>
|
|
||||||
<action id="VimCommentByBlockComment" class="com.maddyhome.idea.vim.action.visual.VisualOperatorDelegateAction" text="Block Comment"/>
|
|
||||||
<action id="VimCommentByLineComment" class="com.maddyhome.idea.vim.action.visual.VisualOperatorDelegateAction" text="Line Comment"/>
|
|
||||||
<action id="VimSurroundWith" class="com.maddyhome.idea.vim.action.visual.VisualOperatorDelegateAction" text="Surround With"/>
|
|
||||||
<action id="VimSurroundWithLiveTemplate" class="com.maddyhome.idea.vim.action.visual.VisualOperatorDelegateAction" text="Surround With Live Template"/>
|
|
||||||
<action id="VimMoveStatementDown" class="com.maddyhome.idea.vim.action.visual.VisualOperatorDelegateAction" text="Move Statement Down"/>
|
|
||||||
<action id="VimMoveStatementUp" class="com.maddyhome.idea.vim.action.visual.VisualOperatorDelegateAction" text="Move Statement Up"/>
|
|
||||||
|
|
||||||
<!-- Shift -->
|
|
||||||
<action id="VimAutoIndentLines" class="com.maddyhome.idea.vim.action.change.shift.AutoIndentLinesAction" 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"/>
|
|
||||||
|
|
||||||
<!-- 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"/>
|
|
||||||
<action id="VimGenerateConstructor" class="com.maddyhome.idea.vim.action.TxActionWrapper" text="Generate Constructor"/>
|
|
||||||
<action id="VimGenerateGetter" class="com.maddyhome.idea.vim.action.TxActionWrapper" text="Generate Getter"/>
|
|
||||||
<action id="VimGenerateSetter" class="com.maddyhome.idea.vim.action.TxActionWrapper" text="Generate Setter"/>
|
|
||||||
<action id="VimGenerateGetterAndSetter" class="com.maddyhome.idea.vim.action.TxActionWrapper" text="Generate Getter and Setter"/>
|
|
||||||
<action id="VimGenerateEquals" class="com.maddyhome.idea.vim.action.TxActionWrapper" text="Generate Equals"/>
|
|
||||||
|
|
||||||
<action id="VimClassNameCompletion" class="com.maddyhome.idea.vim.action.OriginalDelegateAction" text="Class Name Completion"/>
|
|
||||||
<action id="VimCodeCompletion" class="com.maddyhome.idea.vim.action.OriginalDelegateAction" text="Code Completion"/>
|
|
||||||
<action id="VimSmartTypeCompletion" class="com.maddyhome.idea.vim.action.OriginalDelegateAction" text="Smart Type Completion"/>
|
|
||||||
<action id="VimWordCompletion" class="com.maddyhome.idea.vim.action.OriginalDelegateAction" text="Word Completion"/>
|
|
||||||
<action id="VimInsertLiveTemplate" class="com.maddyhome.idea.vim.action.OriginalDelegateAction" text="Insert Live Template"/>
|
|
||||||
|
|
||||||
<!-- Keys -->
|
|
||||||
<action id="VimKeyHandler" class="com.maddyhome.idea.vim.action.key.KeyAction" text="Keys"/>
|
|
||||||
<action id="VimDummyHandler" class="com.maddyhome.idea.vim.action.key.DummyAction" text="Keys"/>
|
|
||||||
<action id="VimNotImplementedHandler" class="com.maddyhome.idea.vim.action.key.NotImplementedAction" text="Reserved For Future Use"/>
|
|
||||||
<action id="VimEditorBackSpace" class="com.maddyhome.idea.vim.action.key.BackSpaceAction" text="Backspace"/>
|
|
||||||
<action id="VimEditorDelete" class="com.maddyhome.idea.vim.action.key.DeleteAction" text="Delete"/>
|
|
||||||
<action id="VimEditorDown" class="com.maddyhome.idea.vim.action.key.DownAction" text="Down"/>
|
|
||||||
<action id="VimEditorEnter" class="com.maddyhome.idea.vim.action.key.EnterAction" text="Enter"/>
|
|
||||||
<action id="VimEditorEscape" class="com.maddyhome.idea.vim.action.key.EscapeAction" text="Escape"/>
|
|
||||||
<action id="VimEditorLeft" class="com.maddyhome.idea.vim.action.key.LeftAction" text="Left"/>
|
|
||||||
<action id="VimEditorLineEnd" class="com.maddyhome.idea.vim.action.key.LineEndAction" text="LineEnd"/>
|
|
||||||
<action id="VimEditorLineStart" class="com.maddyhome.idea.vim.action.key.LineStartAction" text="LineStart"/>
|
|
||||||
<action id="VimEditorPageDown" class="com.maddyhome.idea.vim.action.key.PageDownAction" text="PageDown"/>
|
|
||||||
<action id="VimEditorPageUp" class="com.maddyhome.idea.vim.action.key.PageUpAction" text="PageUp"/>
|
|
||||||
<action id="VimEditorRight" class="com.maddyhome.idea.vim.action.key.RightAction" text="Right"/>
|
|
||||||
<action id="VimEditorTab" class="com.maddyhome.idea.vim.action.key.TabAction" text="Tab"/>
|
|
||||||
<action id="VimEditorToggleInsertState" class="com.maddyhome.idea.vim.action.key.ToggleInsertStateAction" text="Insert/Overwrite"/>
|
|
||||||
<action id="VimEditorUp" class="com.maddyhome.idea.vim.action.key.UpAction" text="Up"/>
|
|
||||||
<action id="VimDigraphEntry" class="com.maddyhome.idea.vim.action.key.KeyAction" text="Digraph Entry"/>
|
|
||||||
</actions>
|
</actions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
|||||||
9
resources/META-INF/pluginIcon.svg
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="ideavim_plugin-a" x1="-6.748%" x2="47.286%" y1="33.61%" y2="85.907%">
|
||||||
|
<stop offset="0%" stop-color="#3BEA62"/>
|
||||||
|
<stop offset="100%" stop-color="#087CFA"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<polygon fill="url(#ideavim_plugin-a)" fill-rule="evenodd" points="28.019 4 15.988 24.119 15.988 4 4 4 4 36 17.953 36 36 4"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 450 B |
9
resources/META-INF/pluginIcon_noBorders.svg
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="ideavim_plugin-a" x1="-6.748%" x2="47.286%" y1="33.61%" y2="85.907%">
|
||||||
|
<stop offset="0%" stop-color="#3BEA62"/>
|
||||||
|
<stop offset="100%" stop-color="#087CFA"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<polygon fill="url(#ideavim_plugin-a)" fill-rule="evenodd" points="29.019 0 13.988 26.119 13.988 0 0 0 0 40 16.953 40 40 0"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 450 B |
@@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<keymap version="1" name="Vim" disable-mnemonics="false" parent="$default">
|
|
||||||
<action id="VimKeyHandler">
|
|
||||||
<keyboard-shortcut first-keystroke="control 2" />
|
|
||||||
<keyboard-shortcut first-keystroke="control A" />
|
|
||||||
<keyboard-shortcut first-keystroke="control alt SPACE" />
|
|
||||||
<keyboard-shortcut first-keystroke="control B" />
|
|
||||||
<keyboard-shortcut first-keystroke="control BACK_SLASH" />
|
|
||||||
<keyboard-shortcut first-keystroke="control C" />
|
|
||||||
<keyboard-shortcut first-keystroke="control CLOSE_BRACKET" />
|
|
||||||
<keyboard-shortcut first-keystroke="control D" />
|
|
||||||
<keyboard-shortcut first-keystroke="control E" />
|
|
||||||
<keyboard-shortcut first-keystroke="control END" />
|
|
||||||
<keyboard-shortcut first-keystroke="control F" />
|
|
||||||
<keyboard-shortcut first-keystroke="control G" />
|
|
||||||
<keyboard-shortcut first-keystroke="control H" />
|
|
||||||
<keyboard-shortcut first-keystroke="control HOME" />
|
|
||||||
<keyboard-shortcut first-keystroke="control I" />
|
|
||||||
<keyboard-shortcut first-keystroke="control J" />
|
|
||||||
<keyboard-shortcut first-keystroke="control K" />
|
|
||||||
<keyboard-shortcut first-keystroke="control L" />
|
|
||||||
<keyboard-shortcut first-keystroke="control LEFT" />
|
|
||||||
<keyboard-shortcut first-keystroke="control M" />
|
|
||||||
<keyboard-shortcut first-keystroke="control O" />
|
|
||||||
<keyboard-shortcut first-keystroke="control OPEN_BRACKET" />
|
|
||||||
<keyboard-shortcut first-keystroke="control P" />
|
|
||||||
<keyboard-shortcut first-keystroke="control PAGE_DOWN" />
|
|
||||||
<keyboard-shortcut first-keystroke="control PAGE_UP" />
|
|
||||||
<keyboard-shortcut first-keystroke="control Q" />
|
|
||||||
<keyboard-shortcut first-keystroke="control R" />
|
|
||||||
<keyboard-shortcut first-keystroke="control RIGHT" />
|
|
||||||
<keyboard-shortcut first-keystroke="control S" />
|
|
||||||
<keyboard-shortcut first-keystroke="control SPACE" />
|
|
||||||
<keyboard-shortcut first-keystroke="control T" />
|
|
||||||
<keyboard-shortcut first-keystroke="control U" />
|
|
||||||
<keyboard-shortcut first-keystroke="control V" />
|
|
||||||
<keyboard-shortcut first-keystroke="control W" />
|
|
||||||
<keyboard-shortcut first-keystroke="control X" />
|
|
||||||
<keyboard-shortcut first-keystroke="control Y" />
|
|
||||||
<keyboard-shortcut first-keystroke="control Z" />
|
|
||||||
<keyboard-shortcut first-keystroke="KP_DOWN" />
|
|
||||||
<keyboard-shortcut first-keystroke="KP_LEFT" />
|
|
||||||
<keyboard-shortcut first-keystroke="KP_RIGHT" />
|
|
||||||
<keyboard-shortcut first-keystroke="KP_UP" />
|
|
||||||
<keyboard-shortcut first-keystroke="shift control 2" />
|
|
||||||
<keyboard-shortcut first-keystroke="shift control SPACE" />
|
|
||||||
<keyboard-shortcut first-keystroke="shift DOWN" />
|
|
||||||
<keyboard-shortcut first-keystroke="shift LEFT" />
|
|
||||||
<keyboard-shortcut first-keystroke="shift RIGHT" />
|
|
||||||
<keyboard-shortcut first-keystroke="shift UP" />
|
|
||||||
</action>
|
|
||||||
</keymap>
|
|
||||||
|
|
||||||
BIN
resources/changes/0.58/reload_ideavimrc.png
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
resources/changes/0.59/highlight_yank.gif
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
resources/contributing/configurations.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
resources/icons/github-off.png
Normal file
|
After Width: | Height: | Size: 638 B |
BIN
resources/icons/github.png
Normal file
|
After Width: | Height: | Size: 364 B |
4
resources/icons/github.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="16" height="16">
|
||||||
|
<path
|
||||||
|
d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 824 B |
9
resources/icons/ideavim.svg
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 40 40">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="ideavim_plugin-a" x1="-6.748%" x2="47.286%" y1="33.61%" y2="85.907%">
|
||||||
|
<stop offset="0%" stop-color="#3BEA62"/>
|
||||||
|
<stop offset="100%" stop-color="#087CFA"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<polygon fill="url(#ideavim_plugin-a)" fill-rule="evenodd" points="28.019 4 15.988 24.119 15.988 4 4 4 4 36 17.953 36 36 4"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 450 B |
3
resources/icons/ideavim_disabled.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 40 40">
|
||||||
|
<polygon fill="#6E6E6E" fill-rule="evenodd" points="28.019 4 15.988 24.119 15.988 4 4 4 4 36 17.953 36 36 4"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 204 B |
3
resources/icons/ideavim_disabled_dark.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 40 40">
|
||||||
|
<polygon fill="#AFB1B3" fill-rule="evenodd" points="28.019 4 15.988 24.119 15.988 4 4 4 4 36 17.953 36 36 4"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 204 B |
|
Before Width: | Height: | Size: 866 B |
BIN
resources/icons/mail.png
Normal file
|
After Width: | Height: | Size: 282 B |
4
resources/icons/twitter.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 26" width="16" height="16" fill="#000000">
|
||||||
|
<path fill="#1DA1F2" d="M 25.855469 5.574219 C 24.914063 5.992188 23.902344 6.273438 22.839844 6.402344 C 23.921875 5.75 24.757813 4.722656 25.148438 3.496094 C 24.132813 4.097656 23.007813 4.535156 21.8125 4.769531 C 20.855469 3.75 19.492188 3.113281 17.980469 3.113281 C 15.082031 3.113281 12.730469 5.464844 12.730469 8.363281 C 12.730469 8.773438 12.777344 9.175781 12.867188 9.558594 C 8.503906 9.339844 4.636719 7.246094 2.046875 4.070313 C 1.59375 4.847656 1.335938 5.75 1.335938 6.714844 C 1.335938 8.535156 2.261719 10.140625 3.671875 11.082031 C 2.808594 11.054688 2 10.820313 1.292969 10.425781 C 1.292969 10.449219 1.292969 10.46875 1.292969 10.492188 C 1.292969 13.035156 3.101563 15.15625 5.503906 15.640625 C 5.0625 15.761719 4.601563 15.824219 4.121094 15.824219 C 3.78125 15.824219 3.453125 15.792969 3.132813 15.730469 C 3.800781 17.8125 5.738281 19.335938 8.035156 19.375 C 6.242188 20.785156 3.976563 21.621094 1.515625 21.621094 C 1.089844 21.621094 0.675781 21.597656 0.265625 21.550781 C 2.585938 23.039063 5.347656 23.90625 8.3125 23.90625 C 17.96875 23.90625 23.25 15.90625 23.25 8.972656 C 23.25 8.742188 23.246094 8.515625 23.234375 8.289063 C 24.261719 7.554688 25.152344 6.628906 25.855469 5.574219"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
49
resources/icons/youtrack.svg
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="16" height="16" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="7.083" y1="16.2945" x2="64.1058" y2="42.2878" gradientTransform="matrix(1 0 0 -1 0 71.0471)">
|
||||||
|
<stop offset="0" style="stop-color:#7863AB"/>
|
||||||
|
<stop offset="0.1649" style="stop-color:#6572B6"/>
|
||||||
|
<stop offset="0.3776" style="stop-color:#538FCC"/>
|
||||||
|
<stop offset="0.5401" style="stop-color:#3DA5DD"/>
|
||||||
|
<stop offset="0.6317" style="stop-color:#35ADE3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path style="fill:url(#SVGID_1_);" d="M66.9,47.5c-0.2-0.2-13.1-12.6-13.1-12.6s9.8-10.4,12.4-13c0.8-0.8,1.5-1.6,2-2.6
|
||||||
|
c3.6-6.1,1.5-13.9-4.6-17.5c-4.5-2.6-10.1-2.2-14.1,0.8c-0.7,0.5-1.3,1-1.9,1.6C47.3,4.6,33.7,17,21.9,27.8l22.1,14L20.8,67.9
|
||||||
|
c-1.4,1-2.8,1.6-4.3,1.9c0.3,0,0.5,0,0.8-0.1c4.6-0.7,43.9-7.3,45.8-7.7c2.3-0.4,4.4-1.8,5.7-3.9C71,54.5,70,50,66.9,47.5z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="30.31" y1="42.9162" x2="1.0679" y2="68.7442" gradientTransform="matrix(1 0 0 -1 0 71.0471)">
|
||||||
|
<stop offset="0" style="stop-color:#7863AB"/>
|
||||||
|
<stop offset="7.176042e-002" style="stop-color:#895EA7"/>
|
||||||
|
<stop offset="0.2523" style="stop-color:#C34F9D"/>
|
||||||
|
<stop offset="0.3901" style="stop-color:#ED3995"/>
|
||||||
|
<stop offset="0.4677" style="stop-color:#EE3B8B"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path style="fill:url(#SVGID_2_);" d="M45.9,30.5c-0.4-2.7-1.8-4.9-3.8-6.5C40,22.4,23.8,5.6,22,3.7C19.2,1,15.2-0.5,11.1,0.2
|
||||||
|
C4.1,1.2-0.8,7.8,0.3,14.8c0.5,3.5,2.5,6.5,5.1,8.4c2.6,2,23,16,24.3,17c2.1,1.6,4.9,2.5,7.7,2C42.9,41.2,46.8,36,45.9,30.5z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="4.9829" y1="12.3617" x2="74.0226" y2="55.8638" gradientTransform="matrix(1 0 0 -1 0 71.0471)">
|
||||||
|
<stop offset="0" style="stop-color:#7863AB"/>
|
||||||
|
<stop offset="0.1649" style="stop-color:#6572B6"/>
|
||||||
|
<stop offset="0.3776" style="stop-color:#538FCC"/>
|
||||||
|
<stop offset="0.5401" style="stop-color:#3DA5DD"/>
|
||||||
|
<stop offset="0.6317" style="stop-color:#35ADE3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path style="fill:url(#SVGID_3_);" d="M23,67.8c0.1,0,23.3-26.1,23.3-26.1L22.9,26.9c-8.3,7.6-16,14.5-17.8,16.2
|
||||||
|
c-1.1,1-2.2,2.3-3,3.7c-4.3,7.4-1.8,16.8,5.6,21.1C10.7,69.6,17.5,71.7,23,67.8z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect x="13.4" y="13.4" style="fill:#231F20;" width="43.2" height="43.2"/>
|
||||||
|
<rect x="17.4" y="48.5" style="fill:#FFFFFF;" width="16.2" height="2.7"/>
|
||||||
|
<polygon style="fill:#FFFFFF;" points="23.8,29.9 17,19.1 21.6,19.1 25.8,26.2 30.2,19.1 34.7,19.1 27.8,29.8 27.8,37 23.8,37
|
||||||
|
"/>
|
||||||
|
<polygon style="fill:#FFFFFF;" points="41.6,22.7 36.1,22.7 36.1,19.1 51,19.1 51,22.7 45.5,22.7 45.5,37 41.6,37 "/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -1,50 +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}
|
|
||||||
125
resources/messages/IdeaVimBundle.properties
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
#
|
||||||
|
# IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
# Copyright (C) 2003-2020 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/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
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_rangereq=Range required
|
||||||
|
e_argreq=Argument required
|
||||||
|
e_argforb=Argument forbidden
|
||||||
|
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}
|
||||||
|
E475=E475: Invalid argument: {0}
|
||||||
|
E774=E774: 'operatorfunc' is empty
|
||||||
|
|
||||||
|
action.VimPluginToggle.text=Vim Emulator
|
||||||
|
action.VimPluginToggle.description=Toggle the vim plugin On/Off
|
||||||
|
action.VimPluginToggle.enabled=Enabled
|
||||||
|
action.VimPluginToggle.enable=Enable
|
||||||
|
|
||||||
|
action.VimShortcutKeyAction.text=Shortcuts
|
||||||
|
|
||||||
|
action.VimActions.text=Vim Actions
|
||||||
|
action.not.found.0=Action not found: {0}
|
||||||
|
|
||||||
|
action.VimFindActionIdAction.text=IdeaVim: Track Action Ids
|
||||||
|
action.VimFindActionIdAction.description=Starts tracking ids of executed actions
|
||||||
|
|
||||||
|
ex.show.all.actions.0.1=--- Actions ---{0}{1}
|
||||||
|
e471.argument.required=E471: Argument required
|
||||||
|
|
||||||
|
buffer.0.does.not.exist=Buffer {0} does not exist
|
||||||
|
no.matching.buffer.for.0=No matching buffer for {0}
|
||||||
|
no.write.since.last.change.add.to.override=No write since last change (add ! to override)
|
||||||
|
more.than.one.match.for.0=More than one match for {0}
|
||||||
|
e176.invalid.number.of.arguments=E176: Invalid number of arguments
|
||||||
|
e183.user.defined.commands.must.start.with.an.uppercase.letter=E183: User defined commands must start with an uppercase letter
|
||||||
|
e841.reserved.name.cannot.be.used.for.user.defined.command=E841: Reserved name, cannot be used for user defined command
|
||||||
|
e174.command.already.exists.add.to.replace.it=E174: Command already exists: add ! to replace it
|
||||||
|
recursion.detected.maximum.alias.depth.reached=Recursion detected, maximum alias depth reached.
|
||||||
|
show.mode.recording=recording
|
||||||
|
e184.no.such.user.defined.command.0=E184: No such user-defined command: {0}
|
||||||
|
unable.to.find.0=Unable to find {0}
|
||||||
|
more.ret.line.space.page.d.half.page.q.quit=-- MORE -- (RET: line, SPACE: page, d: half page, q: quit)
|
||||||
|
hit.enter.or.type.command.to.continue=Hit ENTER or type command to continue
|
||||||
|
ex.output.panel.more=-- MORE --
|
||||||
|
command.name.vim.macro.playback=Vim Macro Playback
|
||||||
|
action.no.changes.text=No Changes
|
||||||
|
action.reload.text=Reload
|
||||||
|
replace.with.0=Replace with {0} (y/n/a/q/l)?
|
||||||
|
error.invalid.command.argument=Error: invalid command argument
|
||||||
|
argtextobj.invalid.value.of.g.argtextobj.pairs.0=argtextobj: Invalid value of g:argtextobj_pairs -- {0}
|
||||||
|
highlightedyank.invalid.value.of.0.1=highlightedyank: Invalid value of {0} -- {1}
|
||||||
|
could.not.find.file.0=Could not find file: {0}
|
||||||
|
popup.advertisement.version=Version {0}
|
||||||
|
action.eap.choice.active.text=EAP{0, choice, 0# (Active)|1#}
|
||||||
|
action.about.eap.text=About EAP...
|
||||||
|
action.contacts.help.text=Contacts && Help
|
||||||
|
action.contact.on.twitter.text=Contact on Twitter
|
||||||
|
action.create.issue.text=Create an Issue
|
||||||
|
action.contribute.on.github.text=Contribute on GitHub
|
||||||
|
action.settings.text=Settings...
|
||||||
|
action.finish.eap.text=Finish EAP
|
||||||
|
action.subscribe.to.eap.text=Subscribe to EAP
|
||||||
|
configurable.name.vim.emulation=Vim Emulation
|
||||||
|
border.title.shortcut.conflicts.for.active.keymap=Shortcut Conflicts for Active Keymap
|
||||||
|
message.no.more.matches=No more matches
|
||||||
BIN
resources/readme/track_action_id.gif
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
19
settings.gradle
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
rootProject.name = 'IdeaVIM'
|
||||||
24
src/com/maddyhome/idea/vim/DynamicLoaderStopper.kt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.maddyhome.idea.vim
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class prevents dynamic loading of IdeaVim plugin
|
||||||
|
*/
|
||||||
|
class DynamicLoaderStopper
|
||||||
145
src/com/maddyhome/idea/vim/EventFacade.java
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
/*
|
||||||
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.maddyhome.idea.vim;
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.lookup.LookupManager;
|
||||||
|
import com.intellij.openapi.Disposable;
|
||||||
|
import com.intellij.openapi.actionSystem.AnAction;
|
||||||
|
import com.intellij.openapi.actionSystem.ShortcutSet;
|
||||||
|
import com.intellij.openapi.editor.Document;
|
||||||
|
import com.intellij.openapi.editor.Editor;
|
||||||
|
import com.intellij.openapi.editor.EditorFactory;
|
||||||
|
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
|
||||||
|
import com.intellij.openapi.editor.actionSystem.TypedAction;
|
||||||
|
import com.intellij.openapi.editor.actionSystem.TypedActionHandler;
|
||||||
|
import com.intellij.openapi.editor.event.*;
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.MouseListener;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author vlan
|
||||||
|
*/
|
||||||
|
public class EventFacade {
|
||||||
|
private static final @NotNull EventFacade ourInstance = new EventFacade();
|
||||||
|
|
||||||
|
private @Nullable TypedActionHandler myOriginalTypedActionHandler;
|
||||||
|
|
||||||
|
private EventFacade() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull EventFacade getInstance() {
|
||||||
|
return ourInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setupTypedActionHandler(@NotNull VimTypedActionHandler handler) {
|
||||||
|
final TypedAction typedAction = getTypedAction();
|
||||||
|
myOriginalTypedActionHandler = typedAction.getRawHandler();
|
||||||
|
|
||||||
|
typedAction.setupRawHandler(handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void restoreTypedActionHandler() {
|
||||||
|
if (myOriginalTypedActionHandler != null) {
|
||||||
|
getTypedAction().setupRawHandler(myOriginalTypedActionHandler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerCustomShortcutSet(@NotNull AnAction action, @NotNull ShortcutSet shortcutSet,
|
||||||
|
@Nullable JComponent component) {
|
||||||
|
action.registerCustomShortcutSet(shortcutSet, component);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerCustomShortcutSet(@NotNull AnAction action, @NotNull ShortcutSet shortcutSet,
|
||||||
|
@Nullable JComponent component, @NotNull Disposable disposable) {
|
||||||
|
action.registerCustomShortcutSet(shortcutSet, component, disposable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unregisterCustomShortcutSet(@NotNull AnAction action, @NotNull JComponent component) {
|
||||||
|
action.unregisterCustomShortcutSet(component);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addDocumentListener(@NotNull Document document, @NotNull DocumentListener listener) {
|
||||||
|
document.addDocumentListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeDocumentListener(@NotNull Document document, @NotNull DocumentListener listener) {
|
||||||
|
document.removeDocumentListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEditorFactoryListener(@NotNull EditorFactoryListener listener, @NotNull Disposable parentDisposable) {
|
||||||
|
EditorFactory.getInstance().addEditorFactoryListener(listener, parentDisposable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeEditorFactoryListener(@NotNull EditorFactoryListener listener) {
|
||||||
|
// Listener is removed not only if application is disposed
|
||||||
|
//noinspection deprecation
|
||||||
|
EditorFactory.getInstance().removeEditorFactoryListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEditorMouseListener(@NotNull Editor editor, @NotNull EditorMouseListener listener) {
|
||||||
|
editor.addEditorMouseListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeEditorMouseListener(@NotNull Editor editor, @NotNull EditorMouseListener listener) {
|
||||||
|
editor.removeEditorMouseListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addComponentMouseListener(@NotNull Component component, @NotNull MouseListener mouseListener) {
|
||||||
|
component.addMouseListener(mouseListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeComponentMouseListener(@NotNull Component component, @NotNull MouseListener mouseListener) {
|
||||||
|
component.removeMouseListener(mouseListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEditorMouseMotionListener(@NotNull Editor editor, @NotNull EditorMouseMotionListener listener) {
|
||||||
|
editor.addEditorMouseMotionListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeEditorMouseMotionListener(@NotNull Editor editor, @NotNull EditorMouseMotionListener listener) {
|
||||||
|
editor.removeEditorMouseMotionListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEditorSelectionListener(@NotNull Editor editor, @NotNull SelectionListener listener) {
|
||||||
|
editor.getSelectionModel().addSelectionListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeEditorSelectionListener(@NotNull Editor editor, @NotNull SelectionListener listener) {
|
||||||
|
editor.getSelectionModel().removeSelectionListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerLookupListener(@NotNull Project project, @NotNull PropertyChangeListener propertyChangeListener) {
|
||||||
|
VimProjectService parentDisposable = VimProjectService.getInstance(project);
|
||||||
|
LookupManager.getInstance(project).addPropertyChangeListener(propertyChangeListener, parentDisposable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeLookupListener(@NotNull Project project, @NotNull PropertyChangeListener propertyChangeListener) {
|
||||||
|
LookupManager.getInstance(project).removePropertyChangeListener(propertyChangeListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
private @NotNull TypedAction getTypedAction() {
|
||||||
|
return TypedAction.getInstance();
|
||||||
|
}
|
||||||
|
}
|
||||||
45
src/com/maddyhome/idea/vim/PluginStartup.kt
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.maddyhome.idea.vim
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.startup.StartupActivity
|
||||||
|
import com.maddyhome.idea.vim.listener.VimListenerManager
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Alex Plate
|
||||||
|
*/
|
||||||
|
class PluginStartup : StartupActivity.DumbAware {
|
||||||
|
|
||||||
|
private var firstInitializationOccurred = false
|
||||||
|
|
||||||
|
override fun runActivity(project: Project) {
|
||||||
|
if (firstInitializationOccurred && VimPlugin.isEnabled()) {
|
||||||
|
// This code should be executed on every project open
|
||||||
|
// Project listeners are self-disposable, so there is no need to unregister them on project close
|
||||||
|
VimListenerManager.ProjectListeners.add(project)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (firstInitializationOccurred) return
|
||||||
|
firstInitializationOccurred = true
|
||||||
|
|
||||||
|
// This code should be executed once
|
||||||
|
VimPlugin.getInstance().initialize()
|
||||||
|
}
|
||||||
|
}
|
||||||
84
src/com/maddyhome/idea/vim/RegisterActions.java
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 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/>.
|
||||||
|
*/
|
||||||
|
package com.maddyhome.idea.vim;
|
||||||
|
|
||||||
|
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||||
|
import com.maddyhome.idea.vim.group.KeyGroup;
|
||||||
|
import com.maddyhome.idea.vim.handler.ActionBeanClass;
|
||||||
|
import com.maddyhome.idea.vim.handler.EditorActionHandlerBase;
|
||||||
|
import com.maddyhome.idea.vim.key.MappingOwner;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
|
public class RegisterActions {
|
||||||
|
|
||||||
|
public static final ExtensionPointName<ActionBeanClass> VIM_ACTIONS_EP =
|
||||||
|
ExtensionPointName.create("IdeaVIM.vimAction");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register all the key/action mappings for the plugin.
|
||||||
|
*/
|
||||||
|
public static void registerActions() {
|
||||||
|
registerVimCommandActions();
|
||||||
|
registerEmptyShortcuts();
|
||||||
|
registerEpListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerEpListener() {
|
||||||
|
// IdeaVim doesn't support contribution to VIM_ACTIONS_EP extension point, so technically we can skip this update,
|
||||||
|
// but let's support dynamic plugins in a more classic way and reload actions on every EP change.
|
||||||
|
VIM_ACTIONS_EP.getPoint(null).addExtensionPointListener(() -> {
|
||||||
|
unregisterActions();
|
||||||
|
registerActions();
|
||||||
|
}, false, VimPlugin.getInstance());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @Nullable EditorActionHandlerBase findAction(@NotNull String id) {
|
||||||
|
return VIM_ACTIONS_EP.extensions().filter(vimActionBean -> vimActionBean.getActionId().equals(id)).findFirst()
|
||||||
|
.map(ActionBeanClass::getInstance).orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull EditorActionHandlerBase findActionOrDie(@NotNull String id) {
|
||||||
|
EditorActionHandlerBase action = findAction(id);
|
||||||
|
if (action == null) throw new RuntimeException("Action " + id + " is not registered");
|
||||||
|
return action;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void unregisterActions() {
|
||||||
|
KeyGroup keyGroup = VimPlugin.getKeyIfCreated();
|
||||||
|
if (keyGroup != null) {
|
||||||
|
keyGroup.unregisterCommandActions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerVimCommandActions() {
|
||||||
|
KeyGroup parser = VimPlugin.getKey();
|
||||||
|
VIM_ACTIONS_EP.extensions().forEach(parser::registerCommandAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void registerEmptyShortcuts() {
|
||||||
|
final KeyGroup parser = VimPlugin.getKey();
|
||||||
|
|
||||||
|
// The {char1} <BS> {char2} shortcut is handled directly by KeyHandler#handleKey, so doesn't have an action. But we
|
||||||
|
// still need to register the shortcut, to make sure the editor doesn't swallow it.
|
||||||
|
parser.registerShortcutWithoutAction(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), MappingOwner.IdeaVim.INSTANCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,222 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
import com.google.common.base.Joiner;
|
|
||||||
import com.google.common.io.Files;
|
|
||||||
import com.google.common.io.Resources;
|
|
||||||
import com.intellij.notification.Notification;
|
|
||||||
import com.intellij.notification.NotificationType;
|
|
||||||
import com.intellij.notification.Notifications;
|
|
||||||
import com.intellij.openapi.actionSystem.Shortcut;
|
|
||||||
import com.intellij.openapi.application.ApplicationManager;
|
|
||||||
import com.intellij.openapi.application.PathManager;
|
|
||||||
import com.intellij.openapi.components.impl.stores.StorageUtil;
|
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
|
||||||
import com.intellij.openapi.keymap.Keymap;
|
|
||||||
import com.intellij.openapi.keymap.KeymapManager;
|
|
||||||
import com.intellij.openapi.keymap.impl.KeymapImpl;
|
|
||||||
import com.intellij.openapi.keymap.impl.KeymapManagerImpl;
|
|
||||||
import com.intellij.openapi.ui.DialogWrapper;
|
|
||||||
import com.intellij.openapi.util.InvalidDataException;
|
|
||||||
import com.intellij.openapi.util.JDOMUtil;
|
|
||||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
|
||||||
import com.maddyhome.idea.vim.ui.VimKeymapDialog;
|
|
||||||
import org.jdom.Document;
|
|
||||||
import org.jdom.Element;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static com.google.common.io.ByteStreams.toByteArray;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author oleg
|
|
||||||
*/
|
|
||||||
public class VimKeyMapUtil {
|
|
||||||
private static final Joiner PATH_JOINER = Joiner.on(File.separatorChar);
|
|
||||||
public static final String VIM_KEYMAP_NAME = "Vim";
|
|
||||||
|
|
||||||
private static final String VIM_XML = "Vim.xml";
|
|
||||||
private static final String KEYMAPS_PATH = PATH_JOINER.join(PathManager.getConfigPath(), "keymaps");
|
|
||||||
private static final String INSTALLED_VIM_KEYMAP_PATH = PATH_JOINER.join(KEYMAPS_PATH, VIM_XML);
|
|
||||||
|
|
||||||
private static Logger LOG = Logger.getInstance(VimKeyMapUtil.class);
|
|
||||||
|
|
||||||
public static boolean isVimKeymapInstalled() {
|
|
||||||
return KeymapManager.getInstance().getKeymap(VIM_KEYMAP_NAME) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return true if keymap was installed or was successfully installed
|
|
||||||
*/
|
|
||||||
public static boolean installKeyBoardBindings() {
|
|
||||||
LOG.debug("Check for keyboard bindings");
|
|
||||||
final LocalFileSystem localFileSystem = LocalFileSystem.getInstance();
|
|
||||||
if (localFileSystem.refreshAndFindFileByPath(KEYMAPS_PATH) == null) {
|
|
||||||
reportError("Failed to install vim keymap. Empty keymaps folder");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.debug("No vim keyboard installed found. Installing");
|
|
||||||
try {
|
|
||||||
final byte[] bytes = toByteArray(retrieveSourceKeymapStream());
|
|
||||||
Files.write(bytes, new File(INSTALLED_VIM_KEYMAP_PATH));
|
|
||||||
final Document document = StorageUtil.loadDocument(bytes);
|
|
||||||
if (document != null && !ApplicationManager.getApplication().isUnitTestMode()) {
|
|
||||||
// Prompt user to select the parent for the Vim keyboard
|
|
||||||
if (!configureVimParentKeymap(INSTALLED_VIM_KEYMAP_PATH, document, true)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
installKeymap(document);
|
|
||||||
} catch (IOException e) {
|
|
||||||
reportError("Source keymap not found", e);
|
|
||||||
return false;
|
|
||||||
} catch (InvalidDataException e) {
|
|
||||||
reportError("Failed to install vim keymap. Vim.xml file is corrupted", e);
|
|
||||||
return false;
|
|
||||||
} catch (Exception e) {
|
|
||||||
reportError("Failed to install vim keymap.\n", e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void installKeymap(@Nullable Document document) throws InvalidDataException {
|
|
||||||
if (document == null) {
|
|
||||||
throw new InvalidDataException();
|
|
||||||
}
|
|
||||||
final KeymapImpl vimKeyMap = new KeymapImpl();
|
|
||||||
final KeymapManagerImpl keymapManager = (KeymapManagerImpl) KeymapManager.getInstance();
|
|
||||||
final Keymap[] allKeymaps = keymapManager.getAllKeymaps();
|
|
||||||
vimKeyMap.readExternal(document.getRootElement(), allKeymaps);
|
|
||||||
keymapManager.addKeymap(vimKeyMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Changes parent keymap for the Vim
|
|
||||||
*
|
|
||||||
* @return true if document was changed successfully
|
|
||||||
*/
|
|
||||||
private static boolean configureVimParentKeymap(final String path, @NotNull final Document document,
|
|
||||||
final boolean showNotification)
|
|
||||||
throws IOException, InvalidDataException {
|
|
||||||
final Element rootElement = document.getRootElement();
|
|
||||||
final String parentKeymapName = rootElement.getAttributeValue("parent");
|
|
||||||
final VimKeymapDialog vimKeymapDialog = new VimKeymapDialog(parentKeymapName);
|
|
||||||
vimKeymapDialog.show();
|
|
||||||
if (vimKeymapDialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
rootElement.removeAttribute("parent");
|
|
||||||
final Keymap parentKeymap = vimKeymapDialog.getSelectedKeymap();
|
|
||||||
final String keymapName = parentKeymap.getName();
|
|
||||||
VimKeymapConflictResolveUtil.resolveConflicts(rootElement, parentKeymap);
|
|
||||||
// We cannot set a user-defined modifiable keymap as the parent of our Vim keymap so we have to copy its shortcuts
|
|
||||||
if (parentKeymap.canModify()) {
|
|
||||||
final KeymapImpl vimKeyMap = new KeymapImpl();
|
|
||||||
final KeymapManager keymapManager = KeymapManager.getInstance();
|
|
||||||
final KeymapManagerImpl keymapManagerImpl = (KeymapManagerImpl)keymapManager;
|
|
||||||
final Keymap[] allKeymaps = keymapManagerImpl.getAllKeymaps();
|
|
||||||
vimKeyMap.readExternal(rootElement, allKeymaps);
|
|
||||||
final HashSet<String> ownActions = new HashSet<String>(Arrays.asList(vimKeyMap.getOwnActionIds()));
|
|
||||||
final KeymapImpl parentKeymapImpl = (KeymapImpl)parentKeymap;
|
|
||||||
for (String parentAction : parentKeymapImpl.getOwnActionIds()) {
|
|
||||||
if (!ownActions.contains(parentAction)) {
|
|
||||||
final List<Shortcut> shortcuts = Arrays.asList(parentKeymap.getShortcuts(parentAction));
|
|
||||||
rootElement.addContent(VimKeymapConflictResolveUtil.createActionElement(parentAction, shortcuts));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
final Keymap grandParentKeymap = parentKeymap.getParent();
|
|
||||||
rootElement.setAttribute("parent", grandParentKeymap.getName());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
rootElement.setAttribute("parent", keymapName);
|
|
||||||
}
|
|
||||||
VimPlugin.getInstance().setPreviousKeyMap(keymapName);
|
|
||||||
// Save modified keymap to the file
|
|
||||||
JDOMUtil.writeDocument(document, path, "\n");
|
|
||||||
if (showNotification) {
|
|
||||||
Notifications.Bus.notify(new Notification(VimPlugin.IDEAVIM_NOTIFICATION_ID, VimPlugin.IDEAVIM_NOTIFICATION_TITLE,
|
|
||||||
"Successfully configured vim keymap to be based on " +
|
|
||||||
parentKeymap.getPresentableName(),
|
|
||||||
NotificationType.INFORMATION));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isVimKeymapUsed() {
|
|
||||||
return KeymapManager.getInstance().getActiveKeymap().getName().equals(VIM_KEYMAP_NAME);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return true if keymap was switched successfully, false otherwise
|
|
||||||
*/
|
|
||||||
public static boolean switchKeymapBindings(final boolean enableVimKeymap) {
|
|
||||||
LOG.debug("Enabling keymap");
|
|
||||||
|
|
||||||
// In case if Vim keymap is already in use or we don't need it, we have nothing to do
|
|
||||||
if (isVimKeymapUsed() == enableVimKeymap) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
final KeymapManagerImpl manager = (KeymapManagerImpl) KeymapManager.getInstance();
|
|
||||||
// Get keymap to enable
|
|
||||||
final String keymapName2Enable = enableVimKeymap ? VIM_KEYMAP_NAME : VimPlugin.getInstance().getPreviousKeyMap();
|
|
||||||
if (keymapName2Enable.isEmpty()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (keymapName2Enable.equals(manager.getActiveKeymap().getName())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.debug("Enabling keymap:" + keymapName2Enable);
|
|
||||||
final Keymap keymap = manager.getKeymap(keymapName2Enable);
|
|
||||||
if (keymap == null) {
|
|
||||||
reportError("Failed to enable keymap: " + keymapName2Enable);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save previous keymap to enable after VIM emulation is turned off
|
|
||||||
if (enableVimKeymap) {
|
|
||||||
VimPlugin.getInstance().setPreviousKeyMap(manager.getActiveKeymap().getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
manager.setActiveKeymap(keymap);
|
|
||||||
|
|
||||||
final String keyMapPresentableName = keymap.getPresentableName();
|
|
||||||
Notifications.Bus.notify(new Notification(VimPlugin.IDEAVIM_NOTIFICATION_ID, VimPlugin.IDEAVIM_NOTIFICATION_TITLE,
|
|
||||||
keyMapPresentableName + " keymap was successfully enabled", NotificationType.INFORMATION));
|
|
||||||
LOG.debug(keyMapPresentableName + " keymap was successfully enabled");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private static InputStream retrieveSourceKeymapStream() throws IOException {
|
|
||||||
String keymapPath = PATH_JOINER.join(PathManager.getPluginsPath(), VimPlugin.IDEAVIM_NOTIFICATION_TITLE, VIM_XML);
|
|
||||||
try {
|
|
||||||
return new FileInputStream(keymapPath);
|
|
||||||
} catch (FileNotFoundException e) {
|
|
||||||
if (ApplicationManager.getApplication().isInternal()) {
|
|
||||||
LOG.debug("Development mode on. Trying to retrieve source keymap from resources");
|
|
||||||
return Resources.getResource(VimKeyMapUtil.class, "/" + VIM_XML).openStream();
|
|
||||||
}
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void reportError(final String message) {
|
|
||||||
reportError(message, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void reportError(final String message, @Nullable final Exception e) {
|
|
||||||
LOG.error(message, e);
|
|
||||||
Notifications.Bus.notify(new Notification(VimPlugin.IDEAVIM_NOTIFICATION_ID, VimPlugin.IDEAVIM_NOTIFICATION_TITLE,
|
|
||||||
message + String.valueOf(e), NotificationType.ERROR));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,224 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
|
||||||
import com.intellij.openapi.actionSystem.MouseShortcut;
|
|
||||||
import com.intellij.openapi.actionSystem.Shortcut;
|
|
||||||
import com.intellij.openapi.keymap.Keymap;
|
|
||||||
import com.intellij.openapi.keymap.impl.KeymapImpl;
|
|
||||||
import com.intellij.openapi.util.SystemInfo;
|
|
||||||
import org.jdom.Element;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.InputEvent;
|
|
||||||
import java.awt.event.MouseEvent;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import static com.google.common.collect.Lists.newLinkedList;
|
|
||||||
import static com.google.common.collect.Maps.newHashMap;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User: zolotov
|
|
||||||
* Date: 1/8/13
|
|
||||||
*/
|
|
||||||
public class VimKeymapConflictResolveUtil {
|
|
||||||
private static final String SHIFT = "shift";
|
|
||||||
private static final String CONTROL = "control";
|
|
||||||
private static final String META = "meta";
|
|
||||||
private static final String ALT = "alt";
|
|
||||||
private static final String ALT_GRAPH = "altGraph";
|
|
||||||
private static final String DOUBLE_CLICK = "doubleClick";
|
|
||||||
|
|
||||||
private static final String VIM_KEY_HANDLER_ACTION_ID = "VimKeyHandler";
|
|
||||||
private static final String ACTION_TAG = "action";
|
|
||||||
private static final String KEYBOARD_SHORTCUT_TAG = "keyboard-shortcut";
|
|
||||||
private static final String MOUSE_SHORTCUT_TAG = "mouse-shortcut";
|
|
||||||
private static final String ID_ATTRIBUTE = "id";
|
|
||||||
private static final String FIRST_KEYSTROKE_ATTRIBUTE = "first-keystroke";
|
|
||||||
private static final String KEYSTROKE_ATTRIBUTE = "keystroke";
|
|
||||||
private static final String SECOND_KEYSTROKE_ATTRIBUTE = "second-keystroke";
|
|
||||||
|
|
||||||
private static final List<Integer> ALTERNATIVE_MODIFIERS = ImmutableList.of(
|
|
||||||
InputEvent.ALT_DOWN_MASK,
|
|
||||||
InputEvent.CTRL_DOWN_MASK,
|
|
||||||
InputEvent.SHIFT_DOWN_MASK,
|
|
||||||
InputEvent.META_DOWN_MASK,
|
|
||||||
InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK,
|
|
||||||
InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK,
|
|
||||||
InputEvent.ALT_DOWN_MASK | InputEvent.META_DOWN_MASK,
|
|
||||||
InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK,
|
|
||||||
InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
|
|
||||||
|
|
||||||
public static void resolveConflicts(Element targetKeymapRoot, Keymap parentKeymap) {
|
|
||||||
final Collection<String> vimHandlingShortcuts = getVimHandlingShortcuts(targetKeymapRoot);
|
|
||||||
final Map<String, List<Shortcut>> shortcutsToOverride = retrieveShortcutsToOverride(vimHandlingShortcuts, parentKeymap);
|
|
||||||
overrideShortcuts(targetKeymapRoot, shortcutsToOverride);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param targetKeymapRoot root element of Vim keymap
|
|
||||||
* @return all shortcuts in string representation that should be handled by Vim plugin
|
|
||||||
*/
|
|
||||||
private static Collection<String> getVimHandlingShortcuts(Element targetKeymapRoot) {
|
|
||||||
Element vimKeyHandlerAction = retrieveActionElement(targetKeymapRoot);
|
|
||||||
if (vimKeyHandlerAction != null) {
|
|
||||||
Collection<String> result = newLinkedList();
|
|
||||||
for (Object childAction : vimKeyHandlerAction.getChildren()) {
|
|
||||||
if (childAction instanceof Element) {
|
|
||||||
Element shortcut = (Element)childAction;
|
|
||||||
result.add(shortcut.getAttributeValue(FIRST_KEYSTROKE_ATTRIBUTE));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param targetKeymapRoot root element of Vim keymap
|
|
||||||
* @return Retrieve VimKeyHandler action element
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
private static Element retrieveActionElement(Element targetKeymapRoot) {
|
|
||||||
Element vimKeyHandlerAction = null;
|
|
||||||
for (Object child : targetKeymapRoot.getChildren(ACTION_TAG)) {
|
|
||||||
if (child instanceof Element) {
|
|
||||||
Element action = (Element)child;
|
|
||||||
if (VIM_KEY_HANDLER_ACTION_ID.equals(action.getAttributeValue(ID_ATTRIBUTE))) {
|
|
||||||
vimKeyHandlerAction = action;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return vimKeyHandlerAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param vimHandlingShortcuts collection of shortcuts that should be handled by Vim plugin
|
|
||||||
* @param parentKeymap selected parent keymap for vim keymap
|
|
||||||
* @return mapping of action names to its shortcuts that we should save in Vim-keymap
|
|
||||||
* (or empty list of shortcuts if action just should be disabled)
|
|
||||||
*/
|
|
||||||
private static Map<String, List<Shortcut>> retrieveShortcutsToOverride(Collection<String> vimHandlingShortcuts, Keymap parentKeymap) {
|
|
||||||
Map<String, List<Shortcut>> result = newHashMap();
|
|
||||||
for (String shortcut : vimHandlingShortcuts) {
|
|
||||||
final Map<String, ArrayList<KeyboardShortcut>> conflicts = parentKeymap.getConflicts("", KeyboardShortcut.fromString(shortcut));
|
|
||||||
for (Map.Entry<String, ArrayList<KeyboardShortcut>> conflict : conflicts.entrySet()) {
|
|
||||||
String actionName = conflict.getKey();
|
|
||||||
final ArrayList<KeyboardShortcut> conflictedShortcuts = conflict.getValue();
|
|
||||||
if (result.containsKey(actionName)) {
|
|
||||||
// found another conflict for already overridden action
|
|
||||||
List<Shortcut> overridesShortcuts = result.get(actionName);
|
|
||||||
for (KeyboardShortcut conflictedShortcut : conflictedShortcuts) {
|
|
||||||
overridesShortcuts.remove(conflictedShortcut);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// let's override action with all non-conflict shortcuts
|
|
||||||
List<Shortcut> overriddenShortcuts = newLinkedList();
|
|
||||||
for (Shortcut actionShortcut : parentKeymap.getShortcuts(actionName)) {
|
|
||||||
if (!(actionShortcut instanceof KeyboardShortcut) || !conflictedShortcuts.contains(actionShortcut)) {
|
|
||||||
overriddenShortcuts.add(actionShortcut);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (overriddenShortcuts.isEmpty()) {
|
|
||||||
for (Integer modifier : ALTERNATIVE_MODIFIERS) {
|
|
||||||
if (!SystemInfo.isMac && (modifier & InputEvent.META_DOWN_MASK) != 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
final KeyStroke originalStroke = KeyStroke.getKeyStroke(shortcut);
|
|
||||||
final int modifiers = originalStroke.getModifiers() | modifier;
|
|
||||||
//noinspection MagicConstant
|
|
||||||
final KeyStroke stroke = KeyStroke.getKeyStroke(originalStroke.getKeyCode(), modifiers);
|
|
||||||
final KeyboardShortcut alternativeShortcut = new KeyboardShortcut(stroke, null);
|
|
||||||
if (parentKeymap.getConflicts("", alternativeShortcut).isEmpty()) {
|
|
||||||
overriddenShortcuts.add(alternativeShortcut);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
result.put(actionName, overriddenShortcuts);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fill vim keymap with overridden actions.
|
|
||||||
* Only keyboard and mouse shortcuts will be overridden.
|
|
||||||
*
|
|
||||||
* @param targetKeymapRoot root element of Vim keymap
|
|
||||||
* @param shortcutsToOverride overriding mapping: actions -> shortcuts_should_be_saved
|
|
||||||
*/
|
|
||||||
|
|
||||||
private static void overrideShortcuts(Element targetKeymapRoot, Map<String, List<Shortcut>> shortcutsToOverride) {
|
|
||||||
for (Map.Entry<String, List<Shortcut>> action : shortcutsToOverride.entrySet()) {
|
|
||||||
targetKeymapRoot.addContent(createActionElement(action.getKey(), action.getValue()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Element createActionElement(String actionName, List<Shortcut> shortcuts) {
|
|
||||||
final Element overridesAction = new Element(ACTION_TAG);
|
|
||||||
overridesAction.setAttribute(ID_ATTRIBUTE, actionName);
|
|
||||||
for (Shortcut shortcut : shortcuts) {
|
|
||||||
if (shortcut instanceof KeyboardShortcut) {
|
|
||||||
KeyboardShortcut keyboardShortcut = (KeyboardShortcut)shortcut;
|
|
||||||
final String firstShortcutString = KeymapImpl.getKeyShortcutString(keyboardShortcut.getFirstKeyStroke());
|
|
||||||
final Element shortcutElement = createShortcutElement(KEYBOARD_SHORTCUT_TAG, FIRST_KEYSTROKE_ATTRIBUTE,
|
|
||||||
firstShortcutString);
|
|
||||||
overridesAction.addContent(shortcutElement);
|
|
||||||
final KeyStroke secondKeyStroke = keyboardShortcut.getSecondKeyStroke();
|
|
||||||
if (secondKeyStroke != null) {
|
|
||||||
final String secondShortcutString = KeymapImpl.getKeyShortcutString(secondKeyStroke);
|
|
||||||
shortcutElement.setAttribute(SECOND_KEYSTROKE_ATTRIBUTE, secondShortcutString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (shortcut instanceof MouseShortcut) {
|
|
||||||
overridesAction.addContent(createShortcutElement(MOUSE_SHORTCUT_TAG, KEYSTROKE_ATTRIBUTE, getMouseShortcutString((MouseShortcut)shortcut)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return overridesAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Element createShortcutElement(String elementName, String shortcutAttributeName, String shortcut) {
|
|
||||||
final Element shortcutElement = new Element(elementName);
|
|
||||||
shortcutElement.setAttribute(shortcutAttributeName, shortcut);
|
|
||||||
return shortcutElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create string representation of mouse shortcut
|
|
||||||
* KeymapImpl has implementation for mouse shortcut marshaling, but it is private :-(
|
|
||||||
*
|
|
||||||
* @param shortcut mouse shortcut
|
|
||||||
* @return string representation of mouse shortcut
|
|
||||||
*/
|
|
||||||
private static String getMouseShortcutString(MouseShortcut shortcut) {
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
int modifiers = shortcut.getModifiers();
|
|
||||||
if ((MouseEvent.SHIFT_DOWN_MASK & modifiers) > 0) {
|
|
||||||
builder.append(SHIFT).append(' ');
|
|
||||||
}
|
|
||||||
if ((MouseEvent.CTRL_DOWN_MASK & modifiers) > 0) {
|
|
||||||
builder.append(CONTROL).append(' ');
|
|
||||||
}
|
|
||||||
if ((MouseEvent.META_DOWN_MASK & modifiers) > 0) {
|
|
||||||
builder.append(META).append(' ');
|
|
||||||
}
|
|
||||||
if ((MouseEvent.ALT_DOWN_MASK & modifiers) > 0) {
|
|
||||||
builder.append(ALT).append(' ');
|
|
||||||
}
|
|
||||||
if ((MouseEvent.ALT_GRAPH_DOWN_MASK & modifiers) > 0) {
|
|
||||||
builder.append(ALT_GRAPH).append(' ');
|
|
||||||
}
|
|
||||||
builder.append("button").append(shortcut.getButton()).append(' ');
|
|
||||||
if (shortcut.getClickCount() > 1) {
|
|
||||||
builder.append(DOUBLE_CLICK);
|
|
||||||
}
|
|
||||||
return builder.toString().trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,98 +1,92 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2011 JetBrains s.r.o.
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 The IdeaVim authors
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* you may not use this file except in compliance with the License.
|
* it under the terms of the GNU General Public License as published by
|
||||||
* You may obtain a copy of the License at
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* 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.
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* You should have received a copy of the GNU General Public License
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
* 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.
|
|
||||||
*/
|
*/
|
||||||
package com.maddyhome.idea.vim;
|
package com.maddyhome.idea.vim;
|
||||||
|
|
||||||
|
import com.intellij.ide.plugins.IdeaPluginDescriptor;
|
||||||
|
import com.intellij.ide.plugins.PluginManager;
|
||||||
|
import com.intellij.ide.plugins.PluginManagerCore;
|
||||||
import com.intellij.notification.Notification;
|
import com.intellij.notification.Notification;
|
||||||
import com.intellij.notification.NotificationType;
|
import com.intellij.notification.NotificationListener;
|
||||||
import com.intellij.notification.Notifications;
|
import com.intellij.openapi.Disposable;
|
||||||
import com.intellij.openapi.actionSystem.impl.SimpleDataContext;
|
|
||||||
import com.intellij.openapi.application.Application;
|
import com.intellij.openapi.application.Application;
|
||||||
import com.intellij.openapi.application.ApplicationManager;
|
import com.intellij.openapi.application.ApplicationManager;
|
||||||
import com.intellij.openapi.application.ex.ApplicationEx;
|
|
||||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
|
||||||
import com.intellij.openapi.command.CommandProcessor;
|
|
||||||
import com.intellij.openapi.components.ApplicationComponent;
|
|
||||||
import com.intellij.openapi.components.PersistentStateComponent;
|
import com.intellij.openapi.components.PersistentStateComponent;
|
||||||
|
import com.intellij.openapi.components.ServiceManager;
|
||||||
import com.intellij.openapi.components.State;
|
import com.intellij.openapi.components.State;
|
||||||
import com.intellij.openapi.components.Storage;
|
import com.intellij.openapi.components.Storage;
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.openapi.editor.Editor;
|
import com.intellij.openapi.extensions.PluginId;
|
||||||
import com.intellij.openapi.editor.EditorFactory;
|
import com.intellij.openapi.keymap.Keymap;
|
||||||
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
|
import com.intellij.openapi.keymap.ex.KeymapManagerEx;
|
||||||
import com.intellij.openapi.editor.actionSystem.TypedAction;
|
import com.intellij.openapi.keymap.impl.DefaultKeymap;
|
||||||
import com.intellij.openapi.editor.event.EditorFactoryAdapter;
|
import com.intellij.openapi.options.ShowSettingsUtil;
|
||||||
import com.intellij.openapi.editor.event.EditorFactoryEvent;
|
|
||||||
import com.intellij.openapi.editor.ex.EditorEx;
|
|
||||||
import com.intellij.openapi.fileEditor.FileEditorManagerListener;
|
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.project.ProjectManager;
|
import com.intellij.openapi.project.ProjectManager;
|
||||||
import com.intellij.openapi.project.ProjectManagerAdapter;
|
|
||||||
import com.intellij.openapi.ui.Messages;
|
import com.intellij.openapi.ui.Messages;
|
||||||
import com.intellij.openapi.util.SystemInfo;
|
import com.intellij.openapi.util.SystemInfo;
|
||||||
import com.intellij.openapi.wm.StatusBar;
|
import com.intellij.openapi.wm.StatusBar;
|
||||||
import com.intellij.openapi.wm.WindowManager;
|
import com.intellij.openapi.wm.WindowManager;
|
||||||
import com.maddyhome.idea.vim.command.CommandState;
|
import com.maddyhome.idea.vim.config.VimState;
|
||||||
|
import com.maddyhome.idea.vim.config.migration.ApplicationConfigurationMigrator;
|
||||||
import com.maddyhome.idea.vim.ex.CommandParser;
|
import com.maddyhome.idea.vim.ex.CommandParser;
|
||||||
|
import com.maddyhome.idea.vim.ex.vimscript.VimScriptParser;
|
||||||
|
import com.maddyhome.idea.vim.extension.VimExtensionRegistrar;
|
||||||
import com.maddyhome.idea.vim.group.*;
|
import com.maddyhome.idea.vim.group.*;
|
||||||
import com.maddyhome.idea.vim.helper.*;
|
import com.maddyhome.idea.vim.group.copy.PutGroup;
|
||||||
import com.maddyhome.idea.vim.key.RegisterActions;
|
import com.maddyhome.idea.vim.group.copy.YankGroup;
|
||||||
import com.maddyhome.idea.vim.option.Options;
|
import com.maddyhome.idea.vim.group.visual.VisualMotionGroup;
|
||||||
|
import com.maddyhome.idea.vim.helper.MacKeyRepeat;
|
||||||
|
import com.maddyhome.idea.vim.listener.VimListenerManager;
|
||||||
|
import com.maddyhome.idea.vim.option.OptionsManager;
|
||||||
|
import com.maddyhome.idea.vim.ui.ex.ExEntryPanel;
|
||||||
|
import com.maddyhome.idea.vim.ui.StatusBarIconFactory;
|
||||||
|
import com.maddyhome.idea.vim.ui.VimEmulationConfigurable;
|
||||||
|
import com.maddyhome.idea.vim.ui.VimRcFileState;
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
import org.jetbrains.annotations.Nls;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.event.HyperlinkEvent;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.maddyhome.idea.vim.group.EditorGroup.EDITOR_STORE_ELEMENT;
|
||||||
|
import static com.maddyhome.idea.vim.group.KeyGroup.SHORTCUT_CONFLICTS_ELEMENT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This plugin attempts to emulate the keybinding and general functionality of Vim and gVim. See the supplied
|
* This plugin attempts to emulate the key binding and general functionality of Vim and gVim. See the supplied
|
||||||
* documentation for a complete list of supported and unsupported Vim emulation. The code base contains some debugging
|
* documentation for a complete list of supported and unsupported Vim emulation. The code base contains some debugging
|
||||||
* output that can be enabled in necessary.
|
* output that can be enabled in necessary.
|
||||||
* <p/>
|
* <p/>
|
||||||
* This is an application level plugin meaning that all open projects will share a common instance of the plugin.
|
* This is an application level plugin meaning that all open projects will share a common instance of the plugin.
|
||||||
* Registers and marks are shared across open projects so you can copy and paste between files of different projects.
|
* Registers and marks are shared across open projects so you can copy and paste between files of different projects.
|
||||||
*
|
|
||||||
* @version 0.1
|
|
||||||
*/
|
*/
|
||||||
@State(
|
@State(name = "VimSettings", storages = {@Storage("$APP_CONFIG$/vim_settings.xml")})
|
||||||
name = "VimSettings",
|
public class VimPlugin implements PersistentStateComponent<Element>, Disposable {
|
||||||
storages = {
|
private static final String IDEAVIM_PLUGIN_ID = "IdeaVIM";
|
||||||
@Storage(
|
public static final int STATE_VERSION = 7;
|
||||||
id = "main",
|
|
||||||
file = "$APP_CONFIG$/vim_settings.xml"
|
|
||||||
)}
|
|
||||||
)
|
|
||||||
public class VimPlugin implements ApplicationComponent, PersistentStateComponent<Element>
|
|
||||||
{
|
|
||||||
|
|
||||||
private static final String IDEAVIM_COMPONENT_NAME = "VimPlugin";
|
private static long lastBeepTimeMillis;
|
||||||
public static final String IDEAVIM_NOTIFICATION_ID = "ideavim";
|
|
||||||
public static final String IDEAVIM_NOTIFICATION_TITLE = "IdeaVim";
|
|
||||||
public static final int STATE_VERSION = 2;
|
|
||||||
|
|
||||||
private static final boolean BLOCK_CURSOR_VIM_VALUE = true;
|
|
||||||
private static final boolean ANIMATED_SCROLLING_VIM_VALUE = false;
|
|
||||||
private static final boolean REFRAIN_FROM_SCROLLING_VIM_VALUE = true;
|
|
||||||
|
|
||||||
private VimTypedActionHandler vimHandler;
|
|
||||||
private RegisterActions actions;
|
|
||||||
private boolean isBlockCursor = false;
|
|
||||||
private boolean isAnimatedScrolling = false;
|
|
||||||
private boolean isRefrainFromScrolling = false;
|
|
||||||
private boolean error = false;
|
private boolean error = false;
|
||||||
|
private String message = null;
|
||||||
|
|
||||||
private int previousStateVersion = 0;
|
private int previousStateVersion = 0;
|
||||||
private String previousKeyMap = "";
|
private String previousKeyMap = "";
|
||||||
@@ -100,247 +94,186 @@ public class VimPlugin implements ApplicationComponent, PersistentStateComponent
|
|||||||
// It is enabled by default to avoid any special configuration after plugin installation
|
// It is enabled by default to avoid any special configuration after plugin installation
|
||||||
private boolean enabled = true;
|
private boolean enabled = true;
|
||||||
|
|
||||||
private static Logger LOG = Logger.getInstance(VimPlugin.class);
|
private static final Logger LOG = Logger.getInstance(VimPlugin.class);
|
||||||
|
|
||||||
private final Application myApp;
|
private final @NotNull VimState state = new VimState();
|
||||||
|
|
||||||
|
VimPlugin() {
|
||||||
/**
|
ApplicationConfigurationMigrator.getInstance().migrate();
|
||||||
* Creates the Vim Plugin
|
|
||||||
*/
|
|
||||||
public VimPlugin(final Application app) {
|
|
||||||
myApp = app;
|
|
||||||
LOG.debug("VimPlugin ctr");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
public void initialize() {
|
||||||
public static VimPlugin getInstance() {
|
|
||||||
return (VimPlugin)ApplicationManager.getApplication().getComponent(IDEAVIM_COMPONENT_NAME);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Supplies the name of the plugin
|
|
||||||
*
|
|
||||||
* @return The plugin name
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public String getComponentName() {
|
|
||||||
return IDEAVIM_COMPONENT_NAME;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPreviousKeyMap() {
|
|
||||||
return previousKeyMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPreviousKeyMap(final String keymap) {
|
|
||||||
previousKeyMap = keymap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the Vim Plugin. This plugs the vim key handler into the editor action manager.
|
|
||||||
*/
|
|
||||||
public void initComponent() {
|
|
||||||
LOG.debug("initComponent");
|
LOG.debug("initComponent");
|
||||||
|
|
||||||
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
if (enabled) {
|
||||||
public void run() {
|
Application application = ApplicationManager.getApplication();
|
||||||
updateState();
|
if (application.isUnitTestMode()) {
|
||||||
checkAndInstallKeymap();
|
application.invokeAndWait(this::turnOnPlugin);
|
||||||
}
|
}
|
||||||
});
|
else {
|
||||||
|
application.invokeLater(this::turnOnPlugin);
|
||||||
EditorActionManager manager = EditorActionManager.getInstance();
|
}
|
||||||
TypedAction action = manager.getTypedAction();
|
}
|
||||||
|
|
||||||
// Replace the default key handler with the Vim key handler
|
|
||||||
vimHandler = new VimTypedActionHandler(action.getHandler());
|
|
||||||
action.setupHandler(vimHandler);
|
|
||||||
|
|
||||||
// Add some listeners so we can handle special events
|
|
||||||
setupListeners();
|
|
||||||
|
|
||||||
getActions();
|
|
||||||
|
|
||||||
LOG.debug("done");
|
LOG.debug("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateState() {
|
@Override
|
||||||
if (isEnabled() && !ApplicationManager.getApplication().isUnitTestMode()) {
|
public void dispose() {
|
||||||
boolean requiresRestart = false;
|
|
||||||
if (previousStateVersion < 1 && SystemInfo.isMac && VimKeyMapUtil.isVimKeymapInstalled()) {
|
|
||||||
if (Messages.showYesNoDialog("Vim keymap generator has been updated to create keymaps more compatible " +
|
|
||||||
"with base keymaps.\n\nDo you want to reconfigure your Vim keymap?\n\n" +
|
|
||||||
"Warning: Any custom shortcuts will be lost!\n\n" +
|
|
||||||
"(You can do it later using Tools | Reconfigure Vim Keymap).",
|
|
||||||
IDEAVIM_NOTIFICATION_TITLE,
|
|
||||||
Messages.getQuestionIcon()) == Messages.YES) {
|
|
||||||
KeyHandler.executeAction("VimReconfigureKeymap", SimpleDataContext.getProjectContext(null));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (previousStateVersion < 2 && SystemInfo.isMac) {
|
|
||||||
final MacKeyRepeat keyRepeat = MacKeyRepeat.getInstance();
|
|
||||||
final Boolean enabled = keyRepeat.isEnabled();
|
|
||||||
if (enabled == null || !enabled) {
|
|
||||||
if (Messages.showYesNoDialog("Do you want to enable repeating keys in Mac OS X on press and hold " +
|
|
||||||
"(requires restart)?\n\n" +
|
|
||||||
"(You can do it manually by running 'defaults write -g " +
|
|
||||||
"ApplePressAndHoldEnabled 0' in the console).",
|
|
||||||
IDEAVIM_NOTIFICATION_TITLE,
|
|
||||||
Messages.getQuestionIcon()) == Messages.YES) {
|
|
||||||
keyRepeat.setEnabled(true);
|
|
||||||
requiresRestart = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (requiresRestart) {
|
|
||||||
final ApplicationEx app = ApplicationManagerEx.getApplicationEx();
|
|
||||||
app.restart();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void checkAndInstallKeymap() {
|
|
||||||
// Ensure that Vim keymap is installed and install if not.
|
|
||||||
// Moreover we can use installed keymap as indicator of the first time installed plugin
|
|
||||||
if (VimPlugin.isEnabled()) {
|
|
||||||
boolean vimKeyMapInstalled = VimKeyMapUtil.isVimKeymapInstalled();
|
|
||||||
// In case if keymap wasn't installed, we assume that this is the first launch after installation
|
|
||||||
if (!vimKeyMapInstalled) {
|
|
||||||
vimKeyMapInstalled = VimKeyMapUtil.installKeyBoardBindings();
|
|
||||||
if (!vimKeyMapInstalled) {
|
|
||||||
if (Messages.showYesNoDialog("It is crucial to use Vim keymap for IdeaVim plugin correct work, " +
|
|
||||||
"however it was not installed correctly.\nDo you want " +
|
|
||||||
ApplicationManagerEx.getApplicationEx().getName() +
|
|
||||||
" to disable Vim emulation?", IDEAVIM_NOTIFICATION_TITLE, Messages.getQuestionIcon()) == Messages.YES) {
|
|
||||||
VimPlugin.getInstance().turnOffPlugin();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// Enable proper keymap bindings
|
|
||||||
VimKeyMapUtil.switchKeymapBindings(true);
|
|
||||||
}
|
|
||||||
// In this case we should warn if user doesn't use vim keymap
|
|
||||||
else {
|
|
||||||
if (!VimKeyMapUtil.isVimKeymapUsed()) {
|
|
||||||
Notifications.Bus.notify(new Notification(IDEAVIM_NOTIFICATION_ID, IDEAVIM_NOTIFICATION_TITLE,
|
|
||||||
"Vim keymap is not active, IdeaVim plugin may work incorrectly",
|
|
||||||
NotificationType.WARNING));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This sets up some listeners so we can handle various events that occur
|
|
||||||
*/
|
|
||||||
private void setupListeners() {
|
|
||||||
DocumentManager.getInstance().addDocumentListener(new MarkGroup.MarkUpdater());
|
|
||||||
DocumentManager.getInstance().addDocumentListener(new SearchGroup.DocumentSearchListener());
|
|
||||||
DocumentManager.getInstance().init();
|
|
||||||
|
|
||||||
EditorFactory.getInstance().addEditorFactoryListener(new EditorFactoryAdapter() {
|
|
||||||
public void editorCreated(@NotNull EditorFactoryEvent event) {
|
|
||||||
final Editor editor = event.getEditor();
|
|
||||||
isBlockCursor = editor.getSettings().isBlockCursor();
|
|
||||||
isAnimatedScrolling = editor.getSettings().isAnimatedScrolling();
|
|
||||||
isRefrainFromScrolling = editor.getSettings().isRefrainFromScrolling();
|
|
||||||
EditorData.initializeEditor(editor);
|
|
||||||
DocumentManager.getInstance().addListeners(editor.getDocument());
|
|
||||||
|
|
||||||
if (VimPlugin.isEnabled()) {
|
|
||||||
// Turn on insert mode if editor doesn't have any file
|
|
||||||
if (!EditorData.isFileEditor(editor) && editor.getDocument().isWritable() &&
|
|
||||||
!CommandState.inInsertMode(editor)) {
|
|
||||||
KeyHandler.getInstance().handleKey(editor, KeyStroke.getKeyStroke('i'), new EditorDataContext(editor));
|
|
||||||
}
|
|
||||||
editor.getSettings().setBlockCursor(!CommandState.inInsertMode(editor));
|
|
||||||
editor.getSettings().setAnimatedScrolling(ANIMATED_SCROLLING_VIM_VALUE);
|
|
||||||
editor.getSettings().setRefrainFromScrolling(REFRAIN_FROM_SCROLLING_VIM_VALUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void editorReleased(@NotNull EditorFactoryEvent event) {
|
|
||||||
EditorData.uninitializeEditor(event.getEditor());
|
|
||||||
event.getEditor().getSettings().setAnimatedScrolling(isAnimatedScrolling);
|
|
||||||
event.getEditor().getSettings().setRefrainFromScrolling(isRefrainFromScrolling);
|
|
||||||
DocumentManager.getInstance().removeListeners(event.getEditor().getDocument());
|
|
||||||
}
|
|
||||||
}, myApp);
|
|
||||||
|
|
||||||
// Since the Vim plugin custom actions aren't available to the call to <code>initComponent()</code>
|
|
||||||
// we need to force the generation of the key map when the first project is opened.
|
|
||||||
ProjectManager.getInstance().addProjectManagerListener(new ProjectManagerAdapter() {
|
|
||||||
public void projectOpened(@NotNull final Project project) {
|
|
||||||
project.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new MotionGroup.MotionEditorChange());
|
|
||||||
project.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileGroup.SelectionCheck());
|
|
||||||
project.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new SearchGroup.EditorSelectionCheck());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void projectClosed(final Project project) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
CommandProcessor.getInstance().addCommandListener(DelegateCommandListener.getInstance());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This shuts down the Vim plugin. All we need to do is reinstall the original key handler
|
|
||||||
*/
|
|
||||||
public void disposeComponent() {
|
|
||||||
LOG.debug("disposeComponent");
|
LOG.debug("disposeComponent");
|
||||||
turnOffPlugin();
|
turnOffPlugin();
|
||||||
EditorActionManager manager = EditorActionManager.getInstance();
|
|
||||||
TypedAction action = manager.getTypedAction();
|
|
||||||
action.setupHandler(vimHandler.getOriginalTypedHandler());
|
|
||||||
LOG.debug("done");
|
LOG.debug("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadState(@NotNull final Element element) {
|
|
||||||
LOG.debug("Loading state");
|
|
||||||
|
|
||||||
// Restore whether the plugin is enabled or not
|
|
||||||
Element state = element.getChild("state");
|
|
||||||
if (state != null) {
|
|
||||||
try {
|
|
||||||
previousStateVersion = Integer.valueOf(state.getAttributeValue("version"));
|
|
||||||
}
|
|
||||||
catch (NumberFormatException ignored) {
|
|
||||||
}
|
|
||||||
enabled = Boolean.valueOf(state.getAttributeValue("enabled"));
|
|
||||||
previousKeyMap = state.getAttributeValue("keymap");
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandGroups.getInstance().readData(element);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Element getState() {
|
|
||||||
LOG.debug("Saving state");
|
|
||||||
|
|
||||||
final Element element = new Element("ideavim");
|
|
||||||
// Save whether the plugin is enabled or not
|
|
||||||
final Element state = new Element("state");
|
|
||||||
state.setAttribute("version", Integer.toString(STATE_VERSION));
|
|
||||||
state.setAttribute("enabled", Boolean.toString(enabled));
|
|
||||||
state.setAttribute("keymap", previousKeyMap);
|
|
||||||
element.addContent(state);
|
|
||||||
|
|
||||||
CommandGroups.getInstance().saveData(element);
|
|
||||||
return element;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether the user has enabled or disabled the plugin
|
* @return NotificationService as applicationService if project is null and projectService otherwise
|
||||||
*
|
|
||||||
* @return true if the Vim plugin is enabled, false if not
|
|
||||||
*/
|
*/
|
||||||
|
public static @NotNull NotificationService getNotifications(@Nullable Project project) {
|
||||||
|
if (project == null) {
|
||||||
|
return ServiceManager.getService(NotificationService.class);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return ServiceManager.getService(project, NotificationService.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull VimState getVimState() {
|
||||||
|
return getInstance().state;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static @NotNull MotionGroup getMotion() {
|
||||||
|
return ServiceManager.getService(MotionGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull ChangeGroup getChange() {
|
||||||
|
return ServiceManager.getService(ChangeGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull CommandGroup getCommand() {
|
||||||
|
return ServiceManager.getService(CommandGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull MarkGroup getMark() {
|
||||||
|
return ServiceManager.getService(MarkGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull RegisterGroup getRegister() {
|
||||||
|
return ServiceManager.getService(RegisterGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @Nullable RegisterGroup getRegisterIfCreated() {
|
||||||
|
return ApplicationManager.getApplication().getServiceIfCreated(RegisterGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull FileGroup getFile() {
|
||||||
|
return ServiceManager.getService(FileGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull SearchGroup getSearch() {
|
||||||
|
return ServiceManager.getService(SearchGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @Nullable SearchGroup getSearchIfCreated() {
|
||||||
|
return ApplicationManager.getApplication().getServiceIfCreated(SearchGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull ProcessGroup getProcess() {
|
||||||
|
return ServiceManager.getService(ProcessGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull MacroGroup getMacro() {
|
||||||
|
return ServiceManager.getService(MacroGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull DigraphGroup getDigraph() {
|
||||||
|
return ServiceManager.getService(DigraphGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull HistoryGroup getHistory() {
|
||||||
|
return ServiceManager.getService(HistoryGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull KeyGroup getKey() {
|
||||||
|
return ServiceManager.getService(KeyGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @Nullable KeyGroup getKeyIfCreated() {
|
||||||
|
return ApplicationManager.getApplication().getServiceIfCreated(KeyGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull WindowGroup getWindow() {
|
||||||
|
return ServiceManager.getService(WindowGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull EditorGroup getEditor() {
|
||||||
|
return ServiceManager.getService(EditorGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @Nullable EditorGroup getEditorIfCreated() {
|
||||||
|
return ApplicationManager.getApplication().getServiceIfCreated(EditorGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull VisualMotionGroup getVisualMotion() {
|
||||||
|
return ServiceManager.getService(VisualMotionGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull YankGroup getYank() {
|
||||||
|
return ServiceManager.getService(YankGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull PutGroup getPut() {
|
||||||
|
return ServiceManager.getService(PutGroup.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static @NotNull NotificationService getNotifications() {
|
||||||
|
return getNotifications(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean ideavimrcRegistered = false;
|
||||||
|
|
||||||
|
private void registerIdeavimrc() {
|
||||||
|
if (ideavimrcRegistered) return;
|
||||||
|
ideavimrcRegistered = true;
|
||||||
|
|
||||||
|
if (!ApplicationManager.getApplication().isUnitTestMode()) {
|
||||||
|
executeIdeaVimRc();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void executeIdeaVimRc() {
|
||||||
|
final File ideaVimRc = VimScriptParser.findIdeaVimRc();
|
||||||
|
if (ideaVimRc != null) {
|
||||||
|
LOG.info("Execute ideavimrc file: " + ideaVimRc.getAbsolutePath());
|
||||||
|
List<String> parsedLines = VimScriptParser.executeFile(ideaVimRc);
|
||||||
|
VimRcFileState.INSTANCE.saveFileState(ideaVimRc.getAbsolutePath(), parsedLines);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
LOG.info("ideavimrc file isn't found");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull PluginId getPluginId() {
|
||||||
|
return PluginId.getId(IDEAVIM_PLUGIN_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NotNull String getVersion() {
|
||||||
|
final IdeaPluginDescriptor plugin = PluginManagerCore.getPlugin(getPluginId());
|
||||||
|
if (!ApplicationManager.getApplication().isInternal()) {
|
||||||
|
return plugin != null ? plugin.getVersion() : "SNAPSHOT";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "INTERNAL" + (plugin != null ? " - " + plugin.getVersion() : "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isEnabled() {
|
public static boolean isEnabled() {
|
||||||
return getInstance().enabled;
|
return getInstance().enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setEnabled(final boolean enabled) {
|
public static void setEnabled(final boolean enabled) {
|
||||||
|
if (isEnabled() == enabled) return;
|
||||||
|
|
||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
getInstance().turnOffPlugin();
|
getInstance().turnOffPlugin();
|
||||||
}
|
}
|
||||||
@@ -351,18 +284,37 @@ public class VimPlugin implements ApplicationComponent, PersistentStateComponent
|
|||||||
getInstance().turnOnPlugin();
|
getInstance().turnOnPlugin();
|
||||||
}
|
}
|
||||||
|
|
||||||
VimKeyMapUtil.switchKeymapBindings(enabled);
|
StatusBarIconFactory.Companion.updateIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isError() {
|
||||||
|
return getInstance().error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMessage() {
|
||||||
|
return getInstance().message;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inidicate to the user that an error has occurred. Just beep.
|
* Indicate to the user that an error has occurred. Just beep.
|
||||||
*/
|
*/
|
||||||
public static void indicateError() {
|
public static void indicateError() {
|
||||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||||
getInstance().error = true;
|
getInstance().error = true;
|
||||||
}
|
}
|
||||||
else if (!Options.getInstance().isSet("visualbell")) {
|
else if (!OptionsManager.INSTANCE.getVisualbell().isSet()) {
|
||||||
Toolkit.getDefaultToolkit().beep();
|
// Vim only allows a beep once every half second - :help 'visualbell'
|
||||||
|
final long currentTimeMillis = System.currentTimeMillis();
|
||||||
|
if (currentTimeMillis - lastBeepTimeMillis > 500) {
|
||||||
|
Toolkit.getDefaultToolkit().beep();
|
||||||
|
lastBeepTimeMillis = currentTimeMillis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void clearError() {
|
||||||
|
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||||
|
getInstance().error = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,11 +322,14 @@ public class VimPlugin implements ApplicationComponent, PersistentStateComponent
|
|||||||
showMessage(msg);
|
showMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showMessage(@Nullable String msg) {
|
public static void showMessage(@Nls(capitalization = Nls.Capitalization.Sentence) @Nullable String msg) {
|
||||||
|
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||||
|
getInstance().message = msg;
|
||||||
|
}
|
||||||
ProjectManager pm = ProjectManager.getInstance();
|
ProjectManager pm = ProjectManager.getInstance();
|
||||||
Project[] projs = pm.getOpenProjects();
|
Project[] projects = pm.getOpenProjects();
|
||||||
for (Project proj : projs) {
|
for (Project project : projects) {
|
||||||
StatusBar bar = WindowManager.getInstance().getStatusBar(proj);
|
StatusBar bar = WindowManager.getInstance().getStatusBar(project);
|
||||||
if (bar != null) {
|
if (bar != null) {
|
||||||
if (msg == null || msg.length() == 0) {
|
if (msg == null || msg.length() == 0) {
|
||||||
bar.setInfo("");
|
bar.setInfo("");
|
||||||
@@ -386,65 +341,140 @@ public class VimPlugin implements ApplicationComponent, PersistentStateComponent
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void turnOnPlugin() {
|
public static @NotNull VimPlugin getInstance() {
|
||||||
|
return ServiceManager.getService(VimPlugin.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void turnOnPlugin() {
|
||||||
|
ApplicationManager.getApplication().invokeLater(this::updateState);
|
||||||
|
|
||||||
|
// Register vim actions in command mode
|
||||||
|
RegisterActions.registerActions();
|
||||||
|
|
||||||
|
// Register ex handlers
|
||||||
|
CommandParser.getInstance().registerHandlers();
|
||||||
|
|
||||||
|
// Register extensions
|
||||||
|
VimExtensionRegistrar.registerExtensions();
|
||||||
|
|
||||||
|
// Execute ~/.ideavimrc
|
||||||
|
registerIdeavimrc();
|
||||||
|
|
||||||
|
// Turing on should be performed after all commands registration
|
||||||
|
getSearch().turnOn();
|
||||||
|
VimListenerManager.INSTANCE.turnOn();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void turnOffPlugin() {
|
||||||
KeyHandler.getInstance().fullReset(null);
|
KeyHandler.getInstance().fullReset(null);
|
||||||
setCursors(BLOCK_CURSOR_VIM_VALUE);
|
|
||||||
setAnimatedScrolling(ANIMATED_SCROLLING_VIM_VALUE);
|
|
||||||
setRefrainFromScrolling(REFRAIN_FROM_SCROLLING_VIM_VALUE);
|
|
||||||
|
|
||||||
CommandGroups.getInstance().getMotion().turnOn();
|
SearchGroup searchGroup = getSearchIfCreated();
|
||||||
|
if (searchGroup != null) {
|
||||||
|
searchGroup.turnOff();
|
||||||
|
}
|
||||||
|
VimListenerManager.INSTANCE.turnOff();
|
||||||
|
ExEntryPanel.fullReset();
|
||||||
|
|
||||||
|
// Unregister vim actions in command mode
|
||||||
|
RegisterActions.unregisterActions();
|
||||||
|
|
||||||
|
// Unregister ex handlers
|
||||||
|
CommandParser.getInstance().unregisterHandlers();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void turnOffPlugin() {
|
private boolean stateUpdated = false;
|
||||||
KeyHandler.getInstance().fullReset(null);
|
|
||||||
setCursors(isBlockCursor);
|
|
||||||
setAnimatedScrolling(isAnimatedScrolling);
|
|
||||||
setRefrainFromScrolling(isRefrainFromScrolling);
|
|
||||||
|
|
||||||
CommandGroups.getInstance().getMotion().turnOff();
|
private void updateState() {
|
||||||
}
|
if (stateUpdated) return;
|
||||||
|
if (isEnabled() && !ApplicationManager.getApplication().isUnitTestMode()) {
|
||||||
private void setCursors(boolean isBlock) {
|
stateUpdated = true;
|
||||||
Editor[] editors = EditorFactory.getInstance().getAllEditors();
|
if (SystemInfo.isMac) {
|
||||||
for (Editor editor : editors) {
|
final MacKeyRepeat keyRepeat = MacKeyRepeat.getInstance();
|
||||||
// Vim plugin should be turned on in insert mode
|
final Boolean enabled = keyRepeat.isEnabled();
|
||||||
((EditorEx)editor).setInsertMode(true);
|
final Boolean isKeyRepeat = getEditor().isKeyRepeat();
|
||||||
editor.getSettings().setBlockCursor(isBlock);
|
if ((enabled == null || !enabled) && (isKeyRepeat == null || isKeyRepeat)) {
|
||||||
|
if (VimPlugin.getNotifications().enableRepeatingMode() == Messages.YES) {
|
||||||
|
getEditor().setKeyRepeat(true);
|
||||||
|
keyRepeat.setEnabled(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
getEditor().setKeyRepeat(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (previousStateVersion > 0 && previousStateVersion < 3) {
|
||||||
|
final KeymapManagerEx manager = KeymapManagerEx.getInstanceEx();
|
||||||
|
Keymap keymap = null;
|
||||||
|
if (previousKeyMap != null) {
|
||||||
|
keymap = manager.getKeymap(previousKeyMap);
|
||||||
|
}
|
||||||
|
if (keymap == null) {
|
||||||
|
keymap = manager.getKeymap(DefaultKeymap.getInstance().getDefaultKeymapName());
|
||||||
|
}
|
||||||
|
assert keymap != null : "Default keymap not found";
|
||||||
|
VimPlugin.getNotifications().specialKeymap(keymap, new NotificationListener.Adapter() {
|
||||||
|
@Override
|
||||||
|
protected void hyperlinkActivated(@NotNull Notification notification, @NotNull HyperlinkEvent e) {
|
||||||
|
ShowSettingsUtil.getInstance().editConfigurable((Project)null, new VimEmulationConfigurable());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
manager.setActiveKeymap(keymap);
|
||||||
|
}
|
||||||
|
if (previousStateVersion > 0 && previousStateVersion < 4) {
|
||||||
|
VimPlugin.getNotifications().noVimrcAsDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setAnimatedScrolling(boolean isOn) {
|
@Override
|
||||||
Editor[] editors = EditorFactory.getInstance().getAllEditors();
|
public void loadState(final @NotNull Element element) {
|
||||||
for (Editor editor : editors) {
|
LOG.debug("Loading state");
|
||||||
editor.getSettings().setAnimatedScrolling(isOn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setRefrainFromScrolling(boolean isOn) {
|
// Restore whether the plugin is enabled or not
|
||||||
Editor[] editors = EditorFactory.getInstance().getAllEditors();
|
Element state = element.getChild("state");
|
||||||
for (Editor editor : editors) {
|
if (state != null) {
|
||||||
editor.getSettings().setRefrainFromScrolling(isOn);
|
try {
|
||||||
}
|
previousStateVersion = Integer.parseInt(state.getAttributeValue("version"));
|
||||||
}
|
}
|
||||||
|
catch (NumberFormatException ignored) {
|
||||||
private RegisterActions getActions() {
|
}
|
||||||
if (actions == null) {
|
enabled = Boolean.parseBoolean(state.getAttributeValue("enabled"));
|
||||||
// Register vim actions in command mode
|
previousKeyMap = state.getAttributeValue("keymap");
|
||||||
actions = RegisterActions.getInstance();
|
|
||||||
// Register ex handlers
|
|
||||||
CommandParser.getInstance().registerHandlers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return actions;
|
legacyStateLoading(element);
|
||||||
|
this.state.readData(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isError() {
|
@Override
|
||||||
return error;
|
public Element getState() {
|
||||||
|
LOG.debug("Saving state");
|
||||||
|
|
||||||
|
final Element element = new Element("ideavim");
|
||||||
|
// Save whether the plugin is enabled or not
|
||||||
|
final Element state = new Element("state");
|
||||||
|
state.setAttribute("version", Integer.toString(STATE_VERSION));
|
||||||
|
state.setAttribute("enabled", Boolean.toString(enabled));
|
||||||
|
element.addContent(state);
|
||||||
|
|
||||||
|
this.state.saveData(element);
|
||||||
|
|
||||||
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clearError() {
|
private void legacyStateLoading(@NotNull Element element) {
|
||||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
if (previousStateVersion > 0 && previousStateVersion < 5) {
|
||||||
getInstance().error = false;
|
// Migrate settings from 4 to 5 version
|
||||||
|
getMark().readData(element);
|
||||||
|
getRegister().readData(element);
|
||||||
|
getSearch().readData(element);
|
||||||
|
getHistory().readData(element);
|
||||||
|
}
|
||||||
|
if (element.getChild(SHORTCUT_CONFLICTS_ELEMENT) != null) {
|
||||||
|
getKey().readData(element);
|
||||||
|
}
|
||||||
|
if (element.getChild(EDITOR_STORE_ELEMENT) != null) {
|
||||||
|
getEditor().readData(element);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
|
||||||
import com.intellij.openapi.actionSystem.ToggleAction;
|
|
||||||
import com.intellij.openapi.project.DumbAware;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class is used to handle the Vim Plugin enabled/disabled toggle. This is most likely used as a menu option
|
|
||||||
* but could also be used as a toolbar item.
|
|
||||||
*/
|
|
||||||
public class VimPluginToggleAction extends ToggleAction implements DumbAware {
|
|
||||||
/**
|
|
||||||
* Indicates if the toggle is on or off
|
|
||||||
*
|
|
||||||
* @param event The event that triggered the action
|
|
||||||
* @return true if the toggle is on, false if off
|
|
||||||
*/
|
|
||||||
public boolean isSelected(AnActionEvent event) {
|
|
||||||
return VimPlugin.isEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Specifies whether the toggle should be on or off
|
|
||||||
*
|
|
||||||
* @param event The event that triggered the action
|
|
||||||
* @param b The new state - true is on, false is off
|
|
||||||
*/
|
|
||||||
public void setSelected(AnActionEvent event, boolean b) {
|
|
||||||
VimPlugin.setEnabled(b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
41
src/com/maddyhome/idea/vim/VimProjectService.kt
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.maddyhome.idea.vim
|
||||||
|
|
||||||
|
import com.intellij.openapi.Disposable
|
||||||
|
import com.intellij.openapi.components.Service
|
||||||
|
import com.intellij.openapi.components.ServiceManager
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
|
||||||
|
@Service
|
||||||
|
class VimProjectService(val project: Project) : Disposable {
|
||||||
|
override fun dispose() {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@JvmStatic
|
||||||
|
fun getInstance(project: Project): VimProjectService {
|
||||||
|
return ServiceManager.getService(project, VimProjectService::class.java)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val Project.vimDisposable
|
||||||
|
get() = VimProjectService.getInstance(this)
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
import com.intellij.openapi.actionSystem.AnAction;
|
|
||||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
|
||||||
import com.intellij.openapi.project.DumbAware;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This action allows to reconfigure base parent keymap for the Vim keymap
|
|
||||||
* @author oleg
|
|
||||||
*/
|
|
||||||
public class VimReconfigureKeymapAction extends AnAction implements DumbAware {
|
|
||||||
@Override
|
|
||||||
public void update(@NotNull final AnActionEvent e) {
|
|
||||||
e.getPresentation().setEnabled(VimPlugin.isEnabled());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(@NotNull final AnActionEvent e) {
|
|
||||||
VimKeyMapUtil.installKeyBoardBindings();
|
|
||||||
VimKeyMapUtil.switchKeymapBindings(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IdeaVim - A Vim emulator plugin for IntelliJ Idea
|
|
||||||
* Copyright (C) 2003-2005 Rick Maddy
|
|
||||||
*
|
|
||||||
* 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, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
public class VimSettings {
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
|
||||||
this.enabled = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashSet getChoices() {
|
|
||||||
return choices;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChoices(HashSet choices) {
|
|
||||||
this.choices = choices;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean equals(@Nullable Object o) {
|
|
||||||
if (this == o) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (o == null || getClass() != o.getClass()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
final VimSettings that = (VimSettings)o;
|
|
||||||
|
|
||||||
if (enabled != that.enabled) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return choices.equals(that.choices);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int hashCode() {
|
|
||||||
int result;
|
|
||||||
result = (enabled ? 1 : 0);
|
|
||||||
result = 29 * result + choices.hashCode();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public String toString() {
|
|
||||||
final StringBuffer sb = new StringBuffer();
|
|
||||||
sb.append("VimSettings");
|
|
||||||
sb.append("{enabled=").append(enabled);
|
|
||||||
sb.append(", choices=").append(choices);
|
|
||||||
sb.append('}');
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean enabled;
|
|
||||||
private HashSet choices = new HashSet();
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IdeaVim - A Vim emulator plugin for IntelliJ Idea
|
|
||||||
* Copyright (C) 2003-2005 Rick Maddy
|
|
||||||
*
|
|
||||||
* 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, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import com.intellij.codeInsight.lookup.LookupEx;
|
|
||||||
import com.intellij.codeInsight.lookup.LookupManager;
|
|
||||||
import com.intellij.openapi.actionSystem.DataContext;
|
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
|
||||||
import com.intellij.openapi.editor.Editor;
|
|
||||||
import com.intellij.openapi.editor.actionSystem.TypedActionHandler;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This handler accepts all regular keystrokes and passes them on to the Vim Key handler
|
|
||||||
*/
|
|
||||||
public class VimTypedActionHandler implements TypedActionHandler {
|
|
||||||
/**
|
|
||||||
* Creates an instance of the key handler
|
|
||||||
*
|
|
||||||
* @param origHandler The original key handler
|
|
||||||
*/
|
|
||||||
public VimTypedActionHandler(TypedActionHandler origHandler) {
|
|
||||||
this.origHandler = origHandler;
|
|
||||||
handler = KeyHandler.getInstance();
|
|
||||||
handler.setOriginalHandler(origHandler);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gives the original key handler
|
|
||||||
*
|
|
||||||
* @return The original key handler
|
|
||||||
*/
|
|
||||||
public TypedActionHandler getOriginalTypedHandler() {
|
|
||||||
return origHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* All characters typed into an editor will get sent to this handler. Only letters, numbers, and punctuation
|
|
||||||
* are sent here. Keys like Tab, Enter, Home, Backspace, etc. and all Control-Letter etc. argType keys are not
|
|
||||||
* sent by Idea to this handler.
|
|
||||||
*
|
|
||||||
* @param editor The editor the character was typed into
|
|
||||||
* @param charTyped The character that was typed
|
|
||||||
* @param context The data context
|
|
||||||
*/
|
|
||||||
public void execute(@NotNull final Editor editor, final char charTyped, @NotNull final DataContext context) {
|
|
||||||
// If the plugin is disabled we simply resend the character to the original handler
|
|
||||||
if (!VimPlugin.isEnabled()) {
|
|
||||||
origHandler.execute(editor, charTyped, context);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// In case if keystrokes go to lookup, we use original handler
|
|
||||||
final LookupEx lookup = LookupManager.getActiveLookup(editor);
|
|
||||||
if (lookup != null && lookup.isFocused()) {
|
|
||||||
origHandler.execute(editor, charTyped, context);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
handler.handleKey(editor, KeyStroke.getKeyStroke(charTyped), context);
|
|
||||||
}
|
|
||||||
catch (Throwable e) {
|
|
||||||
logger.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private TypedActionHandler origHandler;
|
|
||||||
private KeyHandler handler;
|
|
||||||
|
|
||||||
private static Logger logger = Logger.getInstance(VimTypedActionHandler.class.getName());
|
|
||||||
}
|
|
||||||
85
src/com/maddyhome/idea/vim/VimTypedActionHandler.kt
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
|
||||||
|
* Copyright (C) 2003-2020 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/>.
|
||||||
|
*/
|
||||||
|
package com.maddyhome.idea.vim
|
||||||
|
|
||||||
|
import com.intellij.openapi.actionSystem.DataContext
|
||||||
|
import com.intellij.openapi.diagnostic.logger
|
||||||
|
import com.intellij.openapi.editor.Editor
|
||||||
|
import com.intellij.openapi.editor.actionSystem.ActionPlan
|
||||||
|
import com.intellij.openapi.editor.actionSystem.TypedActionHandler
|
||||||
|
import com.intellij.openapi.editor.actionSystem.TypedActionHandlerEx
|
||||||
|
import com.maddyhome.idea.vim.helper.EditorDataContext
|
||||||
|
import com.maddyhome.idea.vim.helper.isIdeaVimDisabledHere
|
||||||
|
import java.awt.event.KeyAdapter
|
||||||
|
import java.awt.event.KeyEvent
|
||||||
|
import javax.swing.KeyStroke
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accepts all regular keystrokes and passes them on to the Vim key handler.
|
||||||
|
*
|
||||||
|
* IDE shortcut keys used by Vim commands are handled by [com.maddyhome.idea.vim.action.VimShortcutKeyAction].
|
||||||
|
*/
|
||||||
|
class VimTypedActionHandler(origHandler: TypedActionHandler?) : TypedActionHandlerEx {
|
||||||
|
private val handler = KeyHandler.getInstance()
|
||||||
|
|
||||||
|
init {
|
||||||
|
handler.originalHandler = origHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun beforeExecute(editor: Editor, charTyped: Char, context: DataContext, plan: ActionPlan) {
|
||||||
|
if (editor.isIdeaVimDisabledHere) {
|
||||||
|
(handler.originalHandler as? TypedActionHandlerEx)?.beforeExecute(editor, charTyped, context, plan)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val modifiers = if (charTyped == ' ' && VimKeyListener.isSpaceShift) KeyEvent.SHIFT_DOWN_MASK else 0
|
||||||
|
val keyStroke = KeyStroke.getKeyStroke(charTyped, modifiers)
|
||||||
|
handler.beforeHandleKey(editor, keyStroke, context, plan)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun execute(editor: Editor, charTyped: Char, context: DataContext) {
|
||||||
|
if (editor.isIdeaVimDisabledHere) {
|
||||||
|
handler.originalHandler.execute(editor, charTyped, context)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
val modifiers = if (charTyped == ' ' && VimKeyListener.isSpaceShift) KeyEvent.SHIFT_DOWN_MASK else 0
|
||||||
|
val keyStroke = KeyStroke.getKeyStroke(charTyped, modifiers)
|
||||||
|
handler.handleKey(editor, keyStroke, EditorDataContext(editor, context))
|
||||||
|
} catch (e: Throwable) {
|
||||||
|
logger.error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val logger = logger<VimTypedActionHandler>()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A nasty workaround to handle `<S-Space>` events. Probably all the key events should go trough this listener.
|
||||||
|
*/
|
||||||
|
object VimKeyListener : KeyAdapter() {
|
||||||
|
|
||||||
|
var isSpaceShift = false
|
||||||
|
|
||||||
|
override fun keyPressed(e: KeyEvent) {
|
||||||
|
isSpaceShift = e.modifiersEx and KeyEvent.SHIFT_DOWN_MASK != 0 && e.keyChar == ' '
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim.action;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* IdeaVim - A Vim emulator plugin for IntelliJ Idea
|
|
||||||
* Copyright (C) 2003-2005 Rick Maddy
|
|
||||||
*
|
|
||||||
* 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, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import com.intellij.openapi.actionSystem.AnAction;
|
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
public abstract class AbstractDelegateAction extends AnAction implements DelegateAction {
|
|
||||||
protected AbstractDelegateAction() {
|
|
||||||
}
|
|
||||||
|
|
||||||
protected AbstractDelegateAction(@NotNull AnAction origAction) {
|
|
||||||
setOrigAction(origAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOrigAction(@NotNull AnAction origAction) {
|
|
||||||
if (logger.isDebugEnabled()) {
|
|
||||||
logger.debug("origAction=" + origAction);
|
|
||||||
}
|
|
||||||
this.origAction = origAction;
|
|
||||||
copyFrom(origAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public AnAction getOrigAction() {
|
|
||||||
return origAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
private AnAction origAction;
|
|
||||||
|
|
||||||
private static Logger logger = Logger.getInstance(AbstractDelegateAction.class.getName());
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
package com.maddyhome.idea.vim.action;
|
|
||||||
/*
|
|
||||||
* IdeaVim - A Vim emulator plugin for IntelliJ Idea
|
|
||||||
* Copyright (C) 2003-2005 Rick Maddy
|
|
||||||
*
|
|
||||||
* 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, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import com.intellij.openapi.actionSystem.AnAction;
|
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
|
||||||
import com.intellij.openapi.editor.actionSystem.EditorAction;
|
|
||||||
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
public abstract class AbstractDelegateEditorAction extends EditorAction implements DelegateAction {
|
|
||||||
protected AbstractDelegateEditorAction(EditorActionHandler handler) {
|
|
||||||
super(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected AbstractDelegateEditorAction(EditorActionHandler handler, @NotNull EditorAction origAction) {
|
|
||||||
this(handler);
|
|
||||||
setOrigAction(origAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOrigAction(@NotNull AnAction origAction) {
|
|
||||||
if (logger.isDebugEnabled()) {
|
|
||||||
logger.debug("origAction=" + origAction);
|
|
||||||
}
|
|
||||||
this.origAction = origAction;
|
|
||||||
copyFrom(origAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
public AnAction getOrigAction() {
|
|
||||||
return origAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
private AnAction origAction;
|
|
||||||
|
|
||||||
private static Logger logger = Logger.getInstance(AbstractDelegateEditorAction.class.getName());
|
|
||||||
}
|
|
||||||