mirror of
https://github.com/vim-airline/vim-airline.git
synced 2026-09-06 23:06:59 +08:00
Compare commits
778
Commits
v0.10
...
7a552f415c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a552f415c | ||
|
|
25635ab504 | ||
|
|
6c704f4b78 | ||
|
|
3ddcab16c2 | ||
|
|
81eca99486 | ||
|
|
f706e7c486 | ||
|
|
d7edaf8fd0 | ||
|
|
3cb60641e7 | ||
|
|
d25c049e61 | ||
|
|
02894b6ef4 | ||
|
|
16c1638f93 | ||
|
|
6cc2c5c9e9 | ||
|
|
c3d1d13b72 | ||
|
|
ff0f9a45a5 | ||
|
|
d9f42cb467 | ||
|
|
20a49bd494 | ||
|
|
ff7352e4bf | ||
|
|
3b9e149e19 | ||
|
|
ec74913b94 | ||
|
|
3854429d99 | ||
|
|
0adefd0c42 | ||
|
|
4757756ae0 | ||
|
|
f1ba5a03db | ||
|
|
e6bb8427dc | ||
|
|
65e77b970d | ||
|
|
cead8efb48 | ||
|
|
423fe9e2ac | ||
|
|
3776947590 | ||
|
|
5891a3f7be | ||
|
|
4eea2b7e3c | ||
|
|
515d4cbbec | ||
|
|
a532fed72a | ||
|
|
038e3a6ca5 | ||
|
|
1828172717 | ||
|
|
18b85395d3 | ||
|
|
c7460aa883 | ||
|
|
8fd91eaca9 | ||
|
|
31e01612f3 | ||
|
|
dc1b607f56 | ||
|
|
08cfcf9408 | ||
|
|
50a936608c | ||
|
|
9252c11d37 | ||
|
|
e4a57d0be4 | ||
|
|
1d9ae3f972 | ||
|
|
9eb4aa47a3 | ||
|
|
f46792ebcb | ||
|
|
04f95183e2 | ||
|
|
82aeea1276 | ||
|
|
1ecbc76682 | ||
|
|
1028c6ea12 | ||
|
|
4f5b641710 | ||
|
|
9007d19ab7 | ||
|
|
029797db1c | ||
|
|
0913c0a3b6 | ||
|
|
e9c09a2e66 | ||
|
|
785dbbe504 | ||
|
|
46f0a12bae | ||
|
|
9e2d021fc6 | ||
|
|
4e552414d4 | ||
|
|
6a4c82c950 | ||
|
|
46e517e8c2 | ||
|
|
994cfd80eb | ||
|
|
1cdb8824a0 | ||
|
|
13f3478b61 | ||
|
|
5f5e00faad | ||
|
|
2ae1475d0d | ||
|
|
62847a8cc9 | ||
|
|
25d53a80f4 | ||
|
|
3c9c2ba5d4 | ||
|
|
2654f838ae | ||
|
|
f65f27b9eb | ||
|
|
1e491727b2 | ||
|
|
a84ae5e069 | ||
|
|
29ef9e1f64 | ||
|
|
b86e5e09b2 | ||
|
|
d734be8cd3 | ||
|
|
364ffba120 | ||
|
|
009ba4e9d0 | ||
|
|
5c682e7bd3 | ||
|
|
d56f199405 | ||
|
|
92d3e90110 | ||
|
|
0ed7b8bb2e | ||
|
|
84823e5e7d | ||
|
|
8e989201c8 | ||
|
|
3fe71a6ce6 | ||
|
|
46dd872237 | ||
|
|
838c16a174 | ||
|
|
78abec3b83 | ||
|
|
dba64a910d | ||
|
|
a71f9a6417 | ||
|
|
e0056ae5b0 | ||
|
|
2cea8346cf | ||
|
|
90c6746311 | ||
|
|
f5a6597496 | ||
|
|
d1f2c13e4f | ||
|
|
9d20473e91 | ||
|
|
61042e3502 | ||
|
|
66a6e03a34 | ||
|
|
aee282c964 | ||
|
|
9c7790b030 | ||
|
|
b9318d7ac0 | ||
|
|
8e477c192b | ||
|
|
e581972997 | ||
|
|
4933ee0977 | ||
|
|
61dc750149 | ||
|
|
ebb89a0846 | ||
|
|
4a290d16fd | ||
|
|
39e49cbbe8 | ||
|
|
83d853adc7 | ||
|
|
fd56e87d00 | ||
|
|
b5f2eb418a | ||
|
|
e4f586b76b | ||
|
|
6105d0d74e | ||
|
|
91b67e3ca2 | ||
|
|
9bc66119a4 | ||
|
|
219c47ab9f | ||
|
|
1080056bca | ||
|
|
ee80fd85cd | ||
|
|
5b5d940f87 | ||
|
|
8cd5dd1f34 | ||
|
|
1a7d546448 | ||
|
|
9fad2c3fc4 | ||
|
|
8681d4d49e | ||
|
|
97a9aa4bdb | ||
|
|
ba50f598ee | ||
|
|
5d7e656081 | ||
|
|
c465570143 | ||
|
|
396116b059 | ||
|
|
13628d698d | ||
|
|
d421c35f94 | ||
|
|
0241bdb804 | ||
|
|
ce0e8d7e82 | ||
|
|
be5bda1f1d | ||
|
|
04bf4eabca | ||
|
|
904979339c | ||
|
|
98027a4680 | ||
|
|
35af3bf37f | ||
|
|
dc65eea5d9 | ||
|
|
927e142e94 | ||
|
|
a306a7abfd | ||
|
|
1b245800b5 | ||
|
|
0f237d8b6b | ||
|
|
1d486430cc | ||
|
|
e643f9fa7d | ||
|
|
2706bdc949 | ||
|
|
e2498d72dc | ||
|
|
24f2878080 | ||
|
|
031e6ee4b2 | ||
|
|
21cdbea7e6 | ||
|
|
d1f6514cef | ||
|
|
20d77c3220 | ||
|
|
64908db62a | ||
|
|
9a3568b815 | ||
|
|
bf5d785932 | ||
|
|
8e36c0a8ed | ||
|
|
de73a21903 | ||
|
|
841a355196 | ||
|
|
65a4d4dd43 | ||
|
|
8df0f3db4b | ||
|
|
2ed11e9536 | ||
|
|
f678b4c53d | ||
|
|
6716572b30 | ||
|
|
4b96f58902 | ||
|
|
ec761c2adf | ||
|
|
5841039679 | ||
|
|
646dd0a1c2 | ||
|
|
6e5439126f | ||
|
|
47bf6b1716 | ||
|
|
d134ae8c2f | ||
|
|
70904d7070 | ||
|
|
e542f5e9d0 | ||
|
|
69726073ca | ||
|
|
17f7dff748 | ||
|
|
f0ee8f193e | ||
|
|
0dd6f5e711 | ||
|
|
ddaf69804a | ||
|
|
86a8ac0f96 | ||
|
|
6800c9ea7f | ||
|
|
2b260aabfe | ||
|
|
c9820b0378 | ||
|
|
26f922753a | ||
|
|
0a7e1bc475 | ||
|
|
2e29ab9656 | ||
|
|
78cb6e6621 | ||
|
|
0de4c9df21 | ||
|
|
c39ec8ef35 | ||
|
|
2259e5c93e | ||
|
|
e519b53cab | ||
|
|
cc0d39b528 | ||
|
|
969c13c716 | ||
|
|
0cfd829c92 | ||
|
|
0f3feca572 | ||
|
|
b861f9d248 | ||
|
|
ec4bbabe4a | ||
|
|
4807a211cd | ||
|
|
84a04bbd5b | ||
|
|
a94d8034c3 | ||
|
|
9b113a02f5 | ||
|
|
49cdcb7b3e | ||
|
|
82b1b2e876 | ||
|
|
fdda58861b | ||
|
|
a8b3c254d0 | ||
|
|
3882146c41 | ||
|
|
b6f6cc9312 | ||
|
|
98aea41dc2 | ||
|
|
05bd105cab | ||
|
|
73025ea504 | ||
|
|
affe12b7e7 | ||
|
|
4a64fbfc4b | ||
|
|
ef232cfee1 | ||
|
|
03ec880101 | ||
|
|
51c79f61f4 | ||
|
|
1f94ec1556 | ||
|
|
ab4962b838 | ||
|
|
4c0c60bbf2 | ||
|
|
ecac148e19 | ||
|
|
e7eea7c6e8 | ||
|
|
a2f298ba8f | ||
|
|
7e295c859f | ||
|
|
19360bac63 | ||
|
|
7181950501 | ||
|
|
e608a0c016 | ||
|
|
725e881ac9 | ||
|
|
c0c6b0e216 | ||
|
|
390b243cf3 | ||
|
|
23e20bfada | ||
|
|
db78454a03 | ||
|
|
f7cbf8c429 | ||
|
|
76e42284e9 | ||
|
|
76c24d2126 | ||
|
|
2d650d2e83 | ||
|
|
7a87615cbe | ||
|
|
2e9df43962 | ||
|
|
06134df810 | ||
|
|
9e62ad962a | ||
|
|
8929bc72a1 | ||
|
|
38a90d8801 | ||
|
|
30f8ada1d6 | ||
|
|
4968c6bb18 | ||
|
|
c9eaf4c5d2 | ||
|
|
9b2c1e9915 | ||
|
|
2f6471a9e1 | ||
|
|
ef5a0b53ef | ||
|
|
0a87d08dbd | ||
|
|
07ab201a27 | ||
|
|
70b06be4b0 | ||
|
|
bc5945de65 | ||
|
|
ed60e1d369 | ||
|
|
2e421d3cd6 | ||
|
|
cba392dd7a | ||
|
|
75383ef2e7 | ||
|
|
3d7dfa8ef6 | ||
|
|
7d6adf9cc5 | ||
|
|
09dbd09ed3 | ||
|
|
a262ec6ce4 | ||
|
|
639a0038cf | ||
|
|
df956aa08b | ||
|
|
0a7c68afb2 | ||
|
|
fc639c0cf8 | ||
|
|
32d28421fe | ||
|
|
cb1bc19064 | ||
|
|
f107396118 | ||
|
|
c01977d027 | ||
|
|
82000c7cfc | ||
|
|
ecba959f28 | ||
|
|
a6dd1c3887 | ||
|
|
6def2f0a82 | ||
|
|
b9905f2445 | ||
|
|
50dfca52ed | ||
|
|
bffa7a4d23 | ||
|
|
c7a633ce8f | ||
|
|
74f1f0d990 | ||
|
|
0ca9576331 | ||
|
|
36f14c478a | ||
|
|
fdfc11f53a | ||
|
|
1651762e10 | ||
|
|
30bcbb07c3 | ||
|
|
c32215e94b | ||
|
|
0eb2ed4488 | ||
|
|
da6b076ee4 | ||
|
|
4d284a677c | ||
|
|
8a60582527 | ||
|
|
8a80369227 | ||
|
|
14c79dd2fe | ||
|
|
dad2c03cf5 | ||
|
|
0c8164b1b3 | ||
|
|
5601c0928e | ||
|
|
60083f35a8 | ||
|
|
17bf22e6fb | ||
|
|
505a7d75ca | ||
|
|
59b4826806 | ||
|
|
f39208f1a0 | ||
|
|
c0160d93a8 | ||
|
|
c074620bfd | ||
|
|
4858046e94 | ||
|
|
6d6afc527e | ||
|
|
9a3a11f966 | ||
|
|
2cea83eb88 | ||
|
|
9ce6f96f60 | ||
|
|
06117a61e1 | ||
|
|
79eac1558a | ||
|
|
157af8ad8b | ||
|
|
cbf0a8e69a | ||
|
|
a168ca7a28 | ||
|
|
a48f67657f | ||
|
|
332fff9206 | ||
|
|
c378a0aeb7 | ||
|
|
91a8ada0f9 | ||
|
|
beb20cb49f | ||
|
|
536667191d | ||
|
|
5eae08609e | ||
|
|
731bdb11d2 | ||
|
|
df096e16ae | ||
|
|
7091b8a6ff | ||
|
|
9267cef0f8 | ||
|
|
bb760710cc | ||
|
|
f6f8666533 | ||
|
|
bd5ae9c584 | ||
|
|
5f2421fa39 | ||
|
|
3f4b811510 | ||
|
|
1ed922265a | ||
|
|
83804f3c6d | ||
|
|
d64e5f8dd7 | ||
|
|
dcebc6d2aa | ||
|
|
193460137a | ||
|
|
44b7b72938 | ||
|
|
c8c0e7d9ff | ||
|
|
38c9f9ca3d | ||
|
|
42b31b966b | ||
|
|
8608270bd3 | ||
|
|
85c64a668d | ||
|
|
34968bf65c | ||
|
|
19ab70ee87 | ||
|
|
83bd08a97a | ||
|
|
14abb40287 | ||
|
|
4e03ac85f9 | ||
|
|
9c0a85de2f | ||
|
|
659693c250 | ||
|
|
2762f7e6e5 | ||
|
|
06747d11be | ||
|
|
7087c475be | ||
|
|
2ad2eeb9ca | ||
|
|
0a5753813c | ||
|
|
aa773f5cdf | ||
|
|
f117de553b | ||
|
|
958ffe059a | ||
|
|
9614105d09 | ||
|
|
3fc5ad231c | ||
|
|
3740312de0 | ||
|
|
d40e5f9a1d | ||
|
|
bf4bba4c5a | ||
|
|
3272a2d490 | ||
|
|
af556115de | ||
|
|
98683125f6 | ||
|
|
27b52acee7 | ||
|
|
47c9205127 | ||
|
|
aed3523ee3 | ||
|
|
30287992e2 | ||
|
|
f5693986c4 | ||
|
|
2a69254d21 | ||
|
|
51f599e2cf | ||
|
|
dd5a3c91a1 | ||
|
|
2daabc2cce | ||
|
|
7f91b54a44 | ||
|
|
c77d89046e | ||
|
|
0f5eedff74 | ||
|
|
5d3cfa4045 | ||
|
|
3a55368320 | ||
|
|
ef4666bd86 | ||
|
|
a738664dcc | ||
|
|
02c529efe4 | ||
|
|
c1134da741 | ||
|
|
f84683a8c2 | ||
|
|
ad80550252 | ||
|
|
c78c1fb870 | ||
|
|
5770e8befd | ||
|
|
0cebac6bb0 | ||
|
|
19d1990f86 | ||
|
|
8e0d5cd95d | ||
|
|
f4aaa7c76f | ||
|
|
12f1934d38 | ||
|
|
6a1c2a74e9 | ||
|
|
a294f0cb7e | ||
|
|
8037c373d0 | ||
|
|
21e47ca5b3 | ||
|
|
f26a01cd02 | ||
|
|
16935cc666 | ||
|
|
8cd824b4ac | ||
|
|
16f88fe363 | ||
|
|
0e2cc23d49 | ||
|
|
782774c0dc | ||
|
|
ffa44b8327 | ||
|
|
e4077b1725 | ||
|
|
a836e09e91 | ||
|
|
1ca2428f51 | ||
|
|
2a027e992d | ||
|
|
7ff5fdc349 | ||
|
|
b322ee6728 | ||
|
|
19fdf61efe | ||
|
|
13a92b1474 | ||
|
|
7bb3ec24ba | ||
|
|
7fc51f6952 | ||
|
|
72a19ed9ed | ||
|
|
b6d6485a90 | ||
|
|
a7716dec4d | ||
|
|
f655add4e9 | ||
|
|
767107070e | ||
|
|
c4ee72f2d9 | ||
|
|
768bd0f5c6 | ||
|
|
08bab60614 | ||
|
|
46c35b80a1 | ||
|
|
ee4afdeedb | ||
|
|
2fec415a5d | ||
|
|
416897c73d | ||
|
|
0a0d61af6c | ||
|
|
48d49075ec | ||
|
|
fab4a02838 | ||
|
|
b843321428 | ||
|
|
7cd12641c7 | ||
|
|
ba9b3e1839 | ||
|
|
cb03578a7c | ||
|
|
b96e02c649 | ||
|
|
2d9e88794d | ||
|
|
2c45d3c1aa | ||
|
|
d0aaa061c2 | ||
|
|
476bba726c | ||
|
|
8be6a2ecd5 | ||
|
|
bc8fdfe946 | ||
|
|
bcabad32cf | ||
|
|
e352adda69 | ||
|
|
5ce3e63658 | ||
|
|
e58c4a493c | ||
|
|
cc6d3a7df1 | ||
|
|
88894aa0ad | ||
|
|
ee85ed4c67 | ||
|
|
fab1ee3117 | ||
|
|
90f7210413 | ||
|
|
8177d63e07 | ||
|
|
d221dc5312 | ||
|
|
de76234a0e | ||
|
|
0de31196b6 | ||
|
|
6ddda74126 | ||
|
|
64c0374423 | ||
|
|
b929452f32 | ||
|
|
c744fb81b6 | ||
|
|
ba2c1b4e25 | ||
|
|
e0838c704a | ||
|
|
d232ec08b9 | ||
|
|
3fa0e0ce0c | ||
|
|
e23978fb68 | ||
|
|
a133605d01 | ||
|
|
f244ff9987 | ||
|
|
68024ec33d | ||
|
|
1e6f5c7705 | ||
|
|
aa46603214 | ||
|
|
ffdf52e38d | ||
|
|
1f1a71ae2b | ||
|
|
3b46a4d9a3 | ||
|
|
915c7cfcd7 | ||
|
|
0ac474fdc4 | ||
|
|
62e7fc6ab1 | ||
|
|
96d37d2fbe | ||
|
|
48064e24d5 | ||
|
|
e7f78bbc0f | ||
|
|
ad3132da33 | ||
|
|
ff3f66ed30 | ||
|
|
d2513b8460 | ||
|
|
eff4828b37 | ||
|
|
f00a9e6e7a | ||
|
|
76c1998753 | ||
|
|
379e0f5bc2 | ||
|
|
2eb95b2e09 | ||
|
|
cce6b55a27 | ||
|
|
c8fe296c52 | ||
|
|
0074044413 | ||
|
|
15a1a3ccc7 | ||
|
|
37273299f7 | ||
|
|
7c31850381 | ||
|
|
12aa326dae | ||
|
|
9840b26fa4 | ||
|
|
a100e89671 | ||
|
|
487d21e7ff | ||
|
|
5902a23e78 | ||
|
|
87d4648172 | ||
|
|
acd7e82d2b | ||
|
|
23374c491c | ||
|
|
576710f7a5 | ||
|
|
adf2afae7c | ||
|
|
29eec37c66 | ||
|
|
74ca43a9b6 | ||
|
|
5a490dd9ac | ||
|
|
c70f3da583 | ||
|
|
185bcc5e88 | ||
|
|
c05fff8504 | ||
|
|
a13bed2f51 | ||
|
|
02a0ab4b59 | ||
|
|
5b994f77b1 | ||
|
|
2f2003be52 | ||
|
|
8a7172e1c2 | ||
|
|
99c2dfd569 | ||
|
|
f8a3afa4a1 | ||
|
|
e671a68b48 | ||
|
|
0278e9095d | ||
|
|
16223d0bc3 | ||
|
|
119477060d | ||
|
|
352e6dd19d | ||
|
|
b36542d509 | ||
|
|
254d1a2d8d | ||
|
|
dd72442fee | ||
|
|
b2cd5baa24 | ||
|
|
4e2546a209 | ||
|
|
fe94d52c4c | ||
|
|
fdafa44b2f | ||
|
|
418fb24982 | ||
|
|
3b339fee98 | ||
|
|
0860036454 | ||
|
|
9e3a0626bf | ||
|
|
71a7e23f32 | ||
|
|
6115527e7e | ||
|
|
774cd8b08f | ||
|
|
bc19a18b3c | ||
|
|
256eb1b5a1 | ||
|
|
7e042e7b70 | ||
|
|
c2ff76829f | ||
|
|
0b26834648 | ||
|
|
d7692e1fe5 | ||
|
|
9bbeb75dd8 | ||
|
|
fc09bf751a | ||
|
|
7e00ee1107 | ||
|
|
3fdfdc9963 | ||
|
|
7cc49c9386 | ||
|
|
099dd92eeb | ||
|
|
0654fec1be | ||
|
|
985d15613e | ||
|
|
73502997ff | ||
|
|
3481cebe22 | ||
|
|
a6a3eab8d9 | ||
|
|
5e470bcf0b | ||
|
|
5c1f3b426b | ||
|
|
f659a98d50 | ||
|
|
e22f735f80 | ||
|
|
abf54b60a4 | ||
|
|
24900181f4 | ||
|
|
dd247a0f85 | ||
|
|
8fbb16f838 | ||
|
|
a201689e38 | ||
|
|
2e9d36e220 | ||
|
|
c3cda92272 | ||
|
|
eb916c0c57 | ||
|
|
f4795532c6 | ||
|
|
52175cec3d | ||
|
|
70c91d70c5 | ||
|
|
d4502d02a1 | ||
|
|
ce45960049 | ||
|
|
1240403ce5 | ||
|
|
a676af7c8a | ||
|
|
62976a21b0 | ||
|
|
4a4be9cd99 | ||
|
|
8d694cba9c | ||
|
|
f0317f6dd4 | ||
|
|
c1de3d3370 | ||
|
|
cf6dcf5e19 | ||
|
|
66f77d4a77 | ||
|
|
07e16116fd | ||
|
|
0755196c4d | ||
|
|
3d0f51152a | ||
|
|
48917f34a3 | ||
|
|
98f03df8e5 | ||
|
|
d199186df0 | ||
|
|
892c9ad6b5 | ||
|
|
5a87ca631a | ||
|
|
c6283b5185 | ||
|
|
dee74777db | ||
|
|
61bcec3b57 | ||
|
|
9779a7a340 | ||
|
|
bc0e2a3438 | ||
|
|
b93492b40b | ||
|
|
be85daa23f | ||
|
|
3b6b2474a2 | ||
|
|
6f440ff679 | ||
|
|
98326670b6 | ||
|
|
44b1e3df5d | ||
|
|
929cf2e21f | ||
|
|
aee2c7f91d | ||
|
|
e142bbd1bf | ||
|
|
d4e2bfe892 | ||
|
|
60aaed01ae | ||
|
|
f1c48e9820 | ||
|
|
72286b27cc | ||
|
|
f8e1f85fde | ||
|
|
9f00b402c5 | ||
|
|
5f9ae83f44 | ||
|
|
e395afed51 | ||
|
|
30725e6eb2 | ||
|
|
9c3f84fc67 | ||
|
|
758c83acbf | ||
|
|
58b9b3ec81 | ||
|
|
6ef37e4b3e | ||
|
|
c24f3c7c4d | ||
|
|
f472e1bafb | ||
|
|
b1ca153b72 | ||
|
|
2daef1bcb8 | ||
|
|
806f071348 | ||
|
|
ce932f3825 | ||
|
|
47be64d7f2 | ||
|
|
81fdc3b988 | ||
|
|
19c655b420 | ||
|
|
b9eb941201 | ||
|
|
6bc040a3a5 | ||
|
|
29549aa55a | ||
|
|
17ec87f503 | ||
|
|
e3e2b1af44 | ||
|
|
8a3eeddc80 | ||
|
|
e4e4ba3c7b | ||
|
|
ad716f1df4 | ||
|
|
664426be21 | ||
|
|
5b9cbc1a57 | ||
|
|
a66f7ae13e | ||
|
|
073d760689 | ||
|
|
f2241b61b2 | ||
|
|
15c540dc94 | ||
|
|
d17fcbf72f | ||
|
|
98b95e6399 | ||
|
|
a0e9b383c6 | ||
|
|
62ec219601 | ||
|
|
6eda2735aa | ||
|
|
0cba7d3ed6 | ||
|
|
3736132370 | ||
|
|
390908dead | ||
|
|
6d665580a3 | ||
|
|
297ca3d004 | ||
|
|
4f0d2ebbb5 | ||
|
|
62f2dc02f0 | ||
|
|
92c0a90b64 | ||
|
|
262fdc20d5 | ||
|
|
0b537b3065 | ||
|
|
89d1d43165 | ||
|
|
f4f9a8a241 | ||
|
|
63d8764f9d | ||
|
|
6409c7b317 | ||
|
|
22f54d8528 | ||
|
|
018688a90f | ||
|
|
d848de4918 | ||
|
|
57fb980df7 | ||
|
|
5df9e23f14 | ||
|
|
0370a3b89b | ||
|
|
51e74f1d1f | ||
|
|
ccef93e887 | ||
|
|
15322e41c7 | ||
|
|
486b68cb08 | ||
|
|
af96e9745f | ||
|
|
3f82d3a975 | ||
|
|
0f375addd2 | ||
|
|
a40184536b | ||
|
|
67a97c1ea0 | ||
|
|
c213f2ac44 | ||
|
|
770d57a01d | ||
|
|
3f7222e488 | ||
|
|
28dcb68bf3 | ||
|
|
28cd6253e9 | ||
|
|
2db9b27e39 | ||
|
|
71c80aaf54 | ||
|
|
63a75aca2a | ||
|
|
73b4e4233c | ||
|
|
28453d7038 | ||
|
|
826561daf3 | ||
|
|
48d9d5e901 | ||
|
|
7d5302b51f | ||
|
|
3921bc13a3 | ||
|
|
c7b8a56b22 | ||
|
|
a0c9198fa2 | ||
|
|
4a1ac56286 | ||
|
|
b19dc8fc65 | ||
|
|
b3ecf49f86 | ||
|
|
193e350440 | ||
|
|
3abbfabf55 | ||
|
|
f07889c266 | ||
|
|
7b20361baf | ||
|
|
03f63eb666 | ||
|
|
9a1acf144f | ||
|
|
79f91649b6 | ||
|
|
1b41629214 | ||
|
|
ea7f5d5313 | ||
|
|
cd2884abf1 | ||
|
|
715274c3f9 | ||
|
|
f1529ce051 | ||
|
|
a26a460698 | ||
|
|
cc8f47e248 | ||
|
|
2db882e9b8 | ||
|
|
8169aa25af | ||
|
|
7469672a46 | ||
|
|
170b6d4c26 | ||
|
|
d1e82c71a3 | ||
|
|
28ed36a9ec | ||
|
|
1fedd3a2b7 | ||
|
|
538326ceac | ||
|
|
d4f645777e | ||
|
|
a753422549 | ||
|
|
fdd75df927 | ||
|
|
6b213e1071 | ||
|
|
9c1486522a | ||
|
|
11cd15d218 | ||
|
|
1297773a26 | ||
|
|
a8b0c5f760 | ||
|
|
ffd8c406ab | ||
|
|
9f193de600 | ||
|
|
28bebd35ea | ||
|
|
3ac318bfd3 | ||
|
|
9112675ad8 | ||
|
|
a8c96d7c07 | ||
|
|
941341d085 | ||
|
|
ead2cd63bb | ||
|
|
704e58e1b7 | ||
|
|
6acb234a12 | ||
|
|
d1d9548b8e | ||
|
|
773f0e3637 | ||
|
|
0f1aec97da | ||
|
|
ebb8f0c2b1 | ||
|
|
cbf264ff5f | ||
|
|
979e04a6ec | ||
|
|
86e73cade7 | ||
|
|
4265798d4b | ||
|
|
148eb6bb28 | ||
|
|
a6fb6d9da0 | ||
|
|
1fb184305b | ||
|
|
c8a36e14e9 | ||
|
|
45205aa4a3 | ||
|
|
b84e548522 | ||
|
|
6ab14bf474 | ||
|
|
1c3ae6077a | ||
|
|
eb0ddf61dc | ||
|
|
395fccfda7 | ||
|
|
b69aa396c1 | ||
|
|
61ca196d73 | ||
|
|
5f769dbed9 | ||
|
|
45ff435378 | ||
|
|
448aa43ec4 | ||
|
|
cc7b3c1636 | ||
|
|
1471330825 | ||
|
|
05572482b8 | ||
|
|
cd1d8c2a96 | ||
|
|
624d2f1438 | ||
|
|
767c1efd10 | ||
|
|
999c40fcf3 | ||
|
|
105e9daaf7 | ||
|
|
4078688305 | ||
|
|
96d42317b1 | ||
|
|
23a8a7e04d | ||
|
|
25e384f236 | ||
|
|
8867301f78 | ||
|
|
840bf02baf | ||
|
|
fd5bde1a3a | ||
|
|
58bbc512f9 | ||
|
|
1d03b9dc62 | ||
|
|
916d023c35 | ||
|
|
0a1f4cc910 | ||
|
|
5415c5e6ec | ||
|
|
a30df884f4 | ||
|
|
54584a2bb2 | ||
|
|
dc7d991007 | ||
|
|
d372b5bc46 | ||
|
|
98bc6abde3 | ||
|
|
9355e683cd | ||
|
|
54dba2a92b | ||
|
|
a829ec4861 | ||
|
|
d3859dc5dd | ||
|
|
57c061dcb0 | ||
|
|
6601474bf5 | ||
|
|
e0bde5dea4 | ||
|
|
53aa65a5ce | ||
|
|
fa5910eb14 | ||
|
|
d68c9bbeb2 | ||
|
|
70b86537bd | ||
|
|
2d3bbbff43 | ||
|
|
6fd5b6ae56 | ||
|
|
4604f6d465 | ||
|
|
72888d87ea | ||
|
|
56197d5104 |
@@ -8,7 +8,10 @@
|
|||||||
if you are using terminal:
|
if you are using terminal:
|
||||||
- terminal: ????
|
- terminal: ????
|
||||||
- $TERM variable: ???
|
- $TERM variable: ???
|
||||||
|
- terminal columns size: ???
|
||||||
|
- terminal line size: ???
|
||||||
- color configuration (:set t_Co?):
|
- color configuration (:set t_Co?):
|
||||||
|
|
||||||
if you are using Neovim:
|
if you are using Neovim:
|
||||||
- does it happen in Vim: ???
|
- does it happen in Vim: ???
|
||||||
|
|
||||||
@@ -19,3 +22,5 @@ if you are using Neovim:
|
|||||||
#### expected behavior
|
#### expected behavior
|
||||||
|
|
||||||
????
|
????
|
||||||
|
|
||||||
|
#### screen shot (if possible)
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: Test
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
vim:
|
||||||
|
- v9.1.0000
|
||||||
|
- v9.0.0000
|
||||||
|
- v8.2.1000
|
||||||
|
- v8.2.0000
|
||||||
|
- v8.1.0000
|
||||||
|
- v8.0.0000
|
||||||
|
- v7.4
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@main
|
||||||
|
|
||||||
|
- name: Checkout vim-themis
|
||||||
|
uses: actions/checkout@main
|
||||||
|
with:
|
||||||
|
repository: thinca/vim-themis
|
||||||
|
path: vim-themis
|
||||||
|
|
||||||
|
- name: Setup Vim
|
||||||
|
uses: rhysd/action-setup-vim@v1
|
||||||
|
id: vim
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.vim }}
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
env:
|
||||||
|
THEMIS_VIM: ${{ steps.vim.outputs.executable }}
|
||||||
|
run: ./vim-themis/bin/themis --reporter spec
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
name: reviewdog
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
vint:
|
||||||
|
name: runner / vint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@main
|
||||||
|
- name: vint
|
||||||
|
uses: reviewdog/action-vint@v1
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.github_token }}
|
||||||
|
level: error
|
||||||
|
reporter: github-pr-check
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
|
.DS_Store
|
||||||
doc/tags
|
doc/tags
|
||||||
*.lock
|
*.lock
|
||||||
.vim-flavor
|
.vim-flavor
|
||||||
*.swp
|
*.swp
|
||||||
|
.bundle
|
||||||
|
vendor
|
||||||
|
test/.deps
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
language: ruby
|
|
||||||
before_install:
|
|
||||||
- curl -f -L "https://raw.githubusercontent.com/vim-airline/vim-airline-themes/master/autoload/airline/themes/simple.vim" -o autoload/airline/themes/simple.vim
|
|
||||||
- curl -f -L "https://raw.githubusercontent.com/vim-airline/vim-airline-themes/master/autoload/airline/themes/molokai.vim" -o autoload/airline/themes/molokai.vim
|
|
||||||
- mkdir colors && curl -f -L 'https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim' -o colors/molokai.vim
|
|
||||||
rvm:
|
|
||||||
- 1.9.3
|
|
||||||
script: rake ci
|
|
||||||
+65
-5
@@ -2,7 +2,65 @@
|
|||||||
|
|
||||||
This is the Changelog for the vim-airline project.
|
This is the Changelog for the vim-airline project.
|
||||||
|
|
||||||
## [Unreleased]
|
## [0.12] - Unreleased
|
||||||
|
- New features
|
||||||
|
- Extensions:
|
||||||
|
- [poetv](https://github.com/petobens/poet-v) support
|
||||||
|
- [vim-lsp](https://github.com/prabirshrestha/vim-lsp) support
|
||||||
|
- [zoomwintab](https://github.com/troydm/zoomwintab.vim) support
|
||||||
|
- [Vaffle](https://github.com/cocopon/vaffle.vim) support
|
||||||
|
- [vim-dirvish](https://github.com/justinmk/vim-dirvish) support
|
||||||
|
- [fzf.vim](https://github.com/junegunn/fzf.vim) support
|
||||||
|
- [OmniSharp](https://github.com/OmniSharp/omnisharp-vim) support
|
||||||
|
- [searchcount](https://vim-jp.org/vimdoc-en/eval.html#searchcount()) support
|
||||||
|
- [fern.vim](https://github.com/lambdalisue/fern.vim) support
|
||||||
|
- [Vim-CMake](https://github.com/cdelledonne/vim-cmake) support
|
||||||
|
- [battery.vim](https://github.com/lambdalisue/battery.vim) support
|
||||||
|
- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) support
|
||||||
|
- [gen_tags.vim](https://github.com/jsfaint/gen_tags.vim) support
|
||||||
|
- Ascii Scrollbar support
|
||||||
|
- Improvements
|
||||||
|
- git branch can also be displayed using [gina.vim](https://github.com/lambdalisue/gina.vim)
|
||||||
|
- coc extensions can also show additional status messages as well as the current function
|
||||||
|
- [coc-git](https://github.com/neoclide/coc-git) extension integrated into hunks extension
|
||||||
|
- rewrote parts using Vim9 Script for performance improvements
|
||||||
|
- Other
|
||||||
|
- Changed CI from travis-ci.org to GitHub Actions
|
||||||
|
- Introduce Vim script static analysis using [reviewdog](https://github.com/reviewdog/action-vint)
|
||||||
|
- Added multiple Vim versions to unit tests using Travis CI
|
||||||
|
- Added option to show short paths in the status line
|
||||||
|
|
||||||
|
## [0.11] - 2019-11-10
|
||||||
|
- New features
|
||||||
|
- Extensions:
|
||||||
|
- [Coc](https://github.com/neoclide/coc.nvim) support
|
||||||
|
- [Defx](https://github.com/Shougo/defx.nvim) support
|
||||||
|
- [gina](https://github.com/lambdalisue/gina.vim) support
|
||||||
|
- [vim-bookmark](https://github.com/MattesGroeger/vim-bookmarks) support
|
||||||
|
- [vista.vim](https://github.com/liuchengxu/vista.vim) support
|
||||||
|
- [tabws](https://github.com/s1341/vim-tabws) support for the tabline
|
||||||
|
- Improvements
|
||||||
|
- The statusline can be configured to be shown on top (in the tabline)
|
||||||
|
Set the `g:airline_statusline_ontop` to enable this experimental feature.
|
||||||
|
- If `buffer_idx_mode=2`, up to 89 mappings will be exposed to access more
|
||||||
|
buffers directly (issue [#1823](https://github.com/vim-airline/vim-airline/issues/1823))
|
||||||
|
- Allow to use `random` as special theme name, which will switch to a random
|
||||||
|
airline theme (at least if a random number can be generated :()
|
||||||
|
- The branch extensions now also displays whether the repository is in a clean state
|
||||||
|
(will append a ! or ⚡if the repository is considered dirty).
|
||||||
|
- The whitespace extensions will also check for conflict markers
|
||||||
|
- `:AirlineRefresh` command now takes an additional `!` attribute, that **skips**
|
||||||
|
recreating the highlighting groups (which might have a serious performance
|
||||||
|
impact if done very often, as might be the case when the configuration variable
|
||||||
|
`airline_skip_empty_sections` is active).
|
||||||
|
- airline can now also detect multiple cursor mode (issue [#1933](https://github.com/vim-airline/vim-airline/issues/1933))
|
||||||
|
- expose hunks output using the function `airline#extensions#hunks#get_raw_hunks()` to the outside [#1877](https://github.com/vim-airline/vim-airline/pull/1877)
|
||||||
|
- expose wordcount affected filetype list to the public using the `airline#extensions#wordcount#filetypes` variable [#1887](https://github.com/vim-airline/vim-airline/pull/1887)
|
||||||
|
- for the `:AirlineExtension` command, indicate whether the extension has been loaded from an external source [#1890](https://github.com/vim-airline/vim-airline/issues/1890)
|
||||||
|
- correctly load custom wordcount formatters [#1896](https://github.com/vim-airline/vim-airline/issues/1896)
|
||||||
|
- add a new short_path formatter for the tabline [#1898](https://github.com/vim-airline/vim-airline/pull/1898)
|
||||||
|
- several improvements to the branch, denite and tabline extension, as well as the async code for Vim and Neovim
|
||||||
|
- the term extension supports [neoterm](https://github.com/kassio/neoterm) vim plugin
|
||||||
|
|
||||||
## [0.10] - 2018-12-15
|
## [0.10] - 2018-12-15
|
||||||
- New features
|
- New features
|
||||||
@@ -27,7 +85,7 @@ This is the Changelog for the vim-airline project.
|
|||||||
- [fugitive](https://github.com/tpope/vim-fugitive) plugin has been refactored
|
- [fugitive](https://github.com/tpope/vim-fugitive) plugin has been refactored
|
||||||
causing adjustments for vim-airline, also uses Fugitives new API calls
|
causing adjustments for vim-airline, also uses Fugitives new API calls
|
||||||
- some improvements to Vims terminal mode
|
- some improvements to Vims terminal mode
|
||||||
- Allow to use alternative seperators for inactive windows (#1236)
|
- Allow to use alternative separators for inactive windows ([#1236](https://github.com/vim-airline/vim-airline/issues/1236))
|
||||||
- Statusline can be set to inactive, whenever Vim loses focus (using FocusLost autocommand)
|
- Statusline can be set to inactive, whenever Vim loses focus (using FocusLost autocommand)
|
||||||
|
|
||||||
## [0.9] - 2018-01-15
|
## [0.9] - 2018-01-15
|
||||||
@@ -77,7 +135,7 @@ This is the Changelog for the vim-airline project.
|
|||||||
## [0.8] - 2016-03-09
|
## [0.8] - 2016-03-09
|
||||||
- Changes
|
- Changes
|
||||||
- Airline converted to an organization and moved to new [repository](https://github.com/vim-airline/vim-airline)
|
- Airline converted to an organization and moved to new [repository](https://github.com/vim-airline/vim-airline)
|
||||||
- Themes have been split into an separate repository [vim-airline-themes](https://github.com/vim-airline/vim-airline-themes)
|
- Themes have been split into a separate repository [vim-airline-themes](https://github.com/vim-airline/vim-airline-themes)
|
||||||
- Improvements
|
- Improvements
|
||||||
- Extensions
|
- Extensions
|
||||||
- branch: support Git and Mercurial simultaneously, untracked files
|
- branch: support Git and Mercurial simultaneously, untracked files
|
||||||
@@ -91,7 +149,7 @@ This is the Changelog for the vim-airline project.
|
|||||||
- [taboo](https://github.com/gcmt/taboo.vim)
|
- [taboo](https://github.com/gcmt/taboo.vim)
|
||||||
- [vim-ctrlspace](https://github.com/szw/vim-ctrlspace)
|
- [vim-ctrlspace](https://github.com/szw/vim-ctrlspace)
|
||||||
- [quickfixsigns](https://github.com/tomtom/quickfixsigns_vim)
|
- [quickfixsigns](https://github.com/tomtom/quickfixsigns_vim)
|
||||||
- [YouCompleteMe](https://github.com/Valloric/YouCompleteMe)
|
- [YouCompleteMe](https://github.com/ycm-core/YouCompleteMe)
|
||||||
- [po.vim](http://www.vim.org/scripts/script.php?script_id=695)
|
- [po.vim](http://www.vim.org/scripts/script.php?script_id=695)
|
||||||
- [unicode.vim](https://github.com/chrisbra/unicode.vim)
|
- [unicode.vim](https://github.com/chrisbra/unicode.vim)
|
||||||
- wordcount
|
- wordcount
|
||||||
@@ -179,7 +237,9 @@ This is the Changelog for the vim-airline project.
|
|||||||
- integration with other plugins: netrw, unite, nerdtree, undotree, gundo, tagbar, minibufexplr, ctrlp
|
- integration with other plugins: netrw, unite, nerdtree, undotree, gundo, tagbar, minibufexplr, ctrlp
|
||||||
- support for themes: 8 included
|
- support for themes: 8 included
|
||||||
|
|
||||||
[Unreleased]: https://github.com/vim-airline/vim-airline/compare/v0.9...HEAD
|
[0.12]: https://github.com/vim-airline/vim-airline/compare/v0.11...HEAD
|
||||||
|
[0.11]: https://github.com/vim-airline/vim-airline/compare/v0.10...v0.11
|
||||||
|
[0.10]: https://github.com/vim-airline/vim-airline/compare/v0.9...v0.10
|
||||||
[0.9]: https://github.com/vim-airline/vim-airline/compare/v0.8...v0.9
|
[0.9]: https://github.com/vim-airline/vim-airline/compare/v0.8...v0.9
|
||||||
[0.8]: https://github.com/vim-airline/vim-airline/compare/v0.7...v0.8
|
[0.8]: https://github.com/vim-airline/vim-airline/compare/v0.7...v0.8
|
||||||
[0.7]: https://github.com/vim-airline/vim-airline/compare/v0.6...v0.7
|
[0.7]: https://github.com/vim-airline/vim-airline/compare/v0.6...v0.7
|
||||||
|
|||||||
+21
-8
@@ -4,17 +4,32 @@ Contributions and pull requests are welcome. Please take note of the following
|
|||||||
|
|
||||||
* Adhere to the existing style as much as possible; notably, 2 space indents and long-form keywords.
|
* Adhere to the existing style as much as possible; notably, 2 space indents and long-form keywords.
|
||||||
* Keep the history clean! Squash your branches before you submit a pull request. `pull --rebase` is your friend.
|
* Keep the history clean! Squash your branches before you submit a pull request. `pull --rebase` is your friend.
|
||||||
* Any changes to the core should be tested against Vim 7.2.
|
* Any changes to the core should be tested against Vim 7.4.
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
|
||||||
|
Contributors should install [thinca/vim-themis](https://github.com/thinca/vim-themis) to run tests before sending a PR if they applied some modification to the code. PRs which do not pass tests won't be accepted.
|
||||||
|
|
||||||
|
## 1. Installation
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd /path/to/vim-airline
|
||||||
|
$ git submodule add https://github.com/thinca/vim-themis ./.themis-bin
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Running tests
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ./path/to/themis-bin/bin/themis path/to/vim-airline/test --reporter spec
|
||||||
|
```
|
||||||
|
|
||||||
# Bugs
|
# Bugs
|
||||||
|
|
||||||
Tracking down bugs can take a very long time due to different configurations, versions, and operating systems. To ensure a timely response, please help me out by doing the following:
|
Tracking down bugs can take a very long time due to different configurations, versions, and operating systems. To ensure a timely response, please help me out by doing the following:
|
||||||
|
|
||||||
* Reproduce it with this [minivimrc][7] repository to rule out any configuration conflicts. Even better, create a `gist` of your vimrc that is compatible with [pathogen][11].
|
* the `:version` of vim
|
||||||
* And to make it easier to reproduce, please supply the following:
|
* the commit of vim-airline you're using
|
||||||
* the `:version` of vim
|
* the OS that you're using, including terminal emulator, GUI vs non-GUI
|
||||||
* the commit of vim-airline you're using
|
|
||||||
* the OS that you're using, including terminal emulator, GUI vs non-GUI
|
|
||||||
|
|
||||||
# Themes
|
# Themes
|
||||||
|
|
||||||
@@ -26,7 +41,5 @@ Tracking down bugs can take a very long time due to different configurations, ve
|
|||||||
If you would like to take a more active role in improving vim-airline, please consider [becoming a maintainer][43].
|
If you would like to take a more active role in improving vim-airline, please consider [becoming a maintainer][43].
|
||||||
|
|
||||||
|
|
||||||
[7]: https://github.com/bling/minivimrc
|
|
||||||
[11]: https://github.com/tpope/vim-pathogen
|
|
||||||
[14]: https://github.com/vim-airline/vim-airline/wiki/Screenshots
|
[14]: https://github.com/vim-airline/vim-airline/wiki/Screenshots
|
||||||
[43]: https://github.com/vim-airline/vim-airline/wiki/Becoming-a-Maintainer
|
[43]: https://github.com/vim-airline/vim-airline/wiki/Becoming-a-Maintainer
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (C) 2013-2018 Bailey Ling et al.
|
Copyright (C) 2013-2021 Bailey Ling, Christian Brabandt, et al.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
a copy of this software and associated documentation files (the "Software"),
|
a copy of this software and associated documentation files (the "Software"),
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
# vim-airline [](https://travis-ci.org/vim-airline/vim-airline)
|
# vim-airline
|
||||||
|
|
||||||
Lean & mean status/tabline for vim that's light as air.
|
[](https://saythanks.io/to/chrisbra)
|
||||||
|
[](https://github.com/vim-airline/vim-airline/actions?query=workflow%3Areviewdog+event%3Apush+branch%3Amaster)
|
||||||
|
[](https://github.com/vim-airline/vim-airline/actions?query=workflow%3ACI)
|
||||||
|
|
||||||
|
Lean & mean status/tabline for vim that's light as air.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
When the plugin is correctly loaded, Vim will draw a nice statusline at the
|
When the plugin is correctly loaded, there will be a nice statusline at the
|
||||||
bottom of each window.
|
bottom of each vim window.
|
||||||
|
|
||||||
That line consists of several sections, each one displaying some piece of
|
That line consists of several sections, each one displaying some piece of
|
||||||
information. By default (without configuration) this line will look like this:
|
information. By default (without configuration) this line will look like this:
|
||||||
@@ -16,7 +20,7 @@ information. By default (without configuration) this line will look like this:
|
|||||||
|~ |
|
|~ |
|
||||||
|~ VIM - Vi IMproved |
|
|~ VIM - Vi IMproved |
|
||||||
|~ |
|
|~ |
|
||||||
|~ version 8.0 |
|
|~ version 8.2 |
|
||||||
|~ by Bram Moolenaar et al. |
|
|~ by Bram Moolenaar et al. |
|
||||||
|~ Vim is open source and freely distributable |
|
|~ Vim is open source and freely distributable |
|
||||||
|~ |
|
|~ |
|
||||||
@@ -36,7 +40,7 @@ The statusline is the colored line at the bottom, which contains the sections
|
|||||||
section|meaning (example)
|
section|meaning (example)
|
||||||
-------|------------------
|
-------|------------------
|
||||||
A | displays the mode + additional flags like crypt/spell/paste (INSERT)
|
A | displays the mode + additional flags like crypt/spell/paste (INSERT)
|
||||||
B | VCS information (branch, hunk summary) (master)
|
B | Environment status (VCS information - branch, hunk summary (master), [battery][61] level)
|
||||||
C | filename + read-only flag (~/.vim/vimrc RO)
|
C | filename + read-only flag (~/.vim/vimrc RO)
|
||||||
X | filetype (vim)
|
X | filetype (vim)
|
||||||
Y | file encoding[fileformat] (utf-8[unix])
|
Y | file encoding[fileformat] (utf-8[unix])
|
||||||
@@ -62,19 +66,36 @@ For a better look, those sections can be colored differently, depending on vario
|
|||||||
|
|
||||||
* Tiny core written with extensibility in mind ([open/closed principle][8]).
|
* Tiny core written with extensibility in mind ([open/closed principle][8]).
|
||||||
* Integrates with a variety of plugins, including: [vim-bufferline][6],
|
* Integrates with a variety of plugins, including: [vim-bufferline][6],
|
||||||
[fugitive][4], [unite][9], [ctrlp][10], [minibufexpl][15], [gundo][16],
|
[fugitive][4], [flog][62], [unite][9], [ctrlp][10], [minibufexpl][15], [gundo][16],
|
||||||
[undotree][17], [nerdtree][18], [tagbar][19], [vim-gitgutter][29],
|
[undotree][17], [nerdtree][18], [tagbar][19], [vim-gitgutter][29],
|
||||||
[vim-signify][30], [quickfixsigns][39], [syntastic][5], [eclim][34],
|
[vim-signify][30], [quickfixsigns][39], [syntastic][5], [eclim][34],
|
||||||
[lawrencium][21], [virtualenv][31], [tmuxline][35], [taboo.vim][37],
|
[lawrencium][21], [virtualenv][31], [tmuxline][35], [taboo.vim][37],
|
||||||
[ctrlspace][38], [vim-bufmru][47], [vimagit][50], [denite][51] and more.
|
[ctrlspace][38], [vim-bufmru][47], [vimagit][50], [denite][51],
|
||||||
|
[vim.battery][61] and more.
|
||||||
* Looks good with regular fonts and provides configuration points so you can use unicode or powerline symbols.
|
* Looks good with regular fonts and provides configuration points so you can use unicode or powerline symbols.
|
||||||
* Optimized for speed; it loads in under a millisecond.
|
* Optimized for speed - loads in under a millisecond.
|
||||||
* Extensive suite of themes for popular color schemes including [solarized][23] (dark and light), [tomorrow][24] (all variants), [base16][32] (all variants), [molokai][25], [jellybeans][26] and others.
|
* Extensive suite of themes for popular color schemes including [solarized][23] (dark and light), [tomorrow][24] (all variants), [base16][32] (all variants), [molokai][25], [jellybeans][26] and others.
|
||||||
Note these are now external to this plugin. See [below][46] for detail.
|
Note these are now external to this plugin. More details can be found in the [themes repository][46].
|
||||||
* Supports 7.2 as the minimum Vim version.
|
* Supports 7.2 as the minimum Vim version.
|
||||||
* The master branch tries to be as stable as possible, and new features are merged in only after they have gone through a [full regression test][33].
|
* The master branch tries to be as stable as possible, and new features are merged in only after they have gone through a [full regression test][33].
|
||||||
* Unit testing suite.
|
* Unit testing suite.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
This plugin follows the standard runtime path structure, and as such it can be installed with a variety of plugin managers:
|
||||||
|
|
||||||
|
| Plugin Manager | Install with... |
|
||||||
|
| ------------- | ------------- |
|
||||||
|
| [Pathogen][11] | `git clone https://github.com/vim-airline/vim-airline ~/.vim/bundle/vim-airline`<br/>Remember to run `:Helptags` to generate help tags |
|
||||||
|
| [NeoBundle][12] | `NeoBundle 'vim-airline/vim-airline'` |
|
||||||
|
| [Vundle][13] | `Plugin 'vim-airline/vim-airline'` |
|
||||||
|
| [Plug][40] | `Plug 'vim-airline/vim-airline'` |
|
||||||
|
| [VAM][22] | `call vam#ActivateAddons([ 'vim-airline' ])` |
|
||||||
|
| [Dein][52] | `call dein#add('vim-airline/vim-airline')` |
|
||||||
|
| [minpac][55] | `call minpac#add('vim-airline/vim-airline')` |
|
||||||
|
| pack feature (native Vim 8 package feature)| `git clone https://github.com/vim-airline/vim-airline ~/.vim/pack/dist/start/vim-airline`<br/>Remember to run `:helptags ~/.vim/pack/dist/start/vim-airline/doc` to generate help tags |
|
||||||
|
| manual | copy all of the files into your `~/.vim` directory |
|
||||||
|
|
||||||
## Straightforward customization
|
## Straightforward customization
|
||||||
|
|
||||||
If you don't like the defaults, you can replace all sections with standard `statusline` syntax. Give your statusline that you've built over the years a face lift.
|
If you don't like the defaults, you can replace all sections with standard `statusline` syntax. Give your statusline that you've built over the years a face lift.
|
||||||
@@ -93,7 +114,7 @@ Plugin 'vim-airline/vim-airline'
|
|||||||
Plugin 'vim-airline/vim-airline-themes'
|
Plugin 'vim-airline/vim-airline-themes'
|
||||||
```
|
```
|
||||||
|
|
||||||
See https://github.com/vim-airline/vim-airline-themes for more.
|
See [vim-airline-themes][46] for more.
|
||||||
|
|
||||||
## Automatic truncation
|
## Automatic truncation
|
||||||
|
|
||||||
@@ -158,12 +179,15 @@ vim-airline integrates with a variety of plugins out of the box. These extensio
|
|||||||
#### [syntastic][5]
|
#### [syntastic][5]
|
||||||

|

|
||||||
|
|
||||||
#### hunks ([vim-gitgutter][29] & [vim-signify][30])
|
#### hunks ([vim-gitgutter][29], [vim-signify][30], [coc-git][59] & [gitsigns.nvim][63])
|
||||||

|

|
||||||
|
|
||||||
#### [vimagit][50]
|
#### [vimagit][50]
|
||||||

|

|
||||||
|
|
||||||
|
#### [flog][62]
|
||||||
|

|
||||||
|
|
||||||
#### [virtualenv][31]
|
#### [virtualenv][31]
|
||||||

|

|
||||||
|
|
||||||
@@ -188,6 +212,12 @@ vim-airline integrates with a variety of plugins out of the box. These extensio
|
|||||||
#### [LanguageClient][57]
|
#### [LanguageClient][57]
|
||||||

|

|
||||||
|
|
||||||
|
#### [Vim-CMake][60]
|
||||||
|

|
||||||
|
|
||||||
|
#### [vim.battery][61]
|
||||||
|

|
||||||
|
|
||||||
## Extras
|
## Extras
|
||||||
|
|
||||||
vim-airline also supplies some supplementary stand-alone extensions. In addition to the tabline extension mentioned earlier, there is also:
|
vim-airline also supplies some supplementary stand-alone extensions. In addition to the tabline extension mentioned earlier, there is also:
|
||||||
@@ -195,6 +225,13 @@ vim-airline also supplies some supplementary stand-alone extensions. In additio
|
|||||||
#### whitespace
|
#### whitespace
|
||||||

|

|
||||||
|
|
||||||
|
### statusline on top
|
||||||
|
The statusline can alternatively be drawn on top, making room for other plugins to use the statusline:
|
||||||
|
The example shows a custom statusline setting, that imitates Vims default statusline, while allowing
|
||||||
|
to call custom functions. Use `:let g:airline_statusline_ontop=1` to enable it.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Configurable and extensible
|
## Configurable and extensible
|
||||||
|
|
||||||
#### Fine-tuned configuration
|
#### Fine-tuned configuration
|
||||||
@@ -227,22 +264,6 @@ What about [vim-powerline][1]?
|
|||||||
|
|
||||||
I wrote the initial version on an airplane, and since it's light as air it turned out to be a good name. Thanks for flying vim!
|
I wrote the initial version on an airplane, and since it's light as air it turned out to be a good name. Thanks for flying vim!
|
||||||
|
|
||||||
# Installation
|
|
||||||
|
|
||||||
This plugin follows the standard runtime path structure, and as such it can be installed with a variety of plugin managers:
|
|
||||||
|
|
||||||
| Plugin Manager | Install with... |
|
|
||||||
| ------------- | ------------- |
|
|
||||||
| [Pathogen][11] | `git clone https://github.com/vim-airline/vim-airline ~/.vim/bundle/vim-airline`<br/>Remember to run `:Helptags` to generate help tags |
|
|
||||||
| [NeoBundle][12] | `NeoBundle 'vim-airline/vim-airline'` |
|
|
||||||
| [Vundle][13] | `Plugin 'vim-airline/vim-airline'` |
|
|
||||||
| [Plug][40] | `Plug 'vim-airline/vim-airline'` |
|
|
||||||
| [VAM][22] | `call vam#ActivateAddons([ 'vim-airline' ])` |
|
|
||||||
| [Dein][52] | `call dein#add('vim-airline/vim-airline')` |
|
|
||||||
| [minpac][55] | `call minpac#add('vim-airline/vim-airline')` |
|
|
||||||
| pack feature (native Vim 8 package feature)| `git clone https://github.com/vim-airline/vim-airline ~/.vim/pack/dist/start/vim-airline`<br/>Remember to run `:helptags` to generate help tags |
|
|
||||||
| manual | copy all of the files into your `~/.vim` directory |
|
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
|
|
||||||
`:help airline`
|
`:help airline`
|
||||||
@@ -279,16 +300,16 @@ A full list of screenshots for various themes can be found in the [Wiki][14].
|
|||||||
|
|
||||||
# Maintainers
|
# Maintainers
|
||||||
|
|
||||||
The project is currently being maintained by [Bailey Ling][41], [Christian Brabandt][42], and [Mike Hartington][44].
|
The project is currently being maintained by [Christian Brabandt][42] and [Bailey Ling][41].
|
||||||
|
|
||||||
If you are interested in becoming a maintainer (we always welcome more maintainers), please [go here][43].
|
If you are interested in becoming a maintainer (we always welcome more maintainers), please [go here][43].
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
||||||
MIT License. Copyright (c) 2013-2017 Bailey Ling & Contributors.
|
[MIT License][58]. Copyright (c) 2013-2021 Bailey Ling & Contributors.
|
||||||
|
|
||||||
[1]: https://github.com/Lokaltog/vim-powerline
|
[1]: https://github.com/Lokaltog/vim-powerline
|
||||||
[2]: https://github.com/Lokaltog/powerline
|
[2]: https://github.com/powerline/powerline
|
||||||
[3]: https://github.com/Lokaltog/powerline-fonts
|
[3]: https://github.com/Lokaltog/powerline-fonts
|
||||||
[4]: https://github.com/tpope/vim-fugitive
|
[4]: https://github.com/tpope/vim-fugitive
|
||||||
[5]: https://github.com/scrooloose/syntastic
|
[5]: https://github.com/scrooloose/syntastic
|
||||||
@@ -304,10 +325,10 @@ MIT License. Copyright (c) 2013-2017 Bailey Ling & Contributors.
|
|||||||
[15]: https://github.com/techlivezheng/vim-plugin-minibufexpl
|
[15]: https://github.com/techlivezheng/vim-plugin-minibufexpl
|
||||||
[16]: https://github.com/sjl/gundo.vim
|
[16]: https://github.com/sjl/gundo.vim
|
||||||
[17]: https://github.com/mbbill/undotree
|
[17]: https://github.com/mbbill/undotree
|
||||||
[18]: https://github.com/scrooloose/nerdtree
|
[18]: https://github.com/preservim/nerdtree
|
||||||
[19]: https://github.com/majutsushi/tagbar
|
[19]: https://github.com/majutsushi/tagbar
|
||||||
[20]: https://powerline.readthedocs.org/en/master/installation.html#patched-fonts
|
[20]: https://powerline.readthedocs.org/en/master/installation.html#patched-fonts
|
||||||
[21]: https://bitbucket.org/ludovicchabant/vim-lawrencium
|
[21]: https://github.com/ludovicchabant/vim-lawrencium
|
||||||
[22]: https://github.com/MarcWeber/vim-addon-manager
|
[22]: https://github.com/MarcWeber/vim-addon-manager
|
||||||
[23]: https://github.com/altercation/solarized
|
[23]: https://github.com/altercation/solarized
|
||||||
[24]: https://github.com/chriskempson/tomorrow-theme
|
[24]: https://github.com/chriskempson/tomorrow-theme
|
||||||
@@ -324,15 +345,14 @@ MIT License. Copyright (c) 2013-2017 Bailey Ling & Contributors.
|
|||||||
[35]: https://github.com/edkolev/tmuxline.vim
|
[35]: https://github.com/edkolev/tmuxline.vim
|
||||||
[36]: https://github.com/edkolev/promptline.vim
|
[36]: https://github.com/edkolev/promptline.vim
|
||||||
[37]: https://github.com/gcmt/taboo.vim
|
[37]: https://github.com/gcmt/taboo.vim
|
||||||
[38]: https://github.com/szw/vim-ctrlspace
|
[38]: https://github.com/vim-ctrlspace/vim-ctrlspace
|
||||||
[39]: https://github.com/tomtom/quickfixsigns_vim
|
[39]: https://github.com/tomtom/quickfixsigns_vim
|
||||||
[40]: https://github.com/junegunn/vim-plug
|
[40]: https://github.com/junegunn/vim-plug
|
||||||
[41]: https://github.com/bling
|
[41]: https://github.com/bling
|
||||||
[42]: https://github.com/chrisbra
|
[42]: https://github.com/chrisbra
|
||||||
[43]: https://github.com/vim-airline/vim-airline/wiki/Becoming-a-Maintainer
|
[43]: https://github.com/vim-airline/vim-airline/wiki/Becoming-a-Maintainer
|
||||||
[44]: https://github.com/mhartington
|
|
||||||
[45]: https://github.com/vim-airline/vim-airline/commit/d7fd8ca649e441b3865551a325b10504cdf0711b
|
[45]: https://github.com/vim-airline/vim-airline/commit/d7fd8ca649e441b3865551a325b10504cdf0711b
|
||||||
[46]: https://github.com/vim-airline/vim-airline#themes
|
[46]: https://github.com/vim-airline/vim-airline-themes#vim-airline-themes--
|
||||||
[47]: https://github.com/mildred/vim-bufmru
|
[47]: https://github.com/mildred/vim-bufmru
|
||||||
[48]: https://github.com/ierton/xkb-switch
|
[48]: https://github.com/ierton/xkb-switch
|
||||||
[49]: https://github.com/vovkasm/input-source-switcher
|
[49]: https://github.com/vovkasm/input-source-switcher
|
||||||
@@ -344,3 +364,10 @@ MIT License. Copyright (c) 2013-2017 Bailey Ling & Contributors.
|
|||||||
[55]: https://github.com/k-takata/minpac/
|
[55]: https://github.com/k-takata/minpac/
|
||||||
[56]: https://github.com/vim-airline/vim-airline-themes/blob/master/autoload/airline/themes/dark_minimal.vim
|
[56]: https://github.com/vim-airline/vim-airline-themes/blob/master/autoload/airline/themes/dark_minimal.vim
|
||||||
[57]: https://github.com/autozimu/LanguageClient-neovim
|
[57]: https://github.com/autozimu/LanguageClient-neovim
|
||||||
|
[58]: https://github.com/vim-airline/vim-airline/blob/master/LICENSE
|
||||||
|
[59]: https://github.com/neoclide/coc-git
|
||||||
|
[60]: https://github.com/cdelledonne/vim-cmake
|
||||||
|
[61]: http://github.com/lambdalisue/battery.vim/
|
||||||
|
[62]: http://github.com/rbong/vim-flog/
|
||||||
|
[63]: https://github.com/lewis6991/gitsigns.nvim
|
||||||
|
[64]: https://github.com/VimfanTPdvorak/vimodoro
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env rake
|
|
||||||
|
|
||||||
task :default => [:test]
|
|
||||||
|
|
||||||
task :ci => [:dump, :test]
|
|
||||||
|
|
||||||
task :dump do
|
|
||||||
sh 'vim --version'
|
|
||||||
end
|
|
||||||
|
|
||||||
task :test do
|
|
||||||
sh 'bundle exec vim-flavor test'
|
|
||||||
end
|
|
||||||
|
|
||||||
+94
-48
@@ -1,25 +1,35 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])
|
let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])
|
||||||
|
let g:airline_inactive_funcrefs = get(g:, 'airline_inactive_statusline_funcrefs', [])
|
||||||
|
|
||||||
let s:sections = ['a','b','c','gutter','x','y','z', 'error', 'warning']
|
let s:sections = ['a','b','c','gutter','x','y','z', 'error', 'warning']
|
||||||
let s:inactive_funcrefs = []
|
|
||||||
let s:contexts = {}
|
let s:contexts = {}
|
||||||
let s:core_funcrefs = [
|
let s:core_funcrefs = [
|
||||||
\ function('airline#extensions#apply'),
|
\ function('airline#extensions#apply'),
|
||||||
\ function('airline#extensions#default#apply') ]
|
\ function('airline#extensions#default#apply') ]
|
||||||
|
|
||||||
|
|
||||||
function! airline#add_statusline_func(name)
|
function! airline#add_statusline_func(name, ...)
|
||||||
call airline#add_statusline_funcref(function(a:name))
|
let warn = get(a:, 1, 1)
|
||||||
|
call airline#add_statusline_funcref(function(a:name), warn)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#add_statusline_funcref(function)
|
function! airline#add_inactive_statusline_func(name, ...)
|
||||||
|
let warn = get(a:, 1, 1)
|
||||||
|
call airline#add_inactive_statusline_funcref(function(a:name), warn)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! airline#add_statusline_funcref(function, ...)
|
||||||
if index(g:airline_statusline_funcrefs, a:function) >= 0
|
if index(g:airline_statusline_funcrefs, a:function) >= 0
|
||||||
|
let warn = get(a:, 1, 1)
|
||||||
|
if warn > 0
|
||||||
call airline#util#warning(printf('The airline statusline funcref "%s" has already been added.', string(a:function)))
|
call airline#util#warning(printf('The airline statusline funcref "%s" has already been added.', string(a:function)))
|
||||||
|
endif
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
call add(g:airline_statusline_funcrefs, a:function)
|
call add(g:airline_statusline_funcrefs, a:function)
|
||||||
@@ -32,8 +42,15 @@ function! airline#remove_statusline_func(name)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#add_inactive_statusline_func(name)
|
function! airline#add_inactive_statusline_funcref(function, ...)
|
||||||
call add(s:inactive_funcrefs, function(a:name))
|
if index(g:airline_inactive_funcrefs, a:function) >= 0
|
||||||
|
let warn = get(a:, 1, 1)
|
||||||
|
if warn > 0
|
||||||
|
call airline#util#warning(printf('The airline inactive statusline funcref "%s" has already been added.', string(a:function)))
|
||||||
|
endif
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
call add(g:airline_inactive_funcrefs, a:function)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#load_theme()
|
function! airline#load_theme()
|
||||||
@@ -53,6 +70,8 @@ function! airline#load_theme()
|
|||||||
call airline#highlighter#load_theme()
|
call airline#highlighter#load_theme()
|
||||||
call airline#extensions#load_theme()
|
call airline#extensions#load_theme()
|
||||||
call airline#update_statusline()
|
call airline#update_statusline()
|
||||||
|
|
||||||
|
call airline#util#doautocmd('AirlineAfterTheme')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Load an airline theme
|
" Load an airline theme
|
||||||
@@ -93,8 +112,6 @@ function! airline#switch_theme(name, ...)
|
|||||||
unlet! w:airline_lastmode
|
unlet! w:airline_lastmode
|
||||||
call airline#load_theme()
|
call airline#load_theme()
|
||||||
|
|
||||||
call airline#util#doautocmd('AirlineAfterTheme')
|
|
||||||
|
|
||||||
" this is required to prevent clobbering the startup info message, i don't know why...
|
" this is required to prevent clobbering the startup info message, i don't know why...
|
||||||
call airline#check_mode(winnr())
|
call airline#check_mode(winnr())
|
||||||
endfunction
|
endfunction
|
||||||
@@ -125,9 +142,10 @@ endfunction
|
|||||||
|
|
||||||
" Update the statusline
|
" Update the statusline
|
||||||
function! airline#update_statusline()
|
function! airline#update_statusline()
|
||||||
if airline#util#getwinvar(winnr(), 'airline_disabled', 0)
|
if airline#util#stl_disabled(winnr()) || airline#util#is_popup_window(winnr())
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
" TODO: need to ignore popup windows here as well?
|
||||||
let range = filter(range(1, winnr('$')), 'v:val != winnr()')
|
let range = filter(range(1, winnr('$')), 'v:val != winnr()')
|
||||||
" create inactive statusline
|
" create inactive statusline
|
||||||
call airline#update_statusline_inactive(range)
|
call airline#update_statusline_inactive(range)
|
||||||
@@ -138,7 +156,12 @@ function! airline#update_statusline()
|
|||||||
" Now create the active statusline
|
" Now create the active statusline
|
||||||
let w:airline_active = 1
|
let w:airline_active = 1
|
||||||
let context = { 'winnr': winnr(), 'active': 1, 'bufnr': winbufnr(winnr()) }
|
let context = { 'winnr': winnr(), 'active': 1, 'bufnr': winbufnr(winnr()) }
|
||||||
|
try
|
||||||
call s:invoke_funcrefs(context, g:airline_statusline_funcrefs)
|
call s:invoke_funcrefs(context, g:airline_statusline_funcrefs)
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E48:/
|
||||||
|
" Catch: Sandbox mode
|
||||||
|
" no-op
|
||||||
|
endtry
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Function to be called to make all statuslines inactive
|
" Function to be called to make all statuslines inactive
|
||||||
@@ -154,11 +177,11 @@ endfunction
|
|||||||
|
|
||||||
" Function to draw inactive statuslines for inactive windows
|
" Function to draw inactive statuslines for inactive windows
|
||||||
function! airline#update_statusline_inactive(range)
|
function! airline#update_statusline_inactive(range)
|
||||||
if airline#util#getwinvar(winnr(), 'airline_disabled', 0)
|
if airline#util#stl_disabled(winnr())
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
for nr in a:range
|
for nr in a:range
|
||||||
if airline#util#getwinvar(nr, 'airline_disabled', 0)
|
if airline#util#stl_disabled(nr)
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
call setwinvar(nr, 'airline_active', 0)
|
call setwinvar(nr, 'airline_active', 0)
|
||||||
@@ -168,7 +191,12 @@ function! airline#update_statusline_inactive(range)
|
|||||||
\ 'left_sep': g:airline_left_alt_sep,
|
\ 'left_sep': g:airline_left_alt_sep,
|
||||||
\ 'right_sep': g:airline_right_alt_sep }, 'keep')
|
\ 'right_sep': g:airline_right_alt_sep }, 'keep')
|
||||||
endif
|
endif
|
||||||
call s:invoke_funcrefs(context, s:inactive_funcrefs)
|
try
|
||||||
|
call s:invoke_funcrefs(context, g:airline_inactive_funcrefs)
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E48:/
|
||||||
|
" Catch: Sandbox mode
|
||||||
|
" no-op
|
||||||
|
endtry
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -180,7 +208,8 @@ function! s:invoke_funcrefs(context, funcrefs)
|
|||||||
if err == 1
|
if err == 1
|
||||||
let a:context.line = builder.build()
|
let a:context.line = builder.build()
|
||||||
let s:contexts[a:context.winnr] = a:context
|
let s:contexts[a:context.winnr] = a:context
|
||||||
call setwinvar(a:context.winnr, '&statusline', '%!airline#statusline('.a:context.winnr.')')
|
let option = get(g:, 'airline_statusline_ontop', 0) ? '&tabline' : '&statusline'
|
||||||
|
call setwinvar(a:context.winnr, option, '%!airline#statusline('.a:context.winnr.')')
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -190,12 +219,11 @@ function! airline#statusline(winnr)
|
|||||||
if has_key(s:contexts, a:winnr)
|
if has_key(s:contexts, a:winnr)
|
||||||
return '%{airline#check_mode('.a:winnr.')}'.s:contexts[a:winnr].line
|
return '%{airline#check_mode('.a:winnr.')}'.s:contexts[a:winnr].line
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" in rare circumstances this happens...see #276
|
" in rare circumstances this happens...see #276
|
||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Check if mode as changed
|
" Check if mode has changed
|
||||||
function! airline#check_mode(winnr)
|
function! airline#check_mode(winnr)
|
||||||
if !has_key(s:contexts, a:winnr)
|
if !has_key(s:contexts, a:winnr)
|
||||||
return ''
|
return ''
|
||||||
@@ -203,65 +231,83 @@ function! airline#check_mode(winnr)
|
|||||||
let context = s:contexts[a:winnr]
|
let context = s:contexts[a:winnr]
|
||||||
|
|
||||||
if get(w:, 'airline_active', 1)
|
if get(w:, 'airline_active', 1)
|
||||||
let l:m = mode(1)
|
let m = mode(1)
|
||||||
if l:m ==# "i"
|
" Refer :help mode() to see the list of modes
|
||||||
let l:mode = ['insert']
|
" NB: 'let mode' here refers to the display colour _groups_,
|
||||||
elseif l:m[0] ==# "i"
|
" not the literal mode's code (i.e., m). E.g., Select modes
|
||||||
let l:mode = ['insert']
|
" v, S and ^V use 'visual' since they are of similar ilk.
|
||||||
elseif l:m ==# "Rv"
|
" Some modes do not get recognised for status line purposes:
|
||||||
let l:mode =['replace']
|
" no, nov, noV, no^V, !, cv, and ce.
|
||||||
elseif l:m[0] ==# "R"
|
" Mode name displayed is handled in init.vim (g:airline_mode_map).
|
||||||
let l:mode = ['replace']
|
"
|
||||||
elseif l:m[0] =~# '\v(v|V||s|S|)'
|
if m[0] ==# "i"
|
||||||
let l:mode = ['visual']
|
let mode = ['insert'] " Insert modes + submodes (i, ic, ix)
|
||||||
elseif l:m ==# "t"
|
elseif m[0] == "R"
|
||||||
let l:mode = ['terminal']
|
let mode = ['replace'] " Replace modes + submodes (R, Rc, Rv, Rx) (NB: case sensitive as 'r' is a mode)
|
||||||
elseif l:m[0] ==# "c"
|
elseif m[0] =~ '\v(v|V||s|S|)'
|
||||||
let l:mode = ['commandline']
|
let mode = ['visual'] " Visual and Select modes (v, V, ^V, s, S, ^S))
|
||||||
elseif l:m ==# "no" " does not work, most likely, Vim does not refresh the statusline in OP mode
|
elseif m ==# "t"
|
||||||
let l:mode = ['normal']
|
let mode = ['terminal'] " Terminal mode (only has one mode (t))
|
||||||
elseif l:m[0:1] ==# 'ni'
|
elseif m[0] =~ '\v(c|r|!)'
|
||||||
let l:mode = ['normal']
|
let mode = ['commandline'] " c, cv, ce, r, rm, r? (NB: cv and ce stay showing as mode entered from)
|
||||||
let l:m = 'ni'
|
|
||||||
else
|
else
|
||||||
let l:mode = ['normal']
|
let mode = ['normal'] " Normal mode + submodes (n, niI, niR, niV; plus operator pendings no, nov, noV, no^V)
|
||||||
endif
|
endif
|
||||||
if index(['Rv', 'no', 'ni', 'ix', 'ic'], l:m) == -1
|
if exists("*VMInfos") && !empty(VMInfos())
|
||||||
let l:m = l:m[0]
|
" Vim plugin Multiple Cursors https://github.com/mg979/vim-visual-multi
|
||||||
|
let m = 'multi'
|
||||||
endif
|
endif
|
||||||
let w:airline_current_mode = get(g:airline_mode_map, l:m, l:m)
|
" Adjust to handle additional modes, which don't display correctly otherwise
|
||||||
|
if index(['niI', 'niR', 'niV', 'ic', 'ix', 'Rc', 'Rv', 'Rx', 'multi'], m) == -1
|
||||||
|
let m = m[0]
|
||||||
|
endif
|
||||||
|
let w:airline_current_mode = get(g:airline_mode_map, m, m)
|
||||||
else
|
else
|
||||||
let l:mode = ['inactive']
|
let mode = ['inactive']
|
||||||
let w:airline_current_mode = get(g:airline_mode_map, '__')
|
let w:airline_current_mode = get(g:airline_mode_map, '__')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:airline_detect_modified && &modified
|
if g:airline_detect_modified && &modified
|
||||||
call add(l:mode, 'modified')
|
call add(mode, 'modified')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:airline_detect_paste && &paste
|
if g:airline_detect_paste && &paste
|
||||||
call add(l:mode, 'paste')
|
call add(mode, 'paste')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:airline_detect_crypt && exists("+key") && !empty(&key)
|
if g:airline_detect_crypt && exists("+key") && !empty(&key)
|
||||||
call add(l:mode, 'crypt')
|
call add(mode, 'crypt')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:airline_detect_spell && &spell
|
if g:airline_detect_spell && &spell
|
||||||
call add(l:mode, 'spell')
|
call add(mode, 'spell')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if &readonly || ! &modifiable
|
if &readonly || ! &modifiable
|
||||||
call add(l:mode, 'readonly')
|
call add(mode, 'readonly')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let mode_string = join(l:mode)
|
let mode_string = join(mode)
|
||||||
if get(w:, 'airline_lastmode', '') != mode_string
|
if get(w:, 'airline_lastmode', '') != mode_string
|
||||||
call airline#highlighter#highlight_modified_inactive(context.bufnr)
|
call airline#highlighter#highlight_modified_inactive(context.bufnr)
|
||||||
call airline#highlighter#highlight(l:mode, context.bufnr)
|
call airline#highlighter#highlight(mode, string(context.bufnr))
|
||||||
call airline#util#doautocmd('AirlineModeChanged')
|
call airline#util#doautocmd('AirlineModeChanged')
|
||||||
let w:airline_lastmode = mode_string
|
let w:airline_lastmode = mode_string
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! airline#update_tabline()
|
||||||
|
if get(g:, 'airline_statusline_ontop', 0)
|
||||||
|
call airline#extensions#tabline#redraw()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#mode_changed()
|
||||||
|
" airline#visual_active
|
||||||
|
" Boolean: for when to get visual wordcount
|
||||||
|
" needed for the wordcount extension
|
||||||
|
let g:airline#visual_active = (mode() =~? '[vs]')
|
||||||
|
call airline#update_tabline()
|
||||||
|
endfunction
|
||||||
|
|||||||
+134
-11
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 C.Brabandt et al.
|
" MIT License. Copyright (c) 2013-2021 Christian Brabandt et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -6,6 +6,7 @@ scriptencoding utf-8
|
|||||||
let s:untracked_jobs = {}
|
let s:untracked_jobs = {}
|
||||||
let s:mq_jobs = {}
|
let s:mq_jobs = {}
|
||||||
let s:po_jobs = {}
|
let s:po_jobs = {}
|
||||||
|
let s:clean_jobs = {}
|
||||||
|
|
||||||
" Generic functions handling on exit event of the various async functions
|
" Generic functions handling on exit event of the various async functions
|
||||||
function! s:untracked_output(dict, buf)
|
function! s:untracked_output(dict, buf)
|
||||||
@@ -53,6 +54,57 @@ function! s:valid_dir(dir)
|
|||||||
return a:dir
|
return a:dir
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! airline#async#vcs_untracked(config, file, vcs)
|
||||||
|
if g:airline#init#vim_async
|
||||||
|
" Vim 8 with async support
|
||||||
|
noa call airline#async#vim_vcs_untracked(a:config, a:file)
|
||||||
|
else
|
||||||
|
" nvim async or vim without job-feature
|
||||||
|
noa call airline#async#nvim_vcs_untracked(a:config, a:file, a:vcs)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:set_clean_variables(file, vcs, val)
|
||||||
|
let var=getbufvar(fnameescape(a:file), 'buffer_vcs_config', {})
|
||||||
|
if has_key(var, a:vcs) && has_key(var[a:vcs], 'dirty') &&
|
||||||
|
\ type(getbufvar(fnameescape(a:file), 'buffer_vcs_config')) == type({})
|
||||||
|
let var[a:vcs].dirty=a:val
|
||||||
|
try
|
||||||
|
call setbufvar(fnameescape(a:file), 'buffer_vcs_config', var)
|
||||||
|
unlet! b:airline_head
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:set_clean_jobs_variable(vcs, file, id)
|
||||||
|
if !has_key(s:clean_jobs, a:vcs)
|
||||||
|
let s:clean_jobs[a:vcs] = {}
|
||||||
|
endif
|
||||||
|
let s:clean_jobs[a:vcs][a:file]=a:id
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:on_exit_clean(...) dict abort
|
||||||
|
let buf=self.buf
|
||||||
|
call s:set_clean_variables(self.file, self.vcs, !empty(buf))
|
||||||
|
if has_key(get(s:clean_jobs, self.vcs, {}), self.file)
|
||||||
|
call remove(s:clean_jobs[self.vcs], self.file)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#async#vcs_clean(cmd, file, vcs)
|
||||||
|
if g:airline#init#vim_async
|
||||||
|
" Vim 8 with async support
|
||||||
|
noa call airline#async#vim_vcs_clean(a:cmd, a:file, a:vcs)
|
||||||
|
elseif has("nvim")
|
||||||
|
" nvim async
|
||||||
|
noa call airline#async#nvim_vcs_clean(a:cmd, a:file, a:vcs)
|
||||||
|
else
|
||||||
|
" Vim pre 8 using system()
|
||||||
|
call airline#async#vim7_vcs_clean(a:cmd, a:file, a:vcs)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
if v:version >= 800 && has("job")
|
if v:version >= 800 && has("job")
|
||||||
" Vim 8.0 with Job feature
|
" Vim 8.0 with Job feature
|
||||||
" TODO: Check if we need the cwd option for the job_start() functions
|
" TODO: Check if we need the cwd option for the job_start() functions
|
||||||
@@ -79,10 +131,10 @@ if v:version >= 800 && has("job")
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#async#get_mq_async(cmd, file)
|
function! airline#async#get_mq_async(cmd, file)
|
||||||
if g:airline#init#is_windows && &shell =~ 'cmd'
|
if g:airline#init#is_windows && &shell =~ 'cmd\|powershell'
|
||||||
let cmd = a:cmd
|
let cmd = a:cmd
|
||||||
else
|
else
|
||||||
let cmd = ['sh', '-c', a:cmd]
|
let cmd = [&shell, &shellcmdflag, a:cmd]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let options = {'cmd': a:cmd, 'buf': '', 'file': a:file}
|
let options = {'cmd': a:cmd, 'buf': '', 'file': a:file}
|
||||||
@@ -101,9 +153,12 @@ if v:version >= 800 && has("job")
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#async#get_msgfmt_stat(cmd, file)
|
function! airline#async#get_msgfmt_stat(cmd, file)
|
||||||
if g:airline#init#is_windows || !executable('msgfmt')
|
if !executable('msgfmt')
|
||||||
" no msgfmt on windows?
|
" no msgfmt
|
||||||
return
|
return
|
||||||
|
endif
|
||||||
|
if g:airline#init#is_windows
|
||||||
|
let cmd = 'cmd /C ' . a:cmd. shellescape(a:file)
|
||||||
else
|
else
|
||||||
let cmd = ['sh', '-c', a:cmd. shellescape(a:file)]
|
let cmd = ['sh', '-c', a:cmd. shellescape(a:file)]
|
||||||
endif
|
endif
|
||||||
@@ -123,11 +178,37 @@ if v:version >= 800 && has("job")
|
|||||||
let s:po_jobs[a:file] = id
|
let s:po_jobs[a:file] = id
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! airline#async#vim_vcs_clean(cmd, file, vcs)
|
||||||
|
if g:airline#init#is_windows && &shell =~ 'cmd\|powershell'
|
||||||
|
let cmd = a:cmd
|
||||||
|
else
|
||||||
|
let cmd = [&shell, &shellcmdflag, a:cmd]
|
||||||
|
endif
|
||||||
|
|
||||||
|
let options = {'buf': '', 'vcs': a:vcs, 'file': a:file}
|
||||||
|
let jobs = get(s:clean_jobs, a:vcs, {})
|
||||||
|
if has_key(jobs, a:file)
|
||||||
|
if job_status(get(jobs, a:file)) == 'run'
|
||||||
|
return
|
||||||
|
elseif has_key(jobs, a:file)
|
||||||
|
" still running
|
||||||
|
return
|
||||||
|
" jobs dict should be cleaned on exit, so not needed here
|
||||||
|
" call remove(jobs, a:file)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let id = job_start(cmd, {
|
||||||
|
\ 'err_io': 'null',
|
||||||
|
\ 'out_cb': function('s:on_stdout', options),
|
||||||
|
\ 'close_cb': function('s:on_exit_clean', options)})
|
||||||
|
call s:set_clean_jobs_variable(a:vcs, a:file, id)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! airline#async#vim_vcs_untracked(config, file)
|
function! airline#async#vim_vcs_untracked(config, file)
|
||||||
if g:airline#init#is_windows && &shell =~ 'cmd'
|
if g:airline#init#is_windows && &shell =~ 'cmd\|powershell'
|
||||||
let cmd = a:config['cmd'] . shellescape(a:file)
|
let cmd = a:config['cmd'] . shellescape(a:file)
|
||||||
else
|
else
|
||||||
let cmd = ['sh', '-c', a:config['cmd'] . shellescape(a:file)]
|
let cmd = [&shell, &shellcmdflag, a:config['cmd'] . shellescape(a:file)]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let options = {'cfg': a:config, 'buf': '', 'file': a:file}
|
let options = {'cfg': a:config, 'buf': '', 'file': a:file}
|
||||||
@@ -185,10 +266,10 @@ elseif has("nvim")
|
|||||||
\ 'on_stderr': function('s:nvim_output_handler'),
|
\ 'on_stderr': function('s:nvim_output_handler'),
|
||||||
\ 'on_exit': function('s:nvim_mq_job_handler')
|
\ 'on_exit': function('s:nvim_mq_job_handler')
|
||||||
\ }
|
\ }
|
||||||
if g:airline#init#is_windows && &shell =~ 'cmd'
|
if g:airline#init#is_windows && &shell =~ 'cmd\|powershell'
|
||||||
let cmd = a:cmd
|
let cmd = a:cmd
|
||||||
else
|
else
|
||||||
let cmd = ['sh', '-c', a:cmd]
|
let cmd = [&shell, &shellcmdflag, a:cmd]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if has_key(s:mq_jobs, a:file)
|
if has_key(s:mq_jobs, a:file)
|
||||||
@@ -207,11 +288,11 @@ elseif has("nvim")
|
|||||||
\ 'on_stderr': function('s:nvim_output_handler'),
|
\ 'on_stderr': function('s:nvim_output_handler'),
|
||||||
\ 'on_exit': function('s:nvim_po_job_handler')
|
\ 'on_exit': function('s:nvim_po_job_handler')
|
||||||
\ }
|
\ }
|
||||||
if g:airline#init#is_windows && &shell =~ 'cmd'
|
if g:airline#init#is_windows && &shell =~ 'cmd\|powershell'
|
||||||
" no msgfmt on windows?
|
" no msgfmt on windows?
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
let cmd = ['sh', '-c', a:cmd. shellescape(a:file)]
|
let cmd = [&shell, &shellcmdflag, a:cmd. shellescape(a:file)]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if has_key(s:po_jobs, a:file)
|
if has_key(s:po_jobs, a:file)
|
||||||
@@ -221,6 +302,34 @@ elseif has("nvim")
|
|||||||
let s:po_jobs[a:file] = id
|
let s:po_jobs[a:file] = id
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! airline#async#nvim_vcs_clean(cmd, file, vcs)
|
||||||
|
let config = {
|
||||||
|
\ 'buf': '',
|
||||||
|
\ 'vcs': a:vcs,
|
||||||
|
\ 'file': a:file,
|
||||||
|
\ 'cwd': s:valid_dir(fnamemodify(a:file, ':p:h')),
|
||||||
|
\ 'on_stdout': function('s:nvim_output_handler'),
|
||||||
|
\ 'on_stderr': function('s:nvim_output_handler'),
|
||||||
|
\ 'on_exit': function('s:on_exit_clean')}
|
||||||
|
if g:airline#init#is_windows && &shell =~ 'cmd\|powershell'
|
||||||
|
let cmd = a:cmd
|
||||||
|
else
|
||||||
|
let cmd = [&shell, &shellcmdflag, a:cmd]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !has_key(s:clean_jobs, a:vcs)
|
||||||
|
let s:clean_jobs[a:vcs] = {}
|
||||||
|
endif
|
||||||
|
if has_key(s:clean_jobs[a:vcs], a:file)
|
||||||
|
" still running
|
||||||
|
return
|
||||||
|
" jobs dict should be cleaned on exit, so not needed here
|
||||||
|
" call remove(s:clean_jobs[a:vcs], a:file)
|
||||||
|
endif
|
||||||
|
let id = jobstart(cmd, config)
|
||||||
|
call s:set_clean_jobs_variable(a:vcs, a:file, id)
|
||||||
|
endfunction
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Should work in either Vim pre 8 or Nvim
|
" Should work in either Vim pre 8 or Nvim
|
||||||
@@ -257,3 +366,17 @@ function! airline#async#nvim_vcs_untracked(cfg, file, vcs)
|
|||||||
call airline#extensions#branch#update_untracked_config(a:file, a:vcs)
|
call airline#extensions#branch#update_untracked_config(a:file, a:vcs)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! airline#async#vim7_vcs_clean(cmd, file, vcs)
|
||||||
|
" Vim pre 8, fallback using system()
|
||||||
|
" don't want to to see error messages
|
||||||
|
if g:airline#init#is_windows && &shell =~ 'cmd'
|
||||||
|
let cmd = a:cmd .' 2>nul'
|
||||||
|
elseif g:airline#init#is_windows && &shell =~ 'powerline'
|
||||||
|
let cmd = a:cmd .' 2> $null'
|
||||||
|
else
|
||||||
|
let cmd = a:cmd .' 2>/dev/null'
|
||||||
|
endif
|
||||||
|
let output=system(cmd)
|
||||||
|
call s:set_clean_variables(a:file, a:vcs, !empty(output))
|
||||||
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -90,7 +90,7 @@ function! s:prototype.build() dict
|
|||||||
" need to fix highlighting groups, since we
|
" need to fix highlighting groups, since we
|
||||||
" have skipped a section, we actually need
|
" have skipped a section, we actually need
|
||||||
" the previous previous group and so the
|
" the previous previous group and so the
|
||||||
" seperator goes from the previous previous group
|
" separator goes from the previous previous group
|
||||||
" to the current group
|
" to the current group
|
||||||
let pgroup = group
|
let pgroup = group
|
||||||
endif
|
endif
|
||||||
@@ -106,12 +106,12 @@ function! s:prototype.build() dict
|
|||||||
let line .= '%#'.group.'#'
|
let line .= '%#'.group.'#'
|
||||||
elseif split
|
elseif split
|
||||||
if !is_empty
|
if !is_empty
|
||||||
let line .= s:get_transitioned_seperator(self, prev_group, group, side)
|
let line .= s:get_transitioned_separator(self, prev_group, group, side)
|
||||||
endif
|
endif
|
||||||
let split = 0
|
let split = 0
|
||||||
else
|
else
|
||||||
if !is_empty
|
if !is_empty
|
||||||
let line .= s:get_seperator(self, prev_group, group, side)
|
let line .= s:get_separator(self, prev_group, group, side)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let line .= is_empty ? '' : s:get_accented_line(self, group, contents)
|
let line .= is_empty ? '' : s:get_accented_line(self, group, contents)
|
||||||
@@ -133,14 +133,11 @@ function! airline#builder#should_change_group(group1, group2)
|
|||||||
endif
|
endif
|
||||||
let color1 = airline#highlighter#get_highlight(a:group1)
|
let color1 = airline#highlighter#get_highlight(a:group1)
|
||||||
let color2 = airline#highlighter#get_highlight(a:group2)
|
let color2 = airline#highlighter#get_highlight(a:group2)
|
||||||
if g:airline_gui_mode ==# 'gui'
|
|
||||||
return color1[1] != color2[1] || color1[0] != color2[0]
|
return color1[1] != color2[1] || color1[0] != color2[0]
|
||||||
else
|
\ || color1[2] != color2[2] || color1[3] != color2[3]
|
||||||
return color1[3] != color2[3] || color1[2] != color2[2]
|
|
||||||
endif
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_transitioned_seperator(self, prev_group, group, side)
|
function! s:get_transitioned_separator(self, prev_group, group, side)
|
||||||
let line = ''
|
let line = ''
|
||||||
if get(a:self._context, 'tabline', 0) && get(g:, 'airline#extensions#tabline#alt_sep', 0) && a:group ==# 'airline_tabsel' && a:side
|
if get(a:self._context, 'tabline', 0) && get(g:, 'airline#extensions#tabline#alt_sep', 0) && a:group ==# 'airline_tabsel' && a:side
|
||||||
call airline#highlighter#add_separator(a:prev_group, a:group, 0)
|
call airline#highlighter#add_separator(a:prev_group, a:group, 0)
|
||||||
@@ -155,9 +152,9 @@ function! s:get_transitioned_seperator(self, prev_group, group, side)
|
|||||||
return line
|
return line
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_seperator(self, prev_group, group, side)
|
function! s:get_separator(self, prev_group, group, side)
|
||||||
if airline#builder#should_change_group(a:prev_group, a:group)
|
if airline#builder#should_change_group(a:prev_group, a:group)
|
||||||
return s:get_transitioned_seperator(a:self, a:prev_group, a:group, a:side)
|
return s:get_transitioned_separator(a:self, a:prev_group, a:group, a:side)
|
||||||
else
|
else
|
||||||
return a:side ? a:self._context.left_alt_sep : a:self._context.right_alt_sep
|
return a:side ? a:self._context.left_alt_sep : a:self._context.right_alt_sep
|
||||||
endif
|
endif
|
||||||
@@ -201,20 +198,27 @@ function! s:section_is_empty(self, content)
|
|||||||
if get(w:, 'airline_skip_empty_sections', -1) == 0
|
if get(w:, 'airline_skip_empty_sections', -1) == 0
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
" assume accents sections to be never empty
|
|
||||||
" (avoides, that on startup the mode message becomes empty)
|
" special case: When the content is %=, that is the
|
||||||
if match(a:content, '%#__accent_[^#]*#.*__restore__#') > -1
|
" separation marker, which switches between left- and
|
||||||
return 0
|
" right-aligned content.
|
||||||
endif
|
" Consider that to be empty, so that the previous previous
|
||||||
if empty(a:content)
|
" group is correctly remembered in the builder() function
|
||||||
|
if empty(a:content) || a:content is# '%='
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
let list=matchlist(a:content, '%{\zs.\{-}\ze}', 1, start)
|
|
||||||
if empty(list)
|
let stripped = substitute(a:content,
|
||||||
return 0 " no function in statusline text
|
\ '\(%{.*}\|%#__accent_[^#]*#\|%#__restore__#\|%( \| %)\)', '', 'g')
|
||||||
|
|
||||||
|
if !empty(stripped)
|
||||||
|
return 0 " There is content in the statusline
|
||||||
endif
|
endif
|
||||||
while len(list) > 0
|
|
||||||
let expr = list[0]
|
let exprlist = []
|
||||||
|
call substitute(a:content, '%{\([^}]*\)}', '\=add(exprlist, submatch(1))', 'g')
|
||||||
|
|
||||||
|
for expr in exprlist
|
||||||
try
|
try
|
||||||
" catch all exceptions, just in case
|
" catch all exceptions, just in case
|
||||||
if !empty(eval(expr))
|
if !empty(eval(expr))
|
||||||
@@ -223,9 +227,7 @@ function! s:section_is_empty(self, content)
|
|||||||
catch
|
catch
|
||||||
return 0
|
return 0
|
||||||
endtry
|
endtry
|
||||||
let start += 1
|
endfor
|
||||||
let list=matchlist(a:content, '%{\zs.\{-}\ze}', 1, start)
|
|
||||||
endw
|
|
||||||
return 1
|
return 1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
+172
-24
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -23,14 +23,26 @@ endfunction
|
|||||||
let s:script_path = tolower(resolve(expand('<sfile>:p:h')))
|
let s:script_path = tolower(resolve(expand('<sfile>:p:h')))
|
||||||
|
|
||||||
let s:filetype_overrides = {
|
let s:filetype_overrides = {
|
||||||
\ 'nerdtree': [ get(g:, 'NERDTreeStatusline', 'NERD'), '' ],
|
\ 'coc-explorer': [ 'CoC Explorer', '' ],
|
||||||
|
\ 'defx': ['defx', '%{b:defx.paths[0]}'],
|
||||||
|
\ 'fugitive': ['fugitive', '%{airline#util#wrap(airline#extensions#branch#get_head(),80)}'],
|
||||||
|
\ 'floggraph': [ 'Flog', '%{get(b:, "flog_status_summary", "")}' ],
|
||||||
\ 'gundo': [ 'Gundo', '' ],
|
\ 'gundo': [ 'Gundo', '' ],
|
||||||
\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],
|
\ 'help': [ 'Help', '%f' ],
|
||||||
\ 'minibufexpl': [ 'MiniBufExplorer', '' ],
|
\ 'minibufexpl': [ 'MiniBufExplorer', '' ],
|
||||||
\ 'startify': [ 'startify', '' ],
|
\ 'startify': [ 'startify', '' ],
|
||||||
\ 'vim-plug': [ 'Plugins', '' ],
|
\ 'vim-plug': [ 'Plugins', '' ],
|
||||||
|
\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],
|
||||||
|
\ 'vimshell': ['vimshell','%{vimshell#get_status_string()}'],
|
||||||
|
\ 'vaffle' : [ 'Vaffle', '%{b:vaffle.dir}' ],
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#nerdtree_statusline', 1)
|
||||||
|
let s:filetype_overrides['nerdtree'] = [ get(g:, 'NERDTreeStatusline', 'NERD'), '' ]
|
||||||
|
else
|
||||||
|
let s:filetype_overrides['nerdtree'] = ['NERDTree', '']
|
||||||
|
endif
|
||||||
|
|
||||||
let s:filetype_regex_overrides = {}
|
let s:filetype_regex_overrides = {}
|
||||||
|
|
||||||
function! s:check_defined_section(name)
|
function! s:check_defined_section(name)
|
||||||
@@ -58,34 +70,38 @@ function! airline#extensions#apply_left_override(section1, section2)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#apply(...)
|
function! airline#extensions#apply(...)
|
||||||
|
let filetype_overrides = get(s:, 'filetype_overrides', {})
|
||||||
|
call extend(filetype_overrides, get(g:, 'airline_filetype_overrides', {}), 'force')
|
||||||
|
|
||||||
if s:is_excluded_window()
|
if s:is_excluded_window()
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if &buftype == 'help'
|
|
||||||
call airline#extensions#apply_left_override('Help', '%f')
|
|
||||||
let w:airline_section_x = ''
|
|
||||||
let w:airline_section_y = ''
|
|
||||||
let w:airline_render_right = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
if &buftype == 'terminal'
|
if &buftype == 'terminal'
|
||||||
let w:airline_section_x = ''
|
let w:airline_section_x = ''
|
||||||
let w:airline_section_y = ''
|
let w:airline_section_y = ''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if &previewwindow
|
if &previewwindow && empty(get(w:, 'airline_section_a', ''))
|
||||||
let w:airline_section_a = 'Preview'
|
let w:airline_section_a = 'Preview'
|
||||||
let w:airline_section_b = ''
|
let w:airline_section_b = ''
|
||||||
let w:airline_section_c = bufname(winbufnr(winnr()))
|
let w:airline_section_c = bufname(winbufnr(winnr()))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if has_key(s:filetype_overrides, &ft)
|
if has_key(filetype_overrides, &ft) &&
|
||||||
let args = s:filetype_overrides[&ft]
|
\ ((&filetype == 'help' && &buftype == 'help') || &filetype !~ 'help')
|
||||||
|
" for help files only override it, if the buftype is also of type 'help',
|
||||||
|
" else it would trigger when editing Vim help files
|
||||||
|
let args = filetype_overrides[&ft]
|
||||||
call airline#extensions#apply_left_override(args[0], args[1])
|
call airline#extensions#apply_left_override(args[0], args[1])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if &buftype == 'help'
|
||||||
|
let w:airline_section_x = ''
|
||||||
|
let w:airline_section_y = ''
|
||||||
|
let w:airline_render_right = 1
|
||||||
|
endif
|
||||||
|
|
||||||
for item in items(s:filetype_regex_overrides)
|
for item in items(s:filetype_regex_overrides)
|
||||||
if match(&ft, item[0]) >= 0
|
if match(&ft, item[0]) >= 0
|
||||||
call airline#extensions#apply_left_override(item[1][0], item[1][1])
|
call airline#extensions#apply_left_override(item[1][0], item[1][1])
|
||||||
@@ -126,7 +142,9 @@ function! airline#extensions#load()
|
|||||||
call airline#extensions#{ext}#init(s:ext)
|
call airline#extensions#{ext}#init(s:ext)
|
||||||
catch /^Vim\%((\a\+)\)\=:E117/ " E117, function does not exist
|
catch /^Vim\%((\a\+)\)\=:E117/ " E117, function does not exist
|
||||||
call airline#util#warning("Extension '".ext."' not installed, ignoring!")
|
call airline#util#warning("Extension '".ext."' not installed, ignoring!")
|
||||||
|
continue
|
||||||
endtry
|
endtry
|
||||||
|
call add(s:loaded_ext, ext)
|
||||||
endfor
|
endfor
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@@ -134,27 +152,50 @@ function! airline#extensions#load()
|
|||||||
call airline#extensions#quickfix#init(s:ext)
|
call airline#extensions#quickfix#init(s:ext)
|
||||||
call add(s:loaded_ext, 'quickfix')
|
call add(s:loaded_ext, 'quickfix')
|
||||||
|
|
||||||
if get(g:, 'loaded_unite', 0)
|
if get(g:, 'loaded_unite', 0) && get(g:, 'airline#extensions#unite#enabled', 1)
|
||||||
call airline#extensions#unite#init(s:ext)
|
call airline#extensions#unite#init(s:ext)
|
||||||
call add(s:loaded_ext, 'unite')
|
call add(s:loaded_ext, 'unite')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if get(g:, 'loaded_denite', 0)
|
if get(g:, 'loaded_denite', 0) && get(g:, 'airline#extensions#denite#enabled', 1)
|
||||||
call airline#extensions#denite#init(s:ext)
|
call airline#extensions#denite#init(s:ext)
|
||||||
call add(s:loaded_ext, 'denite')
|
call add(s:loaded_ext, 'denite')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'loaded_gina', 0) && get(g:, 'airline#extensions#gina#enabled', 1)
|
||||||
|
call airline#extensions#gina#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'gina')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'loaded_fern', 0) && get(g:, 'airline#extensions#fern#enabled', 1)
|
||||||
|
call airline#extensions#fern#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'fern')
|
||||||
|
endif
|
||||||
|
|
||||||
if exists(':NetrwSettings')
|
if exists(':NetrwSettings')
|
||||||
call airline#extensions#netrw#init(s:ext)
|
call airline#extensions#netrw#init(s:ext)
|
||||||
call add(s:loaded_ext, 'netrw')
|
call add(s:loaded_ext, 'netrw')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if has("terminal") || has('nvim')
|
" fzf buffers are also terminal buffers, so this must be above term.
|
||||||
|
if exists(':FZF') && get(g:, 'airline#extensions#fzf#enabled', 1)
|
||||||
|
call airline#extensions#fzf#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'fzf')
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Vim-CMake buffers are also terminal buffers, so this must be above term.
|
||||||
|
if get(g:, 'loaded_cmake', 0) && get(g:, 'airline#extensions#vimcmake#enabled', 1)
|
||||||
|
call airline#extensions#vimcmake#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'vimcmake')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (has("terminal") || has('nvim')) &&
|
||||||
|
\ get(g:, 'airline#extensions#term#enabled', 1)
|
||||||
call airline#extensions#term#init(s:ext)
|
call airline#extensions#term#init(s:ext)
|
||||||
call add(s:loaded_ext, 'term')
|
call add(s:loaded_ext, 'term')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#ycm#enabled', 0)
|
if get(g:, 'airline#extensions#ycm#enabled', 0) && exists('g:loaded_youcompleteme')
|
||||||
call airline#extensions#ycm#init(s:ext)
|
call airline#extensions#ycm#init(s:ext)
|
||||||
call add(s:loaded_ext, 'ycm')
|
call add(s:loaded_ext, 'ycm')
|
||||||
endif
|
endif
|
||||||
@@ -188,8 +229,18 @@ function! airline#extensions#load()
|
|||||||
call add(s:loaded_ext, 'undotree')
|
call add(s:loaded_ext, 'undotree')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if exists(':RTM')
|
||||||
|
call airline#extensions#vimodoro#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'vimodoro')
|
||||||
|
endif
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#hunks#enabled', 1)
|
if get(g:, 'airline#extensions#hunks#enabled', 1)
|
||||||
\ && (exists('g:loaded_signify') || exists('g:loaded_gitgutter') || exists('g:loaded_changes') || exists('g:loaded_quickfixsigns'))
|
\ && (exists('g:loaded_signify')
|
||||||
|
\ || exists('g:loaded_gitgutter')
|
||||||
|
\ || exists('g:loaded_changes')
|
||||||
|
\ || exists('g:loaded_quickfixsigns')
|
||||||
|
\ || exists(':Gitsigns')
|
||||||
|
\ || exists(':CocCommand'))
|
||||||
call airline#extensions#hunks#init(s:ext)
|
call airline#extensions#hunks#init(s:ext)
|
||||||
call add(s:loaded_ext, 'hunks')
|
call add(s:loaded_ext, 'hunks')
|
||||||
endif
|
endif
|
||||||
@@ -205,6 +256,27 @@ function! airline#extensions#load()
|
|||||||
call airline#extensions#tagbar#init(s:ext)
|
call airline#extensions#tagbar#init(s:ext)
|
||||||
call add(s:loaded_ext, 'tagbar')
|
call add(s:loaded_ext, 'tagbar')
|
||||||
endif
|
endif
|
||||||
|
if get(g:, 'airline#extensions#taglist#enabled', 1) && exists(':TlistShowTag')
|
||||||
|
call airline#extensions#taglist#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'taglist')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#vista#enabled', 1)
|
||||||
|
\ && exists(':Vista')
|
||||||
|
call airline#extensions#vista#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'vista')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#bookmark#enabled', 1)
|
||||||
|
\ && exists(':BookmarkToggle')
|
||||||
|
call airline#extensions#bookmark#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'bookmark')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#scrollbar#enabled', 0)
|
||||||
|
call airline#extensions#scrollbar#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'scrollbar')
|
||||||
|
endif
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#csv#enabled', 1)
|
if get(g:, 'airline#extensions#csv#enabled', 1)
|
||||||
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
|
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
|
||||||
@@ -212,13 +284,18 @@ function! airline#extensions#load()
|
|||||||
call add(s:loaded_ext, 'csv')
|
call add(s:loaded_ext, 'csv')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#zoomwintab#enabled', 0)
|
||||||
|
call airline#extensions#zoomwintab#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'zoomwintab')
|
||||||
|
endif
|
||||||
|
|
||||||
if exists(':VimShell')
|
if exists(':VimShell')
|
||||||
let s:filetype_overrides['vimshell'] = ['vimshell','%{vimshell#get_status_string()}']
|
|
||||||
let s:filetype_regex_overrides['^int-'] = ['vimshell','%{substitute(&ft, "int-", "", "")}']
|
let s:filetype_regex_overrides['^int-'] = ['vimshell','%{substitute(&ft, "int-", "", "")}']
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#branch#enabled', 1) && (
|
if get(g:, 'airline#extensions#branch#enabled', 1) && (
|
||||||
\ airline#util#has_fugitive() ||
|
\ airline#util#has_fugitive() ||
|
||||||
|
\ airline#util#has_gina() ||
|
||||||
\ airline#util#has_lawrencium() ||
|
\ airline#util#has_lawrencium() ||
|
||||||
\ airline#util#has_vcscommand() ||
|
\ airline#util#has_vcscommand() ||
|
||||||
\ airline#util#has_custom_scm())
|
\ airline#util#has_custom_scm())
|
||||||
@@ -239,9 +316,20 @@ function! airline#extensions#load()
|
|||||||
call add(s:loaded_ext, 'fugitiveline')
|
call add(s:loaded_ext, 'fugitiveline')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (get(g:, 'airline#extensions#virtualenv#enabled', 1) && (exists(':VirtualEnvList') || isdirectory($VIRTUAL_ENV)))
|
" NOTE: This means that if both virtualenv and poetv are enabled and
|
||||||
|
" available, poetv silently takes precedence and the virtualenv
|
||||||
|
" extension won't be initialized. Since both extensions currently just
|
||||||
|
" add a virtualenv identifier section to the airline, this seems
|
||||||
|
" acceptable.
|
||||||
|
if (get(g:, 'airline#extensions#poetv#enabled', 0) && (exists(':PoetvActivate')))
|
||||||
|
call airline#extensions#poetv#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'poetv')
|
||||||
|
elseif (get(g:, 'airline#extensions#virtualenv#enabled', 0) && (exists(':VirtualEnvList')))
|
||||||
call airline#extensions#virtualenv#init(s:ext)
|
call airline#extensions#virtualenv#init(s:ext)
|
||||||
call add(s:loaded_ext, 'virtualenv')
|
call add(s:loaded_ext, 'virtualenv')
|
||||||
|
elseif (get(g:, 'airline#extensions#poetv#enabled', 0) && (isdirectory($VIRTUAL_ENV)))
|
||||||
|
call airline#extensions#poetv#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'poetv')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (get(g:, 'airline#extensions#eclim#enabled', 1) && exists(':ProjectCreate'))
|
if (get(g:, 'airline#extensions#eclim#enabled', 1) && exists(':ProjectCreate'))
|
||||||
@@ -260,6 +348,23 @@ function! airline#extensions#load()
|
|||||||
call add(s:loaded_ext, 'ale')
|
call add(s:loaded_ext, 'ale')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if (get(g:, 'airline#extensions#lsp#enabled', 1) && exists(':LspDeclaration'))
|
||||||
|
call airline#extensions#lsp#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'lsp')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (get(g:, 'airline#extensions#nvimlsp#enabled', 1)
|
||||||
|
\ && has('nvim')
|
||||||
|
\ && luaeval('vim.lsp ~= nil'))
|
||||||
|
call airline#extensions#nvimlsp#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'nvimlsp')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (get(g:, 'airline#extensions#coc#enabled', 1) && exists(':CocCommand'))
|
||||||
|
call airline#extensions#coc#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'coc')
|
||||||
|
endif
|
||||||
|
|
||||||
if (get(g:, 'airline#extensions#languageclient#enabled', 1) && exists(':LanguageClientStart'))
|
if (get(g:, 'airline#extensions#languageclient#enabled', 1) && exists(':LanguageClientStart'))
|
||||||
call airline#extensions#languageclient#init(s:ext)
|
call airline#extensions#languageclient#init(s:ext)
|
||||||
call add(s:loaded_ext, 'languageclient')
|
call add(s:loaded_ext, 'languageclient')
|
||||||
@@ -300,7 +405,7 @@ function! airline#extensions#load()
|
|||||||
call add(s:loaded_ext, 'promptline')
|
call add(s:loaded_ext, 'promptline')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#nrrwrgn#enabled', 1) && exists(':NR') == 2
|
if get(g:, 'airline#extensions#nrrwrgn#enabled', 1) && get(g:, 'loaded_nrrw_rgn', 0)
|
||||||
call airline#extensions#nrrwrgn#init(s:ext)
|
call airline#extensions#nrrwrgn#init(s:ext)
|
||||||
call add(s:loaded_ext, 'nrrwrgn')
|
call add(s:loaded_ext, 'nrrwrgn')
|
||||||
endif
|
endif
|
||||||
@@ -315,17 +420,27 @@ function! airline#extensions#load()
|
|||||||
call add(s:loaded_ext, 'capslock')
|
call add(s:loaded_ext, 'capslock')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if (get(g:, 'airline#extensions#codeium#enabled', 1) && get(g:, 'loaded_codeium', 0))
|
||||||
|
call airline#extensions#codeium#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'codeium')
|
||||||
|
endif
|
||||||
|
|
||||||
if (get(g:, 'airline#extensions#gutentags#enabled', 1) && get(g:, 'loaded_gutentags', 0))
|
if (get(g:, 'airline#extensions#gutentags#enabled', 1) && get(g:, 'loaded_gutentags', 0))
|
||||||
call airline#extensions#gutentags#init(s:ext)
|
call airline#extensions#gutentags#init(s:ext)
|
||||||
call add(s:loaded_ext, 'gutentags')
|
call add(s:loaded_ext, 'gutentags')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#gen_tags#enabled', 1) && (get(g:, 'loaded_gentags#gtags', 0) || get(g:, 'loaded_gentags#ctags', 0))
|
||||||
|
call airline#extensions#gen_tags#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'gen_tags')
|
||||||
|
endif
|
||||||
|
|
||||||
if (get(g:, 'airline#extensions#grepper#enabled', 1) && get(g:, 'loaded_grepper', 0))
|
if (get(g:, 'airline#extensions#grepper#enabled', 1) && get(g:, 'loaded_grepper', 0))
|
||||||
call airline#extensions#grepper#init(s:ext)
|
call airline#extensions#grepper#init(s:ext)
|
||||||
call add(s:loaded_ext, 'grepper')
|
call add(s:loaded_ext, 'grepper')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (get(g:, 'airline#extensions#xkblayout#enabled', 1) && exists('g:XkbSwitchLib'))
|
if get(g:, 'airline#extensions#xkblayout#enabled', 1) && (exists('g:XkbSwitchLib') || exists('*FcitxCurrentIM') || has('nvim'))
|
||||||
call airline#extensions#xkblayout#init(s:ext)
|
call airline#extensions#xkblayout#init(s:ext)
|
||||||
call add(s:loaded_ext, 'xkblayout')
|
call add(s:loaded_ext, 'xkblayout')
|
||||||
endif
|
endif
|
||||||
@@ -358,26 +473,59 @@ function! airline#extensions#load()
|
|||||||
call add(s:loaded_ext, 'cursormode')
|
call add(s:loaded_ext, 'cursormode')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#searchcount#enabled', 1) && exists('*searchcount')
|
||||||
|
call airline#extensions#searchcount#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'searchcount')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'loaded_battery', 0) && get(g:, 'airline#extensions#battery#enabled', 0)
|
||||||
|
call airline#extensions#battery#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'battery')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (get(g:, 'airline#extensions#vim9lsp#enabled', 1) && exists('*lsp#lsp#ErrorCount'))
|
||||||
|
call airline#extensions#vim9lsp#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'vim9lsp')
|
||||||
|
endif
|
||||||
|
|
||||||
if !get(g:, 'airline#extensions#disable_rtp_load', 0)
|
if !get(g:, 'airline#extensions#disable_rtp_load', 0)
|
||||||
" load all other extensions, which are not part of the default distribution.
|
" load all other extensions, which are not part of the default distribution.
|
||||||
" (autoload/airline/extensions/*.vim outside of our s:script_path).
|
" (autoload/airline/extensions/*.vim outside of our s:script_path).
|
||||||
for file in split(globpath(&rtp, "autoload/airline/extensions/*.vim"), "\n")
|
for file in split(globpath(&rtp, 'autoload/airline/extensions/*.vim', 1), "\n")
|
||||||
" we have to check both resolved and unresolved paths, since it's possible
|
" we have to check both resolved and unresolved paths, since it's possible
|
||||||
" that they might not get resolved properly (see #187)
|
" that they might not get resolved properly (see #187)
|
||||||
if stridx(tolower(resolve(fnamemodify(file, ':p'))), s:script_path) < 0
|
if stridx(tolower(resolve(fnamemodify(file, ':p'))), s:script_path) < 0
|
||||||
\ && stridx(tolower(fnamemodify(file, ':p')), s:script_path) < 0
|
\ && stridx(tolower(fnamemodify(file, ':p')), s:script_path) < 0
|
||||||
let name = fnamemodify(file, ':t:r')
|
let name = fnamemodify(file, ':t:r')
|
||||||
if !get(g:, 'airline#extensions#'.name.'#enabled', 1) ||
|
if !get(g:, 'airline#extensions#'.name.'#enabled', 1) ||
|
||||||
\ index(s:loaded_ext, name) > -1
|
\ index(s:loaded_ext, name.'*') > -1
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
try
|
try
|
||||||
call airline#extensions#{name}#init(s:ext)
|
call airline#extensions#{name}#init(s:ext)
|
||||||
|
" mark as external
|
||||||
|
call add(s:loaded_ext, name.'*')
|
||||||
catch
|
catch
|
||||||
endtry
|
endtry
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if exists(':Dirvish') && get(g:, 'airline#extensions#dirvish#enabled', 1)
|
||||||
|
call airline#extensions#dirvish#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'dirvish')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (get(g:, 'airline#extensions#omnisharp#enabled', 1) && get(g:, 'OmniSharp_loaded', 0))
|
||||||
|
call airline#extensions#omnisharp#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'omnisharp')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (get(g:, 'airline#extensions#rufo#enabled', 0) && get(g:, 'rufo_loaded', 0))
|
||||||
|
call airline#extensions#rufo#init(s:ext)
|
||||||
|
call add(s:loaded_ext, 'rufo')
|
||||||
|
endif
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#get_loaded_extensions()
|
function! airline#extensions#get_loaded_extensions()
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bjorn Neergaard, w0rp et al.
|
" MIT License. Copyright (c) 2013-2021 Bjorn Neergaard, w0rp et al.
|
||||||
|
" Plugin: https://github.com/dense-analysis/ale
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !get(g:, 'loaded_ale_dont_use_this_in_other_plugins_please', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
function! s:airline_ale_count(cnt, symbol)
|
function! s:airline_ale_count(cnt, symbol)
|
||||||
return a:cnt ? a:symbol. a:cnt : ''
|
return a:cnt ? a:symbol. a:cnt : ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:airline_ale_get_line_number(cnt, type) abort
|
function! s:legacy_airline_ale_get_line_number(cnt, type) abort
|
||||||
|
" Before ALE introduced the FirstProblem API function, this is how
|
||||||
|
" airline would get the line numbers:
|
||||||
|
" 1. Get the whole loclist; 2. Filter it for the desired problem type.
|
||||||
|
" 3. Return the line number of the first element in the filtered list.
|
||||||
if a:cnt == 0
|
if a:cnt == 0
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
@@ -28,6 +37,43 @@ function! s:airline_ale_get_line_number(cnt, type) abort
|
|||||||
return open_lnum_symbol . problems[0].lnum . close_lnum_symbol
|
return open_lnum_symbol . problems[0].lnum . close_lnum_symbol
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:new_airline_ale_get_line_number(cnt, type) abort
|
||||||
|
" The FirstProblem call in ALE is a far more efficient way
|
||||||
|
" of obtaining line number data. If the installed ALE supports
|
||||||
|
" it, we should use this method of getting line data.
|
||||||
|
if a:cnt == 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let l:buffer = bufnr('')
|
||||||
|
|
||||||
|
" Try to get the first error from ALE.
|
||||||
|
let l:result = ale#statusline#FirstProblem(l:buffer, a:type)
|
||||||
|
if empty(l:result)
|
||||||
|
" If there are no errors then try and check for style errors.
|
||||||
|
let l:result = ale#statusline#FirstProblem(l:buffer, 'style_' . a:type)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(l:result)
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:open_lnum_symbol =
|
||||||
|
\ get(g:, 'airline#extensions#ale#open_lnum_symbol', '(L')
|
||||||
|
let l:close_lnum_symbol =
|
||||||
|
\ get(g:, 'airline#extensions#ale#close_lnum_symbol', ')')
|
||||||
|
|
||||||
|
return open_lnum_symbol . l:result.lnum . close_lnum_symbol
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:airline_ale_get_line_number(cnt, type) abort
|
||||||
|
" Use the new ALE statusline API function if it is available.
|
||||||
|
if exists("*ale#statusline#FirstProblem")
|
||||||
|
return s:new_airline_ale_get_line_number(a:cnt, a:type)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return s:legacy_airline_ale_get_line_number(a:cnt, a:type)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#ale#get(type)
|
function! airline#extensions#ale#get(type)
|
||||||
if !exists(':ALELint')
|
if !exists(':ALELint')
|
||||||
return ''
|
return ''
|
||||||
@@ -82,7 +128,11 @@ function! airline#extensions#ale#init(ext)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ale_refresh()
|
function! s:ale_refresh()
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
if get(g:, 'airline_skip_empty_sections', 0)
|
if get(g:, 'airline_skip_empty_sections', 0)
|
||||||
exe ':AirlineRefresh'
|
exe ':AirlineRefresh!'
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
" MIT License. Copyright (c) 2014-2021 Mathias Andersson et al.
|
||||||
|
" Plugin: https://github.com/lambdalisue/battery.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !exists('g:loaded_battery')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#battery#status(...) abort
|
||||||
|
if !exists('g:battery#update_statusline')
|
||||||
|
let g:battery#update_statusline = 1
|
||||||
|
call battery#update()
|
||||||
|
endif
|
||||||
|
|
||||||
|
let bat = battery#component()
|
||||||
|
return bat
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#battery#init(ext) abort
|
||||||
|
call airline#parts#define_function('battery', 'airline#extensions#battery#status')
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
" MIT License. Copyright (c) 2021 Bjoern Petri <bjoern.petri@sundevil.de>
|
||||||
|
" Plugin: https://github.com/MattesGroeger/vim-bookmarks
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !exists(':BookmarkToggle')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#bookmark#currentbookmark() abort
|
||||||
|
if get(w:, 'airline_active', 0)
|
||||||
|
let file = expand('%:p')
|
||||||
|
if file ==# ''
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let current_line = line('.')
|
||||||
|
let has_bm = bm#has_bookmark_at_line(file, current_line)
|
||||||
|
let bm = has_bm ? bm#get_bookmark_by_line(file, current_line) : 0
|
||||||
|
let annotation = has_bm ? bm['annotation'] : ''
|
||||||
|
|
||||||
|
return annotation
|
||||||
|
endif
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#bookmark#init(ext) abort
|
||||||
|
call airline#parts#define_function('bookmark', 'airline#extensions#bookmark#currentbookmark')
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: fugitive, gina, lawrencium and vcscommand
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -16,7 +17,8 @@ scriptencoding utf-8
|
|||||||
let s:vcs_config = {
|
let s:vcs_config = {
|
||||||
\ 'git': {
|
\ 'git': {
|
||||||
\ 'exe': 'git',
|
\ 'exe': 'git',
|
||||||
\ 'cmd': 'git status --porcelain -- ',
|
\ 'cmd': 'git --no-optional-locks status --porcelain -- ',
|
||||||
|
\ 'dirty': 'git --no-optional-locks status -uno --porcelain --ignore-submodules',
|
||||||
\ 'untracked_mark': '??',
|
\ 'untracked_mark': '??',
|
||||||
\ 'exclude': '\.git',
|
\ 'exclude': '\.git',
|
||||||
\ 'update_branch': 's:update_git_branch',
|
\ 'update_branch': 's:update_git_branch',
|
||||||
@@ -27,6 +29,7 @@ let s:vcs_config = {
|
|||||||
\ 'mercurial': {
|
\ 'mercurial': {
|
||||||
\ 'exe': 'hg',
|
\ 'exe': 'hg',
|
||||||
\ 'cmd': 'hg status -u -- ',
|
\ 'cmd': 'hg status -u -- ',
|
||||||
|
\ 'dirty': 'hg status -mard',
|
||||||
\ 'untracked_mark': '?',
|
\ 'untracked_mark': '?',
|
||||||
\ 'exclude': '\.hg',
|
\ 'exclude': '\.hg',
|
||||||
\ 'update_branch': 's:update_hg_branch',
|
\ 'update_branch': 's:update_hg_branch',
|
||||||
@@ -51,6 +54,7 @@ function! s:init_buffer()
|
|||||||
let b:buffer_vcs_config[vcs] = {
|
let b:buffer_vcs_config[vcs] = {
|
||||||
\ 'branch': '',
|
\ 'branch': '',
|
||||||
\ 'untracked': '',
|
\ 'untracked': '',
|
||||||
|
\ 'dirty': 0,
|
||||||
\ }
|
\ }
|
||||||
endfor
|
endfor
|
||||||
unlet! b:airline_head
|
unlet! b:airline_head
|
||||||
@@ -81,14 +85,34 @@ let s:names = {'0': 'index', '1': 'orig', '2':'fetch', '3':'merge'}
|
|||||||
let s:sha1size = get(g:, 'airline#extensions#branch#sha1_len', 7)
|
let s:sha1size = get(g:, 'airline#extensions#branch#sha1_len', 7)
|
||||||
|
|
||||||
function! s:update_git_branch()
|
function! s:update_git_branch()
|
||||||
if !airline#util#has_fugitive()
|
call airline#util#ignore_next_focusgain()
|
||||||
|
if airline#util#has_fugitive()
|
||||||
|
call s:config_fugitive_branch()
|
||||||
|
elseif airline#util#has_gina()
|
||||||
|
call s:config_gina_branch()
|
||||||
|
else
|
||||||
let s:vcs_config['git'].branch = ''
|
let s:vcs_config['git'].branch = ''
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
let s:vcs_config['git'].branch = exists("*FugitiveHead") ?
|
function! s:config_fugitive_branch() abort
|
||||||
\ FugitiveHead(s:sha1size) : fugitive#head(s:sha1size)
|
let s:vcs_config['git'].branch = FugitiveHead(s:sha1size)
|
||||||
if s:vcs_config['git'].branch is# 'master' && winwidth(0) < 81
|
if s:vcs_config['git'].branch is# 'master' &&
|
||||||
|
\ airline#util#winwidth() < 81
|
||||||
|
" Shorten default a bit
|
||||||
|
let s:vcs_config['git'].branch='mas'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:config_gina_branch() abort
|
||||||
|
try
|
||||||
|
let g:gina#component#repo#commit_length = s:sha1size
|
||||||
|
let s:vcs_config['git'].branch = gina#component#repo#branch()
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
if s:vcs_config['git'].branch is# 'master' &&
|
||||||
|
\ airline#util#winwidth() < 81
|
||||||
" Shorten default a bit
|
" Shorten default a bit
|
||||||
let s:vcs_config['git'].branch='mas'
|
let s:vcs_config['git'].branch='mas'
|
||||||
endif
|
endif
|
||||||
@@ -97,13 +121,20 @@ endfunction
|
|||||||
function! s:display_git_branch()
|
function! s:display_git_branch()
|
||||||
let name = b:buffer_vcs_config['git'].branch
|
let name = b:buffer_vcs_config['git'].branch
|
||||||
try
|
try
|
||||||
let commit = fugitive#buffer().commit()
|
let commit = matchstr(FugitiveParse()[0], '^\x\+')
|
||||||
|
|
||||||
if has_key(s:names, commit)
|
if has_key(s:names, commit)
|
||||||
let name = get(s:names, commit)."(".name.")"
|
let name = get(s:names, commit)."(".name.")"
|
||||||
elseif !empty(commit)
|
elseif !empty(commit)
|
||||||
let ref = fugitive#repo().git_chomp('describe', '--all', '--exact-match', commit)
|
if exists('*FugitiveExecute')
|
||||||
if ref !~ "^fatal: no tag exactly matches"
|
let ref = FugitiveExecute(['describe', '--all', '--exact-match', commit], bufnr('')).stdout[0]
|
||||||
|
else
|
||||||
|
noautocmd let ref = fugitive#repo().git_chomp('describe', '--all', '--exact-match', commit)
|
||||||
|
if ref =~# ':'
|
||||||
|
let ref = ''
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if !empty(ref)
|
||||||
let name = s:format_name(substitute(ref, '\v\C^%(heads/|remotes/|tags/)=','',''))."(".name.")"
|
let name = s:format_name(substitute(ref, '\v\C^%(heads/|remotes/|tags/)=','',''))."(".name.")"
|
||||||
else
|
else
|
||||||
let name = matchstr(commit, '.\{'.s:sha1size.'}')."(".name.")"
|
let name = matchstr(commit, '.\{'.s:sha1size.'}')."(".name.")"
|
||||||
@@ -111,7 +142,6 @@ function! s:display_git_branch()
|
|||||||
endif
|
endif
|
||||||
catch
|
catch
|
||||||
endtry
|
endtry
|
||||||
|
|
||||||
return name
|
return name
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -171,11 +201,12 @@ endfunction
|
|||||||
|
|
||||||
function! s:update_untracked()
|
function! s:update_untracked()
|
||||||
let file = expand("%:p")
|
let file = expand("%:p")
|
||||||
if empty(file) || isdirectory(file)
|
if empty(file) || isdirectory(file) || !empty(&buftype)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let needs_update = 1
|
let needs_update = 1
|
||||||
|
let vcs_checks = get(g:, "airline#extensions#branch#vcs_checks", ["untracked", "dirty"])
|
||||||
for vcs in keys(s:vcs_config)
|
for vcs in keys(s:vcs_config)
|
||||||
if file =~ s:vcs_config[vcs].exclude
|
if file =~ s:vcs_config[vcs].exclude
|
||||||
" Skip check for files that live in the exclude directory
|
" Skip check for files that live in the exclude directory
|
||||||
@@ -192,17 +223,25 @@ function! s:update_untracked()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
for vcs in keys(s:vcs_config)
|
for vcs in keys(s:vcs_config)
|
||||||
|
" only check, for git, if fugitive is installed
|
||||||
|
" and for 'hg' if lawrencium is installed, else skip
|
||||||
|
if vcs is# 'git' && (!airline#util#has_fugitive() && !airline#util#has_gina())
|
||||||
|
continue
|
||||||
|
elseif vcs is# 'mercurial' && !airline#util#has_lawrencium()
|
||||||
|
continue
|
||||||
|
endif
|
||||||
let config = s:vcs_config[vcs]
|
let config = s:vcs_config[vcs]
|
||||||
if g:airline#init#vim_async
|
|
||||||
" Note that asynchronous update updates s:vcs_config only, and only
|
" Note that asynchronous update updates s:vcs_config only, and only
|
||||||
" s:update_untracked updates b:buffer_vcs_config. If s:vcs_config is
|
" s:update_untracked updates b:buffer_vcs_config. If s:vcs_config is
|
||||||
" invalidated again before s:update_untracked is called, then we lose the
|
" invalidated again before s:update_untracked is called, then we lose the
|
||||||
" result of the previous call, i.e. the head string is not updated. It
|
" result of the previous call, i.e. the head string is not updated. It
|
||||||
" doesn't happen often in practice, so we let it be.
|
" doesn't happen often in practice, so we let it be.
|
||||||
noa call airline#async#vim_vcs_untracked(config, file)
|
if index(vcs_checks, 'untracked') > -1
|
||||||
else
|
call airline#async#vcs_untracked(config, file, vcs)
|
||||||
" nvim async or vim without job-feature
|
endif
|
||||||
noa call airline#async#nvim_vcs_untracked(config, file, vcs)
|
" Check clean state of repo
|
||||||
|
if index(vcs_checks, 'dirty') > -1
|
||||||
|
call airline#async#vcs_clean(config.dirty, file, vcs)
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
@@ -237,7 +276,13 @@ function! airline#extensions#branch#head()
|
|||||||
let b:airline_head .= s:vcs_config[vcs].exe .':'
|
let b:airline_head .= s:vcs_config[vcs].exe .':'
|
||||||
endif
|
endif
|
||||||
let b:airline_head .= s:format_name({s:vcs_config[vcs].display_branch}())
|
let b:airline_head .= s:format_name({s:vcs_config[vcs].display_branch}())
|
||||||
let b:airline_head .= b:buffer_vcs_config[vcs].untracked
|
let additional = b:buffer_vcs_config[vcs].untracked
|
||||||
|
if empty(additional) &&
|
||||||
|
\ has_key(b:buffer_vcs_config[vcs], 'dirty') &&
|
||||||
|
\ b:buffer_vcs_config[vcs].dirty
|
||||||
|
let additional = g:airline_symbols['dirty']
|
||||||
|
endif
|
||||||
|
let b:airline_head .= additional
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
if empty(heads)
|
if empty(heads)
|
||||||
@@ -260,27 +305,33 @@ function! airline#extensions#branch#head()
|
|||||||
|
|
||||||
if exists("g:airline#extensions#branch#displayed_head_limit")
|
if exists("g:airline#extensions#branch#displayed_head_limit")
|
||||||
let w:displayed_head_limit = g:airline#extensions#branch#displayed_head_limit
|
let w:displayed_head_limit = g:airline#extensions#branch#displayed_head_limit
|
||||||
if len(b:airline_head) > w:displayed_head_limit - 1
|
if strwidth(b:airline_head) > w:displayed_head_limit - 1
|
||||||
let b:airline_head = b:airline_head[0:(w:displayed_head_limit - 1)].(&encoding ==? 'utf-8' ? '…' : '.')
|
let b:airline_head =
|
||||||
|
\ airline#util#strcharpart(b:airline_head, 0, w:displayed_head_limit - 1)
|
||||||
|
\ . (&encoding ==? 'utf-8' ? '…' : '.')
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let minwidth = empty(get(b:, 'airline_hunks', '')) ? 14 : 7
|
|
||||||
let b:airline_head = airline#util#shorten(b:airline_head, 120, minwidth)
|
|
||||||
return b:airline_head
|
return b:airline_head
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#branch#get_head()
|
function! airline#extensions#branch#get_head()
|
||||||
let head = airline#extensions#branch#head()
|
let head = airline#extensions#branch#head()
|
||||||
let empty_message = get(g:, 'airline#extensions#branch#empty_message', '')
|
let winwidth = get(airline#parts#get('branch'), 'minwidth', 120)
|
||||||
|
let minwidth = empty(get(b:, 'airline_hunks', '')) ? 14 : 7
|
||||||
|
let head = airline#util#shorten(head, winwidth, minwidth)
|
||||||
let symbol = get(g:, 'airline#extensions#branch#symbol', g:airline_symbols.branch)
|
let symbol = get(g:, 'airline#extensions#branch#symbol', g:airline_symbols.branch)
|
||||||
return empty(head)
|
return empty(head)
|
||||||
\ ? empty_message
|
\ ? get(g:, 'airline#extensions#branch#empty_message', '')
|
||||||
\ : printf('%s%s', empty(symbol) ? '' : symbol.(g:airline_symbols.space), head)
|
\ : printf('%s%s', empty(symbol) ? '' : symbol.(g:airline_symbols.space), head)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:reset_untracked_cache(shellcmdpost)
|
function! s:reset_untracked_cache(shellcmdpost)
|
||||||
" shellcmdpost - whether function was called as a result of ShellCmdPost hook
|
" shellcmdpost - whether function was called as a result of ShellCmdPost hook
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
if !g:airline#init#vim_async && !has('nvim')
|
if !g:airline#init#vim_async && !has('nvim')
|
||||||
if a:shellcmdpost
|
if a:shellcmdpost
|
||||||
" Clear cache only if there was no error or the script uses an
|
" Clear cache only if there was no error or the script uses an
|
||||||
@@ -302,11 +353,17 @@ function! s:reset_untracked_cache(shellcmdpost)
|
|||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:sh_autocmd_handler()
|
||||||
|
if exists('#airline')
|
||||||
|
unlet! b:airline_head b:airline_do_mq_check
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#branch#init(ext)
|
function! airline#extensions#branch#init(ext)
|
||||||
call airline#parts#define_function('branch', 'airline#extensions#branch#get_head')
|
call airline#parts#define_function('branch', 'airline#extensions#branch#get_head')
|
||||||
|
|
||||||
autocmd ShellCmdPost,CmdwinLeave * unlet! b:airline_head b:airline_do_mq_check
|
autocmd ShellCmdPost,CmdwinLeave * call s:sh_autocmd_handler()
|
||||||
autocmd User AirlineBeforeRefresh unlet! b:airline_head b:airline_do_mq_check
|
autocmd User AirlineBeforeRefresh call s:sh_autocmd_handler()
|
||||||
autocmd BufWritePost * call s:reset_untracked_cache(0)
|
autocmd BufWritePost * call s:reset_untracked_cache(0)
|
||||||
autocmd ShellCmdPost * call s:reset_untracked_cache(1)
|
autocmd ShellCmdPost * call s:reset_untracked_cache(1)
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/bling/vim-bufferline
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -7,10 +8,8 @@ if !exists('*bufferline#get_status_string')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let s:overwrite = get(g:, 'airline#extensions#bufferline#overwrite_variables', 1)
|
|
||||||
|
|
||||||
function! airline#extensions#bufferline#init(ext)
|
function! airline#extensions#bufferline#init(ext)
|
||||||
if s:overwrite
|
if get(g:, 'airline#extensions#bufferline#overwrite_variables', 1)
|
||||||
highlight bufferline_selected gui=bold cterm=bold term=bold
|
highlight bufferline_selected gui=bold cterm=bold term=bold
|
||||||
highlight link bufferline_selected_inactive airline_c_inactive
|
highlight link bufferline_selected_inactive airline_c_inactive
|
||||||
let g:bufferline_inactive_highlight = 'airline_c'
|
let g:bufferline_inactive_highlight = 'airline_c'
|
||||||
@@ -21,7 +20,7 @@ function! airline#extensions#bufferline#init(ext)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if exists("+autochdir") && &autochdir == 1
|
if exists("+autochdir") && &autochdir == 1
|
||||||
" if 'acd' is set, vim-airline uses the path section, so we need ot redefine this here as well
|
" if 'acd' is set, vim-airline uses the path section, so we need to redefine this here as well
|
||||||
call airline#parts#define_raw('path', '%{bufferline#refresh_status()}'.bufferline#get_status_string())
|
call airline#parts#define_raw('path', '%{bufferline#refresh_status()}'.bufferline#get_status_string())
|
||||||
else
|
else
|
||||||
call airline#parts#define_raw('file', '%{bufferline#refresh_status()}'.bufferline#get_status_string())
|
call airline#parts#define_raw('file', '%{bufferline#refresh_status()}'.bufferline#get_status_string())
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2014-2018 Mathias Andersson et al.
|
" MIT License. Copyright (c) 2014-2021 Mathias Andersson et al.
|
||||||
|
" Plugin: https://github.com/tpope/vim-capslock
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -8,7 +9,7 @@ if !exists('*CapsLockStatusline')
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
function! airline#extensions#capslock#status()
|
function! airline#extensions#capslock#status()
|
||||||
return tolower(CapsLockStatusline()) == '[caps]' ? 'CAPS' : ''
|
return tolower(CapsLockStatusline()) ==# '[caps]' ? get(g:, 'airline#extensions#capslock#symbol', 'CAPS') : ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#capslock#init(ext)
|
function! airline#extensions#capslock#init(ext)
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
" MIT License. Copyright (c) 2019-2021 Peng Guanwen et al.
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
" Plugin: https://github.com/neoclide/coc
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
let s:show_coc_status = get(g:, 'airline#extensions#coc#show_coc_status', 1)
|
||||||
|
|
||||||
|
function! airline#extensions#coc#get_warning() abort
|
||||||
|
return airline#extensions#coc#get('warning')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#coc#get_error() abort
|
||||||
|
return airline#extensions#coc#get('error')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#coc#get(type) abort
|
||||||
|
if !exists(':CocCommand') | return '' | endif
|
||||||
|
|
||||||
|
let is_err = (a:type is# 'error')
|
||||||
|
let info = get(b:, 'coc_diagnostic_info', {})
|
||||||
|
if empty(info) | return '' | endif
|
||||||
|
|
||||||
|
let cnt = get(info, a:type, 0)
|
||||||
|
if empty(cnt) | return '' | endif
|
||||||
|
|
||||||
|
let error_symbol = get(g:, 'airline#extensions#coc#error_symbol', 'E:')
|
||||||
|
let warning_symbol = get(g:, 'airline#extensions#coc#warning_symbol', 'W:')
|
||||||
|
let error_format = get(g:, 'airline#extensions#coc#stl_format_err', '%C(L%L)')
|
||||||
|
let warning_format = get(g:, 'airline#extensions#coc#stl_format_warn', '%C(L%L)')
|
||||||
|
|
||||||
|
" replace %C with error count and %L with line number
|
||||||
|
return (is_err ? error_symbol : warning_symbol) .
|
||||||
|
\ substitute(substitute(is_err ? error_format : warning_format,
|
||||||
|
\ '%C', cnt, 'g'),
|
||||||
|
\ '%L', (info.lnums)[is_err ? 0 : 1], 'g')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#coc#get_status() abort
|
||||||
|
" Shorten text for windows < 91 characters
|
||||||
|
let status = airline#util#shorten(get(g:, 'coc_status', ''), 91, 9)
|
||||||
|
return (s:show_coc_status ? status : '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#coc#get_current_function() abort
|
||||||
|
return get(b:, 'coc_current_function', '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#coc#init(ext) abort
|
||||||
|
call airline#parts#define_function('coc_error_count', 'airline#extensions#coc#get_error')
|
||||||
|
call airline#parts#define_function('coc_warning_count', 'airline#extensions#coc#get_warning')
|
||||||
|
call airline#parts#define_function('coc_status', 'airline#extensions#coc#get_status')
|
||||||
|
call airline#parts#define_function('coc_current_function', 'airline#extensions#coc#get_current_function')
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
" MIT License. Copyright (c) 2014-2021 Mathias Andersson et al.
|
||||||
|
" Plugin: https://github.com/Exafunction/codeium.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !get(g:, 'loaded_codeium', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#codeium#status() abort
|
||||||
|
return '{…}' . codeium#GetStatusString()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#codeium#init(ext) abort
|
||||||
|
call airline#parts#define_function('codeium', 'airline#extensions#codeium#status')
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/wincent/command-t
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling, Christian Brabandt et al.
|
||||||
|
" Plugin: https://github.com/chrisbra/csv.vim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/ctrlpvim/ctrlp.vim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/szw/vim-ctrlspace
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
let s:spc = g:airline_symbols.space
|
function! airline#extensions#ctrlspace#statusline(...) abort
|
||||||
let s:padding = s:spc . s:spc . s:spc
|
let spc = g:airline_symbols.space
|
||||||
let s:cs = ctrlspace#context#Configuration().Symbols.CS
|
let l:padding = spc . spc . spc
|
||||||
|
let cs = ctrlspace#context#Configuration().Symbols.CS
|
||||||
|
|
||||||
function! airline#extensions#ctrlspace#statusline(...)
|
|
||||||
let b = airline#builder#new({ 'active': 1 })
|
let b = airline#builder#new({ 'active': 1 })
|
||||||
call b.add_section('airline_b', s:cs . s:padding . ctrlspace#api#StatuslineModeSegment(s:padding))
|
call b.add_section('airline_b', cs . l:padding . ctrlspace#api#StatuslineModeSegment(l:padding))
|
||||||
call b.split()
|
call b.split()
|
||||||
call b.add_section('airline_x', s:spc . ctrlspace#api#StatuslineTabSegment() . s:spc)
|
call b.add_section('airline_x', spc . ctrlspace#api#StatuslineTabSegment() . spc)
|
||||||
return b.build()
|
return b.build()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#ctrlspace#init(ext)
|
function! airline#extensions#ctrlspace#init(ext) abort
|
||||||
let g:CtrlSpaceStatuslineFunction = "airline#extensions#ctrlspace#statusline()"
|
let g:CtrlSpaceStatuslineFunction = "airline#extensions#ctrlspace#statusline()"
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,26 +1,16 @@
|
|||||||
" Copyright (C) 2014 Andrea Cedraro <a.cedraro@gmail.com>
|
" MIT Licsense.
|
||||||
|
" Plugin: https://github.com/vheon/vim-cursormode
|
||||||
|
" Copyright (C) 2014 Andrea Cedraro <a.cedraro@gmail.com>,
|
||||||
" Copyright (C) 2017 Eduardo Suarez-Santana <e.suarezsantana@gmail.com>
|
" Copyright (C) 2017 Eduardo Suarez-Santana <e.suarezsantana@gmail.com>
|
||||||
"
|
|
||||||
" Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
" a copy of this software and associated documentation files (the "Software"),
|
|
||||||
" to deal in the Software without restriction, including without limitation
|
|
||||||
" the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
" and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
" Software is furnished to do so, subject to the following conditions:
|
|
||||||
"
|
|
||||||
" The above copyright notice and this permission notice shall be included
|
|
||||||
" in all copies or substantial portions of the Software.
|
|
||||||
"
|
|
||||||
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
" OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
||||||
" OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if exists('g:loaded_cursormode')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let g:loaded_cursormode = 1
|
||||||
|
|
||||||
let s:is_win = has('win32') || has('win64')
|
let s:is_win = has('win32') || has('win64')
|
||||||
let s:is_iTerm = exists('$TERM_PROGRAM') && $TERM_PROGRAM =~# 'iTerm.app'
|
let s:is_iTerm = exists('$TERM_PROGRAM') && $TERM_PROGRAM =~# 'iTerm.app'
|
||||||
let s:is_AppleTerminal = exists('$TERM_PROGRAM') && $TERM_PROGRAM =~# 'Apple_Terminal'
|
let s:is_AppleTerminal = exists('$TERM_PROGRAM') && $TERM_PROGRAM =~# 'Apple_Terminal'
|
||||||
@@ -111,12 +101,16 @@ endfunction
|
|||||||
|
|
||||||
augroup airline#extensions#cursormode
|
augroup airline#extensions#cursormode
|
||||||
autocmd!
|
autocmd!
|
||||||
autocmd VimLeave * call s:set_cursor_color_for(g:cursormode_exit_mode)
|
autocmd VimLeave * nested call s:set_cursor_color_for(g:cursormode_exit_mode)
|
||||||
" autocmd VimEnter * call airline#extensions#cursormode#activate()
|
" autocmd VimEnter * call airline#extensions#cursormode#activate()
|
||||||
autocmd Colorscheme * call airline#extensions#cursormode#activate()
|
autocmd Colorscheme * call airline#extensions#cursormode#activate()
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
function! airline#extensions#cursormode#activate()
|
function! airline#extensions#cursormode#activate()
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
let s:color_map = s:get_color_map()
|
let s:color_map = s:get_color_map()
|
||||||
call airline#extensions#cursormode#set()
|
call airline#extensions#cursormode#set()
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -7,7 +7,7 @@ let s:section_use_groups = get(g:, 'airline#extensions#default#section_use_g
|
|||||||
let s:section_truncate_width = get(g:, 'airline#extensions#default#section_truncate_width', {
|
let s:section_truncate_width = get(g:, 'airline#extensions#default#section_truncate_width', {
|
||||||
\ 'b': 79,
|
\ 'b': 79,
|
||||||
\ 'x': 60,
|
\ 'x': 60,
|
||||||
\ 'y': 88,
|
\ 'y': 80,
|
||||||
\ 'z': 45,
|
\ 'z': 45,
|
||||||
\ 'warning': 80,
|
\ 'warning': 80,
|
||||||
\ 'error': 80,
|
\ 'error': 80,
|
||||||
@@ -19,7 +19,7 @@ let s:layout = get(g:, 'airline#extensions#default#layout', [
|
|||||||
|
|
||||||
function! s:get_section(winnr, key, ...)
|
function! s:get_section(winnr, key, ...)
|
||||||
if has_key(s:section_truncate_width, a:key)
|
if has_key(s:section_truncate_width, a:key)
|
||||||
if winwidth(a:winnr) < s:section_truncate_width[a:key]
|
if airline#util#winwidth(a:winnr) < s:section_truncate_width[a:key]
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -76,17 +76,14 @@ else
|
|||||||
endfunction
|
endfunction
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! airline#extensions#default#apply(builder, context)
|
function! airline#extensions#default#apply(builder, context) abort
|
||||||
let winnr = a:context.winnr
|
let winnr = a:context.winnr
|
||||||
let active = a:context.active
|
let active = a:context.active
|
||||||
|
|
||||||
if airline#util#getwinvar(winnr, 'airline_render_left', active || (!active && !g:airline_inactive_collapse))
|
if airline#util#getwinvar(winnr, 'airline_render_left', active || (!active && !g:airline_inactive_collapse))
|
||||||
call s:build_sections(a:builder, a:context, s:layout[0])
|
call s:build_sections(a:builder, a:context, s:layout[0])
|
||||||
else
|
else
|
||||||
let text = s:get_section(winnr, 'c')
|
let text = !empty(s:get_section(winnr, 'c')) ? s:get_section(winnr, 'c') : ' %f%m '
|
||||||
if empty(text)
|
|
||||||
let text = ' %f%m '
|
|
||||||
endif
|
|
||||||
call a:builder.add_section('airline_c'.(a:context.bufnr), text)
|
call a:builder.add_section('airline_c'.(a:context.bufnr), text)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2017-2018 Thomas Dy et al.
|
" MIT License. Copyright (c) 2017-2021 Thomas Dy et al.
|
||||||
|
" Plugin: https://github.com/Shougo/denite.nvim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -7,15 +8,21 @@ if !get(g:, 'loaded_denite', 0)
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let s:denite_ver = (exists('*denite#get_status_mode') ? 2 : 3)
|
||||||
" Denite does not use vim's built-in modal editing but has a custom prompt
|
" Denite does not use vim's built-in modal editing but has a custom prompt
|
||||||
" that implements its own insert/normal mode so we have to handle changing the
|
" that implements its own insert/normal mode so we have to handle changing the
|
||||||
" highlight
|
" highlight
|
||||||
function! airline#extensions#denite#check_denite_mode(bufnr)
|
function! airline#extensions#denite#check_denite_mode(bufnr) abort
|
||||||
if &filetype != 'denite'
|
if &filetype !=# 'denite' && &filetype !=# 'denite-filter'
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if s:denite_ver == 3
|
||||||
|
let mode = split(denite#get_status("mode"), ' ')
|
||||||
|
else
|
||||||
let mode = split(denite#get_status_mode(), ' ')
|
let mode = split(denite#get_status_mode(), ' ')
|
||||||
let mode = tolower(mode[1])
|
endif
|
||||||
|
let mode = tolower(get(mode, 1, ''))
|
||||||
if !exists('b:denite_mode_cache') || mode != b:denite_mode_cache
|
if !exists('b:denite_mode_cache') || mode != b:denite_mode_cache
|
||||||
call airline#highlighter#highlight([mode], a:bufnr)
|
call airline#highlighter#highlight([mode], a:bufnr)
|
||||||
let b:denite_mode_cache = mode
|
let b:denite_mode_cache = mode
|
||||||
@@ -23,19 +30,26 @@ function! airline#extensions#denite#check_denite_mode(bufnr)
|
|||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#denite#apply(...)
|
function! airline#extensions#denite#apply(...) abort
|
||||||
if &ft == 'denite'
|
if &filetype ==# 'denite' || &filetype ==# 'denite-filter'
|
||||||
let w:airline_skip_empty_sections = 0
|
let w:airline_skip_empty_sections = 0
|
||||||
call a:1.add_section('airline_a', ' Denite %{airline#extensions#denite#check_denite_mode('.a:2['bufnr'].')}')
|
call a:1.add_section('airline_a', ' Denite %{airline#extensions#denite#check_denite_mode('.a:2['bufnr'].')}')
|
||||||
|
if s:denite_ver == 3
|
||||||
|
call a:1.add_section('airline_c', ' %{denite#get_status("sources")}')
|
||||||
|
call a:1.split()
|
||||||
|
call a:1.add_section('airline_y', ' %{denite#get_status("path")} ')
|
||||||
|
call a:1.add_section('airline_z', ' %{denite#get_status("linenr")} ')
|
||||||
|
else
|
||||||
call a:1.add_section('airline_c', ' %{denite#get_status_sources()}')
|
call a:1.add_section('airline_c', ' %{denite#get_status_sources()}')
|
||||||
call a:1.split()
|
call a:1.split()
|
||||||
call a:1.add_section('airline_y', ' %{denite#get_status_path()} ')
|
call a:1.add_section('airline_y', ' %{denite#get_status_path()} ')
|
||||||
call a:1.add_section('airline_z', ' %{denite#get_status_linenr()} ')
|
call a:1.add_section('airline_z', ' %{denite#get_status_linenr()} ')
|
||||||
|
endif
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#denite#init(ext)
|
function! airline#extensions#denite#init(ext) abort
|
||||||
call denite#custom#option('_', 'statusline', 0)
|
call denite#custom#option('_', 'statusline', 0)
|
||||||
call a:ext.add_statusline_func('airline#extensions#denite#apply')
|
call a:ext.add_statusline_func('airline#extensions#denite#apply')
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
" MIT Licsense
|
||||||
|
" Plugin: https://github.com/justinmk/vim-dirvish
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !get(g:, 'loaded_dirvish', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:spc = g:airline_symbols.space
|
||||||
|
|
||||||
|
function! airline#extensions#dirvish#init(ext) abort
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#dirvish#apply')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#dirvish#apply(...) abort
|
||||||
|
if &filetype ==# 'dirvish' && exists('b:dirvish')
|
||||||
|
let w:airline_section_a = 'Dirvish'
|
||||||
|
|
||||||
|
let w:airline_section_b = exists('*airline#extensions#branch#get_head')
|
||||||
|
\ ? '%{airline#extensions#branch#get_head()}'
|
||||||
|
\ : ''
|
||||||
|
|
||||||
|
let w:airline_section_c = '%{b:dirvish._dir}'
|
||||||
|
|
||||||
|
let w:airline_section_x = ''
|
||||||
|
let w:airline_section_y = ''
|
||||||
|
|
||||||
|
let current_column_regex = ':%\dv'
|
||||||
|
let w:airline_section_z = join(filter(
|
||||||
|
\ split(get(w:, 'airline_section_z', g:airline_section_z)),
|
||||||
|
\ 'v:val !~ current_column_regex'
|
||||||
|
\ ))
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" PLugin: https://eclim.org
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -23,7 +23,7 @@ function! airline#extensions#example#init(ext)
|
|||||||
call airline#parts#define_raw('cats', '%{airline#extensions#example#get_cats()}')
|
call airline#parts#define_raw('cats', '%{airline#extensions#example#get_cats()}')
|
||||||
|
|
||||||
" Next up we add a funcref so that we can run some code prior to the
|
" Next up we add a funcref so that we can run some code prior to the
|
||||||
" statusline getting modifed.
|
" statusline getting modified.
|
||||||
call a:ext.add_statusline_func('airline#extensions#example#apply')
|
call a:ext.add_statusline_func('airline#extensions#example#apply')
|
||||||
|
|
||||||
" You can also add a funcref for inactive statuslines.
|
" You can also add a funcref for inactive statuslines.
|
||||||
@@ -40,7 +40,7 @@ function! airline#extensions#example#apply(...)
|
|||||||
" section_c.
|
" section_c.
|
||||||
let w:airline_section_c = get(w:, 'airline_section_c', g:airline_section_c)
|
let w:airline_section_c = get(w:, 'airline_section_c', g:airline_section_c)
|
||||||
|
|
||||||
" Then we just append this extenion to it, optionally using separators.
|
" Then we just append this extension to it, optionally using separators.
|
||||||
let w:airline_section_c .= s:spc.g:airline_left_alt_sep.s:spc.'%{airline#extensions#example#get_cats()}'
|
let w:airline_section_c .= s:spc.g:airline_left_alt_sep.s:spc.'%{airline#extensions#example#get_cats()}'
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021
|
||||||
|
" Plugin: https://github.com/lambdalisue/fern.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
if !get(g:, 'loaded_fern', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#fern#apply_active(...) abort
|
||||||
|
" check if current buffer is both fern and active
|
||||||
|
if (&ft =~# 'fern') && a:2.active ==# '1'
|
||||||
|
call airline#extensions#fern#configure_sections(a:1, a:2)
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! airline#extensions#fern#apply_inactive(...) abort
|
||||||
|
" check if referenced buffer is both fern and inactive
|
||||||
|
if getbufvar(a:2.bufnr, '&filetype') ==# 'fern' && a:2.active ==# '0'
|
||||||
|
call airline#extensions#fern#configure_sections(a:1, a:2)
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#fern#configure_sections(win, context) abort
|
||||||
|
let spc = g:airline_symbols.space
|
||||||
|
let fri = fern#fri#parse(bufname(a:context.bufnr))
|
||||||
|
let abspath = substitute(fri.path, 'file://', '', '')
|
||||||
|
call a:win.add_section('airline_a', spc.'fern'.spc)
|
||||||
|
if exists('*airline#extensions#branch#get_head')
|
||||||
|
" because fern navigation changes an internal _fri_ and not the working directory
|
||||||
|
" we need to give it some help so the branch name gets updated
|
||||||
|
execute 'lcd' abspath
|
||||||
|
call a:win.add_section('airline_b', spc.'%{airline#extensions#branch#get_head()}'.spc)
|
||||||
|
else
|
||||||
|
call a:win.add_section('airline_b', '')
|
||||||
|
endif
|
||||||
|
if !(fri.authority =~# '^drawer')
|
||||||
|
call a:win.add_section('airline_c', spc.fnamemodify(abspath, ':~'))
|
||||||
|
call a:win.split()
|
||||||
|
if len(get(g:, 'fern#comparators', {}))
|
||||||
|
call a:win.add_section('airline_y', spc.'%{fern#comparator}'.spc)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#fern#init(ext) abort
|
||||||
|
let g:fern_force_overwrite_statusline = 0
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#fern#apply_active')
|
||||||
|
call a:ext.add_inactive_statusline_func('airline#extensions#fern#apply_inactive')
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2017-2018 Cimbali et al
|
" MIT License. Copyright (c) 2017-2021 Cimbali et al
|
||||||
|
" Plugin: https://github.com/tpope/vim-fugitive
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -7,43 +8,54 @@ if !airline#util#has_fugitive()
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let s:has_percent_eval = v:version > 802 || (v:version == 802 && has("patch2854"))
|
||||||
|
|
||||||
if exists("+autochdir") && &autochdir == 1
|
function! airline#extensions#fugitiveline#bufname() abort
|
||||||
let s:fmod = ':p'
|
|
||||||
else
|
|
||||||
let s:fmod = ':.'
|
|
||||||
endif
|
|
||||||
|
|
||||||
function! airline#extensions#fugitiveline#bufname()
|
|
||||||
if !exists('b:fugitive_name')
|
if !exists('b:fugitive_name')
|
||||||
let b:fugitive_name = ''
|
let b:fugitive_name = ''
|
||||||
try
|
try
|
||||||
if bufname('%') =~? '^fugitive:' && exists('*FugitiveReal')
|
if bufname('%') =~? '^fugitive:' && exists('*FugitiveReal')
|
||||||
let b:fugitive_name = FugitiveReal(bufname('%'))
|
let b:fugitive_name = FugitiveReal(bufname('%'))
|
||||||
elseif exists('b:git_dir')
|
|
||||||
let buffer = fugitive#buffer()
|
|
||||||
if buffer.type('blob')
|
|
||||||
let b:fugitive_name = buffer.repo().translate(buffer.path('/'))
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
catch
|
catch
|
||||||
endtry
|
endtry
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let fmod = (exists("+autochdir") && &autochdir) ? ':p' : ':.'
|
||||||
|
let result=''
|
||||||
if empty(b:fugitive_name)
|
if empty(b:fugitive_name)
|
||||||
return fnamemodify(bufname('%'), s:fmod)
|
if empty(bufname('%'))
|
||||||
|
return &buftype ==# 'nofile' ? '[Scratch]' : '[No Name]'
|
||||||
|
endif
|
||||||
|
return s:has_percent_eval ? '%f' : fnamemodify(bufname('%'), fmod)
|
||||||
else
|
else
|
||||||
return fnamemodify(b:fugitive_name, s:fmod)
|
return s:has_percent_eval ? '%f [git]' : (fnamemodify(b:fugitive_name, fmod). " [git]")
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#fugitiveline#init(ext)
|
function! s:sh_autocmd_handler()
|
||||||
if exists("+autochdir") && &autochdir == 1
|
if exists('#airline')
|
||||||
" if 'acd' is set, vim-airline uses the path section, so we need to redefine this here as well
|
unlet! b:fugitive_name
|
||||||
call airline#parts#define_raw('path', '%<%{airline#extensions#fugitiveline#bufname()}%m')
|
|
||||||
else
|
|
||||||
call airline#parts#define_raw('file', '%<%{airline#extensions#fugitiveline#bufname()}%m')
|
|
||||||
endif
|
endif
|
||||||
autocmd ShellCmdPost,CmdwinLeave * unlet! b:fugitive_name
|
endfunction
|
||||||
autocmd User AirlineBeforeRefresh unlet! b:fugitive_name
|
|
||||||
|
function! airline#extensions#fugitiveline#init(ext) abort
|
||||||
|
let prct = s:has_percent_eval ? '%' : ''
|
||||||
|
|
||||||
|
if exists("+autochdir") && &autochdir
|
||||||
|
" if 'acd' is set, vim-airline uses the path section, so we need to redefine this here as well
|
||||||
|
if get(g:, 'airline_stl_path_style', 'default') ==# 'short'
|
||||||
|
call airline#parts#define_raw('path', '%<%{'. prct. 'pathshorten(airline#extensions#fugitiveline#bufname())' . prct . '}%m')
|
||||||
|
else
|
||||||
|
call airline#parts#define_raw('path', '%<%{' . prct . 'airline#extensions#fugitiveline#bufname()' . prct . '}%m')
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
if get(g:, 'airline_stl_path_style', 'default') ==# 'short'
|
||||||
|
call airline#parts#define_raw('file', '%<%{' . prct . 'pathshorten(airline#extensions#fugitiveline#bufname())' . prct . '}%m')
|
||||||
|
else
|
||||||
|
call airline#parts#define_raw('file', '%<%{' . prct . 'airline#extensions#fugitiveline#bufname()' . prct . '}%m')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
autocmd ShellCmdPost,CmdwinLeave * call s:sh_autocmd_handler()
|
||||||
|
autocmd User AirlineBeforeRefresh call s:sh_autocmd_handler()
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/junegunn/fzf, https://github.com/junegunn/fzf.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#extensions#fzf#init(ext) abort
|
||||||
|
" Remove the custom statusline that fzf.vim sets by removing its `FileType
|
||||||
|
" fzf` autocmd. Ideally we'd use `let g:fzf_statusline = 0`, but this
|
||||||
|
" variable is checked *before* airline#extensions#init() is called.
|
||||||
|
augroup _fzf_statusline
|
||||||
|
autocmd!
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#fzf#apply')
|
||||||
|
call a:ext.add_inactive_statusline_func('airline#extensions#fzf#inactive_apply')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#fzf#statusline(...) abort
|
||||||
|
let spc = g:airline_symbols.space
|
||||||
|
|
||||||
|
let builder = airline#builder#new({ 'active': 1 })
|
||||||
|
call builder.add_section('airline_a', spc.'FZF'.spc)
|
||||||
|
call builder.add_section('airline_c', '')
|
||||||
|
return builder.build()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#fzf#apply(...) abort
|
||||||
|
if &filetype ==# 'fzf'
|
||||||
|
let spc = g:airline_symbols.space
|
||||||
|
call a:1.add_section('airline_a', spc.'FZF'.spc)
|
||||||
|
call a:1.add_section('airline_c', '')
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#fzf#inactive_apply(...) abort
|
||||||
|
if getbufvar(a:2.bufnr, '&filetype') ==# 'fzf'
|
||||||
|
let spc = g:airline_symbols.space
|
||||||
|
call a:1.add_section('airline_a', spc.'FZF'.spc)
|
||||||
|
call a:1.add_section('airline_c', '')
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
" MIT License. Copyright (c) 2014-2021 Mathias Andersson et al.
|
||||||
|
" Written by Kamil Cukrowski 2020
|
||||||
|
" Plugin: https://github.com/jsfaint/gen_tags.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !(get(g:, 'loaded_gentags#gtags', 0) || get(g:, 'loaded_gentags#ctags', 0))
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#gen_tags#status(...) abort
|
||||||
|
return gen_tags#job#is_running() != 0 ? 'Gen. gen_tags' : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#gen_tags#init(ext) abort
|
||||||
|
call airline#parts#define_function('gen_tags', 'airline#extensions#gen_tags#status')
|
||||||
|
endfunction
|
||||||
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021
|
||||||
|
" Plugin: https://github.com/lambdalisue/gina.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
if !get(g:, 'loaded_gina', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#gina#apply(...) abort
|
||||||
|
" gina.vim seems to set b:gina_initialized = 1 in diff buffers it open,
|
||||||
|
" where get(b:, 'gina_initialized', 0) returns 1.
|
||||||
|
" In diff buffers not opened by gina.vim b:gina_initialized is not set,
|
||||||
|
" so get(b:, 'gina_initialized', 0) returns 0.
|
||||||
|
if (&ft =~# 'gina' && &ft !~# 'blame') || (&ft ==# 'diff' && get(b:, 'gina_initialized', 0))
|
||||||
|
call a:1.add_section('airline_a', ' gina ')
|
||||||
|
call a:1.add_section('airline_b', ' %{gina#component#repo#branch()} ')
|
||||||
|
call a:1.split()
|
||||||
|
call a:1.add_section('airline_y', ' staged %{gina#component#status#staged()} ')
|
||||||
|
call a:1.add_section('airline_z', ' unstaged %{gina#component#status#unstaged()} ')
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#gina#init(ext) abort
|
||||||
|
let g:gina_force_overwrite_statusline = 0
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#gina#apply')
|
||||||
|
endfunction
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
" MIT License. Copyright (c) 2014-2018 Mathias Andersson et al.
|
" MIT License. Copyright (c) 2014-2021 Mathias Andersson et al.
|
||||||
|
" Plugin: https://github.com/mhinz/vim-grepper
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
" Heavily derived from the Gutentags extension
|
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
if !get(g:, 'loaded_grepper', 0)
|
if !get(g:, 'loaded_grepper', 0)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2014-2018 Mathias Andersson et al.
|
" MIT License. Copyright (c) 2014-2021 Mathias Andersson et al.
|
||||||
|
" Plugin: https://github.com/ludovicchabant/vim-gutentags
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,16 +1,59 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: vim-gitgutter, vim-signify, changesPlugin, quickfixsigns, coc-git,
|
||||||
|
" gitsigns.nvim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
if !get(g:, 'loaded_signify', 0) && !get(g:, 'loaded_gitgutter', 0) && !get(g:, 'loaded_changes', 0) && !get(g:, 'loaded_quickfixsigns', 0)
|
if !get(g:, 'loaded_signify', 0)
|
||||||
|
\ && !get(g:, 'loaded_gitgutter', 0)
|
||||||
|
\ && !get(g:, 'loaded_changes', 0)
|
||||||
|
\ && !get(g:, 'loaded_quickfixsigns', 0)
|
||||||
|
\ && !exists(':Gitsigns')
|
||||||
|
\ && !exists("*CocAction")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let s:non_zero_only = get(g:, 'airline#extensions#hunks#non_zero_only', 0)
|
let s:non_zero_only = get(g:, 'airline#extensions#hunks#non_zero_only', 0)
|
||||||
let s:hunk_symbols = get(g:, 'airline#extensions#hunks#hunk_symbols', ['+', '~', '-'])
|
let s:hunk_symbols = get(g:, 'airline#extensions#hunks#hunk_symbols', ['+', '~', '-'])
|
||||||
|
|
||||||
function! s:get_hunks_signify()
|
function! s:coc_git_enabled() abort
|
||||||
|
if !exists("*CocAction") ||
|
||||||
|
\ !get(g:, 'airline#extensions#hunks#coc_git', 0)
|
||||||
|
" coc-git extension is disabled by default
|
||||||
|
" unless specifically being enabled by the user
|
||||||
|
" (as requested from coc maintainer)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:parse_hunk_status_dict(hunks) abort
|
||||||
|
let result = [0, 0, 0]
|
||||||
|
let result[0] = get(a:hunks, 'added', 0)
|
||||||
|
let result[1] = get(a:hunks, 'changed', 0)
|
||||||
|
let result[2] = get(a:hunks, 'removed', 0)
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:parse_hunk_status_decorated(hunks) abort
|
||||||
|
if empty(a:hunks)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let result = [0, 0, 0]
|
||||||
|
for val in split(a:hunks)
|
||||||
|
if val[0] is# '+'
|
||||||
|
let result[0] = val[1:] + 0
|
||||||
|
elseif val[0] is# '~'
|
||||||
|
let result[1] = val[1:] + 0
|
||||||
|
elseif val[0] is# '-'
|
||||||
|
let result[2] = val[1:] + 0
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_hunks_signify() abort
|
||||||
let hunks = sy#repo#get_stats()
|
let hunks = sy#repo#get_stats()
|
||||||
if hunks[0] >= 0
|
if hunks[0] >= 0
|
||||||
return hunks
|
return hunks
|
||||||
@@ -18,40 +61,44 @@ function! s:get_hunks_signify()
|
|||||||
return []
|
return []
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:is_branch_empty()
|
function! s:get_hunks_gitgutter() abort
|
||||||
return exists('*airline#extensions#branch#head') &&
|
let hunks = GitGutterGetHunkSummary()
|
||||||
\ empty(get(b:, 'airline_head', ''))
|
return hunks == [0, 0, 0] ? [] : hunks
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_hunks_gitgutter()
|
function! s:get_hunks_changes() abort
|
||||||
if !get(g:, 'gitgutter_enabled', 0) || s:is_branch_empty()
|
|
||||||
return ''
|
|
||||||
endif
|
|
||||||
return GitGutterGetHunkSummary()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:get_hunks_changes()
|
|
||||||
if !get(b:, 'changes_view_enabled', 0) || s:is_branch_empty()
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
let hunks = changes#GetStats()
|
let hunks = changes#GetStats()
|
||||||
return hunks == [0, 0, 0] ? [] : hunks
|
return hunks == [0, 0, 0] ? [] : hunks
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_hunks_empty()
|
function! s:get_hunks_gitsigns() abort
|
||||||
|
let hunks = get(b:, 'gitsigns_status_dict', {})
|
||||||
|
return s:parse_hunk_status_dict(hunks)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_hunks_coc() abort
|
||||||
|
let hunks = get(b:, 'coc_git_status', '')
|
||||||
|
return s:parse_hunk_status_decorated(hunks)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_hunks_empty() abort
|
||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_hunks()
|
function! airline#extensions#hunks#get_raw_hunks() abort
|
||||||
if !exists('b:source_func') || get(b:, 'source_func', '') is# 's:get_hunks_empty'
|
if !exists('b:source_func') || get(b:, 'source_func', '') is# 's:get_hunks_empty'
|
||||||
if get(g:, 'loaded_signify') && sy#buffer_is_active()
|
if get(g:, 'loaded_signify') && sy#buffer_is_active()
|
||||||
let b:source_func = 's:get_hunks_signify'
|
let b:source_func = 's:get_hunks_signify'
|
||||||
elseif exists('*GitGutterGetHunkSummary')
|
elseif exists('*GitGutterGetHunkSummary') && get(g:, 'gitgutter_enabled')
|
||||||
let b:source_func = 's:get_hunks_gitgutter'
|
let b:source_func = 's:get_hunks_gitgutter'
|
||||||
elseif exists('*changes#GetStats')
|
elseif exists('*changes#GetStats')
|
||||||
let b:source_func = 's:get_hunks_changes'
|
let b:source_func = 's:get_hunks_changes'
|
||||||
elseif exists('*quickfixsigns#vcsdiff#GetHunkSummary')
|
elseif exists('*quickfixsigns#vcsdiff#GetHunkSummary')
|
||||||
let b:source_func = 'quickfixsigns#vcsdiff#GetHunkSummary'
|
let b:source_func = 'quickfixsigns#vcsdiff#GetHunkSummary'
|
||||||
|
elseif exists(':Gitsigns')
|
||||||
|
let b:source_func = 's:get_hunks_gitsigns'
|
||||||
|
elseif s:coc_git_enabled()
|
||||||
|
let b:source_func = 's:get_hunks_coc'
|
||||||
else
|
else
|
||||||
let b:source_func = 's:get_hunks_empty'
|
let b:source_func = 's:get_hunks_empty'
|
||||||
endif
|
endif
|
||||||
@@ -59,35 +106,44 @@ function! s:get_hunks()
|
|||||||
return {b:source_func}()
|
return {b:source_func}()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#hunks#get_hunks()
|
function! airline#extensions#hunks#get_hunks() abort
|
||||||
if !get(w:, 'airline_active', 0)
|
if !get(w:, 'airline_active', 0)
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
" Cache values, so that it isn't called too often
|
" Cache values, so that it isn't called too often
|
||||||
if exists("b:airline_hunks") &&
|
if exists("b:airline_hunks") &&
|
||||||
\ get(b:, 'airline_changenr', 0) == b:changedtick &&
|
\ get(b:, 'airline_changenr', 0) == b:changedtick &&
|
||||||
\ winwidth(0) == get(s:, 'airline_winwidth', 0) &&
|
\ airline#util#winwidth() == get(s:, 'airline_winwidth', 0) &&
|
||||||
\ get(b:, 'source_func', '') isnot# 's:get_hunks_signify' &&
|
\ get(b:, 'source_func', '') isnot# 's:get_hunks_signify' &&
|
||||||
\ get(b:, 'source_func', '') isnot# 's:get_hunks_gitgutter' &&
|
\ get(b:, 'source_func', '') isnot# 's:get_hunks_gitgutter' &&
|
||||||
\ get(b:, 'source_func', '') isnot# 's:get_hunks_empty' &&
|
\ get(b:, 'source_func', '') isnot# 's:get_hunks_empty' &&
|
||||||
\ get(b:, 'source_func', '') isnot# 's:get_hunks_changes'
|
\ get(b:, 'source_func', '') isnot# 's:get_hunks_changes' &&
|
||||||
|
\ get(b:, 'source_func', '') isnot# 's:get_hunks_gitsigns' &&
|
||||||
|
\ get(b:, 'source_func', '') isnot# 's:get_hunks_coc'
|
||||||
return b:airline_hunks
|
return b:airline_hunks
|
||||||
endif
|
endif
|
||||||
let hunks = s:get_hunks()
|
let hunks = airline#extensions#hunks#get_raw_hunks()
|
||||||
let string = ''
|
let string = ''
|
||||||
|
let winwidth = get(airline#parts#get('hunks'), 'minwidth', 100)
|
||||||
if !empty(hunks)
|
if !empty(hunks)
|
||||||
|
" hunks should contain [added, changed, deleted]
|
||||||
for i in [0, 1, 2]
|
for i in [0, 1, 2]
|
||||||
if (s:non_zero_only == 0 && winwidth(0) > 100) || hunks[i] > 0
|
if (s:non_zero_only == 0 && airline#util#winwidth() > winwidth) || hunks[i] > 0
|
||||||
let string .= printf('%s%s ', s:hunk_symbols[i], hunks[i])
|
let string .= printf('%s%s ', s:hunk_symbols[i], hunks[i])
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
|
if index(airline#extensions#get_loaded_extensions(), 'branch') == -1 && string[-1:] == ' '
|
||||||
|
" branch extension not loaded, skip trailing whitespace
|
||||||
|
let string = string[0:-2]
|
||||||
|
endif
|
||||||
|
|
||||||
let b:airline_hunks = string
|
let b:airline_hunks = string
|
||||||
let b:airline_changenr = b:changedtick
|
let b:airline_changenr = b:changedtick
|
||||||
let s:airline_winwidth = winwidth(0)
|
let s:airline_winwidth = airline#util#winwidth()
|
||||||
return string
|
return string
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#hunks#init(ext)
|
function! airline#extensions#hunks#init(ext) abort
|
||||||
call airline#parts#define_function('hunks', 'airline#extensions#hunks#get_hunks')
|
call airline#parts#define_function('hunks', 'airline#extensions#hunks#get_hunks')
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Doron Behar, C.Brabandt et al.
|
" MIT License. Copyright (c) 2013-2021 Doron Behar, C.Brabandt et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -9,7 +9,18 @@ endif
|
|||||||
|
|
||||||
function! airline#extensions#keymap#status()
|
function! airline#extensions#keymap#status()
|
||||||
if (get(g:, 'airline#extensions#keymap#enabled', 1) && has('keymap'))
|
if (get(g:, 'airline#extensions#keymap#enabled', 1) && has('keymap'))
|
||||||
return printf('%s', (!empty(&keymap) ? (g:airline_symbols.keymap . ' '. &keymap) : ''))
|
let short_codes = get(g:, 'airline#extensions#keymap#short_codes', {})
|
||||||
|
let label = get(g:, 'airline#extensions#keymap#label', g:airline_symbols.keymap)
|
||||||
|
let default = get(g:, 'airline#extensions#keymap#default', '')
|
||||||
|
if (label !=# '')
|
||||||
|
let label .= ' '
|
||||||
|
endif
|
||||||
|
let keymap = &keymap
|
||||||
|
if has_key(short_codes, keymap)
|
||||||
|
let keymap = short_codes[keymap]
|
||||||
|
endif
|
||||||
|
return printf('%s', (!empty(keymap) && &iminsert ? (label . keymap) :
|
||||||
|
\ (!empty(default) ? label . default : default)))
|
||||||
else
|
else
|
||||||
return ''
|
return ''
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bjorn Neergaard, w0rp, hallettj et al.
|
" MIT License. Copyright (c) 2013-2021 Bjorn Neergaard, hallettj et al.
|
||||||
|
" Plugin: https://github.com/autozimu/LanguageClient-neovim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -20,17 +21,24 @@ let s:diagnostics = {}
|
|||||||
|
|
||||||
function! s:languageclient_refresh()
|
function! s:languageclient_refresh()
|
||||||
if get(g:, 'airline_skip_empty_sections', 0)
|
if get(g:, 'airline_skip_empty_sections', 0)
|
||||||
exe ':AirlineRefresh'
|
exe ':AirlineRefresh!'
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:record_diagnostics(state)
|
function! s:record_diagnostics(state)
|
||||||
|
" The returned message might not have the 'result' key
|
||||||
|
if has_key(a:state, 'result')
|
||||||
let result = json_decode(a:state.result)
|
let result = json_decode(a:state.result)
|
||||||
let s:diagnostics = result.diagnostics
|
let s:diagnostics = result.diagnostics
|
||||||
|
endif
|
||||||
call s:languageclient_refresh()
|
call s:languageclient_refresh()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_diagnostics()
|
function! s:get_diagnostics()
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
call LanguageClient#getState(function("s:record_diagnostics"))
|
call LanguageClient#getState(function("s:record_diagnostics"))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -62,6 +70,10 @@ function! s:airline_languageclient_get_line_number(type) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#languageclient#get(type)
|
function! airline#extensions#languageclient#get(type)
|
||||||
|
if get(b:, 'LanguageClient_isServerRunning', 0) ==# 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
let is_err = a:type == s:severity_error
|
let is_err = a:type == s:severity_error
|
||||||
let symbol = is_err ? s:error_symbol : s:warning_symbol
|
let symbol = is_err ? s:error_symbol : s:warning_symbol
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2018 mox et al.
|
" MIT License. Copyright (c) 2018-2021 mox et al.
|
||||||
|
" Plugin: https://github.com/mox-mox/vim-localsearch
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -11,25 +12,30 @@ let g:airline#extensions#localsearch#loaded = 001
|
|||||||
|
|
||||||
let s:spc = g:airline_symbols.space
|
let s:spc = g:airline_symbols.space
|
||||||
|
|
||||||
function! airline#extensions#localsearch#load_theme(palette)
|
let g:airline#extensions#localsearch#inverted = get(g:, 'airline#extensions#localsearch#inverted', 0)
|
||||||
|
|
||||||
|
function! airline#extensions#localsearch#load_theme(palette) abort
|
||||||
call airline#highlighter#exec('localsearch_dark', [ '#ffffff' , '#000000' , 15 , 1 , ''])
|
call airline#highlighter#exec('localsearch_dark', [ '#ffffff' , '#000000' , 15 , 1 , ''])
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! airline#extensions#localsearch#init(ext)
|
function! airline#extensions#localsearch#init(ext) abort
|
||||||
call a:ext.add_theme_func('airline#extensions#localsearch#load_theme')
|
call a:ext.add_theme_func('airline#extensions#localsearch#load_theme')
|
||||||
call a:ext.add_statusline_func('airline#extensions#localsearch#apply')
|
call a:ext.add_statusline_func('airline#extensions#localsearch#apply')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! airline#extensions#localsearch#apply(...)
|
function! airline#extensions#localsearch#apply(...) abort
|
||||||
" first variable is the statusline builder
|
" first variable is the statusline builder
|
||||||
let builder = a:1
|
let builder = a:1
|
||||||
|
|
||||||
""""" WARNING: the API for the builder is not finalized and may change
|
""""" WARNING: the API for the builder is not finalized and may change
|
||||||
if exists('#localsearch#WinEnter') " If localsearch mode is enabled
|
if exists('#localsearch#WinEnter') && !g:airline#extensions#localsearch#inverted " If localsearch mode is enabled and 'invert' option is false
|
||||||
call builder.add_section('localsearch_dark', s:spc.airline#section#create('LS').s:spc)
|
call builder.add_section('localsearch_dark', s:spc.airline#section#create('LS').s:spc)
|
||||||
endif
|
endif
|
||||||
|
if !exists('#localsearch#WinEnter') && g:airline#extensions#localsearch#inverted " If localsearch mode is disabled and 'invert' option is true
|
||||||
|
call builder.add_section('localsearch_dark', s:spc.airline#section#create('GS').s:spc)
|
||||||
|
endif
|
||||||
return 0
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 François-Xavier Carton et al.
|
||||||
|
" Plugin: https://github.com/prabirshrestha/vim-lsp
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !get(g:, 'lsp_loaded', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:airline_lsp_count(cnt, symbol) abort
|
||||||
|
return a:cnt ? a:symbol. a:cnt : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:airline_lsp_get_line_number(cnt, type) abort
|
||||||
|
let result = ''
|
||||||
|
|
||||||
|
if a:type ==# 'error'
|
||||||
|
let result = lsp#get_buffer_first_error_line()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(result)
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let open_lnum_symbol =
|
||||||
|
\ get(g:, 'airline#extensions#lsp#open_lnum_symbol', '(L')
|
||||||
|
let close_lnum_symbol =
|
||||||
|
\ get(g:, 'airline#extensions#lsp#close_lnum_symbol', ')')
|
||||||
|
|
||||||
|
return open_lnum_symbol . result . close_lnum_symbol
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#lsp#get(type) abort
|
||||||
|
if !exists(':LspDeclaration')
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let error_symbol = get(g:, 'airline#extensions#lsp#error_symbol', 'E:')
|
||||||
|
let warning_symbol = get(g:, 'airline#extensions#lsp#warning_symbol', 'W:')
|
||||||
|
let show_line_numbers = get(g:, 'airline#extensions#lsp#show_line_numbers', 1)
|
||||||
|
|
||||||
|
let is_err = a:type ==# 'error'
|
||||||
|
|
||||||
|
let symbol = is_err ? error_symbol : warning_symbol
|
||||||
|
|
||||||
|
let num = lsp#get_buffer_diagnostics_counts()[a:type]
|
||||||
|
|
||||||
|
if show_line_numbers == 1
|
||||||
|
return s:airline_lsp_count(num, symbol) . <sid>airline_lsp_get_line_number(num, a:type)
|
||||||
|
else
|
||||||
|
return s:airline_lsp_count(num, symbol)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#lsp#get_warning() abort
|
||||||
|
return airline#extensions#lsp#get('warning')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#lsp#get_error() abort
|
||||||
|
return airline#extensions#lsp#get('error')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:lsp_progress = []
|
||||||
|
function! airline#extensions#lsp#progress() abort
|
||||||
|
if get(w:, 'airline_active', 0)
|
||||||
|
if exists('*lsp#get_progress')
|
||||||
|
let s:lsp_progress = lsp#get_progress()
|
||||||
|
|
||||||
|
if len(s:lsp_progress) == 0 | return '' | endif
|
||||||
|
|
||||||
|
" show only most new progress
|
||||||
|
let s:lsp_progress = s:lsp_progress[0]
|
||||||
|
if s:lsp_progress['message'] !=# ''
|
||||||
|
let percent = ''
|
||||||
|
if has_key(s:lsp_progress, 'percentage') && s:lsp_progress['percentage'] >= 0
|
||||||
|
let percent = ' ' . string(s:lsp_progress['percentage']) . '%'
|
||||||
|
endif
|
||||||
|
let s:title = s:lsp_progress['title']
|
||||||
|
let message = airline#util#shorten(s:lsp_progress['message'] . percent, 91, 9)
|
||||||
|
return s:lsp_progress['server'] . ': ' . s:title . ' ' . message
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let s:timer = 0
|
||||||
|
let s:ignore_time = 0
|
||||||
|
function! airline#extensions#lsp#update() abort
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
if reltimefloat(reltime()) - s:ignore_time >=
|
||||||
|
\ get(g:, 'airline#extensions#lsp#progress_skip_time', 0.3)
|
||||||
|
\ || len(s:lsp_progress) == 0
|
||||||
|
call airline#update_statusline()
|
||||||
|
let s:ignore_time = reltimefloat(reltime())
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#lsp#init(ext) abort
|
||||||
|
call airline#parts#define_function('lsp_error_count', 'airline#extensions#lsp#get_error')
|
||||||
|
call airline#parts#define_function('lsp_warning_count', 'airline#extensions#lsp#get_warning')
|
||||||
|
call airline#parts#define_function('lsp_progress', 'airline#extensions#lsp#progress')
|
||||||
|
augroup airline_lsp_progress
|
||||||
|
autocmd!
|
||||||
|
autocmd User lsp_progress_updated call airline#extensions#lsp#update()
|
||||||
|
augroup END
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/neomake/neomake
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
if !exists(':Neomake')
|
if !exists(':Neomake')
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: http://www.drchip.org/astronaut/vim/#NETRW
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -30,5 +31,5 @@ endfunction
|
|||||||
|
|
||||||
function! airline#extensions#netrw#sortstring()
|
function! airline#extensions#netrw#sortstring()
|
||||||
let order = (get(g:, 'netrw_sort_direction', 'n') =~ 'n') ? '+' : '-'
|
let order = (get(g:, 'netrw_sort_direction', 'n') =~ 'n') ? '+' : '-'
|
||||||
return g:netrw_sort_by . (g:airline_symbols.space) . '[' . order . ']'
|
return get(g:, 'netrw_sort_by', '') . (g:airline_symbols.space) . '[' . order . ']'
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling, Christian Brabandt et al.
|
||||||
|
" Plugin: https://github.com/chrisbra/NrrwRgn
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -19,7 +20,7 @@ function! airline#extensions#nrrwrgn#apply(...)
|
|||||||
let dict=nrrwrgn#NrrwRgnStatus()
|
let dict=nrrwrgn#NrrwRgnStatus()
|
||||||
let vmode = { 'v': 'Char ', 'V': 'Line ', '': 'Block '}
|
let vmode = { 'v': 'Char ', 'V': 'Line ', '': 'Block '}
|
||||||
let mode = dict.visual ? vmode[dict.visual] : vmode['V']
|
let mode = dict.visual ? vmode[dict.visual] : vmode['V']
|
||||||
let winwidth = winwidth(0)
|
let winwidth = airline#util#winwidth()
|
||||||
if winwidth < 80
|
if winwidth < 80
|
||||||
let mode = mode[0]
|
let mode = mode[0]
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
" Apache 2.0 license. Copyright (c) 2019-2021 Copyright Neovim contributors.
|
||||||
|
" Plugin: https://github.com/neovim/nvim-lsp
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !(get(g:, 'airline#extensions#nvimlsp#enabled', 1)
|
||||||
|
\ && has('nvim')
|
||||||
|
\ && luaeval('vim.lsp ~= nil'))
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:airline_nvimlsp_count(cnt, symbol) abort
|
||||||
|
return a:cnt ? a:symbol. a:cnt : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#nvimlsp#get(type) abort
|
||||||
|
if has('nvim-0.11') && luaeval('vim.tbl_isempty(vim.lsp.get_clients({ bufnr = 0 }))')
|
||||||
|
return ''
|
||||||
|
elseif !has('nvim-0.11') && luaeval('vim.tbl_isempty(vim.lsp.buf_get_clients(0))')
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let error_symbol = get(g:, 'airline#extensions#nvimlsp#error_symbol', 'E:')
|
||||||
|
let warning_symbol = get(g:, 'airline#extensions#nvimlsp#warning_symbol', 'W:')
|
||||||
|
let show_line_numbers = get(g:, 'airline#extensions#nvimlsp#show_line_numbers', 1)
|
||||||
|
|
||||||
|
let is_err = a:type ==# 'Error'
|
||||||
|
|
||||||
|
let symbol = is_err ? error_symbol : warning_symbol
|
||||||
|
|
||||||
|
if luaeval("pcall(require, 'vim.diagnostic')")
|
||||||
|
let severity = a:type == 'Warning' ? 'Warn' : a:type
|
||||||
|
let num = len(v:lua.vim.diagnostic.get(0, { 'severity': severity }))
|
||||||
|
elseif luaeval("pcall(require, 'vim.lsp.diagnostic')")
|
||||||
|
let num = v:lua.vim.lsp.diagnostic.get_count(0, a:type)
|
||||||
|
else
|
||||||
|
let num = v:lua.vim.lsp.util.buf_diagnostics_count(a:type)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if show_line_numbers == 1 && luaeval("pcall(require, 'vim.diagnostic')") && num > 0
|
||||||
|
return s:airline_nvimlsp_count(num, symbol) . <sid>airline_nvimlsp_get_line_number(num, a:type)
|
||||||
|
else
|
||||||
|
return s:airline_nvimlsp_count(num, symbol)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:airline_nvimlsp_get_line_number(cnt, type) abort
|
||||||
|
let severity = a:type == 'Warning' ? 'Warn' : a:type
|
||||||
|
let num = v:lua.vim.diagnostic.get(0, { 'severity': severity })[0].lnum
|
||||||
|
|
||||||
|
let l:open_lnum_symbol =
|
||||||
|
\ get(g:, 'airline#extensions#nvimlsp#open_lnum_symbol', '(L')
|
||||||
|
let l:close_lnum_symbol =
|
||||||
|
\ get(g:, 'airline#extensions#nvimlsp#close_lnum_symbol', ')')
|
||||||
|
|
||||||
|
return open_lnum_symbol . num . close_lnum_symbol
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#nvimlsp#get_warning() abort
|
||||||
|
return airline#extensions#nvimlsp#get('Warning')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#nvimlsp#get_error() abort
|
||||||
|
return airline#extensions#nvimlsp#get('Error')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#nvimlsp#init(ext) abort
|
||||||
|
call airline#parts#define_function('nvimlsp_error_count', 'airline#extensions#nvimlsp#get_error')
|
||||||
|
call airline#parts#define_function('nvimlsp_warning_count', 'airline#extensions#nvimlsp#get_warning')
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/tpope/vim-obsession
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
" MIT License
|
||||||
|
" Plugin: https://github.com/OmniSharp/omnisharp-vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !get(g:, 'OmniSharp_loaded', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#omnisharp#server_status(...) abort
|
||||||
|
if !exists(':OmniSharpGotoDefinition') || !get(g:, 'OmniSharp_server_stdio', 0)
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let host = OmniSharp#GetHost(bufnr('%'))
|
||||||
|
if type(host.job) != v:t_dict || get(host.job, 'stopped')
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
let sln = fnamemodify(host.sln_or_dir, ':t')
|
||||||
|
|
||||||
|
if get(host.job, 'loaded', 0)
|
||||||
|
return sln
|
||||||
|
endif
|
||||||
|
|
||||||
|
try
|
||||||
|
let projectsloaded = OmniSharp#project#CountLoaded()
|
||||||
|
let projectstotal = OmniSharp#project#CountTotal()
|
||||||
|
catch
|
||||||
|
" The CountLoaded and CountTotal functions are very new - catch the error
|
||||||
|
" when they don't exist
|
||||||
|
let projectsloaded = 0
|
||||||
|
let projectstotal = 0
|
||||||
|
endtry
|
||||||
|
return printf('%s(%d/%d)', sln, projectsloaded, projectstotal)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#omnisharp#init(ext) abort
|
||||||
|
call airline#parts#define_function('omnisharp', 'airline#extensions#omnisharp#server_status')
|
||||||
|
augroup airline_omnisharp
|
||||||
|
autocmd!
|
||||||
|
autocmd User OmniSharpStarted,OmniSharpReady,OmniSharpStopped AirlineRefresh!
|
||||||
|
augroup END
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling, Christian Brabandt et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -10,43 +10,62 @@ function! airline#extensions#po#shorten()
|
|||||||
if exists("g:airline#extensions#po#displayed_limit")
|
if exists("g:airline#extensions#po#displayed_limit")
|
||||||
let w:displayed_po_limit = g:airline#extensions#po#displayed_limit
|
let w:displayed_po_limit = g:airline#extensions#po#displayed_limit
|
||||||
if len(b:airline_po_stats) > w:displayed_po_limit - 1
|
if len(b:airline_po_stats) > w:displayed_po_limit - 1
|
||||||
let b:airline_po_stats = b:airline_po_stats[0:(w:displayed_po_limit - 2)].(&encoding==?'utf-8' ? '…' : '.'). ']'
|
let b:airline_po_stats = b:airline_po_stats[0:(w:displayed_po_limit - 2)].(&encoding==?'utf-8' ? '…' : '.')
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if strlen(get(b:, 'airline_po_stats', '')) >= 30 && winwidth(0) < 150
|
if strlen(get(b:, 'airline_po_stats', '')) >= 30 && airline#util#winwidth() < 150
|
||||||
let fuzzy = ''
|
let fuzzy = ''
|
||||||
let untranslated = ''
|
let untranslated = ''
|
||||||
let messages = ''
|
let messages = ''
|
||||||
" Shorten [120 translated, 50 fuzzy, 4 untranslated] to [120T/50F/4U]
|
" Shorten [120 translated, 50 fuzzy, 4 untranslated] to [120T/50F/4U]
|
||||||
if b:airline_po_stats =~ 'fuzzy'
|
if b:airline_po_stats =~ 'fuzzy'
|
||||||
let fuzzy = substitute(b:airline_po_stats, '.*\(\d\+\) fuzzy.*', '\1F', '')
|
let fuzzy = substitute(b:airline_po_stats, '.\{-}\(\d\+\) fuzzy.*', '\1F', '')
|
||||||
|
if fuzzy == '0F'
|
||||||
|
let fuzzy = ''
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
if b:airline_po_stats =~ 'untranslated'
|
if b:airline_po_stats =~ 'untranslated'
|
||||||
let untranslated = substitute(b:airline_po_stats, '.*\(\d\+\) untranslated.*', '\1U', '')
|
let untranslated = substitute(b:airline_po_stats, '.\{-}\(\d\+\) untranslated.*', '\1U', '')
|
||||||
|
if untranslated == '0U'
|
||||||
|
let untranslated = ''
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
let messages = substitute(b:airline_po_stats, '\(\d\+\) translated.*', '\1T', '')
|
let messages = substitute(b:airline_po_stats, '\(\d\+\) translated.*', '\1T', '')
|
||||||
|
if messages ==# '0T'
|
||||||
|
let messages = ''
|
||||||
|
endif
|
||||||
let b:airline_po_stats = printf('%s%s%s', fuzzy, (empty(fuzzy) || empty(untranslated) ? '' : '/'), untranslated)
|
let b:airline_po_stats = printf('%s%s%s', fuzzy, (empty(fuzzy) || empty(untranslated) ? '' : '/'), untranslated)
|
||||||
if strlen(b:airline_po_stats) < 8
|
if strlen(b:airline_po_stats) < 10
|
||||||
let b:airline_po_stats = messages. (!empty(b:airline_po_stats) ? '/':''). b:airline_po_stats
|
let b:airline_po_stats = messages. (!empty(b:airline_po_stats) && !empty(messages) ? '/':''). b:airline_po_stats
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let b:airline_po_stats = '['.b:airline_po_stats. ']'
|
let b:airline_po_stats = '['.b:airline_po_stats. '] '
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#po#on_winenter()
|
function! airline#extensions#po#on_winenter()
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
" only reset cache, if the window size changed
|
" only reset cache, if the window size changed
|
||||||
if get(b:, 'airline_winwidth', 0) != winwidth(0)
|
if get(b:, 'airline_winwidth', 0) != airline#util#winwidth()
|
||||||
let b:airline_winwidth = winwidth(0)
|
let b:airline_winwidth = airline#util#winwidth()
|
||||||
" needs re-formatting
|
" needs re-formatting
|
||||||
unlet! b:airline_po_stats
|
unlet! b:airline_po_stats
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:autocmd_handler()
|
||||||
|
if exists('#airline')
|
||||||
|
unlet! b:airline_po_stats
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#po#apply(...)
|
function! airline#extensions#po#apply(...)
|
||||||
if &ft ==# 'po'
|
if &ft ==# 'po'
|
||||||
call airline#extensions#prepend_to_section('z', '%{airline#extensions#po#stats()}')
|
call airline#extensions#prepend_to_section('z', '%{airline#extensions#po#stats()}')
|
||||||
" Also reset the cache variable, if a window has been split, e.g. the winwidth changed
|
" Also reset the cache variable, if a window has been split, e.g. the winwidth changed
|
||||||
autocmd airline BufWritePost * unlet! b:airline_po_stats
|
autocmd airline BufWritePost * call s:autocmd_handler()
|
||||||
autocmd airline WinEnter * call airline#extensions#po#on_winenter()
|
autocmd airline WinEnter * call airline#extensions#po#on_winenter()
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
@@ -56,7 +75,12 @@ function! airline#extensions#po#stats()
|
|||||||
return b:airline_po_stats
|
return b:airline_po_stats
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Write stdout to null because we only want to see warnings.
|
||||||
|
if g:airline#init#is_windows
|
||||||
|
let cmd = 'msgfmt --statistics -o /NUL '
|
||||||
|
else
|
||||||
let cmd = 'msgfmt --statistics -o /dev/null -- '
|
let cmd = 'msgfmt --statistics -o /dev/null -- '
|
||||||
|
endif
|
||||||
if g:airline#init#vim_async
|
if g:airline#init#vim_async
|
||||||
call airline#async#get_msgfmt_stat(cmd, expand('%:p'))
|
call airline#async#get_msgfmt_stat(cmd, expand('%:p'))
|
||||||
elseif has("nvim")
|
elseif has("nvim")
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/petobens/poet_v
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
let s:spc = g:airline_symbols.space
|
||||||
|
|
||||||
|
function! airline#extensions#poetv#init(ext)
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#poetv#apply')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#poetv#apply(...)
|
||||||
|
if &filetype =~# 'python'
|
||||||
|
if get(g:, 'poetv_loaded', 0)
|
||||||
|
let statusline = poetv#statusline()
|
||||||
|
else
|
||||||
|
let statusline = fnamemodify($VIRTUAL_ENV, ':t')
|
||||||
|
endif
|
||||||
|
if !empty(statusline)
|
||||||
|
call airline#extensions#append_to_section('x',
|
||||||
|
\ s:spc.g:airline_right_alt_sep.s:spc.statusline)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#poetv#update()
|
||||||
|
if &filetype =~# 'python'
|
||||||
|
call airline#extensions#poetv#apply()
|
||||||
|
call airline#update_statusline()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/edkolev/promptline.vim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !exists('g:rufo_loaded')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:spc = g:airline_symbols.space
|
||||||
|
|
||||||
|
if !exists('g:airline#extensions#rufo#symbol')
|
||||||
|
let g:airline#extensions#rufo#symbol = 'RuFo'
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#rufo#init(ext)
|
||||||
|
call airline#parts#define_raw('rufo', '%{airline#extensions#rufo#get_status}')
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#rufo#apply')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#rufo#get_status()
|
||||||
|
let out = ''
|
||||||
|
if &ft == "ruby" && g:rufo_auto_formatting == 1
|
||||||
|
let out .= s:spc.g:airline_left_alt_sep.s:spc.g:airline#extensions#rufo#symbol
|
||||||
|
endif
|
||||||
|
return out
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" This function will be invoked just prior to the statusline getting modified.
|
||||||
|
function! airline#extensions#rufo#apply(...)
|
||||||
|
" First we check for the filetype.
|
||||||
|
if &filetype == "ruby"
|
||||||
|
" section_z.
|
||||||
|
let w:airline_section_z = get(w:, 'airline_section_z', g:airline_section_z)
|
||||||
|
|
||||||
|
" Then we just append this extension to it, optionally using separators.
|
||||||
|
let w:airline_section_z .= '%{airline#extensions#rufo#get_status()}'
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021
|
||||||
|
" vim: et ts=2 sts=2 sw=2 et
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#extensions#scrollbar#calculate() abort
|
||||||
|
if winwidth(0) > get(g:, 'airline#extensions#scrollbar#minwidth', 200)
|
||||||
|
\ && get(w:, 'airline_active', 0)
|
||||||
|
let overwrite = 0
|
||||||
|
if &encoding ==? 'utf-8' && !get(g:, 'airline_symbols_ascii', 0)
|
||||||
|
let [left, right, middle] = [ '|', '|', '█']
|
||||||
|
let overwrite = 1
|
||||||
|
else
|
||||||
|
let [left, right, middle] = [ '[', ']', '-']
|
||||||
|
endif
|
||||||
|
let spc = get(g:, 'airline_symbols.space', ' ')
|
||||||
|
let width = 20 " max width, plus one border and indicator
|
||||||
|
let perc = (line('.') + 0.0) / (line('$') + 0.0)
|
||||||
|
let before = float2nr(round(perc * width))
|
||||||
|
if before >= 0 && line('.') == 1
|
||||||
|
let before = 0
|
||||||
|
let left = (overwrite ? '' : left)
|
||||||
|
endif
|
||||||
|
let after = width - before
|
||||||
|
if (after <= 1 && line('.') == line('$'))
|
||||||
|
let after = 0
|
||||||
|
let right = (overwrite ? '' : right)
|
||||||
|
endif
|
||||||
|
return left . repeat(spc, before) . middle . repeat(spc, after) . right
|
||||||
|
else
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#scrollbar#init(ext) abort
|
||||||
|
call airline#parts#define_function('scrollbar', 'airline#extensions#scrollbar#calculate')
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" This extension is inspired by vim-anzu <https://github.com/osyo-manga/vim-anzu>.
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !exists('*searchcount')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#searchcount#init(ext) abort
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#searchcount#apply')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#searchcount#apply(...) abort
|
||||||
|
call airline#extensions#append_to_section('y',
|
||||||
|
\ '%{v:hlsearch ? airline#extensions#searchcount#status() : ""}')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:search_term()
|
||||||
|
let show_search_term = get(g:, 'airline#extensions#searchcount#show_search_term', 1)
|
||||||
|
let search_term_limit = get(g:, 'airline#extensions#searchcount#search_term_limit', 8)
|
||||||
|
|
||||||
|
if show_search_term == 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
" shorten for all width smaller than 300 (this is just a guess)
|
||||||
|
" this uses a non-breaking space, because it looks like
|
||||||
|
" a leading space is stripped :/
|
||||||
|
return "\ua0" . '/' . airline#util#shorten(getreg('/'), 300, search_term_limit)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#searchcount#status() abort
|
||||||
|
try
|
||||||
|
let result = searchcount(#{recompute: 1, maxcount: -1})
|
||||||
|
if empty(result) || result.total ==# 0
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
if result.incomplete ==# 1 " timed out
|
||||||
|
return printf('%s[?/??]', s:search_term())
|
||||||
|
elseif result.incomplete ==# 2 " max count exceeded
|
||||||
|
if result.total > result.maxcount &&
|
||||||
|
\ result.current > result.maxcount
|
||||||
|
return printf('%s[>%d/>%d]', s:search_term(),
|
||||||
|
\ result.current, result.total)
|
||||||
|
elseif result.total > result.maxcount
|
||||||
|
return printf('%s[%d/>%d]', s:search_term(),
|
||||||
|
\ result.current, result.total)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return printf('%s[%d/%d]', s:search_term(),
|
||||||
|
\ result.current, result.total)
|
||||||
|
catch
|
||||||
|
return ''
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/vim-syntastic/syntastic
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -22,9 +23,9 @@ function! airline#extensions#syntastic#get(type)
|
|||||||
let _backup = get(g:, 'syntastic_stl_format', '')
|
let _backup = get(g:, 'syntastic_stl_format', '')
|
||||||
let is_err = (a:type is# 'error')
|
let is_err = (a:type is# 'error')
|
||||||
if is_err
|
if is_err
|
||||||
let g:syntastic_stl_format = get(g:, 'airline#extensions#syntastic#stl_format_err', '%E{[%e(#%fe)]}')
|
let g:syntastic_stl_format = get(g:, 'airline#extensions#syntastic#stl_format_err', '%E{[%fe(#%e)]}')
|
||||||
else
|
else
|
||||||
let g:syntastic_stl_format = get(g:, 'airline#extensions#syntastic#stl_format_warn', '%W{[%w(#%fw)]}')
|
let g:syntastic_stl_format = get(g:, 'airline#extensions#syntastic#stl_format_warn', '%W{[%fw(#%w)]}')
|
||||||
endif
|
endif
|
||||||
let cnt = SyntasticStatuslineFlag()
|
let cnt = SyntasticStatuslineFlag()
|
||||||
if !empty(_backup)
|
if !empty(_backup)
|
||||||
|
|||||||
@@ -1,18 +1,22 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2 et
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
|
||||||
let s:taboo = get(g:, 'airline#extensions#taboo#enabled', 1) && get(g:, 'loaded_taboo', 0)
|
let s:taboo = get(g:, 'airline#extensions#taboo#enabled', 1) && get(g:, 'loaded_taboo', 0)
|
||||||
if s:taboo
|
if s:taboo
|
||||||
let g:taboo_tabline = 0
|
let g:taboo_tabline = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let s:ctrlspace = get(g:, 'CtrlSpaceLoaded', 0)
|
let s:ctrlspace = get(g:, 'CtrlSpaceLoaded', 0)
|
||||||
|
let s:tabws = get(g:, 'tabws_loaded', 0)
|
||||||
|
let s:current_tabcnt = -1
|
||||||
|
|
||||||
|
" Dictionary functions are not possible in Vim9 Script,
|
||||||
|
" so use the legacy Vim Script implementation
|
||||||
|
|
||||||
function! airline#extensions#tabline#init(ext)
|
function! airline#extensions#tabline#init(ext)
|
||||||
if has('gui_running')
|
if has('gui_running') && match(&guioptions, 'e') > -1
|
||||||
set guioptions-=e
|
set guioptions-=e
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -23,54 +27,66 @@ function! airline#extensions#tabline#init(ext)
|
|||||||
call a:ext.add_theme_func('airline#extensions#tabline#load_theme')
|
call a:ext.add_theme_func('airline#extensions#tabline#load_theme')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:toggle_off()
|
function! airline#extensions#tabline#add_label(dict, type, right)
|
||||||
|
if get(g:, 'airline#extensions#tabline#show_tab_type', 1)
|
||||||
|
call a:dict.add_section_spaced('airline_tablabel'. (a:right ? '_right' : ''),
|
||||||
|
\ get(g:, 'airline#extensions#tabline#'.a:type.'_label', a:type))
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#add_tab_label(dict)
|
||||||
|
let show_tab_count = get(g:, 'airline#extensions#tabline#show_tab_count', 1)
|
||||||
|
if show_tab_count == 2
|
||||||
|
call a:dict.add_section_spaced('airline_tabmod', printf('%s %d/%d', "tab", tabpagenr(), tabpagenr('$')))
|
||||||
|
elseif show_tab_count == 1 && tabpagenr('$') > 1
|
||||||
|
call a:dict.add_section_spaced('airline_tabmod', printf('%s %d/%d', "tab", tabpagenr(), tabpagenr('$')))
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
if !exists(":def") || !airline#util#has_vim9_script()
|
||||||
|
|
||||||
|
" Legacy Vim Script Implementation
|
||||||
|
|
||||||
|
function! s:toggle_off()
|
||||||
call airline#extensions#tabline#autoshow#off()
|
call airline#extensions#tabline#autoshow#off()
|
||||||
call airline#extensions#tabline#tabs#off()
|
call airline#extensions#tabline#tabs#off()
|
||||||
call airline#extensions#tabline#buffers#off()
|
call airline#extensions#tabline#buffers#off()
|
||||||
if s:ctrlspace
|
if s:ctrlspace
|
||||||
call airline#extensions#tabline#ctrlspace#off()
|
call airline#extensions#tabline#ctrlspace#off()
|
||||||
endif
|
endif
|
||||||
endfunction
|
if s:tabws
|
||||||
|
call airline#extensions#tabline#tabws#off()
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! s:toggle_on()
|
function! s:toggle_on()
|
||||||
|
if get(g:, 'airline_statusline_ontop', 0)
|
||||||
|
call airline#extensions#tabline#enable()
|
||||||
|
let &tabline='%!airline#statusline('.winnr().')'
|
||||||
|
return
|
||||||
|
endif
|
||||||
call airline#extensions#tabline#autoshow#on()
|
call airline#extensions#tabline#autoshow#on()
|
||||||
call airline#extensions#tabline#tabs#on()
|
call airline#extensions#tabline#tabs#on()
|
||||||
call airline#extensions#tabline#buffers#on()
|
call airline#extensions#tabline#buffers#on()
|
||||||
if s:ctrlspace
|
if s:ctrlspace
|
||||||
call airline#extensions#tabline#ctrlspace#on()
|
call airline#extensions#tabline#ctrlspace#on()
|
||||||
endif
|
endif
|
||||||
|
if s:tabws
|
||||||
|
call airline#extensions#tabline#tabws#on()
|
||||||
|
endif
|
||||||
|
|
||||||
set tabline=%!airline#extensions#tabline#get()
|
set tabline=%!airline#extensions#tabline#get()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:update_tabline()
|
function! airline#extensions#tabline#load_theme(palette)
|
||||||
if get(g:, 'airline#extensions#tabline#disable_refresh', 0)
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let match = expand('<afile>')
|
|
||||||
if pumvisible()
|
|
||||||
return
|
|
||||||
elseif !get(g:, 'airline#extensions#tabline#enabled', 0)
|
|
||||||
return
|
|
||||||
" return, if buffer matches ignore pattern or is directory (netrw)
|
|
||||||
elseif empty(match) || airline#util#ignore_buf(match)
|
|
||||||
\ || isdirectory(expand("<afile>"))
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
call airline#util#doautocmd('BufMRUChange')
|
|
||||||
" sometimes, the tabline is not correctly updated see #1580
|
|
||||||
" so force redraw here
|
|
||||||
let &tabline = &tabline
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! airline#extensions#tabline#load_theme(palette)
|
|
||||||
if pumvisible()
|
if pumvisible()
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
let colors = get(a:palette, 'tabline', {})
|
let colors = get(a:palette, 'tabline', {})
|
||||||
let tablabel = get(colors, 'airline_tablabel', a:palette.normal.airline_b)
|
let tablabel = get(colors, 'airline_tablabel', a:palette.normal.airline_b)
|
||||||
" Theme for tabs on the left
|
" Theme for tabs on the left
|
||||||
let tab = get(colors, 'airline_tab', a:palette.normal.airline_b)
|
let tab = get(colors, 'airline_tab', a:palette.inactive.airline_c)
|
||||||
let tabsel = get(colors, 'airline_tabsel', a:palette.normal.airline_a)
|
let tabsel = get(colors, 'airline_tabsel', a:palette.normal.airline_a)
|
||||||
let tabtype = get(colors, 'airline_tabtype', a:palette.visual.airline_a)
|
let tabtype = get(colors, 'airline_tabtype', a:palette.visual.airline_a)
|
||||||
let tabfill = get(colors, 'airline_tabfill', a:palette.normal.airline_c)
|
let tabfill = get(colors, 'airline_tabfill', a:palette.normal.airline_c)
|
||||||
@@ -78,9 +94,11 @@ function! airline#extensions#tabline#load_theme(palette)
|
|||||||
let tabhid = get(colors, 'airline_tabhid', a:palette.normal.airline_c)
|
let tabhid = get(colors, 'airline_tabhid', a:palette.normal.airline_c)
|
||||||
if has_key(a:palette, 'normal_modified') && has_key(a:palette.normal_modified, 'airline_c')
|
if has_key(a:palette, 'normal_modified') && has_key(a:palette.normal_modified, 'airline_c')
|
||||||
let tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal_modified.airline_c)
|
let tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal_modified.airline_c)
|
||||||
|
let tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal_modified.airline_c)
|
||||||
else
|
else
|
||||||
"Fall back to normal airline_c if modified airline_c isn't present
|
"Fall back to normal airline_c if modified airline_c isn't present
|
||||||
let tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal.airline_c)
|
let tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal.airline_c)
|
||||||
|
let tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal.airline_c)
|
||||||
endif
|
endif
|
||||||
call airline#highlighter#exec('airline_tablabel', tablabel)
|
call airline#highlighter#exec('airline_tablabel', tablabel)
|
||||||
call airline#highlighter#exec('airline_tab', tab)
|
call airline#highlighter#exec('airline_tab', tab)
|
||||||
@@ -92,26 +110,63 @@ function! airline#extensions#tabline#load_theme(palette)
|
|||||||
call airline#highlighter#exec('airline_tabhid', tabhid)
|
call airline#highlighter#exec('airline_tabhid', tabhid)
|
||||||
|
|
||||||
" Theme for tabs on the right
|
" Theme for tabs on the right
|
||||||
|
" label on the right
|
||||||
|
let tablabel_r = get(colors, 'airline_tablabel', a:palette.normal.airline_b)
|
||||||
let tabsel_right = get(colors, 'airline_tabsel_right', a:palette.normal.airline_a)
|
let tabsel_right = get(colors, 'airline_tabsel_right', a:palette.normal.airline_a)
|
||||||
let tab_right = get(colors, 'airline_tab_right', a:palette.inactive.airline_c)
|
let tab_right = get(colors, 'airline_tab_right', a:palette.inactive.airline_c)
|
||||||
let tabmod_right = get(colors, 'airline_tabmod_right', a:palette.insert.airline_a)
|
let tabmod_right = get(colors, 'airline_tabmod_right', a:palette.insert.airline_a)
|
||||||
let tabhid_right = get(colors, 'airline_tabhid_right', a:palette.normal.airline_c)
|
let tabhid_right = get(colors, 'airline_tabhid_right', a:palette.normal.airline_c)
|
||||||
if has_key(a:palette, 'normal_modified') && has_key(a:palette.normal_modified, 'airline_c')
|
call airline#highlighter#exec('airline_tablabel_right', tablabel_r)
|
||||||
let tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal_modified.airline_c)
|
|
||||||
else
|
|
||||||
"Fall back to normal airline_c if modified airline_c isn't present
|
|
||||||
let tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal.airline_c)
|
|
||||||
endif
|
|
||||||
call airline#highlighter#exec('airline_tab_right', tab_right)
|
call airline#highlighter#exec('airline_tab_right', tab_right)
|
||||||
call airline#highlighter#exec('airline_tabsel_right', tabsel_right)
|
call airline#highlighter#exec('airline_tabsel_right', tabsel_right)
|
||||||
call airline#highlighter#exec('airline_tabmod_right', tabmod_right)
|
call airline#highlighter#exec('airline_tabmod_right', tabmod_right)
|
||||||
call airline#highlighter#exec('airline_tabhid_right', tabhid_right)
|
call airline#highlighter#exec('airline_tabhid_right', tabhid_right)
|
||||||
call airline#highlighter#exec('airline_tabmod_unsel_right', tabmodu_right)
|
call airline#highlighter#exec('airline_tabmod_unsel_right', tabmodu_right)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:current_tabcnt = -1
|
function! s:update_tabline(forceit)
|
||||||
|
if get(g:, 'airline#extensions#tabline#disable_refresh', 0)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
" loading a session file
|
||||||
|
" On SessionLoadPost, g:SessionLoad variable is still set :/
|
||||||
|
if !a:forceit && get(g:, 'SessionLoad', 0)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let match = expand('<afile>')
|
||||||
|
if pumvisible()
|
||||||
|
return
|
||||||
|
elseif !get(g:, 'airline#extensions#tabline#enabled', 0)
|
||||||
|
return
|
||||||
|
" return, if buffer matches ignore pattern or is directory (netrw)
|
||||||
|
elseif empty(match) || airline#util#ignore_buf(match) || isdirectory(match)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
call airline#util#doautocmd('BufMRUChange')
|
||||||
|
call airline#extensions#tabline#redraw()
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#get()
|
function! airline#extensions#tabline#redraw()
|
||||||
|
" sometimes, the tabline is not correctly updated see #1580
|
||||||
|
" so force redraw here
|
||||||
|
if exists(":redrawtabline") == 2
|
||||||
|
redrawtabline
|
||||||
|
else
|
||||||
|
" Have to set a property equal to itself to get airline to re-eval.
|
||||||
|
" Setting `let &tabline=&tabline` destroys the cursor position so we
|
||||||
|
" need something less invasive.
|
||||||
|
let &ro = &ro
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#enable()
|
||||||
|
if &lines > 3
|
||||||
|
set showtabline=2
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#get()
|
||||||
let show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
|
let show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
|
||||||
let show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
|
let show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
|
||||||
|
|
||||||
@@ -121,21 +176,27 @@ function! airline#extensions#tabline#get()
|
|||||||
call airline#extensions#tabline#tabs#invalidate()
|
call airline#extensions#tabline#tabs#invalidate()
|
||||||
call airline#extensions#tabline#buffers#invalidate()
|
call airline#extensions#tabline#buffers#invalidate()
|
||||||
call airline#extensions#tabline#ctrlspace#invalidate()
|
call airline#extensions#tabline#ctrlspace#invalidate()
|
||||||
|
call airline#extensions#tabline#tabws#invalidate()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists('#airline#BufAdd#*')
|
if !exists('#airline#BufAdd#*')
|
||||||
autocmd airline BufAdd * call <sid>update_tabline()
|
autocmd airline BufAdd * call <sid>update_tabline(0)
|
||||||
|
endif
|
||||||
|
if !exists('#airline#SessionLoadPost')
|
||||||
|
autocmd airline SessionLoadPost * call <sid>update_tabline(1)
|
||||||
endif
|
endif
|
||||||
if s:ctrlspace
|
if s:ctrlspace
|
||||||
return airline#extensions#tabline#ctrlspace#get()
|
return airline#extensions#tabline#ctrlspace#get()
|
||||||
|
elseif s:tabws
|
||||||
|
return airline#extensions#tabline#tabws#get()
|
||||||
elseif show_buffers && curtabcnt == 1 || !show_tabs
|
elseif show_buffers && curtabcnt == 1 || !show_tabs
|
||||||
return airline#extensions#tabline#buffers#get()
|
return airline#extensions#tabline#buffers#get()
|
||||||
else
|
else
|
||||||
return airline#extensions#tabline#tabs#get()
|
return airline#extensions#tabline#tabs#get()
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#title(n)
|
function! airline#extensions#tabline#title(n)
|
||||||
let title = ''
|
let title = ''
|
||||||
if s:taboo
|
if s:taboo
|
||||||
let title = TabooTabTitle(a:n)
|
let title = TabooTabTitle(a:n)
|
||||||
@@ -145,25 +206,35 @@ function! airline#extensions#tabline#title(n)
|
|||||||
let title = gettabvar(a:n, 'title')
|
let title = gettabvar(a:n, 'title')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let formatter = get(g:, 'airline#extensions#tabline#tabtitle_formatter')
|
||||||
|
if empty(title) && formatter !=# '' && exists("*".formatter)
|
||||||
|
let title = call(formatter, [a:n])
|
||||||
|
endif
|
||||||
|
|
||||||
if empty(title)
|
if empty(title)
|
||||||
let buflist = tabpagebuflist(a:n)
|
let buflist = tabpagebuflist(a:n)
|
||||||
let winnr = tabpagewinnr(a:n)
|
let winnr = tabpagewinnr(a:n)
|
||||||
let all_buffers = airline#extensions#tabline#buflist#list()
|
let all_buffers = airline#extensions#tabline#buflist#list()
|
||||||
return airline#extensions#tabline#get_buffer_name(
|
let curbuf = filter(buflist, 'index(all_buffers, v:val) != -1')
|
||||||
\ buflist[winnr - 1],
|
if len(curbuf) == 0
|
||||||
\ filter(buflist, 'index(all_buffers, v:val) != -1'))
|
call add(curbuf, tabpagebuflist(a:n)[0])
|
||||||
|
endif
|
||||||
|
" a:n: -> buffer number
|
||||||
|
" curbuf: list of buffers in current tabpage
|
||||||
|
" we need the buffername in current tab page.
|
||||||
|
return airline#extensions#tabline#get_buffer_name(curbuf[0], curbuf)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return title
|
return title
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#get_buffer_name(nr, ...)
|
function! airline#extensions#tabline#get_buffer_name(nr, ...)
|
||||||
let buffers = a:0 ? a:1 : airline#extensions#tabline#buflist#list()
|
let buffers = a:0 ? a:1 : airline#extensions#tabline#buflist#list()
|
||||||
let formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')
|
let formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')
|
||||||
return airline#extensions#tabline#formatters#{formatter}#format(a:nr, buffers)
|
return airline#extensions#tabline#formatters#{formatter}#format(a:nr, buffers)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#new_builder()
|
function! airline#extensions#tabline#new_builder()
|
||||||
let builder_context = {
|
let builder_context = {
|
||||||
\ 'active' : 1,
|
\ 'active' : 1,
|
||||||
\ 'tabline' : 1,
|
\ 'tabline' : 1,
|
||||||
@@ -179,9 +250,9 @@ function! airline#extensions#tabline#new_builder()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
return airline#extensions#tabline#builder#new(builder_context)
|
return airline#extensions#tabline#builder#new(builder_context)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#group_of_bufnr(tab_bufs, bufnr)
|
function! airline#extensions#tabline#group_of_bufnr(tab_bufs, bufnr)
|
||||||
let cur = bufnr('%')
|
let cur = bufnr('%')
|
||||||
if cur == a:bufnr
|
if cur == a:bufnr
|
||||||
if g:airline_detect_modified && getbufvar(a:bufnr, '&modified')
|
if g:airline_detect_modified && getbufvar(a:bufnr, '&modified')
|
||||||
@@ -199,11 +270,214 @@ function! airline#extensions#tabline#group_of_bufnr(tab_bufs, bufnr)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return group
|
return group
|
||||||
endfunction
|
endfunction
|
||||||
|
finish
|
||||||
function! airline#extensions#tabline#add_label(dict, type)
|
else
|
||||||
if get(g:, 'airline#extensions#tabline#show_tab_type', 1)
|
def s:toggle_off(): void
|
||||||
call a:dict.add_section_spaced('airline_tablabel',
|
airline#extensions#tabline#autoshow#off()
|
||||||
\ get(g:, 'airline#extensions#tabline#'.a:type.'_label', a:type))
|
airline#extensions#tabline#tabs#off()
|
||||||
|
airline#extensions#tabline#buffers#off()
|
||||||
|
if s:ctrlspace
|
||||||
|
airline#extensions#tabline#ctrlspace#off()
|
||||||
endif
|
endif
|
||||||
endfunction
|
if s:tabws
|
||||||
|
airline#extensions#tabline#tabws#off()
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:toggle_on(): void
|
||||||
|
if get(g:, 'airline_statusline_ontop', 0)
|
||||||
|
airline#extensions#tabline#enable()
|
||||||
|
&tabline = '%!airline#statusline(' .. winnr() .. ')'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
airline#extensions#tabline#autoshow#on()
|
||||||
|
airline#extensions#tabline#tabs#on()
|
||||||
|
airline#extensions#tabline#buffers#on()
|
||||||
|
if s:ctrlspace
|
||||||
|
airline#extensions#tabline#ctrlspace#on()
|
||||||
|
endif
|
||||||
|
if s:tabws
|
||||||
|
airline#extensions#tabline#tabws#on()
|
||||||
|
endif
|
||||||
|
&tabline = '%!airline#extensions#tabline#get()'
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#load_theme(palette: dict<any>): number
|
||||||
|
# Needs to return a number, because it is implicitly used as extern_funcref
|
||||||
|
# And funcrefs should return a value (see airline#util#exec_funcrefs())
|
||||||
|
if pumvisible()
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
var colors = get(palette, 'tabline', {})
|
||||||
|
var tablabel = get(colors, 'airline_tablabel', palette.normal.airline_b)
|
||||||
|
# Theme for tabs on the left
|
||||||
|
var tab = get(colors, 'airline_tab', palette.inactive.airline_c)
|
||||||
|
var tabsel = get(colors, 'airline_tabsel', palette.normal.airline_a)
|
||||||
|
var tabtype = get(colors, 'airline_tabtype', palette.visual.airline_a)
|
||||||
|
var tabfill = get(colors, 'airline_tabfill', palette.normal.airline_c)
|
||||||
|
var tabmod = get(colors, 'airline_tabmod', palette.insert.airline_a)
|
||||||
|
var tabhid = get(colors, 'airline_tabhid', palette.normal.airline_c)
|
||||||
|
var tabmodu = tabhid
|
||||||
|
var tabmodu_right = tabhid
|
||||||
|
if has_key(palette, 'normal_modified') && has_key(palette.normal_modified, 'airline_c')
|
||||||
|
tabmodu = get(colors, 'airline_tabmod_unsel', palette.normal_modified.airline_c)
|
||||||
|
tabmodu_right = get(colors, 'airline_tabmod_unsel_right', palette.normal_modified.airline_c)
|
||||||
|
else
|
||||||
|
# Fall back to normal airline_c if modified airline_c isn't present
|
||||||
|
tabmodu = get(colors, 'airline_tabmod_unsel', palette.normal.airline_c)
|
||||||
|
tabmodu_right = get(colors, 'airline_tabmod_unsel_right', palette.normal.airline_c)
|
||||||
|
endif
|
||||||
|
airline#highlighter#exec('airline_tablabel', tablabel)
|
||||||
|
airline#highlighter#exec('airline_tab', tab)
|
||||||
|
airline#highlighter#exec('airline_tabsel', tabsel)
|
||||||
|
airline#highlighter#exec('airline_tabtype', tabtype)
|
||||||
|
airline#highlighter#exec('airline_tabfill', tabfill)
|
||||||
|
airline#highlighter#exec('airline_tabmod', tabmod)
|
||||||
|
airline#highlighter#exec('airline_tabmod_unsel', tabmodu)
|
||||||
|
airline#highlighter#exec('airline_tabmod_unsel_right', tabmodu_right)
|
||||||
|
airline#highlighter#exec('airline_tabhid', tabhid)
|
||||||
|
# Theme for tabs on the right
|
||||||
|
var tablabel_r = get(colors, 'airline_tablabel', palette.normal.airline_b)
|
||||||
|
var tabsel_right = get(colors, 'airline_tabsel_right', palette.normal.airline_a)
|
||||||
|
var tab_right = get(colors, 'airline_tab_right', palette.inactive.airline_c)
|
||||||
|
var tabmod_right = get(colors, 'airline_tabmod_right', palette.insert.airline_a)
|
||||||
|
var tabhid_right = get(colors, 'airline_tabhid_right', palette.normal.airline_c)
|
||||||
|
airline#highlighter#exec('airline_tablabel_right', tablabel_r)
|
||||||
|
airline#highlighter#exec('airline_tab_right', tab_right)
|
||||||
|
airline#highlighter#exec('airline_tabsel_right', tabsel_right)
|
||||||
|
airline#highlighter#exec('airline_tabmod_right', tabmod_right)
|
||||||
|
airline#highlighter#exec('airline_tabhid_right', tabhid_right)
|
||||||
|
return 0
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:update_tabline(forceit: number): void
|
||||||
|
if get(g:, 'airline#extensions#tabline#disable_refresh', 0)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
# loading a session file
|
||||||
|
# On SessionLoadPost, g:SessionLoad variable is still set :/
|
||||||
|
if !forceit && get(g:, 'SessionLoad', 0)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
var match = expand('<afile>')
|
||||||
|
if pumvisible()
|
||||||
|
return
|
||||||
|
elseif !get(g:, 'airline#extensions#tabline#enabled', 0)
|
||||||
|
return
|
||||||
|
# return, if buffer matches ignore pattern or is directory (netrw)
|
||||||
|
elseif empty(match) || airline#util#ignore_buf(match) || isdirectory(match)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
airline#util#doautocmd('BufMRUChange')
|
||||||
|
airline#extensions#tabline#redraw()
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#redraw(): void
|
||||||
|
# redrawtabline should always be available
|
||||||
|
:redrawtabline
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#enable(): void
|
||||||
|
if &lines > 3
|
||||||
|
&showtabline = 2
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#get(): string
|
||||||
|
var show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
|
||||||
|
var show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
|
||||||
|
|
||||||
|
var curtabcnt = tabpagenr('$')
|
||||||
|
if curtabcnt != s:current_tabcnt
|
||||||
|
s:current_tabcnt = curtabcnt
|
||||||
|
airline#extensions#tabline#tabs#invalidate()
|
||||||
|
airline#extensions#tabline#buffers#invalidate()
|
||||||
|
airline#extensions#tabline#ctrlspace#invalidate()
|
||||||
|
airline#extensions#tabline#tabws#invalidate()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('#airline#BufAdd#*')
|
||||||
|
autocmd airline BufAdd * call <sid>update_tabline(0)
|
||||||
|
endif
|
||||||
|
if !exists('#airline#SessionLoadPost')
|
||||||
|
autocmd airline SessionLoadPost * call <sid>update_tabline(1)
|
||||||
|
endif
|
||||||
|
if s:ctrlspace
|
||||||
|
return airline#extensions#tabline#ctrlspace#get()
|
||||||
|
elseif s:tabws
|
||||||
|
return airline#extensions#tabline#tabws#get()
|
||||||
|
elseif show_buffers && curtabcnt == 1 || !show_tabs
|
||||||
|
return airline#extensions#tabline#buffers#get()
|
||||||
|
else
|
||||||
|
return airline#extensions#tabline#tabs#get()
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#title(n: number): string
|
||||||
|
var title = ''
|
||||||
|
if get(g:, 'airline#extensions#taboo#enabled', 1) &&
|
||||||
|
get(g:, 'loaded_taboo', 0) && exists("*TabooTabTitle")
|
||||||
|
title = call("TabooTabTitle", [n])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(title)
|
||||||
|
title = gettabvar(n, 'title')
|
||||||
|
endif
|
||||||
|
|
||||||
|
var formatter = get(g:, 'airline#extensions#tabline#tabtitle_formatter', '')
|
||||||
|
if empty(title) && !empty(formatter) && exists("*" .. formatter)
|
||||||
|
title = call(formatter, [n])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if empty(title)
|
||||||
|
var buflist = tabpagebuflist(n)
|
||||||
|
var winnr = tabpagewinnr(n)
|
||||||
|
var all_buffers = airline#extensions#tabline#buflist#list()
|
||||||
|
var curbuf = filter(buflist, (_, v) => index(all_buffers, v) != -1)
|
||||||
|
if len(curbuf) == 0
|
||||||
|
add(curbuf, tabpagebuflist(n)[0])
|
||||||
|
endif
|
||||||
|
return airline#extensions#tabline#get_buffer_name(curbuf[0], curbuf)
|
||||||
|
endif
|
||||||
|
return title
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#get_buffer_name(nr: number, buffers = airline#extensions#tabline#buflist#list()): string
|
||||||
|
var Formatter = 'airline#extensions#tabline#formatters#' .. get(g:, 'airline#extensions#tabline#formatter', 'default') .. '#format'
|
||||||
|
return call(Formatter, [ nr, buffers] )
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#new_builder(): dict<any>
|
||||||
|
var builder_context = {
|
||||||
|
'active': 1,
|
||||||
|
'tabline': 1,
|
||||||
|
'right_sep': get(g:, 'airline#extensions#tabline#right_sep', g:airline_right_sep),
|
||||||
|
'right_alt_sep': get(g:, 'airline#extensions#tabline#right_alt_sep', g:airline_right_alt_sep),
|
||||||
|
'left_sep': get(g:, 'airline#extensions#tabline#left_sep', g:airline_left_sep),
|
||||||
|
'left_alt_sep': get(g:, 'airline#extensions#tabline#left_alt_sep', g:airline_left_alt_sep),
|
||||||
|
}
|
||||||
|
return airline#extensions#tabline#builder#new(builder_context)
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#group_of_bufnr(tab_bufs: list<number>, bufnr: number): string
|
||||||
|
var cur = bufnr('%')
|
||||||
|
var group = ''
|
||||||
|
if cur == bufnr
|
||||||
|
if g:airline_detect_modified && getbufvar(bufnr, '&modified')
|
||||||
|
group = 'airline_tabmod'
|
||||||
|
else
|
||||||
|
group = 'airline_tabsel'
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
if g:airline_detect_modified && getbufvar(bufnr, '&modified')
|
||||||
|
group = 'airline_tabmod_unsel'
|
||||||
|
elseif index(tab_bufs, bufnr) > -1
|
||||||
|
group = 'airline_tab'
|
||||||
|
else
|
||||||
|
group = 'airline_tabhid'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return group
|
||||||
|
enddef
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -24,15 +24,13 @@ function! airline#extensions#tabline#autoshow#on()
|
|||||||
augroup airline_tabline_autoshow
|
augroup airline_tabline_autoshow
|
||||||
autocmd!
|
autocmd!
|
||||||
if s:buf_min_count <= 0 && s:tab_min_count <= 1
|
if s:buf_min_count <= 0 && s:tab_min_count <= 1
|
||||||
if &lines > 3
|
call airline#extensions#tabline#enable()
|
||||||
set showtabline=2
|
|
||||||
endif
|
|
||||||
else
|
else
|
||||||
if s:show_buffers == 1
|
if s:show_buffers == 1
|
||||||
autocmd BufEnter * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()))
|
autocmd BufEnter * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()))
|
||||||
autocmd BufUnload * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()) - 1)
|
autocmd BufUnload * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()) - 1)
|
||||||
else
|
else
|
||||||
autocmd TabEnter * call <sid>show_tabline(s:tab_min_count, tabpagenr('$'))
|
autocmd TabNew,TabClosed * call <sid>show_tabline(s:tab_min_count, tabpagenr('$'))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -33,9 +33,13 @@ function! airline#extensions#tabline#buffers#off()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#buffers#on()
|
function! airline#extensions#tabline#buffers#on()
|
||||||
|
let terminal_event = has("nvim") ? 'TermOpen' : 'TerminalOpen'
|
||||||
augroup airline_tabline_buffers
|
augroup airline_tabline_buffers
|
||||||
autocmd!
|
autocmd!
|
||||||
autocmd BufDelete * call airline#extensions#tabline#buflist#clean()
|
autocmd BufDelete * call airline#extensions#tabline#buflist#clean()
|
||||||
|
if exists("##".terminal_event)
|
||||||
|
exe 'autocmd '. terminal_event. ' * call airline#extensions#tabline#buflist#clean()'
|
||||||
|
endif
|
||||||
autocmd User BufMRUChange call airline#extensions#tabline#buflist#clean()
|
autocmd User BufMRUChange call airline#extensions#tabline#buflist#clean()
|
||||||
augroup END
|
augroup END
|
||||||
endfunction
|
endfunction
|
||||||
@@ -65,7 +69,7 @@ function! airline#extensions#tabline#buffers#get()
|
|||||||
let show_buf_label_first = 1
|
let show_buf_label_first = 1
|
||||||
endif
|
endif
|
||||||
if show_buf_label_first
|
if show_buf_label_first
|
||||||
call airline#extensions#tabline#add_label(b, 'buffers')
|
call airline#extensions#tabline#add_label(b, 'buffers', 0)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let b.tab_bufs = tabpagebuflist(tabpagenr())
|
let b.tab_bufs = tabpagebuflist(tabpagenr())
|
||||||
@@ -116,7 +120,7 @@ function! airline#extensions#tabline#buffers#get()
|
|||||||
|
|
||||||
if get(g:, 'airline#extensions#tabline#buffer_idx_mode', 0)
|
if get(g:, 'airline#extensions#tabline#buffer_idx_mode', 0)
|
||||||
if len(s:number_map) > 0
|
if len(s:number_map) > 0
|
||||||
return space. get(s:number_map, a:i+1, '') . '%(%{airline#extensions#tabline#get_buffer_name('.bufnum.')}%)' . s:spc
|
return space. s:get_number(a:i) . '%(%{airline#extensions#tabline#get_buffer_name('.bufnum.')}%)' . s:spc
|
||||||
else
|
else
|
||||||
return '['.(a:i+1).s:spc.'%(%{airline#extensions#tabline#get_buffer_name('.bufnum.')}%)'.']'
|
return '['.(a:i+1).s:spc.'%(%{airline#extensions#tabline#get_buffer_name('.bufnum.')}%)'.']'
|
||||||
endif
|
endif
|
||||||
@@ -133,33 +137,42 @@ function! airline#extensions#tabline#buffers#get()
|
|||||||
call b.split()
|
call b.split()
|
||||||
call b.add_section('airline_tabfill', '')
|
call b.add_section('airline_tabfill', '')
|
||||||
if !show_buf_label_first
|
if !show_buf_label_first
|
||||||
call airline#extensions#tabline#add_label(b, 'buffers')
|
call airline#extensions#tabline#add_label(b, 'buffers', 1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if tabpagenr('$') > 1
|
call airline#extensions#tabline#add_tab_label(b)
|
||||||
call b.add_section_spaced('airline_tabmod', printf('%s %d/%d', "tab", tabpagenr(), tabpagenr('$')))
|
|
||||||
endif
|
|
||||||
|
|
||||||
let s:current_bufnr = cur
|
let s:current_bufnr = cur
|
||||||
let s:column_width = &columns
|
let s:column_width = &columns
|
||||||
let s:current_tabline = b.build()
|
let s:current_tabline = b.build()
|
||||||
let s:current_visible_buffers = copy(b.buffers)
|
let s:current_visible_buffers = copy(b.buffers)
|
||||||
if b._right_title <= last_buffer
|
" Do not remove from s:current_visible_buffers, this breaks s:select_tab()
|
||||||
call remove(s:current_visible_buffers, b._right_title, last_buffer)
|
"if b._right_title <= last_buffer
|
||||||
endif
|
" call remove(s:current_visible_buffers, b._right_title, last_buffer)
|
||||||
if b._left_title > 0
|
"endif
|
||||||
call remove(s:current_visible_buffers, 0, b._left_title)
|
"if b._left_title > 0
|
||||||
endif
|
" call remove(s:current_visible_buffers, 0, b._left_title)
|
||||||
|
"endif
|
||||||
return s:current_tabline
|
return s:current_tabline
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:get_number(index)
|
||||||
|
if len(s:number_map) == 0
|
||||||
|
return a:index
|
||||||
|
endif
|
||||||
|
let bidx_mode = get(g:, 'airline#extensions#tabline#buffer_idx_mode', 0)
|
||||||
|
let number_format = bidx_mode > 1 ? '%02d' : '%d'
|
||||||
|
let l:count = bidx_mode == 2 ? a:index+11 : a:index+1
|
||||||
|
return join(map(split(printf(number_format, l:count), '\zs'),
|
||||||
|
\ 'get(s:number_map, v:val, "")'), '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! s:select_tab(buf_index)
|
function! s:select_tab(buf_index)
|
||||||
" no-op when called in 'keymap_ignored_filetypes'
|
" no-op when called in 'keymap_ignored_filetypes'
|
||||||
if count(get(g:, 'airline#extensions#tabline#keymap_ignored_filetypes',
|
if count(get(g:, 'airline#extensions#tabline#keymap_ignored_filetypes',
|
||||||
\ ['vimfiler', 'nerdtree']), &ft)
|
\ ['vimfiler', 'nerdtree']), &ft)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let idx = a:buf_index
|
let idx = a:buf_index
|
||||||
if s:current_visible_buffers[0] == -1
|
if s:current_visible_buffers[0] == -1
|
||||||
let idx = idx + 1
|
let idx = idx + 1
|
||||||
@@ -180,18 +193,22 @@ function! s:jump_to_tab(offset)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:map_keys()
|
function! s:map_keys()
|
||||||
if get(g:, 'airline#extensions#tabline#buffer_idx_mode', 1)
|
let bidx_mode = get(g:, 'airline#extensions#tabline#buffer_idx_mode', 1)
|
||||||
noremap <silent> <Plug>AirlineSelectTab1 :call <SID>select_tab(0)<CR>
|
if bidx_mode > 0
|
||||||
noremap <silent> <Plug>AirlineSelectTab2 :call <SID>select_tab(1)<CR>
|
if bidx_mode == 1
|
||||||
noremap <silent> <Plug>AirlineSelectTab3 :call <SID>select_tab(2)<CR>
|
for i in range(1, 10)
|
||||||
noremap <silent> <Plug>AirlineSelectTab4 :call <SID>select_tab(3)<CR>
|
exe printf('noremap <silent> <Plug>AirlineSelectTab%d :call <SID>select_tab(%d)<CR>', i%10, i-1)
|
||||||
noremap <silent> <Plug>AirlineSelectTab5 :call <SID>select_tab(4)<CR>
|
endfor
|
||||||
noremap <silent> <Plug>AirlineSelectTab6 :call <SID>select_tab(5)<CR>
|
else
|
||||||
noremap <silent> <Plug>AirlineSelectTab7 :call <SID>select_tab(6)<CR>
|
let start_idx = bidx_mode == 2 ? 11 : 1
|
||||||
noremap <silent> <Plug>AirlineSelectTab8 :call <SID>select_tab(7)<CR>
|
for i in range(start_idx, 99)
|
||||||
noremap <silent> <Plug>AirlineSelectTab9 :call <SID>select_tab(8)<CR>
|
exe printf('noremap <silent> <Plug>AirlineSelectTab%02d :call <SID>select_tab(%d)<CR>', i, i-start_idx)
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
noremap <silent> <Plug>AirlineSelectPrevTab :<C-u>call <SID>jump_to_tab(-v:count1)<CR>
|
noremap <silent> <Plug>AirlineSelectPrevTab :<C-u>call <SID>jump_to_tab(-v:count1)<CR>
|
||||||
noremap <silent> <Plug>AirlineSelectNextTab :<C-u>call <SID>jump_to_tab(v:count1)<CR>
|
noremap <silent> <Plug>AirlineSelectNextTab :<C-u>call <SID>jump_to_tab(v:count1)<CR>
|
||||||
|
" Enable this for debugging
|
||||||
|
" com! AirlineBufferList :echo map(copy(s:current_visible_buffers), {i,k -> k.": ".bufname(k)})
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -203,11 +220,15 @@ function! airline#extensions#tabline#buffers#clickbuf(minwid, clicks, button, mo
|
|||||||
if a:clicks == 1 && a:modifiers !~# '[^ ]'
|
if a:clicks == 1 && a:modifiers !~# '[^ ]'
|
||||||
if a:button is# 'l'
|
if a:button is# 'l'
|
||||||
" left button - switch to buffer
|
" left button - switch to buffer
|
||||||
|
try
|
||||||
silent execute 'buffer' a:minwid
|
silent execute 'buffer' a:minwid
|
||||||
|
catch
|
||||||
|
call airline#util#warning("Cannot switch buffer, current buffer is modified! See :h 'hidden'")
|
||||||
|
endtry
|
||||||
elseif a:button is# 'm'
|
elseif a:button is# 'm'
|
||||||
" middle button - delete buffer
|
" middle button - delete buffer
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#tabline#middle_click_preserves_windows', 0) == 0
|
if get(g:, 'airline#extensions#tabline#middle_click_preserves_windows', 0) == 0 || winnr('$') == 1
|
||||||
" just simply delete the clicked buffer. This will cause windows
|
" just simply delete the clicked buffer. This will cause windows
|
||||||
" associated with the clicked buffer to be closed.
|
" associated with the clicked buffer to be closed.
|
||||||
silent execute 'bdelete' a:minwid
|
silent execute 'bdelete' a:minwid
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -8,13 +8,21 @@ function! airline#extensions#tabline#buflist#invalidate()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#buflist#clean()
|
function! airline#extensions#tabline#buflist#clean()
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
call airline#extensions#tabline#buflist#invalidate()
|
call airline#extensions#tabline#buflist#invalidate()
|
||||||
call airline#extensions#tabline#buffers#invalidate()
|
call airline#extensions#tabline#buffers#invalidate()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" paths in excludes list
|
" paths in excludes list
|
||||||
function! s:ExcludePaths(nr, exclude_paths)
|
function! s:ExcludePaths(nr, exclude_paths)
|
||||||
let bpath = fnamemodify(bufname(a:nr), ":p")
|
let bname = bufname(a:nr)
|
||||||
|
if empty(bname)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let bpath = fnamemodify(bname, ":p")
|
||||||
for f in a:exclude_paths
|
for f in a:exclude_paths
|
||||||
if bpath =~# f | return 1 | endif
|
if bpath =~# f | return 1 | endif
|
||||||
endfor
|
endfor
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -71,7 +71,7 @@ endfunction
|
|||||||
|
|
||||||
" Compute the change in size of the tabline caused by separators
|
" Compute the change in size of the tabline caused by separators
|
||||||
"
|
"
|
||||||
" This should be kept up-to-date with |s:get_transitioned_seperator| and
|
" This should be kept up-to-date with |s:get_transitioned_separator| and
|
||||||
" |s:get_separator| in autoload/airline/builder.vim
|
" |s:get_separator| in autoload/airline/builder.vim
|
||||||
function! s:get_separator_change_with_end(new_group, old_group, new_end_group, old_end_group, sep_size, alt_sep_size)
|
function! s:get_separator_change_with_end(new_group, old_group, new_end_group, old_end_group, sep_size, alt_sep_size)
|
||||||
let sep_change = 0
|
let sep_change = 0
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2016-2018 Kevin Sapper et al.
|
" MIT License. Copyright (c) 2016-2021 Kevin Sapper et al.
|
||||||
|
" Plugin: https://github.com/szw/vim-ctrlspace
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -23,13 +24,24 @@ function! airline#extensions#tabline#ctrlspace#on()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#ctrlspace#invalidate()
|
function! airline#extensions#tabline#ctrlspace#invalidate()
|
||||||
|
if !exists('#airline')
|
||||||
|
return
|
||||||
|
endif
|
||||||
let s:current_bufnr = -1
|
let s:current_bufnr = -1
|
||||||
let s:current_tabnr = -1
|
let s:current_tabnr = -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, pull_right)
|
function! airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, pull_right)
|
||||||
let pos_extension = (a:pull_right ? '_right' : '')
|
let pos_extension = (a:pull_right ? '_right' : '')
|
||||||
let buffer_list = ctrlspace#api#BufferList(a:cur_tab)
|
|
||||||
|
let buffer_list = []
|
||||||
|
for bufferindex in sort(keys(ctrlspace#api#Buffers(a:cur_tab)), 'N')
|
||||||
|
for buffer in ctrlspace#api#BufferList(a:cur_tab)
|
||||||
|
if buffer['index'] == bufferindex
|
||||||
|
call add(buffer_list, buffer)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
|
||||||
" add by tenfy(tenfyzhong@qq.com)
|
" add by tenfy(tenfyzhong@qq.com)
|
||||||
" if the current buffer no in the buffer list
|
" if the current buffer no in the buffer list
|
||||||
|
|||||||
@@ -1,43 +1,85 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2 et
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
let s:fnamecollapse = get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
|
if !exists(":def") || !airline#util#has_vim9_script()
|
||||||
let s:fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
|
function! airline#extensions#tabline#formatters#default#format(bufnr, buffers)
|
||||||
let s:buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
|
let fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
|
||||||
let s:buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
|
|
||||||
let s:buf_modified_symbol = g:airline_symbols.modified
|
|
||||||
|
|
||||||
function! airline#extensions#tabline#formatters#default#format(bufnr, buffers)
|
|
||||||
let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
|
let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
|
||||||
let _ = ''
|
let _ = ''
|
||||||
|
|
||||||
let name = bufname(a:bufnr)
|
let name = bufname(a:bufnr)
|
||||||
if empty(name)
|
if empty(name)
|
||||||
let _ .= '[No Name]'
|
let _ = '[No Name]'
|
||||||
|
elseif name =~ 'term://'
|
||||||
|
" Neovim Terminal
|
||||||
|
let _ = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '')
|
||||||
else
|
else
|
||||||
if s:fnamecollapse
|
if get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
|
||||||
" Does not handle non-ascii characters like Cyrillic: 'D/Учёба/t.c'
|
" Does not handle non-ascii characters like Cyrillic: 'D/Учёба/t.c'
|
||||||
"let _ .= substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g')
|
"let _ .= substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g')
|
||||||
let _ .= pathshorten(fnamemodify(name, fmod))
|
let _ = pathshorten(fnamemodify(name, fmod))
|
||||||
else
|
else
|
||||||
let _ .= fnamemodify(name, fmod)
|
let _ = fnamemodify(name, fmod)
|
||||||
endif
|
endif
|
||||||
if a:bufnr != bufnr('%') && s:fnametruncate && strlen(_) > s:fnametruncate
|
if a:bufnr != bufnr('%') && fnametruncate && strlen(_) > fnametruncate
|
||||||
let _ = strpart(_, 0, s:fnametruncate)
|
let _ = airline#util#strcharpart(_, 0, fnametruncate)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _)
|
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name)
|
function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name)
|
||||||
let _ = s:buf_nr_show ? printf(s:buf_nr_format, a:bufnr) : ''
|
let buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
|
||||||
|
let buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
|
||||||
|
|
||||||
|
let _ = buf_nr_show ? printf(buf_nr_format, a:bufnr) : ''
|
||||||
let _ .= substitute(a:buffer_name, '\\', '/', 'g')
|
let _ .= substitute(a:buffer_name, '\\', '/', 'g')
|
||||||
|
|
||||||
if getbufvar(a:bufnr, '&modified') == 1
|
if getbufvar(a:bufnr, '&modified') == 1
|
||||||
let _ .= s:buf_modified_symbol
|
let _ .= g:airline_symbols.modified
|
||||||
endif
|
endif
|
||||||
return _
|
return _
|
||||||
endfunction
|
endfunction
|
||||||
|
finish
|
||||||
|
else
|
||||||
|
" Vim9 Script implementation
|
||||||
|
def airline#extensions#tabline#formatters#default#format(bufnr: number, buffers: list<number>): string
|
||||||
|
var fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
|
||||||
|
var fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
|
||||||
|
var result = ''
|
||||||
|
|
||||||
|
var name = bufname(bufnr)
|
||||||
|
if empty(name)
|
||||||
|
result = '[No Name]'
|
||||||
|
elseif name =~ 'term://'
|
||||||
|
# Neovim Terminal
|
||||||
|
result = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '')
|
||||||
|
else
|
||||||
|
if get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
|
||||||
|
result = pathshorten(fnamemodify(name, fmod))
|
||||||
|
else
|
||||||
|
result = fnamemodify(name, fmod)
|
||||||
|
endif
|
||||||
|
if bufnr != bufnr('%') && fnametruncate && strlen(result) > fnametruncate
|
||||||
|
result = airline#util#strcharpart(result, 0, fnametruncate)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return airline#extensions#tabline#formatters#default#wrap_name(bufnr, result)
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#extensions#tabline#formatters#default#wrap_name(bufnr: number, buffer_name: string): string
|
||||||
|
var buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
|
||||||
|
var buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
|
||||||
|
|
||||||
|
var result = buf_nr_show ? printf(buf_nr_format, bufnr) : ''
|
||||||
|
result ..= substitute(buffer_name, '\\', '/', 'g')
|
||||||
|
|
||||||
|
if getbufvar(bufnr, '&modified')
|
||||||
|
result ..= g:airline_symbols.modified
|
||||||
|
endif
|
||||||
|
return result
|
||||||
|
enddef
|
||||||
|
endif
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -7,7 +7,7 @@ function! airline#extensions#tabline#formatters#jsformatter#format(bufnr, buffer
|
|||||||
let buf = bufname(a:bufnr)
|
let buf = bufname(a:bufnr)
|
||||||
let filename = fnamemodify(buf, ':t')
|
let filename = fnamemodify(buf, ':t')
|
||||||
|
|
||||||
if filename == 'index.js' || filename == 'index.jsx' || filename == 'index.ts' || filename == 'index.tsx'
|
if filename ==# 'index.js' || filename ==# 'index.jsx' || filename ==# 'index.ts' || filename ==# 'index.tsx' || filename ==# 'index.vue'
|
||||||
return fnamemodify(buf, ':p:h:t') . '/i'
|
return fnamemodify(buf, ':p:h:t') . '/i'
|
||||||
else
|
else
|
||||||
return airline#extensions#tabline#formatters#unique_tail_improved#format(a:bufnr, a:buffers)
|
return airline#extensions#tabline#formatters#unique_tail_improved#format(a:bufnr, a:buffers)
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#formatters#short_path#format(bufnr, buffers)
|
||||||
|
let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':p:h:t')
|
||||||
|
let _ = ''
|
||||||
|
|
||||||
|
let name = bufname(a:bufnr)
|
||||||
|
if empty(name)
|
||||||
|
let _ .= '[No Name]'
|
||||||
|
elseif name =~ 'term://'
|
||||||
|
" Neovim Terminal
|
||||||
|
let _ = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '')
|
||||||
|
else
|
||||||
|
let _ .= fnamemodify(name, fmod) . '/' . fnamemodify(name, ':t')
|
||||||
|
endif
|
||||||
|
|
||||||
|
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _)
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#formatters#short_path_improved#format(bufnr, buffers) abort
|
||||||
|
let name = bufname(a:bufnr)
|
||||||
|
if empty(name)
|
||||||
|
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, '[No Name]')
|
||||||
|
endif
|
||||||
|
|
||||||
|
let tail = s:tail(a:bufnr)
|
||||||
|
let tails = s:tails(a:bufnr, a:buffers)
|
||||||
|
|
||||||
|
if has_key(tails, tail)
|
||||||
|
" Use short path for duplicates
|
||||||
|
return airline#extensions#tabline#formatters#short_path#format(a:bufnr, a:buffers)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Use tail for unique filenames
|
||||||
|
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, tail)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:tails(self, buffers) abort
|
||||||
|
let tails = {}
|
||||||
|
for nr in a:buffers
|
||||||
|
if nr != a:self
|
||||||
|
let tails[s:tail(nr)] = 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return tails
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:tail(bufnr) abort
|
||||||
|
return fnamemodify(bufname(a:bufnr), ':t')
|
||||||
|
endfunction
|
||||||
@@ -1,14 +1,18 @@
|
|||||||
" MIT License. Copyright (c) 2017-2018 C.Brabandt et al.
|
" MIT License. Copyright (c) 2017-2021 Christian Brabandt et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
function! airline#extensions#tabline#formatters#tabnr#format(tab_nr_type, nr)
|
function! airline#extensions#tabline#formatters#tabnr#format(tab_nr, buflist)
|
||||||
if a:tab_nr_type == 0 " nr of splits
|
let spc=g:airline_symbols.space
|
||||||
return (g:airline_symbols.space).'%{len(tabpagebuflist('.a:nr.'))}'
|
let tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)
|
||||||
elseif a:tab_nr_type == 1 " tab number
|
if tab_nr_type == 0 " nr of splits
|
||||||
return (g:airline_symbols.space).a:nr
|
return spc. len(tabpagebuflist(a:tab_nr))
|
||||||
else "== 2 splits and tab number
|
elseif tab_nr_type == 1 " tab number
|
||||||
return (g:airline_symbols.space).a:nr.'.%{len(tabpagebuflist('.a:nr.'))}'
|
" Return only the current tab number
|
||||||
|
return spc. a:tab_nr
|
||||||
|
else " tab_nr_type == 2 splits and tab number
|
||||||
|
" return the tab number followed by the number of buffers (in the tab)
|
||||||
|
return spc. a:tab_nr. spc. len(tabpagebuflist(a:tab_nr))
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -10,9 +10,14 @@ function! airline#extensions#tabline#formatters#unique_tail#format(bufnr, buffer
|
|||||||
for nr in a:buffers
|
for nr in a:buffers
|
||||||
let name = bufname(nr)
|
let name = bufname(nr)
|
||||||
if empty(name)
|
if empty(name)
|
||||||
let map[nr] = '[No Name]'
|
let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, '[No Name]')
|
||||||
|
else
|
||||||
|
if name =~ 'term://'
|
||||||
|
" Neovim Terminal
|
||||||
|
let tail = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '')
|
||||||
else
|
else
|
||||||
let tail = fnamemodify(name, ':s?/\+$??:t')
|
let tail = fnamemodify(name, ':s?/\+$??:t')
|
||||||
|
endif
|
||||||
if has_key(tails, tail)
|
if has_key(tails, tail)
|
||||||
let duplicates[nr] = nr
|
let duplicates[nr] = nr
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -22,7 +22,9 @@ function! airline#extensions#tabline#tabs#on()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#tabs#invalidate()
|
function! airline#extensions#tabline#tabs#invalidate()
|
||||||
|
if exists('#airline')
|
||||||
let s:current_bufnr = -1
|
let s:current_bufnr = -1
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#tabs#get()
|
function! airline#extensions#tabline#tabs#get()
|
||||||
@@ -39,9 +41,11 @@ function! airline#extensions#tabline#tabs#get()
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let s:filtered_buflist = airline#extensions#tabline#buflist#list()
|
||||||
|
|
||||||
let b = airline#extensions#tabline#new_builder()
|
let b = airline#extensions#tabline#new_builder()
|
||||||
|
|
||||||
call airline#extensions#tabline#add_label(b, 'tabs')
|
call airline#extensions#tabline#add_label(b, 'tabs', 0)
|
||||||
|
|
||||||
function! b.get_group(i) dict
|
function! b.get_group(i) dict
|
||||||
let curtab = tabpagenr()
|
let curtab = tabpagenr()
|
||||||
@@ -50,9 +54,11 @@ function! airline#extensions#tabline#tabs#get()
|
|||||||
let group = 'airline_tabsel'
|
let group = 'airline_tabsel'
|
||||||
if g:airline_detect_modified
|
if g:airline_detect_modified
|
||||||
for bi in tabpagebuflist(curtab)
|
for bi in tabpagebuflist(curtab)
|
||||||
|
if index(s:filtered_buflist,bi) != -1
|
||||||
if getbufvar(bi, '&modified')
|
if getbufvar(bi, '&modified')
|
||||||
let group = 'airline_tabmod'
|
let group = 'airline_tabmod'
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
|
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
|
||||||
@@ -64,8 +70,7 @@ function! airline#extensions#tabline#tabs#get()
|
|||||||
let val = '%('
|
let val = '%('
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#tabline#show_tab_nr', 1)
|
if get(g:, 'airline#extensions#tabline#show_tab_nr', 1)
|
||||||
let tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)
|
let val .= airline#extensions#tabline#tabs#tabnr_formatter(a:i, tabpagebuflist(a:i))
|
||||||
let val .= airline#extensions#tabline#tabs#tabnr_formatter(tab_nr_type, a:i)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return val.'%'.a:i.'T %{airline#extensions#tabline#title('.a:i.')} %)'
|
return val.'%'.a:i.'T %{airline#extensions#tabline#title('.a:i.')} %)'
|
||||||
@@ -79,19 +84,22 @@ function! airline#extensions#tabline#tabs#get()
|
|||||||
|
|
||||||
if get(g:, 'airline#extensions#tabline#show_close_button', 1)
|
if get(g:, 'airline#extensions#tabline#show_close_button', 1)
|
||||||
call b.add_section('airline_tab_right', ' %999X'.
|
call b.add_section('airline_tab_right', ' %999X'.
|
||||||
\ get(g:, 'airline#extensions#tabline#close_symbol', 'X').' ')
|
\ get(g:, 'airline#extensions#tabline#close_symbol', 'X').'%X ')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if get(g:, 'airline#extensions#tabline#show_splits', 1) == 1
|
if get(g:, 'airline#extensions#tabline#show_splits', 1) == 1
|
||||||
let buffers = tabpagebuflist(curtab)
|
let buffers = tabpagebuflist(curtab)
|
||||||
for nr in buffers
|
for nr in buffers
|
||||||
|
if index(s:filtered_buflist,nr) != -1
|
||||||
let group = airline#extensions#tabline#group_of_bufnr(buffers, nr) . "_right"
|
let group = airline#extensions#tabline#group_of_bufnr(buffers, nr) . "_right"
|
||||||
call b.add_section_spaced(group, '%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)')
|
call b.add_section_spaced(group, '%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)')
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
if get(g:, 'airline#extensions#tabline#show_buffers', 1)
|
if get(g:, 'airline#extensions#tabline#show_buffers', 1)
|
||||||
call airline#extensions#tabline#add_label(b, 'buffers')
|
call airline#extensions#tabline#add_label(b, 'buffers', 1)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
call airline#extensions#tabline#add_tab_label(b)
|
||||||
|
|
||||||
let s:current_bufnr = curbuf
|
let s:current_bufnr = curbuf
|
||||||
let s:current_tabnr = curtab
|
let s:current_tabnr = curtab
|
||||||
@@ -104,21 +112,30 @@ function! airline#extensions#tabline#tabs#map_keys()
|
|||||||
if maparg('<Plug>AirlineSelectTab1', 'n') is# ':1tabn<CR>'
|
if maparg('<Plug>AirlineSelectTab1', 'n') is# ':1tabn<CR>'
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
noremap <silent> <Plug>AirlineSelectTab1 :1tabn<CR>
|
let bidx_mode = get(g:, 'airline#extensions#tabline#buffer_idx_mode', 1)
|
||||||
noremap <silent> <Plug>AirlineSelectTab2 :2tabn<CR>
|
if bidx_mode == 1
|
||||||
noremap <silent> <Plug>AirlineSelectTab3 :3tabn<CR>
|
for i in range(1, 10)
|
||||||
noremap <silent> <Plug>AirlineSelectTab4 :4tabn<CR>
|
exe printf('noremap <silent> <Plug>AirlineSelectTab%d :%dtabn<CR>', i%10, i)
|
||||||
noremap <silent> <Plug>AirlineSelectTab5 :5tabn<CR>
|
endfor
|
||||||
noremap <silent> <Plug>AirlineSelectTab6 :6tabn<CR>
|
else
|
||||||
noremap <silent> <Plug>AirlineSelectTab7 :7tabn<CR>
|
for i in range(11, 99)
|
||||||
noremap <silent> <Plug>AirlineSelectTab8 :8tabn<CR>
|
exe printf('noremap <silent> <Plug>AirlineSelectTab%d :%dtabn<CR>', i, i-10)
|
||||||
noremap <silent> <Plug>AirlineSelectTab9 :9tabn<CR>
|
endfor
|
||||||
|
endif
|
||||||
noremap <silent> <Plug>AirlineSelectPrevTab gT
|
noremap <silent> <Plug>AirlineSelectPrevTab gT
|
||||||
" tabn {count} goes to count tab does not go {count} tab pages forward!
|
" tabn {count} goes to count tab does not go {count} tab pages forward!
|
||||||
noremap <silent> <Plug>AirlineSelectNextTab :<C-U>exe repeat(':tabn\|', v:count1)<cr>
|
noremap <silent> <Plug>AirlineSelectNextTab :<C-U>exe repeat(':tabn\|', v:count1)<cr>
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#tabline#tabs#tabnr_formatter(nr, i)
|
function! airline#extensions#tabline#tabs#tabnr_formatter(nr, i) abort
|
||||||
let formatter = get(g:, 'airline#extensions#tabline#tabnr_formatter', 'tabnr')
|
let formatter = get(g:, 'airline#extensions#tabline#tabnr_formatter', 'tabnr')
|
||||||
|
try
|
||||||
return airline#extensions#tabline#formatters#{formatter}#format(a:nr, a:i)
|
return airline#extensions#tabline#formatters#{formatter}#format(a:nr, a:i)
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E117/ " catch E117, unknown function
|
||||||
|
" Function not found
|
||||||
|
return call(formatter, [a:nr, a:i])
|
||||||
|
catch
|
||||||
|
" something went wrong, return an empty string
|
||||||
|
return ""
|
||||||
|
endtry
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -0,0 +1,156 @@
|
|||||||
|
" MIT License. Copyright (c) 2016-2021 Kevin Sapper et al.
|
||||||
|
" PLugin: https://github.com/s1341/vim-tabws
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
let s:current_bufnr = -1
|
||||||
|
let s:current_modified = 0
|
||||||
|
let s:current_tabnr = -1
|
||||||
|
let s:current_tabline = ''
|
||||||
|
let s:highlight_groups = ['hid', 0, '', 'sel', 'mod_unsel', 0, 'mod_unsel', 'mod']
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#tabws#off()
|
||||||
|
augroup airline_tabline_tabws
|
||||||
|
autocmd!
|
||||||
|
augroup END
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#tabws#on()
|
||||||
|
augroup airline_tabline_tabws
|
||||||
|
autocmd!
|
||||||
|
autocmd BufDelete * call airline#extensions#tabline#tabws#invalidate()
|
||||||
|
augroup END
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#tabws#invalidate()
|
||||||
|
if exists('#airline')
|
||||||
|
let s:current_bufnr = -1
|
||||||
|
let s:current_tabnr = -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#tabws#add_buffer_section(builder, cur_tab, cur_buf, pull_right)
|
||||||
|
let pos_extension = (a:pull_right ? '_right' : '')
|
||||||
|
let bufnr_list = tabws#getbuffersfortab(a:cur_tab)
|
||||||
|
|
||||||
|
if index(bufnr_list, a:cur_buf) == -1 && a:cur_tab == s:current_tabnr
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:current_modified = getbufvar(a:cur_buf, '&modified')
|
||||||
|
let visible_list = tabpagebuflist(a:cur_tab)
|
||||||
|
|
||||||
|
for buffer in bufnr_list
|
||||||
|
let group = 'airline_tab'
|
||||||
|
\ .s:highlight_groups[(4 * getbufvar(buffer, '&modified')) + (2 * (index(visible_list, buffer) != -1)) + (a:cur_buf == buffer)]
|
||||||
|
\ .pos_extension
|
||||||
|
|
||||||
|
let buf_name = '%(%{airline#extensions#tabline#get_buffer_name('.buffer.')}%)'
|
||||||
|
|
||||||
|
if has("tablineat")
|
||||||
|
let buf_name = '%'.buffer.'@airline#extensions#tabline#buffers#clickbuf@'.buf_name.'%X'
|
||||||
|
endif
|
||||||
|
|
||||||
|
call a:builder.add_section_spaced(group, buf_name)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" add by tenfy(tenfyzhong@qq.com)
|
||||||
|
" if the selected buffer was updated
|
||||||
|
" return true
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#tabws#add_tab_section(builder, pull_right)
|
||||||
|
let pos_extension = (a:pull_right ? '_right' : '')
|
||||||
|
|
||||||
|
for tab in range(1, tabpagenr('$'))
|
||||||
|
let current = tab == tabpagenr()
|
||||||
|
let group = 'airline_tab'
|
||||||
|
\ .s:highlight_groups[(3 * current)]
|
||||||
|
\ .pos_extension
|
||||||
|
|
||||||
|
if get(g:, 'airline#extensions#tabline#tabws_show_tab_nr', 0) == 0
|
||||||
|
call a:builder.add_section_spaced(group, '%'.tab.'T'.tabws#gettabname(tab).'%T')
|
||||||
|
else
|
||||||
|
call a:builder.add_section_spaced(group, '%'.tab.'T'.tab.(g:airline_symbols.space).tabws#gettabname(tab).'%T')
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#tabline#tabws#get()
|
||||||
|
let cur_buf = bufnr('%')
|
||||||
|
let buffer_label = get(g:, 'airline#extensions#tabline#buffers_label', 'buffers')
|
||||||
|
let tab_label = get(g:, 'airline#extensions#tabline#tabs_label', 'tabs')
|
||||||
|
let switch_buffers_and_tabs = get(g:, 'airline#extensions#tabline#switch_buffers_and_tabs', 0)
|
||||||
|
|
||||||
|
try
|
||||||
|
call airline#extensions#tabline#tabs#map_keys()
|
||||||
|
endtry
|
||||||
|
|
||||||
|
let cur_tab = tabpagenr()
|
||||||
|
|
||||||
|
if cur_buf == s:current_bufnr && cur_tab == s:current_tabnr
|
||||||
|
if !g:airline_detect_modified || getbufvar(cur_buf, '&modified') == s:current_modified
|
||||||
|
return s:current_tabline
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let builder = airline#extensions#tabline#new_builder()
|
||||||
|
|
||||||
|
let show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
|
||||||
|
let show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
|
||||||
|
|
||||||
|
let AppendBuffers = function('airline#extensions#tabline#tabws#add_buffer_section', [builder, cur_tab, cur_buf])
|
||||||
|
let AppendTabs = function('airline#extensions#tabline#tabws#add_tab_section', [builder])
|
||||||
|
let AppendLabel = function(builder.add_section_spaced, ['airline_tabtype'], builder)
|
||||||
|
|
||||||
|
" <= 1: |{Tabs} <tab|
|
||||||
|
" == 2: |{Buffers} <buffers|
|
||||||
|
" == 3: |buffers> {Buffers} {Tabs} <tabs|
|
||||||
|
let showing_mode = (2 * show_buffers) + (show_tabs)
|
||||||
|
let ignore_update = 0
|
||||||
|
|
||||||
|
" Add left tabline content
|
||||||
|
if showing_mode <= 1 " Tabs only mode
|
||||||
|
call AppendTabs(0)
|
||||||
|
elseif showing_mode == 2 " Buffers only mode
|
||||||
|
let ignore_update = !AppendBuffers(0)
|
||||||
|
else
|
||||||
|
if !switch_buffers_and_tabs
|
||||||
|
call AppendLabel(buffer_label)
|
||||||
|
let ignore_update = !AppendBuffers(0)
|
||||||
|
else
|
||||||
|
call AppendLabel(tab_label)
|
||||||
|
call AppendTabs(0)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ignore_update | return s:current_tabline | endif
|
||||||
|
|
||||||
|
call builder.add_section('airline_tabfill', '')
|
||||||
|
call builder.split()
|
||||||
|
call builder.add_section('airline_tabfill', '')
|
||||||
|
|
||||||
|
" Add right tabline content
|
||||||
|
if showing_mode <= 1 " Tabs only mode
|
||||||
|
call AppendLabel(tab_label)
|
||||||
|
elseif showing_mode == 2 " Buffers only mode
|
||||||
|
call AppendLabel(buffer_label)
|
||||||
|
else
|
||||||
|
if !switch_buffers_and_tabs
|
||||||
|
call AppendTabs(1)
|
||||||
|
call AppendLabel(tab_label)
|
||||||
|
else
|
||||||
|
let ignore_update = AppendBuffers(1)
|
||||||
|
call AppendLabel(buffer_label)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ignore_update | return s:current_tabline | endif
|
||||||
|
|
||||||
|
let s:current_bufnr = cur_buf
|
||||||
|
let s:current_tabnr = cur_tab
|
||||||
|
let s:current_tabline = builder.build()
|
||||||
|
return s:current_tabline
|
||||||
|
endfunction
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
" xTabline - Reduced version for vim-airline
|
" xTabline - Reduced version for vim-airline
|
||||||
" Copyright (C) 2018 Gianmaria Bajo <mg1979.git@gmail.com>
|
" Plugin: https://github.com/mg979/vim-xtabline
|
||||||
" License: MIT License
|
" MIT License Copyright (C) 2018-2021 Gianmaria Bajo <mg1979.git@gmail.com>
|
||||||
|
" tabpagecd:
|
||||||
|
" expanded version by mg979
|
||||||
|
" MIT License Copyright (C) 2012-2013 Kana Natsuno <http://whileimautomaton.net/>
|
||||||
|
" MIT License Copyright (C) 2018-2021 Gianmaria Bajo <mg1979.git@gmail.com>
|
||||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
|
||||||
@@ -40,7 +44,7 @@ function! airline#extensions#tabline#xtabline#init()
|
|||||||
autocmd TabLeave * call s:Do('leave')
|
autocmd TabLeave * call s:Do('leave')
|
||||||
autocmd TabClosed * call s:Do('close')
|
autocmd TabClosed * call s:Do('close')
|
||||||
|
|
||||||
autocmd BufEnter * let g:xtabline_changing_buffer = 0
|
autocmd BufEnter * if exists('#airline') | let g:xtabline_changing_buffer = 0 | endif
|
||||||
autocmd BufAdd,BufDelete,BufWrite * call airline#extensions#tabline#xtabline#filter_buffers()
|
autocmd BufAdd,BufDelete,BufWrite * call airline#extensions#tabline#xtabline#filter_buffers()
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
@@ -176,6 +180,10 @@ function! airline#extensions#tabline#xtabline#filter_buffers()
|
|||||||
" 'accepted' is a list of buffer numbers, for quick access.
|
" 'accepted' is a list of buffer numbers, for quick access.
|
||||||
" 'excluded' is a list of buffer numbers, it will be used by Airline to hide buffers.
|
" 'excluded' is a list of buffer numbers, it will be used by Airline to hide buffers.
|
||||||
|
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
if !s:xtabline_filtering | return | endif
|
if !s:xtabline_filtering | return | endif
|
||||||
|
|
||||||
let g:airline#extensions#tabline#exclude_buffers = []
|
let g:airline#extensions#tabline#exclude_buffers = []
|
||||||
@@ -318,11 +326,6 @@ endfunction
|
|||||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
" tabpagecd - Turn :cd into :tabpagecd, to use one tab page per project
|
" tabpagecd - Turn :cd into :tabpagecd, to use one tab page per project
|
||||||
" expanded version by mg979
|
|
||||||
" Copyright (C) 2012-2013 Kana Natsuno <http://whileimautomaton.net/>
|
|
||||||
" Copyright (C) 2018 Gianmaria Bajo <mg1979.git@gmail.com>
|
|
||||||
" License: MIT License
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
function! s:InitCwds()
|
function! s:InitCwds()
|
||||||
@@ -352,6 +355,10 @@ endfunction
|
|||||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
function! s:Do(action)
|
function! s:Do(action)
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
let arg = a:action
|
let arg = a:action
|
||||||
if !s:state | call s:InitCwds() | return | endif
|
if !s:state | call s:InitCwds() | return | endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/majutsushi/tagbar
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -7,7 +8,6 @@ if !exists(':TagbarToggle')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let s:flags = get(g:, 'airline#extensions#tagbar#flags', '')
|
|
||||||
let s:spc = g:airline_symbols.space
|
let s:spc = g:airline_symbols.space
|
||||||
let s:init=0
|
let s:init=0
|
||||||
|
|
||||||
@@ -34,15 +34,21 @@ function! airline#extensions#tagbar#currenttag()
|
|||||||
try
|
try
|
||||||
" try to load the plugin, if filetypes are disabled,
|
" try to load the plugin, if filetypes are disabled,
|
||||||
" this will cause an error, so try only once
|
" this will cause an error, so try only once
|
||||||
let a=tagbar#currenttag('%', '', '')
|
let a = tagbar#currenttag('%s', '', '')
|
||||||
catch
|
catch
|
||||||
endtry
|
endtry
|
||||||
unlet! a
|
unlet! a
|
||||||
let s:init=1
|
let s:init=1
|
||||||
endif
|
endif
|
||||||
|
let cursize = getfsize(fnamemodify(bufname('%'), ':p'))
|
||||||
|
if cursize > 0 && cursize > get(g:, 'airline#extensions#tagbar#max_filesize', 1024 * 1024)
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
let flags = get(g:, 'airline#extensions#tagbar#flags', '')
|
||||||
" function tagbar#currenttag does not exist, if filetype is not enabled
|
" function tagbar#currenttag does not exist, if filetype is not enabled
|
||||||
if s:airline_tagbar_last_lookup_time != localtime() && exists("*tagbar#currenttag")
|
if s:airline_tagbar_last_lookup_time != localtime() && exists("*tagbar#currenttag")
|
||||||
let s:airline_tagbar_last_lookup_val = tagbar#currenttag('%s', '', s:flags)
|
let s:airline_tagbar_last_lookup_val = tagbar#currenttag('%s', '', flags,
|
||||||
|
\ get(g:, 'airline#extensions#tagbar#searchmethod', 'nearest-stl'))
|
||||||
let s:airline_tagbar_last_lookup_time = localtime()
|
let s:airline_tagbar_last_lookup_time = localtime()
|
||||||
endif
|
endif
|
||||||
return s:airline_tagbar_last_lookup_val
|
return s:airline_tagbar_last_lookup_val
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
" MIT License. Copyright (c) 2021 DEMAREST Maxime (maxime@indelog.fr)
|
||||||
|
" Plugin: https://github.com/yegappan/taglist/
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !exists(':TlistShowTag')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#taglist#currenttag()
|
||||||
|
" Update tag list if taglist is not loaded (else we get an empty tag name)
|
||||||
|
" Load yegappan/taglist and vim-scripts/taglist.vim only once.
|
||||||
|
let tlist_updated = 0
|
||||||
|
if !exists('*taglist#Tlist_Get_Tagname_By_Line()') && !exists('*Tlist_Get_Tagname_By_Line()')
|
||||||
|
TlistUpdate
|
||||||
|
let tlist_updated = 1
|
||||||
|
endif
|
||||||
|
if !tlist_updated && exists('*Tlist_Get_Filenames()')
|
||||||
|
let tlist_filenames = Tlist_Get_Filenames()
|
||||||
|
if stridx(type(tlist_filenames) == type([]) ? join(tlist_filenames, '\n') : tlist_filenames, expand('%:p')) < 0
|
||||||
|
TlistUpdate
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
" Is this function is not present it'means you use the old vertsion of
|
||||||
|
" tag list : https://github.com/vim-scripts/taglist.vim.
|
||||||
|
" Please use the new version : https://github.com/yegappan/taglist.
|
||||||
|
if exists('*taglist#Tlist_Get_Tagname_By_Line()')
|
||||||
|
return taglist#Tlist_Get_Tagname_By_Line()
|
||||||
|
else
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#taglist#init(ext)
|
||||||
|
call airline#parts#define_function('taglist', 'airline#extensions#taglist#currenttag')
|
||||||
|
endfunction
|
||||||
@@ -1,43 +1,95 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
function! airline#extensions#term#apply(...)
|
call airline#parts#define_function('tmode', 'airline#extensions#term#termmode')
|
||||||
if &buftype == 'terminal'
|
call airline#parts#define('terminal', {'text': get(g:airline_mode_map, 't', 't'), 'accent': 'bold'})
|
||||||
let spc = g:airline_symbols.space
|
|
||||||
|
|
||||||
let name=get(g:airline_mode_map, 't', 't')
|
|
||||||
call a:1.add_section('airline_a', spc.name.spc)
|
function! s:GetAirlineSection()
|
||||||
call a:1.add_section('airline_b', '')
|
if exists("g:airline_section_z_term")
|
||||||
call a:1.add_section('airline_term', spc.s:termname())
|
let section_z = g:airline_section_z_term
|
||||||
|
else
|
||||||
|
let section_z = airline#section#create(['linenr', 'maxlinenr'])
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:airline_section_a_term")
|
||||||
|
let section_a = g:airline_section_a_term
|
||||||
|
else
|
||||||
|
let section_a = airline#section#create_left(['terminal', 'tmode'])
|
||||||
|
endif
|
||||||
|
return [section_a, section_z]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#term#apply(...) abort
|
||||||
|
if &buftype ==? 'terminal' || bufname(a:2.bufnr)[0] ==? '!'
|
||||||
|
let sections = s:GetAirlineSection()
|
||||||
|
let spc = g:airline_symbols.space
|
||||||
|
call a:1.add_section_spaced('airline_a', sections[0])
|
||||||
|
call a:1.add_section_spaced('airline_b', s:neoterm_id(a:2.bufnr))
|
||||||
|
call a:1.add_section('airline_term', spc.s:termname(a:2.bufnr))
|
||||||
call a:1.split()
|
call a:1.split()
|
||||||
call a:1.add_section('airline_y', '')
|
call a:1.add_section('airline_y', '')
|
||||||
call a:1.add_section('airline_z', spc.airline#section#create_right(['linenr', 'maxlinenr']))
|
call a:1.add_section_spaced('airline_z', sections[1])
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#term#inactive_apply(...)
|
function! airline#extensions#term#inactive_apply(...) abort
|
||||||
if getbufvar(a:2.bufnr, '&buftype') == 'terminal'
|
if getbufvar(a:2.bufnr, '&buftype') ==? 'terminal'
|
||||||
|
let sections = s:GetAirlineSection()
|
||||||
let spc = g:airline_symbols.space
|
let spc = g:airline_symbols.space
|
||||||
call a:1.add_section('airline_a', spc.'TERMINAL'.spc)
|
call a:1.add_section_spaced('airline_a', sections[0])
|
||||||
call a:1.add_section('airline_b', spc.'%f')
|
call a:1.add_section_spaced('airline_b', s:neoterm_id(a:2.bufnr))
|
||||||
|
call a:1.add_section('airline_term', spc.s:termname(a:2.bufnr))
|
||||||
|
call a:1.split()
|
||||||
|
call a:1.add_section('airline_y', '')
|
||||||
|
call a:1.add_section_spaced('airline_z', sections[1])
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:termname()
|
function! airline#extensions#term#termmode() abort
|
||||||
let bufname = bufname('%')
|
let mode = airline#parts#mode()[0]
|
||||||
|
if mode ==? 'T' || mode ==? '-'
|
||||||
|
" We don't need to output T, the statusline already says "TERMINAL".
|
||||||
|
" Also we don't want to output "-" on an inactive statusline.
|
||||||
|
let mode = ''
|
||||||
|
endif
|
||||||
|
return mode
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:termname(bufnr) abort
|
||||||
|
let bufname = bufname(a:bufnr)
|
||||||
if has('nvim')
|
if has('nvim')
|
||||||
return matchstr(bufname, 'term.*:\zs.*')
|
" Get rid of the leading "term", working dir and process ID.
|
||||||
|
" Afterwards, remove the possibly added neoterm ID.
|
||||||
|
return substitute(matchstr(bufname, 'term.*:\zs.*'),
|
||||||
|
\ ';#neoterm-\d\+', '', '')
|
||||||
else
|
else
|
||||||
" get rid of leading '!'
|
if bufname =~? 'neoterm-\d\+'
|
||||||
|
" Do not return a redundant buffer name, when this is a neoterm terminal.
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
" Get rid of the leading "!".
|
||||||
|
if bufname[0] ==? '!'
|
||||||
return bufname[1:]
|
return bufname[1:]
|
||||||
|
else
|
||||||
|
return bufname
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#term#init(ext)
|
function! s:neoterm_id(bufnr) abort
|
||||||
|
let id = getbufvar(a:bufnr, 'neoterm_id')
|
||||||
|
if id !=? ''
|
||||||
|
let id = 'neoterm-'.id
|
||||||
|
endif
|
||||||
|
return id
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#term#init(ext) abort
|
||||||
call a:ext.add_statusline_func('airline#extensions#term#apply')
|
call a:ext.add_statusline_func('airline#extensions#term#apply')
|
||||||
call a:ext.add_inactive_statusline_func('airline#extensions#term#inactive_apply')
|
call a:ext.add_inactive_statusline_func('airline#extensions#term#inactive_apply')
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/edkolev/tmuxline.vim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/mbbill/undotree
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -11,14 +12,14 @@ function! airline#extensions#undotree#apply(...)
|
|||||||
if exists('t:undotree')
|
if exists('t:undotree')
|
||||||
if &ft == 'undotree'
|
if &ft == 'undotree'
|
||||||
if exists('*t:undotree.GetStatusLine')
|
if exists('*t:undotree.GetStatusLine')
|
||||||
call airline#extensions#apply_left_override('undo', '%{t:undotree.GetStatusLine()}')
|
call airline#extensions#apply_left_override('undo', '%{exists("t:undotree") ? t:undotree.GetStatusLine() : ""}')
|
||||||
else
|
else
|
||||||
call airline#extensions#apply_left_override('undotree', '%f')
|
call airline#extensions#apply_left_override('undotree', '%f')
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if &ft == 'diff' && exists('*t:diffpanel.GetStatusLine')
|
if &ft == 'diff' && exists('*t:diffpanel.GetStatusLine')
|
||||||
call airline#extensions#apply_left_override('diff', '%{t:diffpanel.GetStatusLine()}')
|
call airline#extensions#apply_left_override('diff', '%{exists("t:diffpanel") ? t:diffpanel.GetStatusLine() : ""}')
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling, Christian Brabandt et al.
|
||||||
|
" Plugin: https://github.com/chrisbra/unicode.vim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -8,7 +9,7 @@ if !get(g:, 'loaded_unicodePlugin', 0)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
function! airline#extensions#unicode#apply(...)
|
function! airline#extensions#unicode#apply(...)
|
||||||
if exists(":UnicodeTable") == 2 && bufname('') ==# 'UnicodeTable'
|
if exists(':UnicodeTable') == 2 && bufname('') =~# '/UnicodeTable.txt'
|
||||||
call airline#parts#define('unicode', {
|
call airline#parts#define('unicode', {
|
||||||
\ 'text': '[UnicodeTable]',
|
\ 'text': '[UnicodeTable]',
|
||||||
\ 'accent': 'bold' })
|
\ 'accent': 'bold' })
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/Shougo/unite.vim
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
" MIT License. Copyright (c) 2021 DEMAREST Maxime (maxime@indelog.fr)
|
||||||
|
" Plugin: https://github.com/yegappan/lsp
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !exists('*lsp#lsp#ErrorCount')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:error_symbol = get(g:, 'airline#extensions#vim9lsp#error_symbol', 'E:')
|
||||||
|
let s:warning_symbol = get(g:, 'airline#extensions#vim9lsp#warning_symbol', 'W:')
|
||||||
|
|
||||||
|
function! airline#extensions#vim9lsp#get_warnings() abort
|
||||||
|
let res = get(lsp#lsp#ErrorCount(), 'Warn', 0)
|
||||||
|
return res > 0 ? s:warning_symbol . res : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#vim9lsp#get_errors() abort
|
||||||
|
let res = get(lsp#lsp#ErrorCount(), 'Error', 0)
|
||||||
|
return res > 0 ? s:error_symbol . res : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#vim9lsp#init(ext) abort
|
||||||
|
call airline#parts#define_function('vim9lsp_warning_count', 'airline#extensions#vim9lsp#get_warnings')
|
||||||
|
call airline#parts#define_function('vim9lsp_error_count', 'airline#extensions#vim9lsp#get_errors')
|
||||||
|
endfunction
|
||||||
@@ -1,33 +1,29 @@
|
|||||||
" MIT License. Copyright (c) 2016-2018 Jerome Reybert et al.
|
" MIT License. Copyright (c) 2016-2021 Jerome Reybert et al.
|
||||||
|
" Plugin: https://github.com/jreybert/vimagit
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
" This plugin replace the whole section_a when in vimagit buffer
|
" This plugin replaces the whole section_a when in vimagit buffer
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
if !get(g:, 'loaded_magit', 0)
|
if !get(g:, 'loaded_magit', 0)
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! airline#extensions#vimagit#init(ext)
|
let s:commit_mode = {'ST': 'STAGING', 'CC': 'COMMIT', 'CA': 'AMEND'}
|
||||||
|
|
||||||
|
function! airline#extensions#vimagit#init(ext) abort
|
||||||
call a:ext.add_statusline_func('airline#extensions#vimagit#apply')
|
call a:ext.add_statusline_func('airline#extensions#vimagit#apply')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#vimagit#get_mode()
|
function! airline#extensions#vimagit#get_mode() abort
|
||||||
if ( exists("*magit#get_current_mode") )
|
if ( exists("*magit#get_current_mode") )
|
||||||
return magit#get_current_mode()
|
return magit#get_current_mode()
|
||||||
else
|
else
|
||||||
if ( b:magit_current_commit_mode == '' )
|
return get(s:commit_mode, b:magit_current_commit_mode, '???')
|
||||||
return "STAGING"
|
|
||||||
elseif ( b:magit_current_commit_mode == 'CC' )
|
|
||||||
return "COMMIT"
|
|
||||||
elseif ( b:magit_current_commit_mode == 'CA' )
|
|
||||||
return "AMEND"
|
|
||||||
else
|
|
||||||
return "???"
|
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#vimagit#apply(...)
|
function! airline#extensions#vimagit#apply(...) abort
|
||||||
if ( &filetype == 'magit' )
|
if ( &filetype == 'magit' )
|
||||||
let w:airline_section_a = '%{airline#extensions#vimagit#get_mode()}'
|
let w:airline_section_a = '%{airline#extensions#vimagit#get_mode()}'
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/cdelledonne/vim-cmake
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#extensions#vimcmake#init(ext) abort
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#vimcmake#apply')
|
||||||
|
call a:ext.add_inactive_statusline_func('airline#extensions#vimcmake#inactive_apply')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#vimcmake#apply(...) abort
|
||||||
|
if &filetype ==# 'vimcmake'
|
||||||
|
let spc = g:airline_symbols.space
|
||||||
|
call a:1.add_section('airline_a', spc.'CMake'.spc)
|
||||||
|
call a:1.add_section('airline_b', spc.'%{cmake#statusline#GetBuildInfo(1)}'.spc)
|
||||||
|
call a:1.add_section('airline_c', spc.'%{cmake#statusline#GetCmdInfo()}'.spc)
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#vimcmake#inactive_apply(...) abort
|
||||||
|
if getbufvar(a:2.bufnr, '&filetype') ==# 'vimcmake'
|
||||||
|
let spc = g:airline_symbols.space
|
||||||
|
call a:1.add_section('airline_a', spc.'[CMake]')
|
||||||
|
call a:1.add_section('airline_b', spc.'%{cmake#statusline#GetBuildInfo(0)}')
|
||||||
|
call a:1.add_section('airline_c', spc.'%{cmake#statusline#GetCmdInfo()}')
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/VimfanTPdvorak/vimodoro.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !exists(':RTM')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#vimodoro#apply(...) abort
|
||||||
|
if exists('t:vimodoro')
|
||||||
|
if &ft ==# 'vimodoro'
|
||||||
|
if exists(':PomodoroStatus')
|
||||||
|
call airline#extensions#apply_left_override('vimodoro', '%{PomodoroStatus(1)}')
|
||||||
|
else
|
||||||
|
call airline#extensions#apply_left_override('vimodoro', g:airline_section_y)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#vimodoro#init(ext) abort
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#vimodoro#apply')
|
||||||
|
endfunction
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/lervag/vimtex
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
" This plugin replace the whole section_a when in vimagit buffer
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
let s:spc = g:airline_symbols.space
|
let s:spc = g:airline_symbols.space
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/jmcantrell/vim-virtualenv
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -10,7 +11,7 @@ function! airline#extensions#virtualenv#init(ext)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#virtualenv#apply(...)
|
function! airline#extensions#virtualenv#apply(...)
|
||||||
if &filetype =~# "python"
|
if match(get(g:, 'airline#extensions#virtualenv#ft', ['python']), &filetype) > -1
|
||||||
if get(g:, 'virtualenv_loaded', 0)
|
if get(g:, 'virtualenv_loaded', 0)
|
||||||
let statusline = virtualenv#statusline()
|
let statusline = virtualenv#statusline()
|
||||||
else
|
else
|
||||||
@@ -24,7 +25,7 @@ function! airline#extensions#virtualenv#apply(...)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#virtualenv#update()
|
function! airline#extensions#virtualenv#update()
|
||||||
if &filetype =~# "python"
|
if match(get(g:, 'airline#extensions#virtualenv#ft', ['python']), &filetype) > -1
|
||||||
call airline#extensions#virtualenv#apply()
|
call airline#extensions#virtualenv#apply()
|
||||||
call airline#update_statusline()
|
call airline#update_statusline()
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
" MIT License. Copyright (c) 2021 s1341 (github@shmarya.net)
|
||||||
|
" Plugin: https://github.com/liuchengxu/vista.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
if !get(g:, 'loaded_vista', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#vista#currenttag() abort
|
||||||
|
if get(w:, 'airline_active', 0)
|
||||||
|
return airline#util#shorten(get(b:, 'vista_nearest_method_or_function', ''), 91, 9)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#vista#init(ext) abort
|
||||||
|
call airline#parts#define_function('vista', 'airline#extensions#vista#currenttag')
|
||||||
|
endfunction
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
" http://got-ravings.blogspot.com/2008/10/vim-pr0n-statusline-whitespace-flags.html
|
" http://got-ravings.blogspot.com/2008/10/vim-pr0n-statusline-whitespace-flags.html
|
||||||
@@ -7,10 +7,12 @@ scriptencoding utf-8
|
|||||||
|
|
||||||
let s:show_message = get(g:, 'airline#extensions#whitespace#show_message', 1)
|
let s:show_message = get(g:, 'airline#extensions#whitespace#show_message', 1)
|
||||||
let s:symbol = get(g:, 'airline#extensions#whitespace#symbol', g:airline_symbols.whitespace)
|
let s:symbol = get(g:, 'airline#extensions#whitespace#symbol', g:airline_symbols.whitespace)
|
||||||
let s:default_checks = ['indent', 'trailing', 'mixed-indent-file']
|
let s:default_checks = ['indent', 'trailing', 'mixed-indent-file', 'conflicts']
|
||||||
|
|
||||||
let s:enabled = get(g:, 'airline#extensions#whitespace#enabled', 1)
|
let s:enabled = get(g:, 'airline#extensions#whitespace#enabled', 1)
|
||||||
let s:skip_check_ft = {'make': ['indent', 'mixed-indent-file']}
|
let s:skip_check_ft = {'make': ['indent', 'mixed-indent-file'],
|
||||||
|
\ 'csv': ['indent', 'mixed-indent-file'],
|
||||||
|
\ 'mail': ['trailing']}
|
||||||
|
|
||||||
function! s:check_mixed_indent()
|
function! s:check_mixed_indent()
|
||||||
let indent_algo = get(g:, 'airline#extensions#whitespace#mixed_indent_algo', 0)
|
let indent_algo = get(g:, 'airline#extensions#whitespace#mixed_indent_algo', 0)
|
||||||
@@ -23,9 +25,9 @@ function! s:check_mixed_indent()
|
|||||||
let t_l_s = '(^\t+ {' . &ts . ',}' . '\S)'
|
let t_l_s = '(^\t+ {' . &ts . ',}' . '\S)'
|
||||||
return search('\v' . t_s_t . '|' . t_l_s, 'nw')
|
return search('\v' . t_s_t . '|' . t_l_s, 'nw')
|
||||||
elseif indent_algo == 2
|
elseif indent_algo == 2
|
||||||
return search('\v(^\t* +\t\s*\S)', 'nw')
|
return search('\v(^\t* +\t\s*\S)', 'nw', 0, 500)
|
||||||
else
|
else
|
||||||
return search('\v(^\t+ +)|(^ +\t+)', 'nw')
|
return search('\v(^\t+ +)|(^ +\t+)', 'nw', 0, 500)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -47,6 +49,18 @@ function! s:check_mixed_indent_file()
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:conflict_marker()
|
||||||
|
" Checks for git conflict markers
|
||||||
|
let annotation = '\%([0-9A-Za-z_.:]\+\)\?'
|
||||||
|
if match(['rst', 'markdown', 'rmd'], &ft) >= 0
|
||||||
|
" rst filetypes use '=======' as header
|
||||||
|
let pattern = '^\%(\%(<\{7} '.annotation. '\)\|\%(>\{7\} '.annotation.'\)\)$'
|
||||||
|
else
|
||||||
|
let pattern = '^\%(\%(<\{7} '.annotation. '\)\|\%(=\{7\}\)\|\%(>\{7\} '.annotation.'\)\)$'
|
||||||
|
endif
|
||||||
|
return search(pattern, 'nw')
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#whitespace#check()
|
function! airline#extensions#whitespace#check()
|
||||||
let max_lines = get(g:, 'airline#extensions#whitespace#max_lines', 20000)
|
let max_lines = get(g:, 'airline#extensions#whitespace#max_lines', 20000)
|
||||||
if &readonly || !&modifiable || !s:enabled || line('$') > max_lines
|
if &readonly || !&modifiable || !s:enabled || line('$') > max_lines
|
||||||
@@ -64,7 +78,8 @@ function! airline#extensions#whitespace#check()
|
|||||||
let check = 'trailing'
|
let check = 'trailing'
|
||||||
if index(checks, check) > -1 && index(get(skip_check_ft, &ft, []), check) < 0
|
if index(checks, check) > -1 && index(get(skip_check_ft, &ft, []), check) < 0
|
||||||
try
|
try
|
||||||
let regexp = get(g:, 'airline#extensions#whitespace#trailing_regexp', '\s$')
|
let regexp = get(b:, 'airline_whitespace_trailing_regexp',
|
||||||
|
\ get(g:, 'airline#extensions#whitespace#trailing_regexp', '\s$'))
|
||||||
let trailing = search(regexp, 'nw')
|
let trailing = search(regexp, 'nw')
|
||||||
catch
|
catch
|
||||||
call airline#util#warning(printf('Whitespace: error occurred evaluating "%s"', regexp))
|
call airline#util#warning(printf('Whitespace: error occurred evaluating "%s"', regexp))
|
||||||
@@ -90,7 +105,12 @@ function! airline#extensions#whitespace#check()
|
|||||||
let long = search('\%>'.&tw.'v.\+', 'nw')
|
let long = search('\%>'.&tw.'v.\+', 'nw')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if trailing != 0 || mixed != 0 || long != 0 || !empty(mixed_file)
|
let conflicts = 0
|
||||||
|
if index(checks, 'conflicts') > -1
|
||||||
|
let conflicts = s:conflict_marker()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if trailing != 0 || mixed != 0 || long != 0 || !empty(mixed_file) || conflicts != 0
|
||||||
let b:airline_whitespace_check = s:symbol
|
let b:airline_whitespace_check = s:symbol
|
||||||
if strlen(s:symbol) > 0
|
if strlen(s:symbol) > 0
|
||||||
let space = (g:airline_symbols.space)
|
let space = (g:airline_symbols.space)
|
||||||
@@ -115,6 +135,10 @@ function! airline#extensions#whitespace#check()
|
|||||||
let mixed_indent_file_fmt = get(g:, 'airline#extensions#whitespace#mixed_indent_file_format', '[%s]mix-indent-file')
|
let mixed_indent_file_fmt = get(g:, 'airline#extensions#whitespace#mixed_indent_file_format', '[%s]mix-indent-file')
|
||||||
let b:airline_whitespace_check .= space.printf(mixed_indent_file_fmt, mixed_file)
|
let b:airline_whitespace_check .= space.printf(mixed_indent_file_fmt, mixed_file)
|
||||||
endif
|
endif
|
||||||
|
if conflicts != 0
|
||||||
|
let conflicts_fmt = get(g:, 'airline#extensions#whitespace#conflicts_format', '[%s]conflicts')
|
||||||
|
let b:airline_whitespace_check .= space.printf(conflicts_fmt, conflicts)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -160,12 +184,16 @@ function! airline#extensions#whitespace#init(...)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ws_refresh()
|
function! s:ws_refresh()
|
||||||
|
if !exists('#airline')
|
||||||
|
" airline disabled
|
||||||
|
return
|
||||||
|
endif
|
||||||
if get(b:, 'airline_ws_changedtick', 0) == b:changedtick
|
if get(b:, 'airline_ws_changedtick', 0) == b:changedtick
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
unlet! b:airline_whitespace_check
|
unlet! b:airline_whitespace_check
|
||||||
if get(g:, 'airline_skip_empty_sections', 0)
|
if get(g:, 'airline_skip_empty_sections', 0)
|
||||||
exe ':AirlineRefresh'
|
exe ':AirlineRefresh!'
|
||||||
endif
|
endif
|
||||||
let b:airline_ws_changedtick = b:changedtick
|
let b:airline_ws_changedtick = b:changedtick
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" Plugin: https://github.com/wesQ3/vim-windowswap
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2 fdm=marker
|
" vim: et ts=2 sts=2 sw=2 fdm=marker
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -6,8 +6,21 @@ scriptencoding utf-8
|
|||||||
" get wordcount {{{1
|
" get wordcount {{{1
|
||||||
if exists('*wordcount')
|
if exists('*wordcount')
|
||||||
function! s:get_wordcount(visual_mode_active)
|
function! s:get_wordcount(visual_mode_active)
|
||||||
|
if get(g:, 'actual_curbuf', '') != bufnr('')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
if &filetype ==# 'tex' && exists('b:vimtex') && get(g:, 'airline#extensions#vimtex#wordcount', 0)
|
||||||
|
" We're in a TeX file and vimtex is a plugin, so use vimtex's wordcount...
|
||||||
|
if a:visual_mode_active
|
||||||
|
" not useful?
|
||||||
|
return
|
||||||
|
else
|
||||||
|
return vimtex#misc#wordcount()
|
||||||
|
endif
|
||||||
|
else
|
||||||
let query = a:visual_mode_active ? 'visual_words' : 'words'
|
let query = a:visual_mode_active ? 'visual_words' : 'words'
|
||||||
return get(wordcount(), query, 0)
|
return get(wordcount(), query, 0)
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
else " Pull wordcount from the g_ctrl-g stats
|
else " Pull wordcount from the g_ctrl-g stats
|
||||||
function! s:get_wordcount(visual_mode_active)
|
function! s:get_wordcount(visual_mode_active)
|
||||||
@@ -41,7 +54,7 @@ endfunction
|
|||||||
" check user-defined formatter exists with appropriate functions, otherwise
|
" check user-defined formatter exists with appropriate functions, otherwise
|
||||||
" fall back to default
|
" fall back to default
|
||||||
if s:formatter !=# 'default'
|
if s:formatter !=# 'default'
|
||||||
execute 'runtime! autoload/airline/extensions/wordcount/formatters/'.s:formatter
|
execute 'runtime! autoload/airline/extensions/wordcount/formatters/'.s:formatter.'.vim'
|
||||||
if !exists('*airline#extensions#wordcount#formatters#{s:formatter}#to_string')
|
if !exists('*airline#extensions#wordcount#formatters#{s:formatter}#to_string')
|
||||||
if !exists('*airline#extensions#wordcount#formatters#{s:formatter}#format')
|
if !exists('*airline#extensions#wordcount#formatters#{s:formatter}#format')
|
||||||
let s:formatter = 'default'
|
let s:formatter = 'default'
|
||||||
@@ -68,9 +81,8 @@ function! s:update_wordcount(force_update)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:visual_active = 0 " Boolean: for when to get visual wordcount
|
|
||||||
function airline#extensions#wordcount#get()
|
function airline#extensions#wordcount#get()
|
||||||
if s:visual_active
|
if get(g:, 'airline#visual_active', 0)
|
||||||
return s:format_wordcount(s:get_wordcount(1))
|
return s:format_wordcount(s:get_wordcount(1))
|
||||||
else
|
else
|
||||||
if get(b:, 'airline_changedtick', 0) != b:changedtick
|
if get(b:, 'airline_changedtick', 0) != b:changedtick
|
||||||
@@ -83,17 +95,20 @@ endfunction
|
|||||||
|
|
||||||
" airline functions {{{1
|
" airline functions {{{1
|
||||||
" default filetypes:
|
" default filetypes:
|
||||||
let s:filetypes = ['help', 'markdown', 'rst', 'org', 'text', 'asciidoc', 'tex', 'mail']
|
|
||||||
function! airline#extensions#wordcount#apply(...)
|
function! airline#extensions#wordcount#apply(...)
|
||||||
let filetypes = get(g:, 'airline#extensions#wordcount#filetypes', s:filetypes)
|
let filetypes = get(g:, 'airline#extensions#wordcount#filetypes',
|
||||||
|
\ ['asciidoc', 'help', 'mail', 'markdown', 'rmd', 'nroff', 'org', 'rst', 'plaintex', 'tex', 'text'])
|
||||||
|
" export current filetypes settings to global namespace
|
||||||
|
let g:airline#extensions#wordcount#filetypes = filetypes
|
||||||
|
|
||||||
" Check if filetype needs testing
|
" Check if filetype needs testing
|
||||||
if did_filetype() || filetypes isnot s:filetypes
|
if did_filetype()
|
||||||
let s:filetypes = filetypes
|
" correctly test for compound filetypes (e.g. markdown.pandoc)
|
||||||
|
let ft = substitute(&filetype, '\.', '\\|', 'g')
|
||||||
|
|
||||||
" Select test based on type of "filetypes": new=list, old=string
|
" Select test based on type of "filetypes": new=list, old=string
|
||||||
if type(filetypes) == get(v:, 't_list', type([]))
|
if type(filetypes) == get(v:, 't_list', type([]))
|
||||||
\ ? index(filetypes, &filetype) > -1 || index(filetypes, 'all') > -1
|
\ ? match(filetypes, '\<'. ft. '\>') > -1 || index(filetypes, 'all') > -1
|
||||||
\ : match(&filetype, filetypes) > -1
|
\ : match(&filetype, filetypes) > -1
|
||||||
let b:airline_changedtick = -1
|
let b:airline_changedtick = -1
|
||||||
call s:update_wordcount(1) " force update: ensures initial worcount exists
|
call s:update_wordcount(1) " force update: ensures initial worcount exists
|
||||||
@@ -109,9 +124,5 @@ function! airline#extensions#wordcount#apply(...)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#wordcount#init(ext)
|
function! airline#extensions#wordcount#init(ext)
|
||||||
augroup airline_wordcount
|
|
||||||
autocmd! User AirlineModeChanged nested
|
|
||||||
\ let s:visual_active = (mode() ==? 'v' || mode() ==? 's')
|
|
||||||
augroup END
|
|
||||||
call a:ext.add_statusline_func('airline#extensions#wordcount#apply')
|
call a:ext.add_statusline_func('airline#extensions#wordcount#apply')
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
@@ -10,6 +10,7 @@ endfunction
|
|||||||
|
|
||||||
" Reload format when statusline is rebuilt
|
" Reload format when statusline is rebuilt
|
||||||
call airline#extensions#wordcount#formatters#default#update_fmt()
|
call airline#extensions#wordcount#formatters#default#update_fmt()
|
||||||
|
|
||||||
if index(g:airline_statusline_funcrefs, function('airline#extensions#wordcount#formatters#default#update_fmt')) == -1
|
if index(g:airline_statusline_funcrefs, function('airline#extensions#wordcount#formatters#default#update_fmt')) == -1
|
||||||
" only add it, if not already done
|
" only add it, if not already done
|
||||||
call airline#add_statusline_funcref(function('airline#extensions#wordcount#formatters#default#update_fmt'))
|
call airline#add_statusline_funcref(function('airline#extensions#wordcount#formatters#default#update_fmt'))
|
||||||
@@ -24,7 +25,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
function! airline#extensions#wordcount#formatters#default#to_string(wordcount)
|
function! airline#extensions#wordcount#formatters#default#to_string(wordcount)
|
||||||
if winwidth(0) >= 80
|
if airline#util#winwidth() > 85
|
||||||
if a:wordcount > 999
|
if a:wordcount > 999
|
||||||
" Format number according to locale, e.g. German: 1.245 or English: 1,245
|
" Format number according to locale, e.g. German: 1.245 or English: 1,245
|
||||||
let wordcount = substitute(a:wordcount, '\d\@<=\(\(\d\{3\}\)\+\)$', s:decimal_group.'&', 'g')
|
let wordcount = substitute(a:wordcount, '\d\@<=\(\(\d\{3\}\)\+\)$', s:decimal_group.'&', 'g')
|
||||||
@@ -35,5 +36,12 @@ function! airline#extensions#wordcount#formatters#default#to_string(wordcount)
|
|||||||
else
|
else
|
||||||
let str = printf(s:fmt_short, a:wordcount)
|
let str = printf(s:fmt_short, a:wordcount)
|
||||||
endif
|
endif
|
||||||
return str . g:airline_symbols.space . g:airline_right_alt_sep . g:airline_symbols.space
|
|
||||||
|
let str .= g:airline_symbols.space
|
||||||
|
|
||||||
|
if !empty(g:airline_right_alt_sep)
|
||||||
|
let str .= g:airline_right_alt_sep . g:airline_symbols.space
|
||||||
|
endif
|
||||||
|
|
||||||
|
return str
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#extensions#wordcount#formatters#readingtime#update_fmt(...) abort
|
||||||
|
let s:fmt = get(g:, 'airline#extensions#wordcount#formatter#readingtime#fmt', 'About %s minutes')
|
||||||
|
let s:fmt_short = get(g:, 'airline#extensions#wordcount#formatter#readingtime#fmt_short', s:fmt ==# 'About %s minutes' ? '%sW' : s:fmt)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Reload format when statusline is rebuilt
|
||||||
|
call airline#extensions#wordcount#formatters#readingtime#update_fmt()
|
||||||
|
|
||||||
|
if index(g:airline_statusline_funcrefs, function('airline#extensions#wordcount#formatters#readingtime#update_fmt')) == -1
|
||||||
|
" only add it, if not already done
|
||||||
|
call airline#add_statusline_funcref(function('airline#extensions#wordcount#formatters#readingtime#update_fmt'))
|
||||||
|
endif
|
||||||
|
|
||||||
|
if match(get(v:, 'lang', ''), '\v\cC|en') > -1
|
||||||
|
let s:decimal_group = ','
|
||||||
|
elseif match(get(v:, 'lang', ''), '\v\cde|dk|fr|pt') > -1
|
||||||
|
let s:decimal_group = '.'
|
||||||
|
else
|
||||||
|
let s:decimal_group = ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! airline#extensions#wordcount#formatters#readingtime#to_string(wordcount) abort
|
||||||
|
if airline#util#winwidth() > 85
|
||||||
|
if a:wordcount > 999
|
||||||
|
" Format number according to locale, e.g. German: 1.245 or English: 1,245
|
||||||
|
let wordcount = substitute(a:wordcount, '\d\@<=\(\(\d\{3\}\)\+\)$', s:decimal_group.'&', 'g')
|
||||||
|
else
|
||||||
|
let wordcount = a:wordcount
|
||||||
|
endif
|
||||||
|
let str = printf(s:fmt, ceil(wordcount / 200.0))
|
||||||
|
else
|
||||||
|
let str = printf(s:fmt_short, ceil(a:wordcount / 200.0))
|
||||||
|
endif
|
||||||
|
|
||||||
|
let str .= g:airline_symbols.space
|
||||||
|
|
||||||
|
if !empty(g:airline_right_alt_sep)
|
||||||
|
let str .= g:airline_right_alt_sep . g:airline_symbols.space
|
||||||
|
endif
|
||||||
|
|
||||||
|
return str
|
||||||
|
endfunction
|
||||||
@@ -1,17 +1,37 @@
|
|||||||
" MIT License. Copyright (c) 2017-2018 YoungHoon Rhiu et al.
|
" MIT License. Copyright (c) 2017-2021 YoungHoon Rhiu et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
if !exists('g:XkbSwitchLib')
|
if !exists('g:XkbSwitchLib') && !exists('*FcitxCurrentIM') && !has('nvim')
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! airline#extensions#xkblayout#status()
|
function! airline#extensions#xkblayout#status()
|
||||||
|
if exists('g:XkbSwitchLib')
|
||||||
let keyboard_layout = libcall(g:XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
|
let keyboard_layout = libcall(g:XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
|
||||||
let keyboard_layout = split(keyboard_layout, '\.')[-1]
|
let keyboard_layout = get(split(keyboard_layout, '\.'), -1, '')
|
||||||
let short_codes = get(g:, 'airline#extensions#xkblayout#short_codes', {'2SetKorean': 'KR', 'Chinese': 'CN', 'Japanese': 'JP'})
|
elseif exists('*FcitxCurrentIMwithRime')
|
||||||
|
let keyboard_layout = FcitxCurrentIMwithRime()
|
||||||
|
elseif exists('*FcitxCurrentIM')
|
||||||
|
let keyboard_layout = FcitxCurrentIM()
|
||||||
|
elseif has('nvim')
|
||||||
|
try
|
||||||
|
let keyboard_layout = luaeval('require"ime".current()')
|
||||||
|
catch /.*/
|
||||||
|
try
|
||||||
|
let keyboard_layout = luaeval('require"fcitx5-ui".displayCurrentIM()')
|
||||||
|
catch /.*/
|
||||||
|
let keyboard_layout = ''
|
||||||
|
endtry
|
||||||
|
endtry
|
||||||
|
else
|
||||||
|
let keyboard_layout = ''
|
||||||
|
endif
|
||||||
|
" substitute keyboard-us to us
|
||||||
|
let keyboard_layout = substitute(keyboard_layout, 'keyboard-', '', 'g')
|
||||||
|
|
||||||
|
let short_codes = get(g:, 'airline#extensions#xkblayout#short_codes', {'2SetKorean': 'KR', 'Chinese': 'CN', 'Japanese': 'JP'})
|
||||||
if has_key(short_codes, keyboard_layout)
|
if has_key(short_codes, keyboard_layout)
|
||||||
let keyboard_layout = short_codes[keyboard_layout]
|
let keyboard_layout = short_codes[keyboard_layout]
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
" MIT License. Copyright (c) 2015-2018 Evgeny Firsov et al.
|
" MIT License. Copyright (c) 2015-2021 Evgeny Firsov et al.
|
||||||
|
" Plugin: https://github.com/ycm-core/YouCompleteMe
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if !get(g:, 'loaded_youcompleteme', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
let s:spc = g:airline_symbols.space
|
let s:spc = g:airline_symbols.space
|
||||||
let s:error_symbol = get(g:, 'airline#extensions#ycm#error_symbol', 'E:')
|
let s:error_symbol = get(g:, 'airline#extensions#ycm#error_symbol', 'E:')
|
||||||
let s:warning_symbol = get(g:, 'airline#extensions#ycm#warning_symbol', 'W:')
|
let s:warning_symbol = get(g:, 'airline#extensions#ycm#warning_symbol', 'W:')
|
||||||
@@ -12,8 +17,8 @@ function! airline#extensions#ycm#init(ext)
|
|||||||
call airline#parts#define_function('ycm_warning_count', 'airline#extensions#ycm#get_warning_count')
|
call airline#parts#define_function('ycm_warning_count', 'airline#extensions#ycm#get_warning_count')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#ycm#get_error_count()
|
function! airline#extensions#ycm#get_error_count() abort
|
||||||
if exists(':YcmDiag') && exists("*youcompleteme#GetErrorCount")
|
if exists("*youcompleteme#GetErrorCount")
|
||||||
let cnt = youcompleteme#GetErrorCount()
|
let cnt = youcompleteme#GetErrorCount()
|
||||||
|
|
||||||
if cnt != 0
|
if cnt != 0
|
||||||
@@ -25,7 +30,7 @@ function! airline#extensions#ycm#get_error_count()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#extensions#ycm#get_warning_count()
|
function! airline#extensions#ycm#get_warning_count()
|
||||||
if exists(':YcmDiag') && exists("*youcompleteme#GetWarningCount")
|
if exists("*youcompleteme#GetWarningCount")
|
||||||
let cnt = youcompleteme#GetWarningCount()
|
let cnt = youcompleteme#GetWarningCount()
|
||||||
|
|
||||||
if cnt != 0
|
if cnt != 0
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
" MIT License. Copyright (c) 2021 Dmitry Geurkov (d.geurkov@gmail.com)
|
||||||
|
" Plugin: https://github.com/troydm/zoomwintab.vim
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
|
||||||
|
" Avoid installing twice
|
||||||
|
if exists('g:loaded_vim_airline_zoomwintab')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let g:loaded_vim_airline_zoomwintab = 1
|
||||||
|
|
||||||
|
let s:zoomwintab_status_zoomed_in =
|
||||||
|
\ get(g:, 'airline#extensions#zoomwintab#status_zoomed_in', g:airline_left_alt_sep.' Zoomed')
|
||||||
|
let s:zoomwintab_status_zoomed_out =
|
||||||
|
\ get(g:, 'airline#extensions#zoomwintab#status_zoomed_out', '')
|
||||||
|
|
||||||
|
function! airline#extensions#zoomwintab#apply(...) abort
|
||||||
|
call airline#extensions#prepend_to_section('gutter',
|
||||||
|
\ exists('t:zoomwintab') ? s:zoomwintab_status_zoomed_in : s:zoomwintab_status_zoomed_out)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#extensions#zoomwintab#init(ext) abort
|
||||||
|
call a:ext.add_statusline_func('airline#extensions#zoomwintab#apply')
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
function! airline#formatter#short_path#format(val) abort
|
||||||
|
if get(g:, 'airline_stl_path_style', 'default') ==# 'short'
|
||||||
|
return '%{pathshorten(expand("'.a:val.'"))}'
|
||||||
|
endif
|
||||||
|
return a:val
|
||||||
|
endfunction
|
||||||
+485
-105
@@ -1,28 +1,35 @@
|
|||||||
" MIT License. Copyright (c) 2013-2018 Bailey Ling et al.
|
" MIT License. Copyright (c) 2013-2021 Bailey Ling Christian Brabandt et al.
|
||||||
" vim: et ts=2 sts=2 sw=2
|
" vim: et ts=2 sts=2 sw=2 et
|
||||||
|
|
||||||
scriptencoding utf-8
|
scriptencoding utf-8
|
||||||
|
|
||||||
let s:is_win32term = (has('win32') || has('win64')) &&
|
let s:is_win32term = (has('win32') || has('win64')) &&
|
||||||
\ !has('gui_running') &&
|
\ !has('gui_running') &&
|
||||||
\ (empty($CONEMUBUILD) || &term !=? 'xterm') &&
|
\ (empty($CONEMUBUILD) || &term !=? 'xterm') &&
|
||||||
|
\ empty($WT_SESSION) &&
|
||||||
\ !(exists("+termguicolors") && &termguicolors)
|
\ !(exists("+termguicolors") && &termguicolors)
|
||||||
|
|
||||||
let s:separators = {}
|
let s:separators = {}
|
||||||
let s:accents = {}
|
let s:accents = {}
|
||||||
let s:hl_groups = {}
|
let s:hl_groups = {}
|
||||||
|
|
||||||
function! s:gui2cui(rgb, fallback)
|
if !exists(":def") || !airline#util#has_vim9_script()
|
||||||
|
|
||||||
|
" Legacy Vimscript implementation
|
||||||
|
function! s:gui2cui(rgb, fallback) abort
|
||||||
if a:rgb == ''
|
if a:rgb == ''
|
||||||
return a:fallback
|
return a:fallback
|
||||||
elseif match(a:rgb, '^\%(NONE\|[fb]g\)$') > -1
|
elseif match(a:rgb, '^\%(NONE\|[fb]g\)$') > -1
|
||||||
return a:rgb
|
return a:rgb
|
||||||
|
elseif a:rgb[0] !~ '#'
|
||||||
|
" a:rgb contains colorname
|
||||||
|
return a:rgb
|
||||||
endif
|
endif
|
||||||
let rgb = map(split(a:rgb[1:], '..\zs'), '0 + ("0x".v:val)')
|
let rgb = map(split(a:rgb[1:], '..\zs'), '0 + ("0x".v:val)')
|
||||||
return airline#msdos#round_msdos_colors(rgb)
|
return airline#msdos#round_msdos_colors(rgb)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:group_not_done(list, name)
|
function! s:group_not_done(list, name) abort
|
||||||
if index(a:list, a:name) == -1
|
if index(a:list, a:name) == -1
|
||||||
call add(a:list, a:name)
|
call add(a:list, a:name)
|
||||||
return 1
|
return 1
|
||||||
@@ -32,104 +39,73 @@ function! s:group_not_done(list, name)
|
|||||||
endif
|
endif
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
function! s:get_syn(group, what)
|
function! s:get_syn(group, what, mode) abort
|
||||||
if !exists("g:airline_gui_mode")
|
|
||||||
let g:airline_gui_mode = airline#init#gui_mode()
|
|
||||||
endif
|
|
||||||
let color = ''
|
let color = ''
|
||||||
if hlexists(a:group)
|
if hlexists(a:group)
|
||||||
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, g:airline_gui_mode)
|
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, a:mode)
|
||||||
endif
|
endif
|
||||||
if empty(color) || color == -1
|
if empty(color) || color == -1
|
||||||
" should always exists
|
" should always exist
|
||||||
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, g:airline_gui_mode)
|
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, a:mode)
|
||||||
" however, just in case
|
" however, just in case
|
||||||
if empty(color) || color == -1
|
if empty(color) || color == -1
|
||||||
let color = 'NONE'
|
let color = 'NONE'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return color
|
return color
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_array(fg, bg, opts)
|
function! s:get_array(guifg, guibg, ctermfg, ctermbg, opts) abort
|
||||||
let opts=empty(a:opts) ? '' : join(a:opts, ',')
|
return [ a:guifg, a:guibg, a:ctermfg, a:ctermbg, empty(a:opts) ? '' : join(a:opts, ',') ]
|
||||||
return g:airline_gui_mode ==# 'gui'
|
endfunction
|
||||||
\ ? [ a:fg, a:bg, '', '', opts ]
|
|
||||||
\ : [ '', '', a:fg, a:bg, opts ]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! airline#highlighter#reset_hlcache()
|
function! airline#highlighter#reset_hlcache() abort
|
||||||
let s:hl_groups = {}
|
let s:hl_groups = {}
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#highlighter#get_highlight(group, ...)
|
function! airline#highlighter#get_highlight(group, ...) abort
|
||||||
let reverse = get(g:, 'airline_gui_mode', '') ==# 'gui'
|
" only check for the cterm reverse attribute
|
||||||
\ ? synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'gui')
|
" TODO: do we need to check all modes (gui, term, as well)?
|
||||||
\ : synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'cterm')
|
let reverse = synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'cterm')
|
||||||
\|| synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'term')
|
|
||||||
if get(g:, 'airline_highlighting_cache', 0) && has_key(s:hl_groups, a:group)
|
if get(g:, 'airline_highlighting_cache', 0) && has_key(s:hl_groups, a:group)
|
||||||
let res = s:hl_groups[a:group]
|
let res = s:hl_groups[a:group]
|
||||||
return reverse ? [ res[1], res[0], res[3], res[2], res[4] ] : res
|
return reverse ? [ res[1], res[0], res[3], res[2], res[4] ] : res
|
||||||
else
|
else
|
||||||
let fg = s:get_syn(a:group, 'fg')
|
let ctermfg = s:get_syn(a:group, 'fg', 'cterm')
|
||||||
let bg = s:get_syn(a:group, 'bg')
|
let ctermbg = s:get_syn(a:group, 'bg', 'cterm')
|
||||||
|
let guifg = s:get_syn(a:group, 'fg', 'gui')
|
||||||
|
let guibg = s:get_syn(a:group, 'bg', 'gui')
|
||||||
let bold = synIDattr(synIDtrans(hlID(a:group)), 'bold')
|
let bold = synIDattr(synIDtrans(hlID(a:group)), 'bold')
|
||||||
let opts = a:000
|
if reverse
|
||||||
if bold
|
let res = s:get_array(guibg, guifg, ctermbg, ctermfg, bold ? ['bold'] : a:000)
|
||||||
let opts = ['bold']
|
else
|
||||||
|
let res = s:get_array(guifg, guibg, ctermfg, ctermbg, bold ? ['bold'] : a:000)
|
||||||
endif
|
endif
|
||||||
let res = reverse ? s:get_array(bg, fg, opts) : s:get_array(fg, bg, opts)
|
|
||||||
endif
|
endif
|
||||||
let s:hl_groups[a:group] = res
|
let s:hl_groups[a:group] = res
|
||||||
return res
|
return res
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#highlighter#get_highlight2(fg, bg, ...)
|
function! airline#highlighter#get_highlight2(fg, bg, ...) abort
|
||||||
let fg = s:get_syn(a:fg[0], a:fg[1])
|
let guifg = s:get_syn(a:fg[0], a:fg[1], 'gui')
|
||||||
let bg = s:get_syn(a:bg[0], a:bg[1])
|
let guibg = s:get_syn(a:bg[0], a:bg[1], 'gui')
|
||||||
return s:get_array(fg, bg, a:000)
|
let ctermfg = s:get_syn(a:fg[0], a:fg[1], 'cterm')
|
||||||
endfunction
|
let ctermbg = s:get_syn(a:bg[0], a:bg[1], 'cterm')
|
||||||
|
return s:get_array(guifg, guibg, ctermfg, ctermbg, a:000)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! s:hl_group_exists(group)
|
function! s:hl_group_exists(group) abort
|
||||||
if !hlexists(a:group)
|
if !hlexists(a:group)
|
||||||
return 0
|
return 0
|
||||||
elseif empty(synIDattr(hlID(a:group), 'fg'))
|
elseif empty(synIDattr(synIDtrans(hlID(a:group)), 'fg'))
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
return 1
|
return 1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#highlighter#exec(group, colors)
|
function! s:CheckDefined(colors) abort
|
||||||
if pumvisible()
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
let colors = a:colors
|
|
||||||
if s:is_win32term
|
|
||||||
let colors[2] = s:gui2cui(get(colors, 0, ''), get(colors, 2, ''))
|
|
||||||
let colors[3] = s:gui2cui(get(colors, 1, ''), get(colors, 3, ''))
|
|
||||||
endif
|
|
||||||
let old_hi = airline#highlighter#get_highlight(a:group)
|
|
||||||
if len(colors) == 4
|
|
||||||
call add(colors, '')
|
|
||||||
endif
|
|
||||||
if g:airline_gui_mode ==# 'gui'
|
|
||||||
let new_hi = [colors[0], colors[1], '', '', colors[4]]
|
|
||||||
else
|
|
||||||
let new_hi = ['', '', printf("%s", colors[2]), printf("%s", colors[3]), colors[4]]
|
|
||||||
endif
|
|
||||||
let colors = s:CheckDefined(colors)
|
|
||||||
if old_hi != new_hi || !s:hl_group_exists(a:group)
|
|
||||||
let cmd = printf('hi %s%s', a:group, s:GetHiCmd(colors))
|
|
||||||
exe cmd
|
|
||||||
if has_key(s:hl_groups, a:group)
|
|
||||||
let s:hl_groups[a:group] = colors
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:CheckDefined(colors)
|
|
||||||
" Checks, whether the definition of the colors is valid and is not empty or NONE
|
" Checks, whether the definition of the colors is valid and is not empty or NONE
|
||||||
" e.g. if the colors would expand to this:
|
" e.g. if the colors would expand to this:
|
||||||
" hi airline_c ctermfg=NONE ctermbg=NONE
|
" hi airline_c ctermfg=NONE ctermbg=NONE
|
||||||
@@ -154,14 +130,14 @@ function! s:CheckDefined(colors)
|
|||||||
" but at least this makes sure, the group will be defined
|
" but at least this makes sure, the group will be defined
|
||||||
let fg = g:airline#highlighter#normal_fg_hi
|
let fg = g:airline#highlighter#normal_fg_hi
|
||||||
let bg = synIDattr(synIDtrans(hlID('Normal')), 'bg', 'cterm')
|
let bg = synIDattr(synIDtrans(hlID('Normal')), 'bg', 'cterm')
|
||||||
if bg < 0
|
if empty(bg) || bg < 0
|
||||||
" in case there is no background color defined for Normal
|
" in case there is no background color defined for Normal
|
||||||
let bg = a:colors[3]
|
let bg = a:colors[3]
|
||||||
endif
|
endif
|
||||||
return a:colors[0:1] + [fg, bg] + [a:colors[4]]
|
return a:colors[0:1] + [fg, bg] + [a:colors[4]]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:GetHiCmd(list)
|
function! s:GetHiCmd(list) abort
|
||||||
" a:list needs to have 5 items!
|
" a:list needs to have 5 items!
|
||||||
let res = ''
|
let res = ''
|
||||||
let i = -1
|
let i = -1
|
||||||
@@ -184,9 +160,40 @@ function! s:GetHiCmd(list)
|
|||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
return res
|
return res
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:exec_separator(dict, from, to, inverse, suffix)
|
function! airline#highlighter#load_theme() abort
|
||||||
|
if pumvisible()
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
for winnr in filter(range(1, winnr('$')), 'v:val != winnr()')
|
||||||
|
call airline#highlighter#highlight_modified_inactive(winbufnr(winnr))
|
||||||
|
endfor
|
||||||
|
call airline#highlighter#highlight(['inactive'])
|
||||||
|
if getbufvar( bufnr('%'), '&modified' ) && &buftype != 'terminal'
|
||||||
|
call airline#highlighter#highlight(['normal', 'modified'])
|
||||||
|
else
|
||||||
|
call airline#highlighter#highlight(['normal'])
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#highlighter#add_accent(accent) abort
|
||||||
|
let s:accents[a:accent] = 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#highlighter#add_separator(from, to, inverse) abort
|
||||||
|
let s:separators[a:from.a:to] = [a:from, a:to, a:inverse]
|
||||||
|
call <sid>exec_separator({}, a:from, a:to, a:inverse, '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#highlighter#remove_separators_for_bufnr(bufnr) abort
|
||||||
|
" remove all separators, that have the buffer number in their name,
|
||||||
|
" but do not be too greedy!
|
||||||
|
let pat = 'c' . a:bufnr . '\(\D\|$\)'
|
||||||
|
call filter(s:separators, 'v:key !~# pat')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:exec_separator(dict, from, to, inverse, suffix) abort
|
||||||
if pumvisible()
|
if pumvisible()
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@@ -200,33 +207,9 @@ function! s:exec_separator(dict, from, to, inverse, suffix)
|
|||||||
endif
|
endif
|
||||||
let a:dict[group] = colors
|
let a:dict[group] = colors
|
||||||
call airline#highlighter#exec(group, colors)
|
call airline#highlighter#exec(group, colors)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#highlighter#load_theme()
|
function! airline#highlighter#highlight_modified_inactive(bufnr) abort
|
||||||
if pumvisible()
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
for winnr in filter(range(1, winnr('$')), 'v:val != winnr()')
|
|
||||||
call airline#highlighter#highlight_modified_inactive(winbufnr(winnr))
|
|
||||||
endfor
|
|
||||||
call airline#highlighter#highlight(['inactive'])
|
|
||||||
if getbufvar( bufnr('%'), '&modified' )
|
|
||||||
call airline#highlighter#highlight(['normal', 'modified'])
|
|
||||||
else
|
|
||||||
call airline#highlighter#highlight(['normal'])
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! airline#highlighter#add_separator(from, to, inverse)
|
|
||||||
let s:separators[a:from.a:to] = [a:from, a:to, a:inverse]
|
|
||||||
call <sid>exec_separator({}, a:from, a:to, a:inverse, '')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! airline#highlighter#add_accent(accent)
|
|
||||||
let s:accents[a:accent] = 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! airline#highlighter#highlight_modified_inactive(bufnr)
|
|
||||||
if getbufvar(a:bufnr, '&modified')
|
if getbufvar(a:bufnr, '&modified')
|
||||||
let colors = exists('g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c')
|
let colors = exists('g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c')
|
||||||
\ ? g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c : []
|
\ ? g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c : []
|
||||||
@@ -238,9 +221,45 @@ function! airline#highlighter#highlight_modified_inactive(bufnr)
|
|||||||
if !empty(colors)
|
if !empty(colors)
|
||||||
call airline#highlighter#exec('airline_c'.(a:bufnr).'_inactive', colors)
|
call airline#highlighter#exec('airline_c'.(a:bufnr).'_inactive', colors)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! airline#highlighter#highlight(modes, ...)
|
function! airline#highlighter#exec(group, colors) abort
|
||||||
|
if pumvisible()
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let colors = a:colors
|
||||||
|
if len(colors) == 4
|
||||||
|
call add(colors, '')
|
||||||
|
endif
|
||||||
|
" colors should always be string values
|
||||||
|
let colors = map(copy(colors), 'type(v:val) != type("") ? string(v:val) : v:val')
|
||||||
|
if s:is_win32term
|
||||||
|
let colors[2] = s:gui2cui(get(colors, 0, ''), get(colors, 2, ''))
|
||||||
|
let colors[3] = s:gui2cui(get(colors, 1, ''), get(colors, 3, ''))
|
||||||
|
endif
|
||||||
|
let old_hi = airline#highlighter#get_highlight(a:group)
|
||||||
|
let new_hi = [colors[0], colors[1], printf('%s', colors[2]), printf('%s', colors[3]), colors[4]]
|
||||||
|
let colors = s:CheckDefined(colors)
|
||||||
|
if old_hi != new_hi || !s:hl_group_exists(a:group)
|
||||||
|
let cmd = printf('hi %s%s', a:group, s:GetHiCmd(colors))
|
||||||
|
try
|
||||||
|
exe cmd
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E421:/ " color definition not found
|
||||||
|
let group=matchstr(v:exception, '\w\+\ze=')
|
||||||
|
let color=matchstr(v:exception, '=\zs\w\+')
|
||||||
|
let cmd=substitute(cmd, color, 'grey', 'g')
|
||||||
|
exe cmd
|
||||||
|
call airline#util#warning('color definition for group ' . a:group . ' not found, using grey as fallback')
|
||||||
|
catch
|
||||||
|
call airline#util#warning('Error when running command: '. cmd)
|
||||||
|
endtry
|
||||||
|
if has_key(s:hl_groups, a:group)
|
||||||
|
let s:hl_groups[a:group] = colors
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! airline#highlighter#highlight(modes, ...) abort
|
||||||
let bufnr = a:0 ? a:1 : ''
|
let bufnr = a:0 ? a:1 : ''
|
||||||
let p = g:airline#themes#{g:airline_theme}#palette
|
let p = g:airline#themes#{g:airline_theme}#palette
|
||||||
|
|
||||||
@@ -281,6 +300,12 @@ function! airline#highlighter#highlight(modes, ...)
|
|||||||
call airline#highlighter#exec(name.suffix, mode_colors)
|
call airline#highlighter#exec(name.suffix, mode_colors)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !has_key(p, 'accents')
|
||||||
|
" work around a broken installation
|
||||||
|
" shouldn't actually happen, p should always contain accents
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
for accent in keys(s:accents)
|
for accent in keys(s:accents)
|
||||||
if !has_key(p.accents, accent)
|
if !has_key(p.accents, accent)
|
||||||
continue
|
continue
|
||||||
@@ -316,4 +341,359 @@ function! airline#highlighter#highlight(modes, ...)
|
|||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" End legacy VimScript
|
||||||
|
finish
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
" This is using Vim9 script
|
||||||
|
|
||||||
|
def s:gui2cui(rgb: string, fallback: string): string
|
||||||
|
if empty(rgb)
|
||||||
|
return fallback
|
||||||
|
elseif match(rgb, '^\%(NONE\|[fb]g\)$') > -1
|
||||||
|
return rgb
|
||||||
|
elseif rgb !~ '#'
|
||||||
|
# rgb contains colorname
|
||||||
|
return rgb
|
||||||
|
endif
|
||||||
|
var _rgb = []
|
||||||
|
_rgb = mapnew(split(rgb[1 : ], '..\zs'), (_, v) => ('0x' .. v)->str2nr(16))
|
||||||
|
return airline#msdos#round_msdos_colors(_rgb)
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:group_not_done(list: list<string>, name: string): bool
|
||||||
|
if index(list, name) == -1
|
||||||
|
add(list, name)
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
if &vbs
|
||||||
|
echomsg printf("airline: group: %s already done, skipping", name)
|
||||||
|
endif
|
||||||
|
return false
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:get_syn(group: string, what: string, mode: string): string
|
||||||
|
var color = ''
|
||||||
|
if hlexists(group)
|
||||||
|
color = hlID(group)->synIDtrans()->synIDattr(what, mode)
|
||||||
|
endif
|
||||||
|
if empty(color) || str2nr(color) == -1
|
||||||
|
# Normal highlighting group should always exist
|
||||||
|
color = hlID('Normal')->synIDtrans()->synIDattr(what, mode)
|
||||||
|
# however, just in case
|
||||||
|
if empty(color) || str2nr(color) == -1
|
||||||
|
color = 'NONE'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return color
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:get_array(guifg: string, guibg: string, ctermfg: string, ctermbg: string, opts: list<string>): list<string>
|
||||||
|
return [ guifg, guibg, ctermfg, ctermbg, empty(opts) ? '' : join(opts, ',') ]
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#reset_hlcache(): void
|
||||||
|
s:hl_groups = {}
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#get_highlight(group: string, rest: list<string> = ['']): list<string>
|
||||||
|
# only check for the cterm reverse attribute
|
||||||
|
# TODO: do we need to check all modes (gui, term, as well)?
|
||||||
|
var reverse = false
|
||||||
|
var bold = false
|
||||||
|
var property: string
|
||||||
|
var res = []
|
||||||
|
var ctermfg: string
|
||||||
|
var ctermbg: string
|
||||||
|
var guifg: string
|
||||||
|
var guibg: string
|
||||||
|
property = hlID(group)->synIDtrans()->synIDattr('reverse', 'cterm')
|
||||||
|
if !empty(property) && property->str2nr()
|
||||||
|
reverse = true
|
||||||
|
endif
|
||||||
|
if get(g:, 'airline_highlighting_cache', 0) && has_key(s:hl_groups, group)
|
||||||
|
res = s:hl_groups[group]
|
||||||
|
return reverse ? [ res[1], res[0], res[3], res[2], res[4] ] : res
|
||||||
|
else
|
||||||
|
ctermfg = s:get_syn(group, 'fg', 'cterm')
|
||||||
|
ctermbg = s:get_syn(group, 'bg', 'cterm')
|
||||||
|
guifg = s:get_syn(group, 'fg', 'gui')
|
||||||
|
guibg = s:get_syn(group, 'bg', 'gui')
|
||||||
|
property = hlID(group)->synIDtrans()->synIDattr('bold')
|
||||||
|
if !empty(property) && property->str2nr()
|
||||||
|
bold = true
|
||||||
|
endif
|
||||||
|
if reverse
|
||||||
|
res = s:get_array(guibg, guifg, ctermbg, ctermfg, bold ? ['bold'] : rest)
|
||||||
|
else
|
||||||
|
res = s:get_array(guifg, guibg, ctermfg, ctermbg, bold ? ['bold'] : rest)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
s:hl_groups[group] = res
|
||||||
|
return res
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#get_highlight2(fg: list<string>, bg: list<string>, ...rest: list<string>): list<string>
|
||||||
|
var guifg = s:get_syn(fg[0], fg[1], 'gui')
|
||||||
|
var guibg = s:get_syn(bg[0], bg[1], 'gui')
|
||||||
|
var ctermfg = s:get_syn(fg[0], fg[1], 'cterm')
|
||||||
|
var ctermbg = s:get_syn(bg[0], bg[1], 'cterm')
|
||||||
|
return s:get_array(guifg, guibg, ctermfg, ctermbg, filter(rest, (_, v) => !empty(v)))
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:hl_group_exists(group: string): bool
|
||||||
|
if !hlexists(group)
|
||||||
|
return false
|
||||||
|
elseif hlID(group)->synIDtrans()->synIDattr('fg')->empty()
|
||||||
|
return false
|
||||||
|
endif
|
||||||
|
return true
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:CheckDefined(colors: list<any>): list<any>
|
||||||
|
# Checks, whether the definition of the colors is valid and is not empty or NONE
|
||||||
|
# e.g. if the colors would expand to this:
|
||||||
|
# hi airline_c ctermfg=NONE ctermbg=NONE
|
||||||
|
# that means to clear that highlighting group, therefore, fallback to Normal
|
||||||
|
# highlighting group for the cterm values
|
||||||
|
|
||||||
|
# This only works, if the Normal highlighting group is actually defined,
|
||||||
|
# so return early, if it has been cleared
|
||||||
|
if !exists("g:airline#highlighter#normal_fg_hi")
|
||||||
|
g:airline#highlighter#normal_fg_hi = hlID('Normal')->synIDtrans()->synIDattr('fg', 'cterm')
|
||||||
|
endif
|
||||||
|
if empty(g:airline#highlighter#normal_fg_hi) || str2nr(g:airline#highlighter#normal_fg_hi) < 0
|
||||||
|
return colors
|
||||||
|
endif
|
||||||
|
|
||||||
|
for val in colors
|
||||||
|
if !empty(val) && val !=# 'NONE'
|
||||||
|
return colors
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
# this adds the bold attribute to the term argument of the :hi command,
|
||||||
|
# but at least this makes sure, the group will be defined
|
||||||
|
var fg = g:airline#highlighter#normal_fg_hi
|
||||||
|
var bg = hlID('Normal')->synIDtrans()->synIDattr('bg', 'cterm')
|
||||||
|
if empty(bg) || str2nr(bg) < 0
|
||||||
|
# in case there is no background color defined for Normal
|
||||||
|
bg = colors[3]
|
||||||
|
endif
|
||||||
|
return colors[ 0 : 1 ] + [fg, bg] + [colors[4]]
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:GetHiCmd(list: list<string>): string
|
||||||
|
# list needs to have 5 items!
|
||||||
|
var res: string
|
||||||
|
var i = -1
|
||||||
|
var item: string
|
||||||
|
while i < 4
|
||||||
|
i += 1
|
||||||
|
item = get(list, i, '')
|
||||||
|
if item is ''
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
if i == 0
|
||||||
|
res ..= ' guifg=' .. item
|
||||||
|
elseif i == 1
|
||||||
|
res ..= ' guibg=' .. item
|
||||||
|
elseif i == 2
|
||||||
|
res ..= ' ctermfg=' .. item
|
||||||
|
elseif i == 3
|
||||||
|
res ..= ' ctermbg=' .. item
|
||||||
|
elseif i == 4
|
||||||
|
res ..= printf(' gui=%s cterm=%s term=%s', item, item, item)
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return res
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#load_theme(): void
|
||||||
|
if pumvisible()
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
for winnr in filter(range(1, winnr('$')), (_, v) => v != winnr())
|
||||||
|
airline#highlighter#highlight_modified_inactive(winbufnr(winnr))
|
||||||
|
endfor
|
||||||
|
airline#highlighter#highlight(['inactive'])
|
||||||
|
if getbufvar( bufnr('%'), '&modified' ) && &buftype != 'terminal'
|
||||||
|
airline#highlighter#highlight(['normal', 'modified'])
|
||||||
|
else
|
||||||
|
airline#highlighter#highlight(['normal'])
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#add_accent(accent: string): void
|
||||||
|
s:accents[accent] = 1
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#add_separator(from: string, to: string, inverse: bool): void
|
||||||
|
s:separators[from .. to] = [from, to, inverse]
|
||||||
|
s:exec_separator({}, from, to, inverse, '')
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#remove_separators_for_bufnr(bufnr: string): void
|
||||||
|
# remove all separators, that have the bufnr in its name, make sure we
|
||||||
|
# have a full match here
|
||||||
|
const pat = $'c{bufnr}\(\D\|$\)'
|
||||||
|
filter(s:separators, (k, v) => k !~# pat)
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def s:exec_separator(dict: dict<any>, from_arg: string, to_arg: string, inverse: bool, suffix: string): void
|
||||||
|
if pumvisible()
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
var group = from_arg .. '_to_' .. to_arg .. suffix
|
||||||
|
var from = mapnew(airline#themes#get_highlight(from_arg .. suffix), (_, v) => type(v) != type('') ? string(v) : v)
|
||||||
|
var colors = []
|
||||||
|
var to = mapnew(airline#themes#get_highlight(to_arg .. suffix), (_, v) => type(v) != type('') ? string(v) : v)
|
||||||
|
if inverse
|
||||||
|
colors = [ from[1], to[1], from[3], to[3] ]
|
||||||
|
else
|
||||||
|
colors = [ to[1], from[1], to[3], from[3] ]
|
||||||
|
endif
|
||||||
|
dict[group] = colors
|
||||||
|
airline#highlighter#exec(group, colors)
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#highlight_modified_inactive(bufnr: number): void
|
||||||
|
var colors: list<any>
|
||||||
|
var dict1 = eval('g:airline#themes#' .. g:airline_theme .. '#palette')->get('inactive_modified', {})
|
||||||
|
var dict2 = eval('g:airline#themes#' .. g:airline_theme .. '#palette')->get('inactive', {})
|
||||||
|
|
||||||
|
if empty(dict2)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if getbufvar(bufnr, '&modified')
|
||||||
|
colors = get(dict1, 'airline_c', [])
|
||||||
|
else
|
||||||
|
colors = get(dict2, 'airline_c', [])
|
||||||
|
endif
|
||||||
|
if !empty(colors)
|
||||||
|
airline#highlighter#exec('airline_c' .. bufnr .. '_inactive', colors)
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#exec(group: string, clrs: list<any>): void
|
||||||
|
if pumvisible()
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
var colors: list<string> = mapnew(copy(clrs), (_, v) => type(v) != type('') ? string(v) : v)
|
||||||
|
if len(colors) == 4
|
||||||
|
add(colors, '')
|
||||||
|
endif
|
||||||
|
if s:is_win32term
|
||||||
|
colors[2] = s:gui2cui(get(colors, 0, ''), get(colors, 2, ''))
|
||||||
|
colors[3] = s:gui2cui(get(colors, 1, ''), get(colors, 3, ''))
|
||||||
|
endif
|
||||||
|
var old_hi: list<string> = airline#highlighter#get_highlight(group)
|
||||||
|
var new_hi: list<string> = colors
|
||||||
|
if old_hi != new_hi || !s:hl_group_exists(group)
|
||||||
|
var cmd = printf('hi %s%s', group, s:GetHiCmd(colors))
|
||||||
|
try
|
||||||
|
:exe cmd
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E421:/
|
||||||
|
var grp = matchstr(v:exception, '\w\+\ze=')
|
||||||
|
var clr = matchstr(v:exception, '=\zs\w\+')
|
||||||
|
cmd = substitute(cmd, clr, 'grey', 'g')
|
||||||
|
:exe cmd
|
||||||
|
airline#util#warning('color ' .. clr .. ' definition for group ' .. grp .. ' not found, using grey as fallback')
|
||||||
|
catch
|
||||||
|
airline#util#warning('Error when running command: ' .. cmd)
|
||||||
|
endtry
|
||||||
|
if has_key(s:hl_groups, group)
|
||||||
|
s:hl_groups[group] = colors
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
|
||||||
|
def airline#highlighter#highlight(modes: list<string>, bufnr: string = ''): void
|
||||||
|
var p: dict<any> = eval('g:airline#themes#' .. g:airline_theme .. '#palette')
|
||||||
|
|
||||||
|
# draw the base mode, followed by any overrides
|
||||||
|
var mapped = map(modes, (_, v) => v == modes[0] ? v : modes[0] .. "_" .. v)
|
||||||
|
var suffix = ''
|
||||||
|
if modes[0] == 'inactive'
|
||||||
|
suffix = '_inactive'
|
||||||
|
endif
|
||||||
|
var airline_grouplist = []
|
||||||
|
var dict: dict<any>
|
||||||
|
var bnr: number = 0
|
||||||
|
|
||||||
|
var buffers_in_tabpage: list<number> = uniq(sort(tabpagebuflist()))
|
||||||
|
# mapped might be something like ['normal', 'normal_modified']
|
||||||
|
# if a group is in both modes available, only define the second
|
||||||
|
# that is how this was done previously overwrite the previous definition
|
||||||
|
for mode in reverse(mapped)
|
||||||
|
if exists('g:airline#themes#' .. g:airline_theme .. '#palette.' .. mode)
|
||||||
|
dict = eval('g:airline#themes#' .. g:airline_theme .. '#palette.' .. mode)
|
||||||
|
for kvp in items(dict)
|
||||||
|
var mode_colors = kvp[1]
|
||||||
|
var name = kvp[0]
|
||||||
|
if name == 'airline_c' && !empty(bufnr) && suffix == '_inactive'
|
||||||
|
name = 'airline_c' .. bufnr
|
||||||
|
endif
|
||||||
|
# do not re-create highlighting for buffers that are no longer visible
|
||||||
|
# in the current tabpage
|
||||||
|
if name =~# 'airline_c\d\+'
|
||||||
|
bnr = matchstr(name, 'airline_c\zs\d\+')->str2nr()
|
||||||
|
if bnr > 0 && index(buffers_in_tabpage, bnr) == -1
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
elseif (name =~ '_to_') || (name[ 0 : 10 ] == 'airline_tab' && !empty(suffix))
|
||||||
|
# group will be redefined below at exec_separator
|
||||||
|
# or is not needed for tabline with '_inactive' suffix
|
||||||
|
# since active flag is 1 for builder)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
if s:group_not_done(airline_grouplist, name .. suffix)
|
||||||
|
airline#highlighter#exec(name .. suffix, mode_colors)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !has_key(p, 'accents')
|
||||||
|
# shouldn't actually happen, p should always contain accents
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
for accent in keys(s:accents)
|
||||||
|
if !has_key(p.accents, accent)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
var colors = copy(mode_colors)
|
||||||
|
if p.accents[accent][0] != ''
|
||||||
|
colors[0] = p.accents[accent][0]
|
||||||
|
endif
|
||||||
|
if type(get(p.accents[accent], 2, '')) == type('')
|
||||||
|
colors[2] = get(p.accents[accent], 2, '')
|
||||||
|
else
|
||||||
|
colors[2] = string(p.accents[accent][2])
|
||||||
|
endif
|
||||||
|
if len(colors) >= 5
|
||||||
|
colors[4] = get(p.accents[accent], 4, '')
|
||||||
|
else
|
||||||
|
add(colors, get(p.accents[accent], 4, ''))
|
||||||
|
endif
|
||||||
|
if s:group_not_done(airline_grouplist, name .. suffix .. '_' .. accent)
|
||||||
|
airline#highlighter#exec(name .. suffix .. '_' .. accent, colors)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
|
||||||
|
if empty(s:separators)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
for sep in items(s:separators)
|
||||||
|
# we cannot check, that the group already exists, else the separators
|
||||||
|
# might not be correctly defined. But perhaps we can skip above groups
|
||||||
|
# that match the '_to_' name, because they would be redefined here...
|
||||||
|
s:exec_separator(dict, sep[1][0], sep[1][1], sep[1][2], suffix)
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
enddef
|
||||||
|
endif
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user