Compare commits
2066 Commits
v0.109.3
...
render-onc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4013cf9229 | ||
|
|
ed92f7a037 | ||
|
|
d3576ddd0e | ||
|
|
6dcbb9a05d | ||
|
|
5158508d0a | ||
|
|
c23f17ee0b | ||
|
|
ca1d9dd0e5 | ||
|
|
8aaa46a1b6 | ||
|
|
bd4a710cef | ||
|
|
f37ace63e0 | ||
|
|
ce3acf17cf | ||
|
|
492c3a1e83 | ||
|
|
6f8e03470c | ||
|
|
8a6d3094c4 | ||
|
|
552f03c49d | ||
|
|
2b6e8de11f | ||
|
|
fff2d7955e | ||
|
|
3a8e9b5697 | ||
|
|
c199d92dac | ||
|
|
a94cf54aab | ||
|
|
6fe7b22164 | ||
|
|
1b05aad30c | ||
|
|
40a49e6896 | ||
|
|
9a145a4d86 | ||
|
|
9f2e3bab9b | ||
|
|
dac7912e87 | ||
|
|
f4b4bdfd83 | ||
|
|
f04deeb5f9 | ||
|
|
f2c63781f9 | ||
|
|
bec61123fd | ||
|
|
6cd0bcc578 | ||
|
|
6d6aa3b253 | ||
|
|
79c890f31a | ||
|
|
209fb10731 | ||
|
|
8947438510 | ||
|
|
453aa5ffd7 | ||
|
|
56d45e72cd | ||
|
|
205607a9cd | ||
|
|
b4275008f9 | ||
|
|
361801e527 | ||
|
|
2138715fca | ||
|
|
a844bf7d41 | ||
|
|
3e329861f9 | ||
|
|
54a3b56935 | ||
|
|
8049ec674e | ||
|
|
5c0f2e75ea | ||
|
|
3e2dba36b4 | ||
|
|
3096222672 | ||
|
|
8b6b7e60be | ||
|
|
a83d626912 | ||
|
|
2c4d83c9af | ||
|
|
a87ffa58ff | ||
|
|
3210d36727 | ||
|
|
652e3b0bb6 | ||
|
|
4f4ef4a357 | ||
|
|
2731855487 | ||
|
|
eb307b22f0 | ||
|
|
6985b70859 | ||
|
|
25ed7c57c1 | ||
|
|
d0dd44faad | ||
|
|
6e84f740aa | ||
|
|
c571273ab4 | ||
|
|
babd41916a | ||
|
|
acbad4c7b7 | ||
|
|
fe0a8b4be2 | ||
|
|
d60855b06d | ||
|
|
99ef8ccd3f | ||
|
|
6f0cdc35f3 | ||
|
|
3ddfc7ff61 | ||
|
|
fa8cd843ca | ||
|
|
07cc5904f8 | ||
|
|
3d28495c67 | ||
|
|
ad38708ede | ||
|
|
c1f0ac30a0 | ||
|
|
b19a6c0dcc | ||
|
|
5d16f76518 | ||
|
|
8599ba557d | ||
|
|
f08426c7a0 | ||
|
|
f86480ba5d | ||
|
|
0798cfd58c | ||
|
|
385028865e | ||
|
|
966bf56ddb | ||
|
|
8d4828a2e8 | ||
|
|
f3eb1d4abf | ||
|
|
5dc3369cf6 | ||
|
|
722ad5a01d | ||
|
|
8e612e4287 | ||
|
|
e0f8615d52 | ||
|
|
3abd376d6a | ||
|
|
45371584b1 | ||
|
|
88024ca7c9 | ||
|
|
c0d85dc1dd | ||
|
|
b67193e322 | ||
|
|
e83a297229 | ||
|
|
31336b0b7d | ||
|
|
c5738a509c | ||
|
|
0711121586 | ||
|
|
33cd6f520a | ||
|
|
cf47ed2c5f | ||
|
|
242a0b85b5 | ||
|
|
7172ce37b1 | ||
|
|
0673606de8 | ||
|
|
adc355a1e6 | ||
|
|
073405018e | ||
|
|
b758d1b871 | ||
|
|
fd8ebb4f17 | ||
|
|
a73db6bfca | ||
|
|
ede7656f02 | ||
|
|
30b7da0e4a | ||
|
|
be33f000e2 | ||
|
|
55dbcf2039 | ||
|
|
f9804feefa | ||
|
|
23ffce9fbe | ||
|
|
2515bbf990 | ||
|
|
461fa8d71e | ||
|
|
e1285b9780 | ||
|
|
d6f173866e | ||
|
|
b218ab4755 | ||
|
|
101fe7fbb5 | ||
|
|
fd6e47c167 | ||
|
|
9969caf513 | ||
|
|
0069dd5ce6 | ||
|
|
eb2e9a59b7 | ||
|
|
16f420528d | ||
|
|
e43696eb6b | ||
|
|
70d0421b3c | ||
|
|
ee753beebd | ||
|
|
bf324c152b | ||
|
|
dd283b471a | ||
|
|
a03d062120 | ||
|
|
a8bea41ad8 | ||
|
|
6a22ab83cf | ||
|
|
5e2eb436ff | ||
|
|
c684f08e30 | ||
|
|
c9fc7eac4f | ||
|
|
189ddf9380 | ||
|
|
62297a56c8 | ||
|
|
24c9bbf461 | ||
|
|
3655a96e54 | ||
|
|
967ef9d414 | ||
|
|
c6d22af416 | ||
|
|
a464a7da2a | ||
|
|
f4eb219c75 | ||
|
|
ec3bb0f090 | ||
|
|
12b59daa1e | ||
|
|
7a8da8ce11 | ||
|
|
a6d6f8a193 | ||
|
|
d352a63d9d | ||
|
|
f44f60c6e6 | ||
|
|
c866c211b5 | ||
|
|
6bfe6fa0e1 | ||
|
|
149b9d1aa6 | ||
|
|
624bd0a05a | ||
|
|
ceb20dea96 | ||
|
|
6976af5029 | ||
|
|
616bda85e9 | ||
|
|
2759ed4d00 | ||
|
|
8180938401 | ||
|
|
6028cd90d4 | ||
|
|
906db58188 | ||
|
|
30fefa0ef8 | ||
|
|
5f468970f0 | ||
|
|
d3ce82e82c | ||
|
|
cafeba103b | ||
|
|
ce2cfc6035 | ||
|
|
26f7e66b49 | ||
|
|
c52fe2f536 | ||
|
|
9373d38434 | ||
|
|
1612c90052 | ||
|
|
b8be720490 | ||
|
|
126e4cce8f | ||
|
|
401f85bed2 | ||
|
|
9072e5a507 | ||
|
|
7d97dfa6be | ||
|
|
a5c615ceb4 | ||
|
|
eb04160d2d | ||
|
|
9d742b90c3 | ||
|
|
5cf953d559 | ||
|
|
17d53d0e38 | ||
|
|
01d9d53f4a | ||
|
|
8837045abb | ||
|
|
55548ca61a | ||
|
|
3b5754a77e | ||
|
|
eb9959a0cf | ||
|
|
ae1ebc6858 | ||
|
|
27600b6b8d | ||
|
|
741e11cc11 | ||
|
|
f23cc724d4 | ||
|
|
dca2dc7b6b | ||
|
|
8845f5a183 | ||
|
|
6680e1e9fe | ||
|
|
27cd7b204d | ||
|
|
9d8184670a | ||
|
|
89e44d4901 | ||
|
|
41ac8ef909 | ||
|
|
1693718637 | ||
|
|
9a3cd073c7 | ||
|
|
2fb13cf1ca | ||
|
|
391ab8fa1b | ||
|
|
9558da8681 | ||
|
|
2d1d75f482 | ||
|
|
2182cb2656 | ||
|
|
6d4276ea5f | ||
|
|
c0ad15756c | ||
|
|
e67c44a562 | ||
|
|
32979f3aca | ||
|
|
f3b6719c76 | ||
|
|
9547e88d88 | ||
|
|
547888942f | ||
|
|
61bd6bab09 | ||
|
|
432572c592 | ||
|
|
17b2b112bc | ||
|
|
49d3e1cc4b | ||
|
|
4de2c0f7ef | ||
|
|
0bed5e4562 | ||
|
|
5f1acae0d3 | ||
|
|
89d73f713a | ||
|
|
b2451d9dd6 | ||
|
|
074a221e0f | ||
|
|
f9650b3111 | ||
|
|
6397c05835 | ||
|
|
9456f716c2 | ||
|
|
83dfb191d6 | ||
|
|
3223e21d9f | ||
|
|
9c5f580012 | ||
|
|
3d8e63b93b | ||
|
|
c2d6d24952 | ||
|
|
a526f23c81 | ||
|
|
267e07472d | ||
|
|
ffd092a098 | ||
|
|
fa9f4a9355 | ||
|
|
a0e976599c | ||
|
|
08dddf0b26 | ||
|
|
b559bfd80f | ||
|
|
f8b91bd0f0 | ||
|
|
d782426491 | ||
|
|
4540f04dbe | ||
|
|
38d0fdc09a | ||
|
|
b2f9c454b0 | ||
|
|
c71e522b4e | ||
|
|
6b6a30c3da | ||
|
|
2aa7c6f2b4 | ||
|
|
ab0a3f19ab | ||
|
|
c08ce1c3b8 | ||
|
|
781a95d2e3 | ||
|
|
f638d4ce1d | ||
|
|
0f0b7090b8 | ||
|
|
03b4c7c464 | ||
|
|
fd61683c46 | ||
|
|
e3465fbcf9 | ||
|
|
a238368296 | ||
|
|
61d6cb880c | ||
|
|
d89c51135a | ||
|
|
c8f83e2d4d | ||
|
|
9da0b78ead | ||
|
|
e9e1170976 | ||
|
|
c70c0f9ae9 | ||
|
|
613add0aed | ||
|
|
74afa62a55 | ||
|
|
8c14a8fa95 | ||
|
|
0a9fb3978b | ||
|
|
e5ada92b7b | ||
|
|
78cea69172 | ||
|
|
7f70712dac | ||
|
|
0e79a7f26b | ||
|
|
e905ababcd | ||
|
|
793fa6e3a4 | ||
|
|
84bcbf1128 | ||
|
|
faf93aed4e | ||
|
|
4f09633379 | ||
|
|
c6b374ebc9 | ||
|
|
26d90a5e48 | ||
|
|
0a51784dd0 | ||
|
|
19c0b390d2 | ||
|
|
cebc8428c8 | ||
|
|
33a808a49b | ||
|
|
ffcc1cbf77 | ||
|
|
759ce7440c | ||
|
|
1d04dc5dbf | ||
|
|
3978d4e872 | ||
|
|
08dfcba68a | ||
|
|
c225a3e5af | ||
|
|
c7b7f7dfd5 | ||
|
|
d791fc707a | ||
|
|
9ff238921f | ||
|
|
17b8e4a684 | ||
|
|
3ff8c78b58 | ||
|
|
1db4fab3ab | ||
|
|
aa0563c656 | ||
|
|
69e01e67dc | ||
|
|
888098bad2 | ||
|
|
c37faf0ab3 | ||
|
|
851a60a68e | ||
|
|
b11bfa8821 | ||
|
|
c0f43d964c | ||
|
|
786cc59d7a | ||
|
|
45381e566c | ||
|
|
003e4bc241 | ||
|
|
feeb44c122 | ||
|
|
c3094b7c3d | ||
|
|
1def355d44 | ||
|
|
c81bd288d4 | ||
|
|
91b54b352b | ||
|
|
e37d7f5b0e | ||
|
|
32ad486a8e | ||
|
|
00d8921ae9 | ||
|
|
f9a5e141aa | ||
|
|
8de8615176 | ||
|
|
96f0257fb3 | ||
|
|
817c6dd49c | ||
|
|
b81b96f353 | ||
|
|
7f72df6dcf | ||
|
|
df64a3c701 | ||
|
|
1109cd11c8 | ||
|
|
bef4df5df9 | ||
|
|
ca63a99736 | ||
|
|
860959fe13 | ||
|
|
6b25841e2a | ||
|
|
606ab74b9f | ||
|
|
b40daa132f | ||
|
|
008655b879 | ||
|
|
3b01a032ba | ||
|
|
fea0ff3745 | ||
|
|
123faed5b0 | ||
|
|
22f024bd5f | ||
|
|
80b7f75d24 | ||
|
|
3a4c5aa440 | ||
|
|
dcdbf43af0 | ||
|
|
62fc0b2100 | ||
|
|
75490fe2b1 | ||
|
|
59ec9e508b | ||
|
|
3419aaf17e | ||
|
|
37d0b8424c | ||
|
|
5c8db996ee | ||
|
|
76c15229c1 | ||
|
|
5dda105182 | ||
|
|
dc56a7b12b | ||
|
|
48b3a90fbf | ||
|
|
6add446334 | ||
|
|
9d31523cf3 | ||
|
|
90d7033fd0 | ||
|
|
27574524b8 | ||
|
|
b69b5742ed | ||
|
|
aa1471948f | ||
|
|
caa0bae04f | ||
|
|
f4ccff7b72 | ||
|
|
bb584cc7c4 | ||
|
|
251b4640c6 | ||
|
|
c7d80c7aac | ||
|
|
428be43710 | ||
|
|
2c3c238c9d | ||
|
|
b893ac2a02 | ||
|
|
c14efb74d7 | ||
|
|
08dde94299 | ||
|
|
e08f1690b3 | ||
|
|
5ae96e4eb6 | ||
|
|
7d94d8940c | ||
|
|
40c634e056 | ||
|
|
7f5014b34a | ||
|
|
0b8ec5372b | ||
|
|
6c69e40e5c | ||
|
|
d855e91e43 | ||
|
|
6b366c102e | ||
|
|
ac6babde5a | ||
|
|
b6914bf0fd | ||
|
|
f9b9b7549f | ||
|
|
a5fc5819f1 | ||
|
|
946a696d3d | ||
|
|
fc5ec47cc8 | ||
|
|
516a8790b9 | ||
|
|
6abaacc457 | ||
|
|
364e3e7de5 | ||
|
|
c6e8a097a3 | ||
|
|
be18c47912 | ||
|
|
a5306c2312 | ||
|
|
80014a28ea | ||
|
|
27fb381cca | ||
|
|
8aa076692e | ||
|
|
ee4957dd47 | ||
|
|
ce30a689a0 | ||
|
|
ec16e70336 | ||
|
|
58f9ef99f7 | ||
|
|
9382a304c4 | ||
|
|
1668330764 | ||
|
|
4a3a1ad0c3 | ||
|
|
54a817a5ab | ||
|
|
f71afdb0f2 | ||
|
|
83a5f74493 | ||
|
|
ad017a5df5 | ||
|
|
4ef95f05e8 | ||
|
|
e0416e9d2a | ||
|
|
044d9679ab | ||
|
|
c5878cbd5f | ||
|
|
872b5186e2 | ||
|
|
922bb3195b | ||
|
|
06f3c60be8 | ||
|
|
abdaa3105b | ||
|
|
76754c559c | ||
|
|
ca3341f066 | ||
|
|
f25c794a7e | ||
|
|
8bbced50c2 | ||
|
|
38888696db | ||
|
|
d197660d3b | ||
|
|
7d1593b90c | ||
|
|
a4e9fea133 | ||
|
|
a7c42be9a9 | ||
|
|
0430e8fbf2 | ||
|
|
aec7955ccf | ||
|
|
92f2e8eb34 | ||
|
|
53117eb5e5 | ||
|
|
fea5436ba9 | ||
|
|
1c74662dc4 | ||
|
|
019d23a246 | ||
|
|
701f954448 | ||
|
|
25bc898807 | ||
|
|
dd434588ee | ||
|
|
97d6e7f2f5 | ||
|
|
2eedd2ad03 | ||
|
|
b918c27cf9 | ||
|
|
f8bc9be284 | ||
|
|
c1887747b7 | ||
|
|
e0547d9acd | ||
|
|
916df3c614 | ||
|
|
f464d69ff8 | ||
|
|
0e3fd92bd0 | ||
|
|
04ad19d01b | ||
|
|
7e7b065535 | ||
|
|
c0f34e3302 | ||
|
|
dfd68d4cb8 | ||
|
|
1968becf94 | ||
|
|
91b634fc59 | ||
|
|
5c424fbe6e | ||
|
|
889d20d046 | ||
|
|
13dd912817 | ||
|
|
2625051f75 | ||
|
|
8432b713cc | ||
|
|
f6c54b8043 | ||
|
|
4c5d5105f3 | ||
|
|
7be12cb7b1 | ||
|
|
348760556a | ||
|
|
a6c95ad331 | ||
|
|
5361a499ae | ||
|
|
521972ed9e | ||
|
|
031d841305 | ||
|
|
dbd26ac651 | ||
|
|
71790b338b | ||
|
|
3654dd8da0 | ||
|
|
5b254b03df | ||
|
|
be8bd437cd | ||
|
|
45fef27aa1 | ||
|
|
44534b926d | ||
|
|
c8fb8e2859 | ||
|
|
d0b5c654aa | ||
|
|
827b16bf5c | ||
|
|
26d26fadb3 | ||
|
|
7a454bed22 | ||
|
|
e257f7d0b1 | ||
|
|
c3461d274e | ||
|
|
a9c17e7407 | ||
|
|
81cc6e84b7 | ||
|
|
f0f0b47058 | ||
|
|
9c18253863 | ||
|
|
318cb784b2 | ||
|
|
13255ef133 | ||
|
|
6c6fb99cad | ||
|
|
800ad1d3dc | ||
|
|
cdd347c2a0 | ||
|
|
7eaba8fabc | ||
|
|
6bdb6e486e | ||
|
|
3d66ba35a3 | ||
|
|
5dca5caf9f | ||
|
|
74a0d9316a | ||
|
|
1c02690199 | ||
|
|
c2c6921734 | ||
|
|
198a854370 | ||
|
|
468a014bfc | ||
|
|
c44db3b7ec | ||
|
|
fb450e35f7 | ||
|
|
bf576d47b1 | ||
|
|
c76fd93015 | ||
|
|
1d37191320 | ||
|
|
6929a71827 | ||
|
|
3cd4eeffef | ||
|
|
d38a2b793e | ||
|
|
a30b47aa5f | ||
|
|
23fd1e19dc | ||
|
|
a0987f1121 | ||
|
|
2f3044a2da | ||
|
|
cc9fb9dea0 | ||
|
|
5a711886d4 | ||
|
|
d4b1d1b528 | ||
|
|
e6d6806693 | ||
|
|
a73265ace4 | ||
|
|
77d92ff65a | ||
|
|
b9e098ead8 | ||
|
|
cb8c534dac | ||
|
|
6bc1cf0fae | ||
|
|
6f23894b40 | ||
|
|
ff15ddf3e0 | ||
|
|
8bd02fdadc | ||
|
|
82861e3123 | ||
|
|
8f5adeb9c3 | ||
|
|
417279e01b | ||
|
|
2347576fb5 | ||
|
|
7586ef1787 | ||
|
|
b6eef26f91 | ||
|
|
fa153a0d56 | ||
|
|
6b8ce3cc85 | ||
|
|
6b65acaa99 | ||
|
|
00b298a50c | ||
|
|
024fb4f818 | ||
|
|
4cd37e6e62 | ||
|
|
28d3d21108 | ||
|
|
dba41e99dd | ||
|
|
31a6409a4c | ||
|
|
7b489f5e2e | ||
|
|
408a495aaf | ||
|
|
1c6a960bbf | ||
|
|
54157eb99a | ||
|
|
c6b76d908f | ||
|
|
e50318e7e1 | ||
|
|
4c89b2885e | ||
|
|
f5f9d881d7 | ||
|
|
ff053890cf | ||
|
|
72de5cb6ce | ||
|
|
978cff8095 | ||
|
|
1a0ddc424b | ||
|
|
1f0fccc353 | ||
|
|
b029083441 | ||
|
|
34e31fd489 | ||
|
|
98271fb9bb | ||
|
|
3c689ba33e | ||
|
|
a1d9f351db | ||
|
|
ff19a0ca18 | ||
|
|
60eae3e50a | ||
|
|
5d15886675 | ||
|
|
194d615691 | ||
|
|
efd1db1b09 | ||
|
|
d184e0d426 | ||
|
|
9cb14c189b | ||
|
|
4b5ca3e420 | ||
|
|
cfee1401ed | ||
|
|
40f40ab1ec | ||
|
|
604682bb91 | ||
|
|
7253160b04 | ||
|
|
b157453630 | ||
|
|
f55d89088b | ||
|
|
27b3378020 | ||
|
|
2e957bc564 | ||
|
|
ce40d5e0c5 | ||
|
|
8be07eddcc | ||
|
|
656eb9d455 | ||
|
|
43eb7f28d1 | ||
|
|
bdeb32c34b | ||
|
|
25c8b19dfb | ||
|
|
f569628088 | ||
|
|
86630bbe59 | ||
|
|
269c3ea244 | ||
|
|
7a7ef1025d | ||
|
|
b5f60b7e50 | ||
|
|
4404e76a2d | ||
|
|
0bfd18ba09 | ||
|
|
ad3b0bd227 | ||
|
|
8c44f6a814 | ||
|
|
7888dc4592 | ||
|
|
d52c5646b4 | ||
|
|
7c922ad6ee | ||
|
|
8278a07354 | ||
|
|
8330fb5f10 | ||
|
|
e2130ca444 | ||
|
|
2c67cc80ba | ||
|
|
9a022671a2 | ||
|
|
3c57b912b9 | ||
|
|
a97c8bf58f | ||
|
|
97ce9e9586 | ||
|
|
2bf8616a48 | ||
|
|
47a63d5cb7 | ||
|
|
4350801399 | ||
|
|
277fbda356 | ||
|
|
86865431b9 | ||
|
|
26fc36ee0e | ||
|
|
15f6fbf53b | ||
|
|
9a41c58779 | ||
|
|
b77fab0fae | ||
|
|
b90e34aeb2 | ||
|
|
7a8f219251 | ||
|
|
cef8fa5570 | ||
|
|
1a37d9edc6 | ||
|
|
1b9f76c01d | ||
|
|
d273fa6dd0 | ||
|
|
c81440424b | ||
|
|
c7139db39e | ||
|
|
cbdd4aca89 | ||
|
|
6a802e2fda | ||
|
|
e505fb330c | ||
|
|
23a97f5b61 | ||
|
|
208f5f5182 | ||
|
|
097efdebc5 | ||
|
|
9cc3ee9674 | ||
|
|
9bdfc7a2e5 | ||
|
|
acf37804eb | ||
|
|
f4abd95866 | ||
|
|
cb830a4ce0 | ||
|
|
94e1a75ff0 | ||
|
|
4ef2f0b2b9 | ||
|
|
e90f6acf5f | ||
|
|
dbe06fe5fc | ||
|
|
409e17ad30 | ||
|
|
6ecf629c63 | ||
|
|
1864d37d2e | ||
|
|
b6b0fea210 | ||
|
|
b33ea3c700 | ||
|
|
2ac28240e4 | ||
|
|
5480c01cda | ||
|
|
4c31a0c989 | ||
|
|
cb0315939e | ||
|
|
e1cb993878 | ||
|
|
ca2cc42800 | ||
|
|
866df770cb | ||
|
|
14b41d657d | ||
|
|
2fd8b1f489 | ||
|
|
e4ca2cb20b | ||
|
|
6e11044e9e | ||
|
|
9b30f490c7 | ||
|
|
3050c440f4 | ||
|
|
d25f48ed6b | ||
|
|
738b2ce6c5 | ||
|
|
c67f78c065 | ||
|
|
0143fa2056 | ||
|
|
761d4fcd49 | ||
|
|
e6bda025a3 | ||
|
|
b6766ba39a | ||
|
|
d71f671476 | ||
|
|
727fb4fbff | ||
|
|
e9650c025f | ||
|
|
fe28d8faea | ||
|
|
9e5a4ea6c4 | ||
|
|
131074732f | ||
|
|
55dca1e3e1 | ||
|
|
15d40d6df5 | ||
|
|
dfc536b4f5 | ||
|
|
e500c05880 | ||
|
|
bef3b80bd4 | ||
|
|
e5f78ec122 | ||
|
|
1b085bd618 | ||
|
|
dd20032eab | ||
|
|
e30449e61a | ||
|
|
334829f868 | ||
|
|
cd3773531c | ||
|
|
e4bc03217d | ||
|
|
b1f5723d84 | ||
|
|
2364f6b22e | ||
|
|
c5d5571ad3 | ||
|
|
6a0789c88e | ||
|
|
8ac8a6f1d9 | ||
|
|
31bac3dd62 | ||
|
|
d67581875f | ||
|
|
408edaae39 | ||
|
|
1949fa5147 | ||
|
|
2a55b0dbfb | ||
|
|
fdc9ea7f9b | ||
|
|
814e62050c | ||
|
|
80630cd4d9 | ||
|
|
776338d27a | ||
|
|
0dd6ea6d41 | ||
|
|
79b4f78cb3 | ||
|
|
a39865b4b2 | ||
|
|
06960df287 | ||
|
|
bdec1c8202 | ||
|
|
bcc92e9c4e | ||
|
|
9fe3073af7 | ||
|
|
bd12e3edb6 | ||
|
|
b2ae08b159 | ||
|
|
7cdece4857 | ||
|
|
ea603401e2 | ||
|
|
ae2d0f1fa1 | ||
|
|
5751303ea4 | ||
|
|
36d9633f6f | ||
|
|
b9d051eae7 | ||
|
|
ffce5ff084 | ||
|
|
9cdfce4956 | ||
|
|
3a85beeaa5 | ||
|
|
5c450843a5 | ||
|
|
a21c49c015 | ||
|
|
80e6427eec | ||
|
|
acab2f9003 | ||
|
|
10c94cc8b7 | ||
|
|
a3bd04fed2 | ||
|
|
c7f5888348 | ||
|
|
d690fb038d | ||
|
|
b692fb1464 | ||
|
|
1e6a0f1c7b | ||
|
|
0233864e92 | ||
|
|
b804b25c21 | ||
|
|
df84ba4222 | ||
|
|
6928ad1335 | ||
|
|
2412873719 | ||
|
|
742180a3a8 | ||
|
|
eb5fe3a3b9 | ||
|
|
91f356a2f1 | ||
|
|
3a72f2122a | ||
|
|
4bf3a4e3d4 | ||
|
|
c89d6eb292 | ||
|
|
aa17adaac9 | ||
|
|
d7e86eb1c1 | ||
|
|
1d34b7b9fe | ||
|
|
25876161f8 | ||
|
|
69eb49a2ed | ||
|
|
2697862a02 | ||
|
|
82a018996b | ||
|
|
64b899c68c | ||
|
|
5336c5decf | ||
|
|
0d95410634 | ||
|
|
643146d768 | ||
|
|
a2a28af052 | ||
|
|
9582a6f317 | ||
|
|
2e43015664 | ||
|
|
74853ea55f | ||
|
|
6f74854525 | ||
|
|
b0650517ad | ||
|
|
b9e98c112f | ||
|
|
9cb8512603 | ||
|
|
7078c5fbb9 | ||
|
|
01eac50fc8 | ||
|
|
9f2e6be1b3 | ||
|
|
268be71d8e | ||
|
|
bdf6e8bcc7 | ||
|
|
6ae09634ce | ||
|
|
a866370dc1 | ||
|
|
a7d52ee86f | ||
|
|
8e799b6e22 | ||
|
|
2afeb50c4b | ||
|
|
85000eba81 | ||
|
|
3c93b585ab | ||
|
|
ea6755b1ca | ||
|
|
99a57d922f | ||
|
|
eac7c3cea9 | ||
|
|
2931d32499 | ||
|
|
3f7dc59512 | ||
|
|
3cb72610b3 | ||
|
|
62981fc2ee | ||
|
|
c47c64184c | ||
|
|
75a80811b3 | ||
|
|
050d72719a | ||
|
|
496518f3e8 | ||
|
|
eb325fb387 | ||
|
|
3940e02a73 | ||
|
|
d224f511fa | ||
|
|
d66ed4310f | ||
|
|
c59817cd72 | ||
|
|
d88dccffbc | ||
|
|
e460f6a27c | ||
|
|
3afdeeac1e | ||
|
|
80f80df5cf | ||
|
|
4d88a326e1 | ||
|
|
254b369624 | ||
|
|
bfb860c06c | ||
|
|
f8504c349c | ||
|
|
bf80c1da5b | ||
|
|
f730982e7b | ||
|
|
8bcf114a05 | ||
|
|
66b967532f | ||
|
|
ee28cc5deb | ||
|
|
dbdb5f6519 | ||
|
|
230edeb5f8 | ||
|
|
8192a52bd0 | ||
|
|
5d90396b51 | ||
|
|
5c24c931c5 | ||
|
|
b9d8e08165 | ||
|
|
9509153f99 | ||
|
|
769526a76a | ||
|
|
7374ca999b | ||
|
|
128d3696ad | ||
|
|
b2f744f576 | ||
|
|
ad93d9132f | ||
|
|
fdcb907644 | ||
|
|
ff1d692e46 | ||
|
|
7145fabb6d | ||
|
|
660c3371e4 | ||
|
|
1bce5dcc69 | ||
|
|
b243de407e | ||
|
|
b125cc279f | ||
|
|
86d1defda2 | ||
|
|
ac9efaebb7 | ||
|
|
9f40a5c53f | ||
|
|
de5458cfe0 | ||
|
|
123439adc2 | ||
|
|
e1525e2b47 | ||
|
|
436dc93441 | ||
|
|
42409528af | ||
|
|
2dd32dbe87 | ||
|
|
4725cd2cd6 | ||
|
|
4cce6ae212 | ||
|
|
b0d202ba5e | ||
|
|
9ce7199d2d | ||
|
|
5d36331942 | ||
|
|
3834e26f71 | ||
|
|
6abdab7735 | ||
|
|
76db100d11 | ||
|
|
287ea0a6e4 | ||
|
|
b5224bdafd | ||
|
|
d500b01aed | ||
|
|
1361b61708 | ||
|
|
740e2cc5bf | ||
|
|
f97046b86f | ||
|
|
edacffab58 | ||
|
|
33245d119e | ||
|
|
918d123284 | ||
|
|
6f8947a3d3 | ||
|
|
9cb8ce172d | ||
|
|
12500364b4 | ||
|
|
fa7d6c0e70 | ||
|
|
c529343ba1 | ||
|
|
66499f60ee | ||
|
|
2b883bf32e | ||
|
|
26e64fb843 | ||
|
|
2a672e2126 | ||
|
|
6a1fb18334 | ||
|
|
b085569b46 | ||
|
|
d73c54f604 | ||
|
|
c604a2e34e | ||
|
|
a65c1776d8 | ||
|
|
d3b02c4de4 | ||
|
|
580694dbda | ||
|
|
920ea1bf0a | ||
|
|
b5c2cf371a | ||
|
|
0edcec7c4e | ||
|
|
363d7c6634 | ||
|
|
343525d77b | ||
|
|
acc36e6dab | ||
|
|
293fbe4c75 | ||
|
|
b21c25826d | ||
|
|
0b3c888acc | ||
|
|
e0382a61b9 | ||
|
|
a7edd380e3 | ||
|
|
de3d37e070 | ||
|
|
097171b9b8 | ||
|
|
3e8fcefaef | ||
|
|
feaab953a8 | ||
|
|
b148c61047 | ||
|
|
90d532f0ba | ||
|
|
1a0cd3e09b | ||
|
|
77e3c7f8ee | ||
|
|
f1fc07de94 | ||
|
|
eb8a0e7148 | ||
|
|
b7712c2f4b | ||
|
|
bed10b433a | ||
|
|
6fc7b17259 | ||
|
|
97d1d9bd9b | ||
|
|
0dfa3c60b7 | ||
|
|
11feda01e3 | ||
|
|
a9ab413c5a | ||
|
|
2fccde5ab6 | ||
|
|
efa27cf9b8 | ||
|
|
09346fb9f1 | ||
|
|
24dd1c5812 | ||
|
|
244c693968 | ||
|
|
cf95f9b082 | ||
|
|
369b5140fb | ||
|
|
b75d8a60a8 | ||
|
|
ff144def63 | ||
|
|
6bbb79a9f5 | ||
|
|
d673efebd2 | ||
|
|
cdc82d01f7 | ||
|
|
800c2685ea | ||
|
|
fbee6b5352 | ||
|
|
f3b8a9d8c2 | ||
|
|
a731f8fb1e | ||
|
|
dfc7c81500 | ||
|
|
72b9dc8216 | ||
|
|
6a89f7ce4f | ||
|
|
2a12e8f307 | ||
|
|
383d9129f4 | ||
|
|
0b3932f38c | ||
|
|
6ecb4805f7 | ||
|
|
cbd902658c | ||
|
|
0aabb19a45 | ||
|
|
b4e2368943 | ||
|
|
0d0b6db24f | ||
|
|
8d09baa3a5 | ||
|
|
2b0c959137 | ||
|
|
9052b48949 | ||
|
|
95a0827517 | ||
|
|
152ac6927f | ||
|
|
d1636bf16b | ||
|
|
fc376287e0 | ||
|
|
7b712ac68f | ||
|
|
0bc51382b2 | ||
|
|
e48332c81f | ||
|
|
583c36e24b | ||
|
|
058981350c | ||
|
|
09efa017d4 | ||
|
|
9e5275cc18 | ||
|
|
972f076b4d | ||
|
|
58ac7f2926 | ||
|
|
54969877a4 | ||
|
|
6eeaa64e62 | ||
|
|
8283909dfd | ||
|
|
91f3e9707a | ||
|
|
269a72464d | ||
|
|
85f0959548 | ||
|
|
9c8220d04e | ||
|
|
809d8786f1 | ||
|
|
3605afc163 | ||
|
|
d1cb2d3e11 | ||
|
|
8b1b7a2f80 | ||
|
|
29d8390743 | ||
|
|
1dd20d4c0a | ||
|
|
004c5d309b | ||
|
|
04a8ee222b | ||
|
|
d11ff14b57 | ||
|
|
5a41eed120 | ||
|
|
1e7a216d55 | ||
|
|
8f0f5a9ba1 | ||
|
|
803d2b6710 | ||
|
|
0e1d2fdf21 | ||
|
|
66e4d75e6f | ||
|
|
bd54bfa4e1 | ||
|
|
634aba89d2 | ||
|
|
a3565225ad | ||
|
|
17ff881e7a | ||
|
|
6f41a77a25 | ||
|
|
0bab1a92df | ||
|
|
fd81d838fe | ||
|
|
b7efab8a55 | ||
|
|
ec0cff0e1a | ||
|
|
ec4f0d7bca | ||
|
|
3a824e468f | ||
|
|
5e12b48ae0 | ||
|
|
de80974a1d | ||
|
|
57fcc22f1c | ||
|
|
d4db7a14b3 | ||
|
|
3b91a76159 | ||
|
|
d48ec7d58e | ||
|
|
6d562aaa6f | ||
|
|
46e81da4e1 | ||
|
|
b76c117979 | ||
|
|
5ee2b01102 | ||
|
|
cde7b244bc | ||
|
|
d5b6300fd7 | ||
|
|
52e195b47c | ||
|
|
b5fe0d72ee | ||
|
|
5412f20e35 | ||
|
|
971563fd48 | ||
|
|
f724b6d032 | ||
|
|
d4e199cab1 | ||
|
|
c1ca7ad41d | ||
|
|
089bf58934 | ||
|
|
32dded551c | ||
|
|
72156bf502 | ||
|
|
6d2e1a8e76 | ||
|
|
76c675a63b | ||
|
|
32db64a049 | ||
|
|
51338d785c | ||
|
|
bda43ca1fe | ||
|
|
8793300444 | ||
|
|
9c7b45f38b | ||
|
|
d5f0e91faa | ||
|
|
5e50430299 | ||
|
|
64ad8943ba | ||
|
|
2fb4c04fc3 | ||
|
|
b2c7ddc41f | ||
|
|
18fcb41292 | ||
|
|
ff27700913 | ||
|
|
3e7df82977 | ||
|
|
6cab5c2885 | ||
|
|
64ee1bb7a5 | ||
|
|
2079cd641e | ||
|
|
db9ccd7f34 | ||
|
|
57dfc50687 | ||
|
|
53066df522 | ||
|
|
aa14552fee | ||
|
|
b9ac1e43cd | ||
|
|
bd4bff47a0 | ||
|
|
72d060108d | ||
|
|
220228c183 | ||
|
|
115bd65344 | ||
|
|
69aafe9ff6 | ||
|
|
401ddc6f49 | ||
|
|
6ee93125d0 | ||
|
|
90facc051a | ||
|
|
d0975aacac | ||
|
|
229ba0744e | ||
|
|
be3cc6458c | ||
|
|
f415a37a3d | ||
|
|
cd10ba9e06 | ||
|
|
2105dc0022 | ||
|
|
3f74f75dee | ||
|
|
77dbb15aa3 | ||
|
|
3f34a8e7ec | ||
|
|
11b6d9e33a | ||
|
|
dd1a2a9e44 | ||
|
|
57ffa8201e | ||
|
|
ea7fdef417 | ||
|
|
a5d37d3510 | ||
|
|
6f38eb3252 | ||
|
|
51ecf8e6b4 | ||
|
|
e82d8eb5b8 | ||
|
|
1c1b53ecf6 | ||
|
|
78f47f179a | ||
|
|
6aaeb23157 | ||
|
|
cfe0ddc61a | ||
|
|
c467fa955b | ||
|
|
337a79e35f | ||
|
|
b910bbf002 | ||
|
|
8dafd5f1f3 | ||
|
|
bd61d71018 | ||
|
|
7d300d3f5b | ||
|
|
1568ecbe1e | ||
|
|
c3a8bab4d2 | ||
|
|
51fa80ef06 | ||
|
|
b7625d81e8 | ||
|
|
147db607c7 | ||
|
|
6ed60769ac | ||
|
|
3189cd779e | ||
|
|
5d660759bf | ||
|
|
d2a8f972f3 | ||
|
|
8fb7c174b0 | ||
|
|
bbe53895ef | ||
|
|
b8547e926d | ||
|
|
1b9619ca7f | ||
|
|
e8857d959b | ||
|
|
a9d7c86307 | ||
|
|
73c97d0c10 | ||
|
|
4d320f065e | ||
|
|
3bcc2fa17b | ||
|
|
bfb1f5ecf0 | ||
|
|
0efd69c60f | ||
|
|
e0cb95b334 | ||
|
|
d47ef6470b | ||
|
|
272f856460 | ||
|
|
4da8ee1e1d | ||
|
|
36a73d657a | ||
|
|
18431051d9 | ||
|
|
795369a1e3 | ||
|
|
0ecf6bde73 | ||
|
|
244e8ce101 | ||
|
|
291d35f337 | ||
|
|
fd15551d97 | ||
|
|
8f1000ea10 | ||
|
|
9798d65cf9 | ||
|
|
90601fe4fd | ||
|
|
ed5f1d3bdd | ||
|
|
0a2fde8707 | ||
|
|
66b520a513 | ||
|
|
8db6b78fdd | ||
|
|
0e9a82711c | ||
|
|
fed391fe6b | ||
|
|
81f8e81e48 | ||
|
|
551171a339 | ||
|
|
68a1c7ce4c | ||
|
|
0aa9c6b61d | ||
|
|
7b6514b178 | ||
|
|
5550e80c4e | ||
|
|
e315e1bb6c | ||
|
|
663e8aed8a | ||
|
|
b8e007c6ec | ||
|
|
eb4ac2c276 | ||
|
|
efce38fce2 | ||
|
|
8d0905e479 | ||
|
|
3e5379526e | ||
|
|
bbe2dd1f8f | ||
|
|
14a6199b4b | ||
|
|
e8eea52d0f | ||
|
|
46a99c5c41 | ||
|
|
163fa3ff16 | ||
|
|
6a3974ddbb | ||
|
|
538a9e1392 | ||
|
|
84c5494949 | ||
|
|
45e695c906 | ||
|
|
6ee9beed73 | ||
|
|
00c92ae407 | ||
|
|
88875fd006 | ||
|
|
c98a811c0b | ||
|
|
bcf3bac168 | ||
|
|
db34de6be4 | ||
|
|
f5b13071f1 | ||
|
|
6f1197e00c | ||
|
|
327a2f9967 | ||
|
|
3dadfb8ba8 | ||
|
|
58446c2715 | ||
|
|
d6abd8a2b4 | ||
|
|
30dffbb409 | ||
|
|
f33fc1b6fa | ||
|
|
d219ddbdaf | ||
|
|
b76ce65a63 | ||
|
|
607813e646 | ||
|
|
613afd3f66 | ||
|
|
49571127da | ||
|
|
609836397b | ||
|
|
a02d806715 | ||
|
|
991f58409e | ||
|
|
e0f68c77b0 | ||
|
|
b128377cd2 | ||
|
|
ccccf84867 | ||
|
|
fd6f6cc9f8 | ||
|
|
29a32039ba | ||
|
|
7841a56a11 | ||
|
|
b34f0c3bee | ||
|
|
033d0ae610 | ||
|
|
0128079de0 | ||
|
|
78573fb140 | ||
|
|
942167e046 | ||
|
|
0efbc81b0f | ||
|
|
c17b246bac | ||
|
|
bc4f8fbf4e | ||
|
|
5ff70f7dba | ||
|
|
ba789fc0c4 | ||
|
|
d5077d9d0c | ||
|
|
1a54ac0d69 | ||
|
|
04ab68502b | ||
|
|
14d24a9ac6 | ||
|
|
9688937468 | ||
|
|
7bacdefa2e | ||
|
|
7b4e699d0e | ||
|
|
204aba07f6 | ||
|
|
510ab60bd4 | ||
|
|
e63a611c81 | ||
|
|
08e9b2e848 | ||
|
|
dc8a853842 | ||
|
|
b31a004def | ||
|
|
b9ce186d21 | ||
|
|
89bcbe3eeb | ||
|
|
d3cd5f3ec5 | ||
|
|
3d8516b25f | ||
|
|
7a66ebae71 | ||
|
|
4986d4771d | ||
|
|
142b94bdd4 | ||
|
|
f3c113fe02 | ||
|
|
2879d231b1 | ||
|
|
3591ffe4a7 | ||
|
|
b8ae949dbe | ||
|
|
61cc3b93e3 | ||
|
|
d4d9fcc88c | ||
|
|
a2c3971ad6 | ||
|
|
e2ee9a28bf | ||
|
|
bd750fbbe2 | ||
|
|
25e882d72a | ||
|
|
b3c3adab50 | ||
|
|
bd30ce837d | ||
|
|
6aca2289eb | ||
|
|
b46a4b5680 | ||
|
|
249bec3cac | ||
|
|
f16ff79ff8 | ||
|
|
96bbb5cdea | ||
|
|
37a561df0a | ||
|
|
dd89b2e6d4 | ||
|
|
34747bbbbc | ||
|
|
1e8b23d8fb | ||
|
|
558f54c424 | ||
|
|
10b581f250 | ||
|
|
6b65d76014 | ||
|
|
e27427dce8 | ||
|
|
f88ca2e7da | ||
|
|
ad7c49e4bb | ||
|
|
b4225ac82a | ||
|
|
ba189f2af1 | ||
|
|
7af77b1cf9 | ||
|
|
67ecc2fe04 | ||
|
|
af0c010b4a | ||
|
|
d2ab0d651e | ||
|
|
079de6fdf7 | ||
|
|
4a6a17d866 | ||
|
|
5f5234c5da | ||
|
|
c1904b493b | ||
|
|
ec9d79b6fe | ||
|
|
6c8bb4b05e | ||
|
|
bcdffc9963 | ||
|
|
a1c3826858 | ||
|
|
f75eb3f626 | ||
|
|
071e9b4871 | ||
|
|
30e7978dcf | ||
|
|
adc426b668 | ||
|
|
8e3314e680 | ||
|
|
832026a0a2 | ||
|
|
a23e05c20b | ||
|
|
516236e044 | ||
|
|
637cff3ebd | ||
|
|
452006560e | ||
|
|
8db3b3b4ca | ||
|
|
98d03f6e7a | ||
|
|
560e115656 | ||
|
|
973ca8d4f0 | ||
|
|
692aeff263 | ||
|
|
88a3a57789 | ||
|
|
61694bba6a | ||
|
|
65045b9c52 | ||
|
|
0eae962abf | ||
|
|
a569c82492 | ||
|
|
ed233d583f | ||
|
|
b3ad8c1c3e | ||
|
|
3cc91e5742 | ||
|
|
6784ccd9fe | ||
|
|
1887f3b594 | ||
|
|
8bc2071414 | ||
|
|
58e8012d8c | ||
|
|
8a70ef3e8f | ||
|
|
eb19071d84 | ||
|
|
7b4a895ab9 | ||
|
|
821fe0f5b5 | ||
|
|
d62c51a4b8 | ||
|
|
fccc4ca85c | ||
|
|
42095f0673 | ||
|
|
88ef74ec8f | ||
|
|
9ea79259d5 | ||
|
|
6fe393db2a | ||
|
|
69e5ecc015 | ||
|
|
d9274416b4 | ||
|
|
c9c9db903d | ||
|
|
4539cef6d7 | ||
|
|
ca82ec8e8e | ||
|
|
0eafb8886d | ||
|
|
27d2accb51 | ||
|
|
0a04c5734b | ||
|
|
8a0fb668f7 | ||
|
|
f4cff69729 | ||
|
|
a4b7e3c9f6 | ||
|
|
065d26f5b2 | ||
|
|
0285284ae1 | ||
|
|
8ecfea55cd | ||
|
|
170ebd8221 | ||
|
|
c8b5b085f4 | ||
|
|
315744ec20 | ||
|
|
06c22206af | ||
|
|
6172cd9015 | ||
|
|
3bcae6d7de | ||
|
|
927278e20d | ||
|
|
71ad3e1b20 | ||
|
|
693246ba26 | ||
|
|
b875be9689 | ||
|
|
07b9ec29e6 | ||
|
|
db15db45ce | ||
|
|
6e9c779c51 | ||
|
|
483ac9491a | ||
|
|
6cf7d0b81c | ||
|
|
6185c935a6 | ||
|
|
45a8aea0f0 | ||
|
|
3447a9478c | ||
|
|
db7d12f628 | ||
|
|
4266ead958 | ||
|
|
5651ef7ca2 | ||
|
|
51aa0d6a94 | ||
|
|
bc3572f80e | ||
|
|
1ec6638c7f | ||
|
|
e31a9401a8 | ||
|
|
65389a8fac | ||
|
|
9fb9885931 | ||
|
|
8b972f6d8e | ||
|
|
965bfd8439 | ||
|
|
9c10152c89 | ||
|
|
28ef30f7a2 | ||
|
|
e6f2288a0c | ||
|
|
ffcec011f8 | ||
|
|
06bff41818 | ||
|
|
c5763cdb99 | ||
|
|
43d230cb2d | ||
|
|
7ec9cc08c7 | ||
|
|
5355007719 | ||
|
|
b5eae86b67 | ||
|
|
e67048ee7b | ||
|
|
5ba04dce2b | ||
|
|
7f6bb3d1eb | ||
|
|
412c0ff7dc | ||
|
|
1936ba5e30 | ||
|
|
9986e526e5 | ||
|
|
3460e95899 | ||
|
|
39480364bd | ||
|
|
1b75603f63 | ||
|
|
52f9f90ccb | ||
|
|
98e2490807 | ||
|
|
a0fe859d87 | ||
|
|
51fb33d8ef | ||
|
|
3a369bc207 | ||
|
|
92535ba2c4 | ||
|
|
6f6495ccbf | ||
|
|
08a4e53cfe | ||
|
|
c8a86c2dd1 | ||
|
|
841a5ef7b8 | ||
|
|
2c5caf91bc | ||
|
|
3566d920c5 | ||
|
|
cee8175c19 | ||
|
|
751df45263 | ||
|
|
eb8d376274 | ||
|
|
f67f42779b | ||
|
|
6b5947a1fa | ||
|
|
437d147935 | ||
|
|
0867175a4e | ||
|
|
4fcbc91aca | ||
|
|
e1032c5341 | ||
|
|
71bc35d241 | ||
|
|
c44d1cda9a | ||
|
|
26a3d41dc7 | ||
|
|
71c72d8e08 | ||
|
|
bb3f59252e | ||
|
|
258496700f | ||
|
|
8043d0d8a9 | ||
|
|
90f65ec9fe | ||
|
|
4f859e0253 | ||
|
|
dd34bb273e | ||
|
|
b5cbfb8f1d | ||
|
|
32367eba14 | ||
|
|
42259a4007 | ||
|
|
70eeefa1f8 | ||
|
|
6f173c64b3 | ||
|
|
b8bd070a83 | ||
|
|
c77376225d | ||
|
|
beb0af9763 | ||
|
|
1411b98a5d | ||
|
|
1c5b321058 | ||
|
|
a01b507ef4 | ||
|
|
dfc34e582a | ||
|
|
5b04f965fa | ||
|
|
77991ad865 | ||
|
|
afad2fbfa2 | ||
|
|
d6bd000aa8 | ||
|
|
bfdff4e2e0 | ||
|
|
4ca7ddfc42 | ||
|
|
51c66f508b | ||
|
|
5c03b6a610 | ||
|
|
cc9e92857b | ||
|
|
4740d6ed61 | ||
|
|
18930c33fe | ||
|
|
5fb8321ee0 | ||
|
|
09866ec3e9 | ||
|
|
9f8aaa4cdb | ||
|
|
1ad7f3a16d | ||
|
|
11953e613b | ||
|
|
0f03f8ff8a | ||
|
|
c8dfccff36 | ||
|
|
beb91fa094 | ||
|
|
9aaf7d0c46 | ||
|
|
c9e670397f | ||
|
|
463b24949e | ||
|
|
191285a8f1 | ||
|
|
9f9137cf76 | ||
|
|
9f48cdac83 | ||
|
|
b090cefdde | ||
|
|
bfb37bbe94 | ||
|
|
8117e7933c | ||
|
|
e9ce935991 | ||
|
|
2285a35016 | ||
|
|
0910760b76 | ||
|
|
cf380a9f62 | ||
|
|
24e21a4c29 | ||
|
|
bb35583998 | ||
|
|
0e48465adb | ||
|
|
4d5ca37edb | ||
|
|
ff497810dd | ||
|
|
feefb8d063 | ||
|
|
0dd45bbf21 | ||
|
|
23ad0a2c58 | ||
|
|
8ffe5a3ec7 | ||
|
|
9a53da28bc | ||
|
|
f2710f37c5 | ||
|
|
785901c75e | ||
|
|
171db00f6e | ||
|
|
6f5cf10acb | ||
|
|
6a532af1fd | ||
|
|
47f979d457 | ||
|
|
48cdefe6cf | ||
|
|
3358420f6a | ||
|
|
2b95db087b | ||
|
|
aa6990bb6b | ||
|
|
0e035c1a95 | ||
|
|
953857f8e3 | ||
|
|
18eb4a7292 | ||
|
|
e6087e0ed9 | ||
|
|
67e590202a | ||
|
|
97a0864134 | ||
|
|
6c163afb84 | ||
|
|
e99d862f3f | ||
|
|
c1c9db2ae2 | ||
|
|
ea4e67fb76 | ||
|
|
4d621f355d | ||
|
|
05cbceec24 | ||
|
|
297cef14ed | ||
|
|
0dfbfdd164 | ||
|
|
192b3512fd | ||
|
|
3a326bfa7e | ||
|
|
dd55ccef34 | ||
|
|
1e13e273d2 | ||
|
|
438cf529bb | ||
|
|
ec0b2e5430 | ||
|
|
21d4546a86 | ||
|
|
7832120a4c | ||
|
|
efbf0c828d | ||
|
|
c9d214e8ef | ||
|
|
38a7b39070 | ||
|
|
239b0c2f71 | ||
|
|
6e4e19d8fc | ||
|
|
cc445f7cef | ||
|
|
258fcaea94 | ||
|
|
fc927f7406 | ||
|
|
d1adce5890 | ||
|
|
a5836b0337 | ||
|
|
4e6fb9034d | ||
|
|
4d491ca3a1 | ||
|
|
2f0eaafc39 | ||
|
|
96f2c4a9de | ||
|
|
4e90e45999 | ||
|
|
8766e5f0d0 | ||
|
|
812ff9a97d | ||
|
|
a72434f67b | ||
|
|
c0e8ae5dfa | ||
|
|
0de4a93ec7 | ||
|
|
da8919002f | ||
|
|
5247f217fd | ||
|
|
56462ef793 | ||
|
|
b495669c86 | ||
|
|
3cf98c4fae | ||
|
|
9589f5573d | ||
|
|
a0b667a2ca | ||
|
|
e7c04d4aca | ||
|
|
72435af170 | ||
|
|
ce75be91e1 | ||
|
|
db6a3e1783 | ||
|
|
763b13e700 | ||
|
|
59adcc1744 | ||
|
|
50bbdd5cab | ||
|
|
5d10dc7e58 | ||
|
|
7171818d24 | ||
|
|
48033463c8 | ||
|
|
6ffeb048b3 | ||
|
|
23400a5a70 | ||
|
|
c20e781441 | ||
|
|
2b780ee7b2 | ||
|
|
d1dec8314a | ||
|
|
d813ae8845 | ||
|
|
05ae978cb7 | ||
|
|
3712794e56 | ||
|
|
a62baf34f2 | ||
|
|
0b57ab7303 | ||
|
|
5423012368 | ||
|
|
234ccbe51f | ||
|
|
4a0358a513 | ||
|
|
f4135e6bcf | ||
|
|
fce09e8c92 | ||
|
|
909fbb9538 | ||
|
|
89f4718ea1 | ||
|
|
2e2825ae98 | ||
|
|
3740c9d852 | ||
|
|
7bb99c9b9c | ||
|
|
aa3fb28f81 | ||
|
|
b7d30fca2b | ||
|
|
ef1a69156d | ||
|
|
4835c77840 | ||
|
|
106115676d | ||
|
|
e4fe9538d7 | ||
|
|
f3979a9f28 | ||
|
|
fc37abc356 | ||
|
|
b8936e5fca | ||
|
|
7e4de2ac16 | ||
|
|
5365fd2149 | ||
|
|
26638748bb | ||
|
|
7748848b6e | ||
|
|
0dae0f6027 | ||
|
|
2de34a905d | ||
|
|
7719ed0d6c | ||
|
|
fd8e6110b1 | ||
|
|
15fe2627d0 | ||
|
|
cbdd1d6d6c | ||
|
|
080638216a | ||
|
|
4dc2440024 | ||
|
|
a6d8915b6c | ||
|
|
f422a3c5d0 | ||
|
|
31872227f1 | ||
|
|
fae5b1e391 | ||
|
|
43d682f6b8 | ||
|
|
352a554c74 | ||
|
|
c7991ef04c | ||
|
|
1c36134cf9 | ||
|
|
b596b4153f | ||
|
|
cc7df91cc6 | ||
|
|
7c3a8a3774 | ||
|
|
808976ee28 | ||
|
|
825c352b6a | ||
|
|
b0b7f27f3a | ||
|
|
c831c5749a | ||
|
|
1409fc0da3 | ||
|
|
901af8de3f | ||
|
|
d9a030157e | ||
|
|
a0996c1807 | ||
|
|
a3dcaf21cb | ||
|
|
8ad7ebf02f | ||
|
|
e32aa95092 | ||
|
|
6844bb6510 | ||
|
|
47aa387b91 | ||
|
|
6150df71b2 | ||
|
|
fd94f2a5b5 | ||
|
|
847a1cb068 | ||
|
|
c1f7c9bb87 | ||
|
|
ac181183cc | ||
|
|
8a11053f1f | ||
|
|
b0acaed02f | ||
|
|
c3a917f8b3 | ||
|
|
766ee836b5 | ||
|
|
68bc22f9cd | ||
|
|
e03e5364d2 | ||
|
|
aa4b8d7246 | ||
|
|
0609628645 | ||
|
|
32028fbbb1 | ||
|
|
e3d948f60b | ||
|
|
40c6f738b4 | ||
|
|
296fc92721 | ||
|
|
21b4ae3fdc | ||
|
|
d69105bb77 | ||
|
|
4a6c8ff809 | ||
|
|
1f6d9369d6 | ||
|
|
3a70f02cbf | ||
|
|
44cb55fbe9 | ||
|
|
dd7e1c505c | ||
|
|
94f0140f62 | ||
|
|
28b29d0985 | ||
|
|
52f2521f6a | ||
|
|
e1e8b63eb5 | ||
|
|
a1aba32209 | ||
|
|
fa3916d1bf | ||
|
|
3ac7ef90ef | ||
|
|
4050bf43c4 | ||
|
|
851d7d0bc4 | ||
|
|
0fbf84e6bc | ||
|
|
d91b423a45 | ||
|
|
2bbce2f0fd | ||
|
|
1be1bffb29 | ||
|
|
92542e6b94 | ||
|
|
9c49191031 | ||
|
|
3932c1064e | ||
|
|
d446b91117 | ||
|
|
673257bbbc | ||
|
|
180ed7da81 | ||
|
|
38d8ab2285 | ||
|
|
c17a4d8453 | ||
|
|
e74285f6d2 | ||
|
|
33f06d3104 | ||
|
|
841cfac1f8 | ||
|
|
71fb23f769 | ||
|
|
150ed641ae | ||
|
|
5b90507310 | ||
|
|
0eff7c6ca9 | ||
|
|
2189983323 | ||
|
|
e45491d2f8 | ||
|
|
58650b7d2d | ||
|
|
19c2df4822 | ||
|
|
d5fc831321 | ||
|
|
743949753a | ||
|
|
184f5f2397 | ||
|
|
597aa0475e | ||
|
|
70984faee2 | ||
|
|
e657e4d1d1 | ||
|
|
d62f114c02 | ||
|
|
9e20ccc01a | ||
|
|
1343ea66c9 | ||
|
|
2b90b8d6b7 | ||
|
|
90d34c1251 | ||
|
|
93ff79febf | ||
|
|
7fef03a7db | ||
|
|
30269381e8 | ||
|
|
9985f388ac | ||
|
|
a869de3b1f | ||
|
|
4aac733238 | ||
|
|
7ed891e0c6 | ||
|
|
a1f7a97ff5 | ||
|
|
bca97f7186 | ||
|
|
61e09ff532 | ||
|
|
8e465b4393 | ||
|
|
b16d37953d | ||
|
|
f5c76d93bc | ||
|
|
98c0e00a2c | ||
|
|
3d8e9a593e | ||
|
|
ffa3362e16 | ||
|
|
999e9c3d5d | ||
|
|
40104c06e2 | ||
|
|
36731ba6b3 | ||
|
|
9d07561d99 | ||
|
|
3eb8aa8085 | ||
|
|
138fa45ecb | ||
|
|
cb76b2a6ad | ||
|
|
3853009d92 | ||
|
|
5257fb8533 | ||
|
|
ac54d2b927 | ||
|
|
e34a488b55 | ||
|
|
b07f9fe3b5 | ||
|
|
d05404a4df | ||
|
|
c22778bd92 | ||
|
|
65828c14fc | ||
|
|
178a84bcf6 | ||
|
|
2b11463567 | ||
|
|
7cb00aeb34 | ||
|
|
7b2782c0f6 | ||
|
|
587fd707ba | ||
|
|
f59f2eccd5 | ||
|
|
a0e01e075d | ||
|
|
3f076eeda6 | ||
|
|
32853c2044 | ||
|
|
a35d350cbd | ||
|
|
a6a50113da | ||
|
|
8b637e194e | ||
|
|
473067db31 | ||
|
|
289255d67a | ||
|
|
199740902a | ||
|
|
549e78d7b3 | ||
|
|
aa1825681c | ||
|
|
5a42ca6772 | ||
|
|
8dad3ad8ea | ||
|
|
655c9ece2d | ||
|
|
159d798c34 | ||
|
|
856d23626f | ||
|
|
8890636a56 | ||
|
|
4e68b588be | ||
|
|
b9bb27512c | ||
|
|
fa61c1b9c1 | ||
|
|
a0634fa79e | ||
|
|
03937a9f89 | ||
|
|
24086191af | ||
|
|
cf429ba284 | ||
|
|
178a79fc47 | ||
|
|
f0b9e9a89d | ||
|
|
6e3393c93f | ||
|
|
aa41f97e38 | ||
|
|
2b53c67789 | ||
|
|
731ce1721a | ||
|
|
8321b9430e | ||
|
|
7f69350e4d | ||
|
|
1a156c1060 | ||
|
|
7149f99f02 | ||
|
|
5491398a64 | ||
|
|
4b8771f3e2 | ||
|
|
0e4bd485e0 | ||
|
|
fecb27232e | ||
|
|
f58a9bad42 | ||
|
|
f4d50c4dca | ||
|
|
036e266bae | ||
|
|
d98c347902 | ||
|
|
1270bcc6ed | ||
|
|
8914b94577 | ||
|
|
acca8ea786 | ||
|
|
eaef1c8b8e | ||
|
|
0dfe70125b | ||
|
|
5afd83c883 | ||
|
|
0ce1ec5d15 | ||
|
|
a61b34cab5 | ||
|
|
ad1b96720a | ||
|
|
296a2b8e5d | ||
|
|
597a9f9548 | ||
|
|
e031718747 | ||
|
|
6452ff203e | ||
|
|
70aed4a605 | ||
|
|
821419ee5b | ||
|
|
72ed8a6dd2 | ||
|
|
ee87ac2f9b | ||
|
|
660021f5e5 | ||
|
|
783f05172b | ||
|
|
79e0509bf9 | ||
|
|
02853bbd60 | ||
|
|
218922d9f8 | ||
|
|
7a2b04a5d1 | ||
|
|
dc32e56a9c | ||
|
|
490cc7ded6 | ||
|
|
a874a09b7e | ||
|
|
4db0350f06 | ||
|
|
edc52e5b28 | ||
|
|
a1a1284696 | ||
|
|
6f849e8f64 | ||
|
|
3e32504526 | ||
|
|
6e84d3cce0 | ||
|
|
8c02de6c61 | ||
|
|
f09df31480 | ||
|
|
a8697df9e3 | ||
|
|
6f30d6b4d0 | ||
|
|
61490fbaa8 | ||
|
|
4ce7f059c3 | ||
|
|
deb0e57c49 | ||
|
|
52834dbf21 | ||
|
|
f2d36a47ae | ||
|
|
19c1a54fea | ||
|
|
850d43c1e8 | ||
|
|
ec368c8102 | ||
|
|
f225039d36 | ||
|
|
ad92fe49c7 | ||
|
|
c04171abf6 | ||
|
|
488d08b43c | ||
|
|
18abb068b1 | ||
|
|
cec5280013 | ||
|
|
c126ff10a7 | ||
|
|
bb348c1353 | ||
|
|
fb1e7eef6b | ||
|
|
ac5b32c491 | ||
|
|
b526fc070d | ||
|
|
88ae4679d1 | ||
|
|
9e7a579365 | ||
|
|
b040ae8d4d | ||
|
|
c6e20aed9b | ||
|
|
695a24d8a7 | ||
|
|
2472142532 | ||
|
|
bf49f55c95 | ||
|
|
0df1eb71cb | ||
|
|
500af6d775 | ||
|
|
c8b452d411 | ||
|
|
708034d1d3 | ||
|
|
c66385f0f9 | ||
|
|
522b76e452 | ||
|
|
3127c78bc7 | ||
|
|
938dd8b9ca | ||
|
|
847376cd8f | ||
|
|
1a3650ef2a | ||
|
|
129273036a | ||
|
|
97d77440e7 | ||
|
|
40755961ea | ||
|
|
ff245c61d2 | ||
|
|
cb7b011d6b | ||
|
|
5a0afcc835 | ||
|
|
83fb8d20b7 | ||
|
|
5e43c332f1 | ||
|
|
6891e86621 | ||
|
|
3c1ec2e9ca | ||
|
|
49caeeafce | ||
|
|
349ad7858b | ||
|
|
c70f220db3 | ||
|
|
39e3ddb080 | ||
|
|
603765732e | ||
|
|
297b6b282c | ||
|
|
e590b43545 | ||
|
|
bc6ba5f547 | ||
|
|
8db86dcebf | ||
|
|
fedb787b4f | ||
|
|
90f226193c | ||
|
|
e477fa7a93 | ||
|
|
f3679b37a2 | ||
|
|
b30b1d145c | ||
|
|
e902d5d917 | ||
|
|
8bd4107423 | ||
|
|
7ba305e033 | ||
|
|
caa0eb6e29 | ||
|
|
c6d831a564 | ||
|
|
943c02bf79 | ||
|
|
c32b081029 | ||
|
|
034e9935d4 | ||
|
|
3241128840 | ||
|
|
fed3ffb681 | ||
|
|
1e1256dbdd | ||
|
|
69c65597d9 | ||
|
|
d1756b621f | ||
|
|
50cf25ae97 | ||
|
|
cf6ce0dbad | ||
|
|
44a30e269e | ||
|
|
ef18aaa66f | ||
|
|
36bca4f0d6 | ||
|
|
6e5ad75c5c | ||
|
|
79a61c28d7 | ||
|
|
e900ea20b7 | ||
|
|
8496d02fe1 | ||
|
|
fc94c4ea40 | ||
|
|
c90d976d7a | ||
|
|
d320d3a8bf | ||
|
|
24bab48043 | ||
|
|
30979caf25 | ||
|
|
ce8533f83b | ||
|
|
2044ccdc0b | ||
|
|
ca35573ad5 | ||
|
|
6dbe983461 | ||
|
|
262f5886a4 | ||
|
|
207d843aee | ||
|
|
a6b872bb0c | ||
|
|
8cd112110e | ||
|
|
9581279919 | ||
|
|
002458f4c8 | ||
|
|
564a8bdc19 | ||
|
|
1f84cdb88c | ||
|
|
80c0a6ead3 | ||
|
|
23f11fcd5e | ||
|
|
3dad0d9811 | ||
|
|
d920f7edc1 | ||
|
|
f37b83a0ea | ||
|
|
12573ed2e7 | ||
|
|
93c233b1cf | ||
|
|
47b64a5074 | ||
|
|
e2da2b232e | ||
|
|
5477b87774 | ||
|
|
7478e63ea0 | ||
|
|
922d1462a8 | ||
|
|
8f410d5e2e | ||
|
|
0d8c743dfe | ||
|
|
b6a9c58994 | ||
|
|
382693a199 | ||
|
|
acf2c2c6a5 | ||
|
|
006f840570 | ||
|
|
457df8d3f3 | ||
|
|
b6e4208ea8 | ||
|
|
56fba5541a | ||
|
|
a69dbafe3c | ||
|
|
a9c69bf774 | ||
|
|
b6a3d9ce59 | ||
|
|
eebbc807e5 | ||
|
|
0fb7364235 | ||
|
|
f1cc62c21f | ||
|
|
f53b63eaf6 | ||
|
|
a69f93d214 | ||
|
|
8e1638b773 | ||
|
|
95ef61bc45 | ||
|
|
c142676b20 | ||
|
|
be843227a1 | ||
|
|
48d9b49ada | ||
|
|
f2ee61553f | ||
|
|
30088afa89 | ||
|
|
b1d88ced61 | ||
|
|
5b7ca6435c | ||
|
|
a6ae6b0752 | ||
|
|
61b8ad38bd | ||
|
|
e714653478 | ||
|
|
d70b4f04f6 | ||
|
|
9eff99de49 | ||
|
|
4855b8f3de | ||
|
|
84ad2cb827 | ||
|
|
8f7f38536d | ||
|
|
97edec6e72 | ||
|
|
40d58c9bc3 | ||
|
|
f76c9041bb | ||
|
|
96fbf9fd06 | ||
|
|
48a12be538 | ||
|
|
012a7743ad | ||
|
|
678235023f | ||
|
|
a4afb72535 | ||
|
|
ab050d1890 | ||
|
|
002e2cc42c | ||
|
|
ef7e2c5d86 | ||
|
|
e7badb38e9 | ||
|
|
dacc8cb5f4 | ||
|
|
a801a4aeef | ||
|
|
fe60f264c4 | ||
|
|
dfdb691f73 | ||
|
|
9fe5836240 | ||
|
|
8074e6b46a | ||
|
|
f763ed9a7e | ||
|
|
08f4576aa6 | ||
|
|
7610028a89 | ||
|
|
0d903f4d0d | ||
|
|
312f3d2ab9 | ||
|
|
def67295e5 | ||
|
|
613973d2b1 | ||
|
|
7b610f8dd8 | ||
|
|
8b3a357949 | ||
|
|
f73708d725 | ||
|
|
d3c79c7078 | ||
|
|
d889cdecde | ||
|
|
2654942b3c | ||
|
|
ed2c8cdc25 | ||
|
|
19434afe0a | ||
|
|
a7c4ae530d | ||
|
|
42e9800bde | ||
|
|
d956bd3743 | ||
|
|
100a4731e2 | ||
|
|
000ae27aff | ||
|
|
06b0707aa9 | ||
|
|
ac93449788 | ||
|
|
02d32de044 | ||
|
|
333e3e4f01 | ||
|
|
f7721d0523 | ||
|
|
e5473fc51a | ||
|
|
a08ceadd1a | ||
|
|
dc2ddfb42c | ||
|
|
4eeed14d34 | ||
|
|
6a4c2a0d40 | ||
|
|
8814ea8241 | ||
|
|
8f6649e29e | ||
|
|
73360d37f7 | ||
|
|
eb642551ac | ||
|
|
f33d41af63 | ||
|
|
5e7954f152 | ||
|
|
9e79ad5a62 | ||
|
|
0dcbc47e15 | ||
|
|
b8b8fe6120 | ||
|
|
ff066ef177 | ||
|
|
63e834ce73 | ||
|
|
b118e60160 | ||
|
|
00e8531898 | ||
|
|
7c8d662315 | ||
|
|
2f6d67cad6 | ||
|
|
f5e5b44bc1 | ||
|
|
f795177ab6 | ||
|
|
a4bde421db | ||
|
|
f6a4151f60 | ||
|
|
82577b4acc | ||
|
|
8db7f7ed37 | ||
|
|
d5ffd4a1fb | ||
|
|
b53579858a | ||
|
|
28d504d7d3 | ||
|
|
56c2ac048d | ||
|
|
208d5df106 | ||
|
|
d09f53c380 | ||
|
|
696aee3891 | ||
|
|
bcad2f4e9e | ||
|
|
1cf5cdbeca | ||
|
|
8e94f3902b | ||
|
|
88a6a41c7c | ||
|
|
d37785c214 | ||
|
|
b369a6dc2a | ||
|
|
5ee6814947 | ||
|
|
65cd4f5838 | ||
|
|
7fd35d68bb | ||
|
|
ad8187b151 | ||
|
|
79ad5c08e4 | ||
|
|
ca6eb5511c | ||
|
|
65c7765c07 | ||
|
|
e99f6c03c1 | ||
|
|
6f7c305308 | ||
|
|
fe3ef08f39 | ||
|
|
657a25178d | ||
|
|
f3560caf93 | ||
|
|
2e056e9b0b | ||
|
|
92bda1231e | ||
|
|
7643bd61fd | ||
|
|
bf73b40529 | ||
|
|
ed20397a2b | ||
|
|
1c70ca2214 | ||
|
|
77b9a7aa5a | ||
|
|
0d0c760d94 | ||
|
|
177e385bb9 | ||
|
|
699a5d2944 | ||
|
|
45d08c70f0 | ||
|
|
77feecc623 | ||
|
|
332f3f5617 | ||
|
|
c8bc68c267 | ||
|
|
02d6b91b73 | ||
|
|
e68b24f839 | ||
|
|
339ba7986f | ||
|
|
ebc80597d5 | ||
|
|
d28c81571c | ||
|
|
dc9a260425 | ||
|
|
249e6fe637 | ||
|
|
e84b8747a1 | ||
|
|
0323a60d85 | ||
|
|
a05cbf8169 | ||
|
|
5aa45607eb | ||
|
|
133c3a330c | ||
|
|
f9646208e9 | ||
|
|
4b793f44ef | ||
|
|
aae4f00a4b | ||
|
|
366a4918c3 | ||
|
|
bc1801fb03 | ||
|
|
25cd12cf33 | ||
|
|
90e22da930 | ||
|
|
e6c7e57711 | ||
|
|
d385bc9cce | ||
|
|
1816ab95a0 | ||
|
|
5c750b6880 | ||
|
|
cd1c137542 | ||
|
|
4cf2ba20c2 | ||
|
|
a1ee2db6d1 | ||
|
|
25a2554bdd | ||
|
|
1e0ff65337 | ||
|
|
da211bef96 | ||
|
|
7f9e3bc787 | ||
|
|
d995192dde | ||
|
|
c57e19c8fa | ||
|
|
550d9a9f71 | ||
|
|
4208ac2958 | ||
|
|
45429b5400 | ||
|
|
d3916b84c9 | ||
|
|
3b27d41c72 | ||
|
|
a8c1958c75 | ||
|
|
3698e89b88 | ||
|
|
bfa211fb02 | ||
|
|
dc40ac854a | ||
|
|
2b6d041cb6 | ||
|
|
8a58733d91 | ||
|
|
e49b411205 | ||
|
|
08464ee26e | ||
|
|
12ba10bc2c | ||
|
|
dcaf4c905f | ||
|
|
6046ed4f5c | ||
|
|
30afc8b1d2 | ||
|
|
74ac6eb8a3 | ||
|
|
9a9a35bf40 | ||
|
|
d14dc35efe | ||
|
|
77e67c19fe | ||
|
|
91582257fb | ||
|
|
66ef5549e9 | ||
|
|
79e1e1a747 | ||
|
|
0b13c0a437 | ||
|
|
4212a45767 | ||
|
|
ef01a64826 | ||
|
|
46b4118b9e | ||
|
|
c7fc5f3ab7 | ||
|
|
f50a23accd | ||
|
|
43a1296150 | ||
|
|
3b38641f98 | ||
|
|
8cac89d17c | ||
|
|
963f179d7f | ||
|
|
103183f494 | ||
|
|
c1a35a29a8 | ||
|
|
7a6c27cf24 | ||
|
|
dcc314f088 | ||
|
|
3f50779a17 | ||
|
|
5ab1034698 | ||
|
|
13ba450c4c | ||
|
|
c5470d4050 | ||
|
|
7e49c7d782 | ||
|
|
769a04517f | ||
|
|
1ee70a0146 | ||
|
|
8be8047b8d | ||
|
|
7524f7fbe8 | ||
|
|
9fefb1d898 | ||
|
|
49672bfc5f | ||
|
|
b364d404a9 | ||
|
|
96f9c67e77 | ||
|
|
e9a84a21e4 | ||
|
|
58dadad8ec | ||
|
|
bfe2205ecb | ||
|
|
04d3ea9563 | ||
|
|
15567493ba | ||
|
|
a1e080d495 | ||
|
|
45540a00ee | ||
|
|
55f4aa3b34 | ||
|
|
a7803570dc | ||
|
|
b516ea2fe2 | ||
|
|
1fa45c69d6 | ||
|
|
c4abd93b9b | ||
|
|
91c1768939 | ||
|
|
1a5d6aa498 | ||
|
|
fb69f3d45f | ||
|
|
3fbe93f029 | ||
|
|
df388d9f33 | ||
|
|
6a95f9e349 | ||
|
|
a237aa8164 | ||
|
|
3dc1e917bf | ||
|
|
d1791a999d | ||
|
|
e4e9da7673 | ||
|
|
343c426307 | ||
|
|
e979d75cb8 | ||
|
|
d120d0cf2e | ||
|
|
a0416e9c6d | ||
|
|
a53c0b9472 | ||
|
|
8573c6e8c6 | ||
|
|
dfeb702544 | ||
|
|
6d2b27689d | ||
|
|
a8bb3dd9a3 | ||
|
|
44608517c1 | ||
|
|
5b0e333967 | ||
|
|
83dae46ec6 | ||
|
|
7885eaf974 | ||
|
|
37d0f06e07 | ||
|
|
8406c0d9a3 | ||
|
|
e762f7f3c0 | ||
|
|
89519b1521 | ||
|
|
df9a05ba92 | ||
|
|
0a2a5be71c | ||
|
|
4fd4f44bb7 | ||
|
|
378b2fbd9e | ||
|
|
1f9b52d5e1 | ||
|
|
b30bb56483 | ||
|
|
ba22da00bf | ||
|
|
cee5ddee53 | ||
|
|
c74c60a629 | ||
|
|
e4f8fe941e | ||
|
|
b9e1ca1385 | ||
|
|
1c20a8cd31 | ||
|
|
1adb7fa58c | ||
|
|
dcf6059a15 | ||
|
|
8a6e9f90be | ||
|
|
77af33ba5d | ||
|
|
faabed1df0 | ||
|
|
cae5c76bed | ||
|
|
53b698adb6 | ||
|
|
dc2733998e | ||
|
|
5dad97779a | ||
|
|
3ba8857491 |
15
.github/actions/check_formatting/action.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
name: 'Check formatting'
|
||||
description: 'Checks code formatting use cargo fmt'
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Install Rust
|
||||
shell: bash -euxo pipefail {0}
|
||||
run: |
|
||||
rustup set profile minimal
|
||||
rustup update stable
|
||||
|
||||
- name: cargo fmt
|
||||
shell: bash -euxo pipefail {0}
|
||||
run: cargo fmt --all -- --check
|
||||
30
.github/actions/run_tests/action.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: "Run tests"
|
||||
description: "Runs the tests"
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Install Rust
|
||||
shell: bash -euxo pipefail {0}
|
||||
run: |
|
||||
rustup set profile minimal
|
||||
rustup update stable
|
||||
rustup target add wasm32-wasi
|
||||
cargo install cargo-nextest
|
||||
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "18"
|
||||
|
||||
- name: Limit target directory size
|
||||
shell: bash -euxo pipefail {0}
|
||||
run: script/clear-target-dir-if-larger-than 100
|
||||
|
||||
- name: Run check
|
||||
shell: bash -euxo pipefail {0}
|
||||
run: cargo check --tests --workspace
|
||||
|
||||
- name: Run tests
|
||||
shell: bash -euxo pipefail {0}
|
||||
run: cargo nextest run --workspace --no-fail-fast
|
||||
51
.github/workflows/ci.yml
vendored
@@ -23,19 +23,17 @@ jobs:
|
||||
- self-hosted
|
||||
- test
|
||||
steps:
|
||||
- name: Install Rust
|
||||
run: |
|
||||
rustup set profile minimal
|
||||
rustup update stable
|
||||
- name: Set up default .cargo/config.toml
|
||||
run: printf "[build]\nrustflags = [\"-D\", \"warnings\"]" > $HOME/.cargo/config.toml
|
||||
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
clean: false
|
||||
submodules: 'recursive'
|
||||
submodules: "recursive"
|
||||
|
||||
- name: cargo fmt
|
||||
run: cargo fmt --all -- --check
|
||||
- name: Run rustfmt
|
||||
uses: ./.github/actions/check_formatting
|
||||
|
||||
tests:
|
||||
name: Run tests
|
||||
@@ -43,35 +41,15 @@ jobs:
|
||||
- self-hosted
|
||||
- test
|
||||
needs: rustfmt
|
||||
env:
|
||||
RUSTFLAGS: -D warnings
|
||||
steps:
|
||||
- name: Install Rust
|
||||
run: |
|
||||
rustup set profile minimal
|
||||
rustup update stable
|
||||
rustup target add wasm32-wasi
|
||||
cargo install cargo-nextest
|
||||
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18'
|
||||
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
clean: false
|
||||
submodules: 'recursive'
|
||||
|
||||
- name: Limit target directory size
|
||||
run: script/clear-target-dir-if-larger-than 70
|
||||
|
||||
- name: Run check
|
||||
run: cargo check --workspace
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Run tests
|
||||
run: cargo nextest run --workspace --no-fail-fast
|
||||
uses: ./.github/actions/run_tests
|
||||
|
||||
- name: Build collab
|
||||
run: cargo build -p collab
|
||||
@@ -79,9 +57,6 @@ jobs:
|
||||
- name: Build other binaries
|
||||
run: cargo build --workspace --bins --all-features
|
||||
|
||||
- name: Generate license file
|
||||
run: script/generate-licenses
|
||||
|
||||
bundle:
|
||||
name: Bundle app
|
||||
runs-on:
|
||||
@@ -106,16 +81,16 @@ jobs:
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18'
|
||||
node-version: "18"
|
||||
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
clean: false
|
||||
submodules: 'recursive'
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Limit target directory size
|
||||
run: script/clear-target-dir-if-larger-than 70
|
||||
run: script/clear-target-dir-if-larger-than 100
|
||||
|
||||
- name: Determine version and release channel
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
||||
@@ -133,6 +108,8 @@ jobs:
|
||||
expected_tag_name="v${version}";;
|
||||
preview)
|
||||
expected_tag_name="v${version}-pre";;
|
||||
nightly)
|
||||
expected_tag_name="v${version}-nightly";;
|
||||
*)
|
||||
echo "can't publish a release on channel ${channel}"
|
||||
exit 1;;
|
||||
@@ -157,7 +134,9 @@ jobs:
|
||||
|
||||
- uses: softprops/action-gh-release@v1
|
||||
name: Upload app bundle to release
|
||||
if: ${{ env.RELEASE_CHANNEL }}
|
||||
# TODO kb seems that zed.dev relies on GitHub releases for release version tracking.
|
||||
# Find alternatives for `nightly` or just go on with more releases?
|
||||
if: ${{ env.RELEASE_CHANNEL == 'preview' || env.RELEASE_CHANNEL == 'stable' }}
|
||||
with:
|
||||
draft: true
|
||||
prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
|
||||
|
||||
45
.github/workflows/release_actions.yml
vendored
@@ -6,26 +6,27 @@ jobs:
|
||||
discord_release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get release URL
|
||||
id: get-release-url
|
||||
run: |
|
||||
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
|
||||
URL="https://zed.dev/releases/preview/latest"
|
||||
else
|
||||
URL="https://zed.dev/releases/stable/latest"
|
||||
fi
|
||||
echo "::set-output name=URL::$URL"
|
||||
- name: Get content
|
||||
uses: 2428392/gh-truncate-string-action@v1.2.0
|
||||
id: get-content
|
||||
with:
|
||||
stringToTruncate: |
|
||||
📣 Zed [${{ github.event.release.tag_name }}](${{ steps.get-release-url.outputs.URL }}) was just released!
|
||||
- name: Get release URL
|
||||
id: get-release-url
|
||||
run: |
|
||||
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
|
||||
URL="https://zed.dev/releases/preview/latest"
|
||||
else
|
||||
URL="https://zed.dev/releases/stable/latest"
|
||||
fi
|
||||
echo "::set-output name=URL::$URL"
|
||||
- name: Get content
|
||||
uses: 2428392/gh-truncate-string-action@v1.3.0
|
||||
id: get-content
|
||||
with:
|
||||
stringToTruncate: |
|
||||
📣 Zed [${{ github.event.release.tag_name }}](${{ steps.get-release-url.outputs.URL }}) was just released!
|
||||
|
||||
${{ github.event.release.body }}
|
||||
maxLength: 2000
|
||||
- name: Discord Webhook Action
|
||||
uses: tsickert/discord-webhook@v5.3.0
|
||||
with:
|
||||
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
content: ${{ steps.get-content.outputs.string }}
|
||||
${{ github.event.release.body }}
|
||||
maxLength: 2000
|
||||
truncationSymbol: "..."
|
||||
- name: Discord Webhook Action
|
||||
uses: tsickert/discord-webhook@v5.3.0
|
||||
with:
|
||||
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
content: ${{ steps.get-content.outputs.string }}
|
||||
|
||||
98
.github/workflows/release_nightly.yml
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
name: Release Nightly
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Fire every night at 1:00am
|
||||
- cron: "0 1 * * *"
|
||||
push:
|
||||
tags:
|
||||
- "nightly"
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
CARGO_INCREMENTAL: 0
|
||||
RUST_BACKTRACE: 1
|
||||
|
||||
jobs:
|
||||
rustfmt:
|
||||
name: Check formatting
|
||||
runs-on:
|
||||
- self-hosted
|
||||
- test
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
clean: false
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Run rustfmt
|
||||
uses: ./.github/actions/check_formatting
|
||||
|
||||
tests:
|
||||
name: Run tests
|
||||
runs-on:
|
||||
- self-hosted
|
||||
- test
|
||||
needs: rustfmt
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
clean: false
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Run tests
|
||||
uses: ./.github/actions/run_tests
|
||||
|
||||
bundle:
|
||||
name: Bundle app
|
||||
runs-on:
|
||||
- self-hosted
|
||||
- bundle
|
||||
needs: tests
|
||||
env:
|
||||
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
|
||||
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
|
||||
APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
|
||||
APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
|
||||
DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
|
||||
DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
|
||||
steps:
|
||||
- name: Install Rust
|
||||
run: |
|
||||
rustup set profile minimal
|
||||
rustup update stable
|
||||
rustup target add aarch64-apple-darwin
|
||||
rustup target add x86_64-apple-darwin
|
||||
rustup target add wasm32-wasi
|
||||
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "18"
|
||||
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
clean: false
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Limit target directory size
|
||||
run: script/clear-target-dir-if-larger-than 100
|
||||
|
||||
- name: Set release channel to nightly
|
||||
run: |
|
||||
set -eu
|
||||
version=$(git rev-parse --short HEAD)
|
||||
echo "Publishing version: ${version} on release channel nightly"
|
||||
echo "nightly" > crates/zed/RELEASE_CHANNEL
|
||||
|
||||
- name: Generate license file
|
||||
run: script/generate-licenses
|
||||
|
||||
- name: Create app bundle
|
||||
run: script/bundle -2
|
||||
|
||||
- name: Upload Zed Nightly
|
||||
run: script/upload-nightly
|
||||
1634
Cargo.lock
generated
60
Cargo.toml
@@ -4,82 +4,122 @@ members = [
|
||||
"crates/ai",
|
||||
"crates/assistant",
|
||||
"crates/audio",
|
||||
"crates/audio2",
|
||||
"crates/auto_update",
|
||||
"crates/auto_update2",
|
||||
"crates/breadcrumbs",
|
||||
"crates/call",
|
||||
"crates/call2",
|
||||
"crates/channel",
|
||||
"crates/channel2",
|
||||
"crates/cli",
|
||||
"crates/client",
|
||||
"crates/client2",
|
||||
"crates/clock",
|
||||
"crates/collab",
|
||||
"crates/collab2",
|
||||
"crates/collab_ui",
|
||||
"crates/collab_ui2",
|
||||
"crates/collections",
|
||||
"crates/command_palette",
|
||||
"crates/command_palette2",
|
||||
"crates/component_test",
|
||||
"crates/context_menu",
|
||||
"crates/copilot",
|
||||
"crates/copilot2",
|
||||
"crates/copilot_button",
|
||||
"crates/db",
|
||||
"crates/db2",
|
||||
"crates/refineable",
|
||||
"crates/refineable/derive_refineable",
|
||||
"crates/diagnostics",
|
||||
"crates/diagnostics2",
|
||||
"crates/drag_and_drop",
|
||||
"crates/editor",
|
||||
"crates/feature_flags",
|
||||
"crates/feature_flags2",
|
||||
"crates/feedback",
|
||||
"crates/file_finder",
|
||||
"crates/fs",
|
||||
"crates/fs2",
|
||||
"crates/fsevent",
|
||||
"crates/fuzzy",
|
||||
"crates/fuzzy2",
|
||||
"crates/git",
|
||||
"crates/go_to_line",
|
||||
"crates/go_to_line2",
|
||||
"crates/gpui",
|
||||
"crates/gpui_macros",
|
||||
"crates/gpui2",
|
||||
"crates/gpui2_macros",
|
||||
"crates/install_cli",
|
||||
"crates/install_cli2",
|
||||
"crates/journal",
|
||||
"crates/journal2",
|
||||
"crates/language",
|
||||
"crates/language2",
|
||||
"crates/language_selector",
|
||||
"crates/language_tools",
|
||||
"crates/live_kit_client",
|
||||
"crates/live_kit_server",
|
||||
"crates/lsp",
|
||||
"crates/lsp2",
|
||||
"crates/media",
|
||||
"crates/menu",
|
||||
"crates/menu2",
|
||||
"crates/multi_buffer",
|
||||
"crates/multi_buffer2",
|
||||
"crates/node_runtime",
|
||||
"crates/notifications",
|
||||
"crates/notifications2",
|
||||
"crates/outline",
|
||||
"crates/picker",
|
||||
"crates/picker2",
|
||||
"crates/plugin",
|
||||
"crates/plugin_macros",
|
||||
"crates/plugin_runtime",
|
||||
"crates/prettier",
|
||||
"crates/prettier2",
|
||||
"crates/project",
|
||||
"crates/project2",
|
||||
"crates/project_panel",
|
||||
"crates/project_panel2",
|
||||
"crates/project_symbols",
|
||||
"crates/recent_projects",
|
||||
"crates/rope",
|
||||
"crates/rpc",
|
||||
"crates/rpc2",
|
||||
"crates/search",
|
||||
"crates/search2",
|
||||
"crates/settings",
|
||||
"crates/settings2",
|
||||
"crates/snippet",
|
||||
"crates/sqlez",
|
||||
"crates/sqlez_macros",
|
||||
"crates/feature_flags",
|
||||
"crates/rich_text",
|
||||
"crates/storybook2",
|
||||
"crates/sum_tree",
|
||||
"crates/terminal",
|
||||
"crates/terminal2",
|
||||
"crates/terminal_view2",
|
||||
"crates/text",
|
||||
"crates/theme",
|
||||
"crates/theme2",
|
||||
"crates/theme_importer",
|
||||
"crates/theme_selector",
|
||||
"crates/ui2",
|
||||
"crates/util",
|
||||
"crates/semantic_index",
|
||||
"crates/story",
|
||||
"crates/vim",
|
||||
"crates/vcs_menu",
|
||||
"crates/workspace",
|
||||
"crates/workspace2",
|
||||
"crates/welcome",
|
||||
"crates/xtask",
|
||||
"crates/zed",
|
||||
"crates/zed-actions"
|
||||
"crates/zed2",
|
||||
"crates/zed-actions",
|
||||
"crates/zed_actions2"
|
||||
]
|
||||
default-members = ["crates/zed"]
|
||||
resolver = "2"
|
||||
@@ -87,7 +127,10 @@ resolver = "2"
|
||||
[workspace.dependencies]
|
||||
anyhow = { version = "1.0.57" }
|
||||
async-trait = { version = "0.1" }
|
||||
ctor = { version = "0.1" }
|
||||
# TODO: Switch back to the published version of `ctor` once:
|
||||
# 1. A new version of `ctor` is published with this change: https://github.com/mmastrac/rust-ctor/pull/295
|
||||
# 2. We've confirmed it's fine to update to the latest version of `ctor` (we're currently on v0.1.20).
|
||||
ctor = { git = "https://github.com/zed-industries/rust-ctor", rev = "7f824cf6a7943885a649b579f33f9ac53f0d1db6" }
|
||||
derive_more = { version = "0.99.17" }
|
||||
env_logger = { version = "0.9" }
|
||||
futures = { version = "0.3" }
|
||||
@@ -112,18 +155,20 @@ serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
|
||||
serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
|
||||
smallvec = { version = "1.6", features = ["union"] }
|
||||
smol = { version = "1.2" }
|
||||
strum = { version = "0.25.0", features = ["derive"] }
|
||||
sysinfo = "0.29.10"
|
||||
tempdir = { version = "0.3.7" }
|
||||
thiserror = { version = "1.0.29" }
|
||||
time = { version = "0.3", features = ["serde", "serde-well-known"] }
|
||||
toml = { version = "0.5" }
|
||||
tiktoken-rs = "0.5.7"
|
||||
tree-sitter = "0.20"
|
||||
unindent = { version = "0.1.7" }
|
||||
pretty_assertions = "1.3.0"
|
||||
git2 = { version = "0.15", default-features = false}
|
||||
uuid = { version = "1.1.2", features = ["v4"] }
|
||||
|
||||
tree-sitter-bash = { git = "https://github.com/tree-sitter/tree-sitter-bash", rev = "1b0321ee85701d5036c334a6f04761cdc672e64c" }
|
||||
tree-sitter-bash = { git = "https://github.com/tree-sitter/tree-sitter-bash", rev = "7331995b19b8f8aba2d5e26deb51d2195c18bc94" }
|
||||
tree-sitter-c = "0.20.1"
|
||||
tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev="f44509141e7e483323d2ec178f2d2e6c0fc041c1" }
|
||||
tree-sitter-css = { git = "https://github.com/tree-sitter/tree-sitter-css", rev = "769203d0f9abe1a9a691ac2b9fe4bb4397a73c51" }
|
||||
@@ -149,7 +194,7 @@ tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml",
|
||||
tree-sitter-lua = "0.0.14"
|
||||
tree-sitter-nix = { git = "https://github.com/nix-community/tree-sitter-nix", rev = "66e3e9ce9180ae08fc57372061006ef83f0abde7" }
|
||||
tree-sitter-nu = { git = "https://github.com/nushell/tree-sitter-nu", rev = "786689b0562b9799ce53e824cb45a1a2a04dc673"}
|
||||
tree-sitter-vue = {git = "https://github.com/zed-industries/tree-sitter-vue", rev = "95b2890"}
|
||||
tree-sitter-vue = {git = "https://github.com/zed-industries/tree-sitter-vue", rev = "9b6cb221ccb8d0b956fcb17e9a1efac2feefeb58"}
|
||||
[patch.crates-io]
|
||||
tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "35a6052fbcafc5e5fc0f9415b8652be7dcaf7222" }
|
||||
async-task = { git = "https://github.com/zed-industries/async-task", rev = "341b57d6de98cdfd7b418567b8de2022ca993a6e" }
|
||||
@@ -164,6 +209,9 @@ core-graphics = { git = "https://github.com/servo/core-foundation-rs", rev = "07
|
||||
[profile.dev]
|
||||
split-debuginfo = "unpacked"
|
||||
|
||||
[profile.dev.package.taffy]
|
||||
opt-level = 3
|
||||
|
||||
[profile.release]
|
||||
debug = true
|
||||
lto = "thin"
|
||||
|
||||
1
assets/icons/at-sign.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-at-sign"><circle cx="12" cy="12" r="4"/><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"/></svg>
|
||||
|
After Width: | Height: | Size: 300 B |
1
assets/icons/bell-off.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-off"><path d="M8.7 3A6 6 0 0 1 18 8a21.3 21.3 0 0 0 .6 5"/><path d="M17 17H3s3-2 3-9a4.67 4.67 0 0 1 .3-1.7"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/><path d="m2 2 20 20"/></svg>
|
||||
|
After Width: | Height: | Size: 387 B |
1
assets/icons/bell-ring.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-ring"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/><path d="M4 2C2.8 3.7 2 5.7 2 8"/><path d="M22 8c0-2.3-.8-4.3-2-6"/></svg>
|
||||
|
After Width: | Height: | Size: 382 B |
1
assets/icons/bell.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
|
||||
|
After Width: | Height: | Size: 309 B |
1
assets/icons/dash.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-minus"><path d="M5 12h14"/></svg>
|
||||
|
After Width: | Height: | Size: 229 B |
1
assets/icons/mail-open.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail-open"><path d="M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z"/><path d="m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10"/></svg>
|
||||
|
After Width: | Height: | Size: 390 B |
@@ -1,6 +1 @@
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2.45563 12.3438H11.5444C11.9137 12.3438 12.1556 11.9571 11.994 11.625L10.2346 8.00952C9.77174 7.05841 8.89104 6.37821 7.85383 6.17077C7.29019 6.05804 6.70981 6.05804 6.14617 6.17077C5.10896 6.37821 4.22826 7.05841 3.76542 8.00952L2.00603 11.625C1.84442 11.9571 2.08628 12.3438 2.45563 12.3438Z" fill="#001A33" fill-opacity="0.157"/>
|
||||
<path d="M9.5 6.5L11.994 11.625C12.1556 11.9571 11.9137 12.3438 11.5444 12.3438H2.45563C2.08628 12.3438 1.84442 11.9571 2.00603 11.625L4.5 6.5" stroke="#11181C" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M7 7L7 2" stroke="#11181C" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<circle cx="7" cy="9.24219" r="0.75" fill="#11181C"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-alert-triangle"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 835 B After Width: | Height: | Size: 351 B |
@@ -370,42 +370,15 @@
|
||||
{
|
||||
"context": "Pane",
|
||||
"bindings": {
|
||||
"ctrl-1": [
|
||||
"pane::ActivateItem",
|
||||
0
|
||||
],
|
||||
"ctrl-2": [
|
||||
"pane::ActivateItem",
|
||||
1
|
||||
],
|
||||
"ctrl-3": [
|
||||
"pane::ActivateItem",
|
||||
2
|
||||
],
|
||||
"ctrl-4": [
|
||||
"pane::ActivateItem",
|
||||
3
|
||||
],
|
||||
"ctrl-5": [
|
||||
"pane::ActivateItem",
|
||||
4
|
||||
],
|
||||
"ctrl-6": [
|
||||
"pane::ActivateItem",
|
||||
5
|
||||
],
|
||||
"ctrl-7": [
|
||||
"pane::ActivateItem",
|
||||
6
|
||||
],
|
||||
"ctrl-8": [
|
||||
"pane::ActivateItem",
|
||||
7
|
||||
],
|
||||
"ctrl-9": [
|
||||
"pane::ActivateItem",
|
||||
8
|
||||
],
|
||||
"ctrl-1": ["pane::ActivateItem", 0],
|
||||
"ctrl-2": ["pane::ActivateItem", 1],
|
||||
"ctrl-3": ["pane::ActivateItem", 2],
|
||||
"ctrl-4": ["pane::ActivateItem", 3],
|
||||
"ctrl-5": ["pane::ActivateItem", 4],
|
||||
"ctrl-6": ["pane::ActivateItem", 5],
|
||||
"ctrl-7": ["pane::ActivateItem", 6],
|
||||
"ctrl-8": ["pane::ActivateItem", 7],
|
||||
"ctrl-9": ["pane::ActivateItem", 8],
|
||||
"ctrl-0": "pane::ActivateLastItem",
|
||||
"ctrl--": "pane::GoBack",
|
||||
"ctrl-_": "pane::GoForward",
|
||||
@@ -416,42 +389,15 @@
|
||||
{
|
||||
"context": "Workspace",
|
||||
"bindings": {
|
||||
"cmd-1": [
|
||||
"workspace::ActivatePane",
|
||||
0
|
||||
],
|
||||
"cmd-2": [
|
||||
"workspace::ActivatePane",
|
||||
1
|
||||
],
|
||||
"cmd-3": [
|
||||
"workspace::ActivatePane",
|
||||
2
|
||||
],
|
||||
"cmd-4": [
|
||||
"workspace::ActivatePane",
|
||||
3
|
||||
],
|
||||
"cmd-5": [
|
||||
"workspace::ActivatePane",
|
||||
4
|
||||
],
|
||||
"cmd-6": [
|
||||
"workspace::ActivatePane",
|
||||
5
|
||||
],
|
||||
"cmd-7": [
|
||||
"workspace::ActivatePane",
|
||||
6
|
||||
],
|
||||
"cmd-8": [
|
||||
"workspace::ActivatePane",
|
||||
7
|
||||
],
|
||||
"cmd-9": [
|
||||
"workspace::ActivatePane",
|
||||
8
|
||||
],
|
||||
"cmd-1": ["workspace::ActivatePane", 0],
|
||||
"cmd-2": ["workspace::ActivatePane", 1],
|
||||
"cmd-3": ["workspace::ActivatePane", 2],
|
||||
"cmd-4": ["workspace::ActivatePane", 3],
|
||||
"cmd-5": ["workspace::ActivatePane", 4],
|
||||
"cmd-6": ["workspace::ActivatePane", 5],
|
||||
"cmd-7": ["workspace::ActivatePane", 6],
|
||||
"cmd-8": ["workspace::ActivatePane", 7],
|
||||
"cmd-9": ["workspace::ActivatePane", 8],
|
||||
"cmd-b": "workspace::ToggleLeftDock",
|
||||
"cmd-r": "workspace::ToggleRightDock",
|
||||
"cmd-j": "workspace::ToggleBottomDock",
|
||||
@@ -494,38 +440,14 @@
|
||||
},
|
||||
{
|
||||
"bindings": {
|
||||
"cmd-k cmd-left": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Left"
|
||||
],
|
||||
"cmd-k cmd-right": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Right"
|
||||
],
|
||||
"cmd-k cmd-up": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Up"
|
||||
],
|
||||
"cmd-k cmd-down": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Down"
|
||||
],
|
||||
"cmd-k shift-left": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Left"
|
||||
],
|
||||
"cmd-k shift-right": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Right"
|
||||
],
|
||||
"cmd-k shift-up": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Up"
|
||||
],
|
||||
"cmd-k shift-down": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Down"
|
||||
]
|
||||
"cmd-k cmd-left": ["workspace::ActivatePaneInDirection", "Left"],
|
||||
"cmd-k cmd-right": ["workspace::ActivatePaneInDirection", "Right"],
|
||||
"cmd-k cmd-up": ["workspace::ActivatePaneInDirection", "Up"],
|
||||
"cmd-k cmd-down": ["workspace::ActivatePaneInDirection", "Down"],
|
||||
"cmd-k shift-left": ["workspace::SwapPaneInDirection", "Left"],
|
||||
"cmd-k shift-right": ["workspace::SwapPaneInDirection", "Right"],
|
||||
"cmd-k shift-up": ["workspace::SwapPaneInDirection", "Up"],
|
||||
"cmd-k shift-down": ["workspace::SwapPaneInDirection", "Down"]
|
||||
}
|
||||
},
|
||||
// Bindings from Atom
|
||||
@@ -627,14 +549,6 @@
|
||||
"space": "collab_panel::InsertSpace"
|
||||
}
|
||||
},
|
||||
{
|
||||
"context": "(CollabPanel && not_editing) > Editor",
|
||||
"bindings": {
|
||||
"cmd-c": "collab_panel::StartLinkChannel",
|
||||
"cmd-x": "collab_panel::StartMoveChannel",
|
||||
"cmd-v": "collab_panel::MoveOrLinkToSelected"
|
||||
}
|
||||
},
|
||||
{
|
||||
"context": "ChannelModal",
|
||||
"bindings": {
|
||||
@@ -655,57 +569,21 @@
|
||||
"cmd-v": "terminal::Paste",
|
||||
"cmd-k": "terminal::Clear",
|
||||
// Some nice conveniences
|
||||
"cmd-backspace": [
|
||||
"terminal::SendText",
|
||||
"\u0015"
|
||||
],
|
||||
"cmd-right": [
|
||||
"terminal::SendText",
|
||||
"\u0005"
|
||||
],
|
||||
"cmd-left": [
|
||||
"terminal::SendText",
|
||||
"\u0001"
|
||||
],
|
||||
"cmd-backspace": ["terminal::SendText", "\u0015"],
|
||||
"cmd-right": ["terminal::SendText", "\u0005"],
|
||||
"cmd-left": ["terminal::SendText", "\u0001"],
|
||||
// Terminal.app compatibility
|
||||
"alt-left": [
|
||||
"terminal::SendText",
|
||||
"\u001bb"
|
||||
],
|
||||
"alt-right": [
|
||||
"terminal::SendText",
|
||||
"\u001bf"
|
||||
],
|
||||
"alt-left": ["terminal::SendText", "\u001bb"],
|
||||
"alt-right": ["terminal::SendText", "\u001bf"],
|
||||
// There are conflicting bindings for these keys in the global context.
|
||||
// these bindings override them, remove at your own risk:
|
||||
"up": [
|
||||
"terminal::SendKeystroke",
|
||||
"up"
|
||||
],
|
||||
"pageup": [
|
||||
"terminal::SendKeystroke",
|
||||
"pageup"
|
||||
],
|
||||
"down": [
|
||||
"terminal::SendKeystroke",
|
||||
"down"
|
||||
],
|
||||
"pagedown": [
|
||||
"terminal::SendKeystroke",
|
||||
"pagedown"
|
||||
],
|
||||
"escape": [
|
||||
"terminal::SendKeystroke",
|
||||
"escape"
|
||||
],
|
||||
"enter": [
|
||||
"terminal::SendKeystroke",
|
||||
"enter"
|
||||
],
|
||||
"ctrl-c": [
|
||||
"terminal::SendKeystroke",
|
||||
"ctrl-c"
|
||||
]
|
||||
"up": ["terminal::SendKeystroke", "up"],
|
||||
"pageup": ["terminal::SendKeystroke", "pageup"],
|
||||
"down": ["terminal::SendKeystroke", "down"],
|
||||
"pagedown": ["terminal::SendKeystroke", "pagedown"],
|
||||
"escape": ["terminal::SendKeystroke", "escape"],
|
||||
"enter": ["terminal::SendKeystroke", "enter"],
|
||||
"ctrl-c": ["terminal::SendKeystroke", "ctrl-c"]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"bindings": {
|
||||
"ctrl->": "zed::IncreaseBufferFontSize",
|
||||
"ctrl-<": "zed::DecreaseBufferFontSize",
|
||||
"ctrl-shift-j": "editor::JoinLines",
|
||||
"cmd-d": "editor::DuplicateLine",
|
||||
"cmd-backspace": "editor::DeleteLine",
|
||||
"cmd-pagedown": "editor::MovePageDown",
|
||||
@@ -18,7 +19,7 @@
|
||||
"cmd-alt-enter": "editor::NewlineAbove",
|
||||
"shift-enter": "editor::NewlineBelow",
|
||||
"cmd--": "editor::Fold",
|
||||
"cmd-=": "editor::UnfoldLines",
|
||||
"cmd-+": "editor::UnfoldLines",
|
||||
"alt-shift-g": "editor::SplitSelectionIntoLines",
|
||||
"ctrl-g": [
|
||||
"editor::SelectNext",
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"w": "vim::NextWordStart",
|
||||
"{": "vim::StartOfParagraph",
|
||||
"}": "vim::EndOfParagraph",
|
||||
"|": "vim::GoToColumn",
|
||||
"shift-w": [
|
||||
"vim::NextWordStart",
|
||||
{
|
||||
@@ -97,14 +98,8 @@
|
||||
"ctrl-o": "pane::GoBack",
|
||||
"ctrl-i": "pane::GoForward",
|
||||
"ctrl-]": "editor::GoToDefinition",
|
||||
"escape": [
|
||||
"vim::SwitchMode",
|
||||
"Normal"
|
||||
],
|
||||
"ctrl+[": [
|
||||
"vim::SwitchMode",
|
||||
"Normal"
|
||||
],
|
||||
"escape": ["vim::SwitchMode", "Normal"],
|
||||
"ctrl+[": ["vim::SwitchMode", "Normal"],
|
||||
"v": "vim::ToggleVisual",
|
||||
"shift-v": "vim::ToggleVisualLine",
|
||||
"ctrl-v": "vim::ToggleVisualBlock",
|
||||
@@ -233,123 +228,36 @@
|
||||
}
|
||||
],
|
||||
// Count support
|
||||
"1": [
|
||||
"vim::Number",
|
||||
1
|
||||
],
|
||||
"2": [
|
||||
"vim::Number",
|
||||
2
|
||||
],
|
||||
"3": [
|
||||
"vim::Number",
|
||||
3
|
||||
],
|
||||
"4": [
|
||||
"vim::Number",
|
||||
4
|
||||
],
|
||||
"5": [
|
||||
"vim::Number",
|
||||
5
|
||||
],
|
||||
"6": [
|
||||
"vim::Number",
|
||||
6
|
||||
],
|
||||
"7": [
|
||||
"vim::Number",
|
||||
7
|
||||
],
|
||||
"8": [
|
||||
"vim::Number",
|
||||
8
|
||||
],
|
||||
"9": [
|
||||
"vim::Number",
|
||||
9
|
||||
],
|
||||
"1": ["vim::Number", 1],
|
||||
"2": ["vim::Number", 2],
|
||||
"3": ["vim::Number", 3],
|
||||
"4": ["vim::Number", 4],
|
||||
"5": ["vim::Number", 5],
|
||||
"6": ["vim::Number", 6],
|
||||
"7": ["vim::Number", 7],
|
||||
"8": ["vim::Number", 8],
|
||||
"9": ["vim::Number", 9],
|
||||
// window related commands (ctrl-w X)
|
||||
"ctrl-w left": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Left"
|
||||
],
|
||||
"ctrl-w right": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Right"
|
||||
],
|
||||
"ctrl-w up": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Up"
|
||||
],
|
||||
"ctrl-w down": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Down"
|
||||
],
|
||||
"ctrl-w h": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Left"
|
||||
],
|
||||
"ctrl-w l": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Right"
|
||||
],
|
||||
"ctrl-w k": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Up"
|
||||
],
|
||||
"ctrl-w j": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Down"
|
||||
],
|
||||
"ctrl-w ctrl-h": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Left"
|
||||
],
|
||||
"ctrl-w ctrl-l": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Right"
|
||||
],
|
||||
"ctrl-w ctrl-k": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Up"
|
||||
],
|
||||
"ctrl-w ctrl-j": [
|
||||
"workspace::ActivatePaneInDirection",
|
||||
"Down"
|
||||
],
|
||||
"ctrl-w shift-left": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Left"
|
||||
],
|
||||
"ctrl-w shift-right": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Right"
|
||||
],
|
||||
"ctrl-w shift-up": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Up"
|
||||
],
|
||||
"ctrl-w shift-down": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Down"
|
||||
],
|
||||
"ctrl-w shift-h": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Left"
|
||||
],
|
||||
"ctrl-w shift-l": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Right"
|
||||
],
|
||||
"ctrl-w shift-k": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Up"
|
||||
],
|
||||
"ctrl-w shift-j": [
|
||||
"workspace::SwapPaneInDirection",
|
||||
"Down"
|
||||
],
|
||||
"ctrl-w left": ["workspace::ActivatePaneInDirection", "Left"],
|
||||
"ctrl-w right": ["workspace::ActivatePaneInDirection", "Right"],
|
||||
"ctrl-w up": ["workspace::ActivatePaneInDirection", "Up"],
|
||||
"ctrl-w down": ["workspace::ActivatePaneInDirection", "Down"],
|
||||
"ctrl-w h": ["workspace::ActivatePaneInDirection", "Left"],
|
||||
"ctrl-w l": ["workspace::ActivatePaneInDirection", "Right"],
|
||||
"ctrl-w k": ["workspace::ActivatePaneInDirection", "Up"],
|
||||
"ctrl-w j": ["workspace::ActivatePaneInDirection", "Down"],
|
||||
"ctrl-w ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],
|
||||
"ctrl-w ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],
|
||||
"ctrl-w ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],
|
||||
"ctrl-w ctrl-j": ["workspace::ActivatePaneInDirection", "Down"],
|
||||
"ctrl-w shift-left": ["workspace::SwapPaneInDirection", "Left"],
|
||||
"ctrl-w shift-right": ["workspace::SwapPaneInDirection", "Right"],
|
||||
"ctrl-w shift-up": ["workspace::SwapPaneInDirection", "Up"],
|
||||
"ctrl-w shift-down": ["workspace::SwapPaneInDirection", "Down"],
|
||||
"ctrl-w shift-h": ["workspace::SwapPaneInDirection", "Left"],
|
||||
"ctrl-w shift-l": ["workspace::SwapPaneInDirection", "Right"],
|
||||
"ctrl-w shift-k": ["workspace::SwapPaneInDirection", "Up"],
|
||||
"ctrl-w shift-j": ["workspace::SwapPaneInDirection", "Down"],
|
||||
"ctrl-w g t": "pane::ActivateNextItem",
|
||||
"ctrl-w ctrl-g t": "pane::ActivateNextItem",
|
||||
"ctrl-w g shift-t": "pane::ActivatePrevItem",
|
||||
@@ -371,14 +279,8 @@
|
||||
"ctrl-w ctrl-q": "pane::CloseAllItems",
|
||||
"ctrl-w o": "workspace::CloseInactiveTabsAndPanes",
|
||||
"ctrl-w ctrl-o": "workspace::CloseInactiveTabsAndPanes",
|
||||
"ctrl-w n": [
|
||||
"workspace::NewFileInDirection",
|
||||
"Up"
|
||||
],
|
||||
"ctrl-w ctrl-n": [
|
||||
"workspace::NewFileInDirection",
|
||||
"Up"
|
||||
]
|
||||
"ctrl-w n": ["workspace::NewFileInDirection", "Up"],
|
||||
"ctrl-w ctrl-n": ["workspace::NewFileInDirection", "Up"]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -393,21 +295,12 @@
|
||||
"context": "Editor && vim_mode == normal && vim_operator == none && !VimWaiting",
|
||||
"bindings": {
|
||||
".": "vim::Repeat",
|
||||
"c": [
|
||||
"vim::PushOperator",
|
||||
"Change"
|
||||
],
|
||||
"c": ["vim::PushOperator", "Change"],
|
||||
"shift-c": "vim::ChangeToEndOfLine",
|
||||
"d": [
|
||||
"vim::PushOperator",
|
||||
"Delete"
|
||||
],
|
||||
"d": ["vim::PushOperator", "Delete"],
|
||||
"shift-d": "vim::DeleteToEndOfLine",
|
||||
"shift-j": "vim::JoinLines",
|
||||
"y": [
|
||||
"vim::PushOperator",
|
||||
"Yank"
|
||||
],
|
||||
"y": ["vim::PushOperator", "Yank"],
|
||||
"shift-y": "vim::YankLine",
|
||||
"i": "vim::InsertBefore",
|
||||
"shift-i": "vim::InsertFirstNonWhitespace",
|
||||
@@ -443,10 +336,7 @@
|
||||
"backwards": true
|
||||
}
|
||||
],
|
||||
"r": [
|
||||
"vim::PushOperator",
|
||||
"Replace"
|
||||
],
|
||||
"r": ["vim::PushOperator", "Replace"],
|
||||
"s": "vim::Substitute",
|
||||
"shift-s": "vim::SubstituteLine",
|
||||
"> >": "editor::Indent",
|
||||
@@ -458,10 +348,7 @@
|
||||
{
|
||||
"context": "Editor && VimCount",
|
||||
"bindings": {
|
||||
"0": [
|
||||
"vim::Number",
|
||||
0
|
||||
]
|
||||
"0": ["vim::Number", 0]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -497,12 +384,15 @@
|
||||
"'": "vim::Quotes",
|
||||
"`": "vim::BackQuotes",
|
||||
"\"": "vim::DoubleQuotes",
|
||||
"|": "vim::VerticalBars",
|
||||
"(": "vim::Parentheses",
|
||||
")": "vim::Parentheses",
|
||||
"b": "vim::Parentheses",
|
||||
"[": "vim::SquareBrackets",
|
||||
"]": "vim::SquareBrackets",
|
||||
"{": "vim::CurlyBrackets",
|
||||
"}": "vim::CurlyBrackets",
|
||||
"shift-b": "vim::CurlyBrackets",
|
||||
"<": "vim::AngleBrackets",
|
||||
">": "vim::AngleBrackets"
|
||||
}
|
||||
@@ -548,22 +438,10 @@
|
||||
"shift-i": "vim::InsertBefore",
|
||||
"shift-a": "vim::InsertAfter",
|
||||
"shift-j": "vim::JoinLines",
|
||||
"r": [
|
||||
"vim::PushOperator",
|
||||
"Replace"
|
||||
],
|
||||
"ctrl-c": [
|
||||
"vim::SwitchMode",
|
||||
"Normal"
|
||||
],
|
||||
"escape": [
|
||||
"vim::SwitchMode",
|
||||
"Normal"
|
||||
],
|
||||
"ctrl+[": [
|
||||
"vim::SwitchMode",
|
||||
"Normal"
|
||||
],
|
||||
"r": ["vim::PushOperator", "Replace"],
|
||||
"ctrl-c": ["vim::SwitchMode", "Normal"],
|
||||
"escape": ["vim::SwitchMode", "Normal"],
|
||||
"ctrl+[": ["vim::SwitchMode", "Normal"],
|
||||
">": "editor::Indent",
|
||||
"<": "editor::Outdent",
|
||||
"i": [
|
||||
@@ -602,14 +480,8 @@
|
||||
"bindings": {
|
||||
"tab": "vim::Tab",
|
||||
"enter": "vim::Enter",
|
||||
"escape": [
|
||||
"vim::SwitchMode",
|
||||
"Normal"
|
||||
],
|
||||
"ctrl+[": [
|
||||
"vim::SwitchMode",
|
||||
"Normal"
|
||||
]
|
||||
"escape": ["vim::SwitchMode", "Normal"],
|
||||
"ctrl+[": ["vim::SwitchMode", "Normal"]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -35,6 +35,15 @@
|
||||
// "custom": 2
|
||||
// },
|
||||
"buffer_line_height": "comfortable",
|
||||
// The name of a font to use for rendering text in the UI
|
||||
"ui_font_family": "Zed Mono",
|
||||
// The OpenType features to enable for text in the UI
|
||||
"ui_font_features": {
|
||||
// Disable ligatures:
|
||||
"calt": false
|
||||
},
|
||||
// The default font size for text in the UI
|
||||
"ui_font_size": 16,
|
||||
// The factor to grow the active pane by. Defaults to 1.0
|
||||
// which gives the same size as all other panes.
|
||||
"active_pane_magnification": 1.0,
|
||||
@@ -102,6 +111,16 @@
|
||||
"selections": true
|
||||
},
|
||||
"relative_line_numbers": false,
|
||||
// When to populate a new search's query based on the text under the cursor.
|
||||
// This setting can take the following three values:
|
||||
//
|
||||
// 1. Always populate the search query with the word under the cursor (default).
|
||||
// "always"
|
||||
// 2. Only populate the search query when there is text selected
|
||||
// "selection"
|
||||
// 3. Never populate the search query
|
||||
// "never"
|
||||
"seed_search_query_from_cursor": "always",
|
||||
// Inlay hint related settings
|
||||
"inlay_hints": {
|
||||
// Global switch to toggle hints on and off, switched off by default.
|
||||
@@ -142,6 +161,14 @@
|
||||
// Default width of the channels panel.
|
||||
"default_width": 240
|
||||
},
|
||||
"notification_panel": {
|
||||
// Whether to show the collaboration panel button in the status bar.
|
||||
"button": true,
|
||||
// Where to dock channels panel. Can be 'left' or 'right'.
|
||||
"dock": "right",
|
||||
// Default width of the channels panel.
|
||||
"default_width": 380
|
||||
},
|
||||
"assistant": {
|
||||
// Whether to show the assistant panel button in the status bar.
|
||||
"button": true,
|
||||
@@ -156,7 +183,8 @@
|
||||
//
|
||||
// 1. "gpt-3.5-turbo-0613""
|
||||
// 2. "gpt-4-0613""
|
||||
"default_open_ai_model": "gpt-4-0613"
|
||||
// 3. "gpt-4-1106-preview"
|
||||
"default_open_ai_model": "gpt-4-1106-preview"
|
||||
},
|
||||
// Whether the screen sharing icon is shown in the os status bar.
|
||||
"show_call_status_icon": true,
|
||||
@@ -191,7 +219,7 @@
|
||||
"ensure_final_newline_on_save": true,
|
||||
// Whether or not to perform a buffer format before saving
|
||||
"format_on_save": "on",
|
||||
// How to perform a buffer format. This setting can take two values:
|
||||
// How to perform a buffer format. This setting can take 4 values:
|
||||
//
|
||||
// 1. Format code using the current language server:
|
||||
// "formatter": "language_server"
|
||||
@@ -240,6 +268,19 @@
|
||||
// Whether to show warnings or not by default.
|
||||
"include_warnings": true
|
||||
},
|
||||
// Add files or globs of files that will be excluded by Zed entirely:
|
||||
// they will be skipped during FS scan(s), file tree and file search
|
||||
// will lack the corresponding file entries.
|
||||
"file_scan_exclusions": [
|
||||
"**/.git",
|
||||
"**/.svn",
|
||||
"**/.hg",
|
||||
"**/CVS",
|
||||
"**/.DS_Store",
|
||||
"**/Thumbs.db",
|
||||
"**/.classpath",
|
||||
"**/.settings"
|
||||
],
|
||||
// Git gutter behavior configuration.
|
||||
"git": {
|
||||
// Control whether the git gutter is shown. May take 2 values:
|
||||
@@ -252,9 +293,7 @@
|
||||
"copilot": {
|
||||
// The set of glob patterns for which copilot should be disabled
|
||||
// in any matching file.
|
||||
"disabled_globs": [
|
||||
".env"
|
||||
]
|
||||
"disabled_globs": [".env"]
|
||||
},
|
||||
// Settings specific to journaling
|
||||
"journal": {
|
||||
@@ -363,12 +402,7 @@
|
||||
// Default directories to search for virtual environments, relative
|
||||
// to the current working directory. We recommend overriding this
|
||||
// in your project's settings, rather than globally.
|
||||
"directories": [
|
||||
".env",
|
||||
"env",
|
||||
".venv",
|
||||
"venv"
|
||||
],
|
||||
"directories": [".env", "env", ".venv", "venv"],
|
||||
// Can also be 'csh', 'fish', and `nushell`
|
||||
"activate_script": "default"
|
||||
}
|
||||
|
||||
@@ -7,5 +7,6 @@
|
||||
// custom settings, run the `open default settings` command
|
||||
// from the command palette or from `Zed` application menu.
|
||||
{
|
||||
"buffer_font_size": 15
|
||||
"ui_font_size": 16,
|
||||
"buffer_font_size": 16
|
||||
}
|
||||
|
||||
7
assets/themes/src/vscode/andromeda/LICENSE
Normal file
@@ -0,0 +1,7 @@
|
||||
Copyright (c) 2017 eliverlara@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.
|
||||
369
assets/themes/src/vscode/andromeda/andromeda-bordered.json
Normal file
@@ -0,0 +1,369 @@
|
||||
{
|
||||
"name": "Andromeda Bordered",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#746f77",
|
||||
"foreground": "#D5CED9",
|
||||
"widget.shadow": "#14151A",
|
||||
"selection.background": "#746f77",
|
||||
"errorForeground": "#FC644D",
|
||||
|
||||
"button.background": "#00e8c5cc",
|
||||
"button.hoverBackground": "#07d4b6cc",
|
||||
|
||||
"dropdown.background": "#2b303b",
|
||||
"dropdown.border": "#363c49",
|
||||
|
||||
"input.background": "#2b303b",
|
||||
"input.placeholderForeground": "#746f77",
|
||||
"inputOption.activeBorder": "#C668BA",
|
||||
"inputValidation.errorBackground": "#D65343",
|
||||
"inputValidation.errorBorder": "#D65343",
|
||||
"inputValidation.infoBackground": "#3A6395",
|
||||
"inputValidation.infoBorder": "#3A6395",
|
||||
"inputValidation.warningBackground": "#DE9237",
|
||||
"inputValidation.warningBorder": "#DE9237",
|
||||
|
||||
"scrollbar.shadow": "#23262E",
|
||||
"scrollbarSlider.activeBackground": "#3A3F4CCC",
|
||||
"scrollbarSlider.background": "#3A3F4C77",
|
||||
"scrollbarSlider.hoverBackground": "#3A3F4CAA",
|
||||
|
||||
"badge.background": "#00b0ff",
|
||||
"badge.foreground": "#20232B",
|
||||
|
||||
"progressBar.background": "#C668BA",
|
||||
|
||||
"list.activeSelectionBackground": "#23262E",
|
||||
"list.activeSelectionForeground": "#00e8c6",
|
||||
"list.dropBackground": "#3a404e",
|
||||
"list.focusBackground": "#282b35",
|
||||
"list.focusForeground": "#eee",
|
||||
"list.hoverBackground": "#23262E",
|
||||
"list.hoverForeground": "#eee",
|
||||
"list.inactiveSelectionBackground": "#23262E",
|
||||
"list.inactiveSelectionForeground": "#00e8c6",
|
||||
|
||||
"activityBar.background": "#20232B",
|
||||
"activityBar.dropBackground": "#3a404e",
|
||||
"activityBar.foreground": "#BAAFC0",
|
||||
"activityBarBadge.background": "#00b0ff",
|
||||
"activityBarBadge.foreground": "#20232B",
|
||||
"activityBar.border": "#1B1D23",
|
||||
|
||||
"sideBar.background": "#23262E",
|
||||
"sideBarSectionHeader.background": "#23262E",
|
||||
"sideBarTitle.foreground": "#00e8c6",
|
||||
"sideBar.foreground": "#999999",
|
||||
"sideBar.border": "#1B1D23",
|
||||
|
||||
"editorGroup.background": "#23262E",
|
||||
"editorGroup.dropBackground": "#495061d7",
|
||||
"editorGroupHeader.tabsBackground": "#23262E",
|
||||
"tab.activeBackground": "#262A33",
|
||||
"tab.inactiveBackground": "#23262E",
|
||||
"tab.activeForeground": "#00e8c6",
|
||||
"tab.inactiveForeground": "#746f77",
|
||||
|
||||
"editor.background": "#262A33",
|
||||
"editor.foreground": "#D5CED9",
|
||||
"editorLineNumber.foreground": "#746f77",
|
||||
"editorCursor.foreground": "#FFF",
|
||||
"editor.selectionBackground": "#3D4352",
|
||||
"editor.selectionHighlightBackground": "#4F435580",
|
||||
"editor.wordHighlightBackground": "#4F4355",
|
||||
"editor.wordHighlightStrongBackground": "#db45a280",
|
||||
"editor.findMatchBackground": "#f39d1256",
|
||||
"editor.findMatchHighlightBackground": "#59b8b377",
|
||||
"editor.findMatchBorder": "#f39d12b6",
|
||||
"editor.hoverHighlightBackground": "#373941",
|
||||
"editor.lineHighlightBackground": "#2e323d",
|
||||
"editor.lineHighlightBorder": "#2e323d",
|
||||
"editorLink.activeForeground": "#3B79C7",
|
||||
"editor.rangeHighlightBackground": "#372F3C",
|
||||
"editorWhitespace.foreground": "#333844",
|
||||
"editorIndentGuide.background": "#333844",
|
||||
"editorIndentGuide.activeBackground": "#585C66",
|
||||
"editorRuler.foreground": "#4F4355",
|
||||
"editorCodeLens.foreground": "#746f77",
|
||||
"editorBracketMatch.background": "#746f77",
|
||||
"editorBracketMatch.border": "#746f77",
|
||||
"editorOverviewRuler.border": "#1B1D23",
|
||||
"editorError.foreground": "#FC644D",
|
||||
"editorWarning.foreground": "#FF9F2E",
|
||||
"editorGutter.modifiedBackground": "#5BC0EBBB",
|
||||
"editorGutter.addedBackground": "#9BC53DBB",
|
||||
"editorGutter.deletedBackground": "#FC644DBB",
|
||||
|
||||
"diffEditor.insertedTextBackground": "#29BF1220",
|
||||
"diffEditor.removedTextBackground": "#F21B3F20",
|
||||
|
||||
"editorWidget.background": "#20232A",
|
||||
"editorSuggestWidget.background": "#20232A",
|
||||
"editorSuggestWidget.border": "#372F3C",
|
||||
"editorSuggestWidget.selectedBackground": "#373941",
|
||||
"editorHoverWidget.background": "#373941",
|
||||
"editorHoverWidget.border": "#00e8c5cc",
|
||||
"debugExceptionWidget.background": "#FF9F2E60",
|
||||
"debugExceptionWidget.border": "#FF9F2E60",
|
||||
|
||||
"minimapSlider.background": "#58607460",
|
||||
"minimapSlider.hoverBackground": "#60698060",
|
||||
"minimapSlider.activeBackground": "#60698060",
|
||||
|
||||
"peekView.border": "#23262E",
|
||||
"peekViewEditor.background": "#1A1C22",
|
||||
"peekViewEditor.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.background": "#1A1C22",
|
||||
"peekViewResult.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.selectionBackground": "#23262E",
|
||||
"peekViewTitle.background": "#1A1C22",
|
||||
"peekViewTitleDescription.foreground": "#746f77",
|
||||
|
||||
"merge.currentHeaderBackground": "#F92672",
|
||||
"merge.currentContentBackground": "#F9267240",
|
||||
"merge.incomingHeaderBackground": "#3B79C7BB",
|
||||
"merge.incomingContentBackground": "#3B79C740",
|
||||
|
||||
"panel.background": "#23262E",
|
||||
"panel.border": "#1B1D23",
|
||||
"panelTitle.activeBorder": "#23262E",
|
||||
"panelTitle.inactiveForeground": "#746f77",
|
||||
|
||||
"statusBar.background": "#23262E",
|
||||
"statusBar.debuggingBackground": "#FC644D",
|
||||
"statusBar.noFolderBackground": "#23262E",
|
||||
"statusBarItem.activeBackground": "#00e8c5cc",
|
||||
"statusBarItem.hoverBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentHoverBackground": "#00e8c5cc",
|
||||
|
||||
"terminal.ansiRed":"#ee5d43",
|
||||
"terminal.ansiGreen":"#96E072",
|
||||
"terminal.ansiYellow":"#FFE66D",
|
||||
"terminal.ansiBlue":"#7cb7ff",
|
||||
"terminal.ansiMagenta":"#ff00aa",
|
||||
"terminal.ansiCyan":"#00e8c6",
|
||||
"terminal.ansiBrightRed":"#ee5d43",
|
||||
"terminal.ansiBrightGreen":"#96E072",
|
||||
"terminal.ansiBrightYellow":"#FFE66D",
|
||||
"terminal.ansiBrightBlue":"#7cb7ff",
|
||||
"terminal.ansiBrightMagenta":"#ff00aa",
|
||||
"terminal.ansiBrightCyan":"#00e8c6",
|
||||
"terminalCursor.background": "#23262E",
|
||||
"terminalCursor.foreground": "#FFE66D",
|
||||
|
||||
"titleBar.activeBackground": "#23262E",
|
||||
|
||||
"notification.background": "#2d313b",
|
||||
"notification.buttonBackground": "#00e8c5cc",
|
||||
"notification.buttonHoverBackground": "#07d4b5b0",
|
||||
"notification.infoBackground": "#00b0ff",
|
||||
"notification.warningBackground": "#FF9F2E",
|
||||
"notification.errorBackground": "#FC644D",
|
||||
|
||||
"extensionButton.prominentBackground": "#07d4b6cc",
|
||||
"extensionButton.prominentHoverBackground": "#07d4b5b0",
|
||||
|
||||
"pickerGroup.border": "#4F4355",
|
||||
"pickerGroup.foreground": "#746f77",
|
||||
|
||||
"debugToolBar.background": "#20232A",
|
||||
|
||||
"walkThrough.embeddedEditorBackground": "#23262E",
|
||||
|
||||
"gitDecoration.ignoredResourceForeground": "#555555"
|
||||
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#D5CED9",
|
||||
"background": "#23262E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment color",
|
||||
"scope": [
|
||||
"comment",
|
||||
"markup.quote.markdown",
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#A0A1A7cc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Text Color",
|
||||
"scope": [
|
||||
"meta.template.expression.js",
|
||||
"constant.name.attribute.tag.jade",
|
||||
"punctuation.definition.metadata.markdown",
|
||||
"punctuation.definition.string.end.markdown",
|
||||
"punctuation.definition.string.begin.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D5CED9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cyan",
|
||||
"scope": [
|
||||
"variable",
|
||||
"support.variable",
|
||||
"entity.name.tag.yaml",
|
||||
"constant.character.entity.html",
|
||||
"source.css entity.name.tag.reference",
|
||||
"beginning.punctuation.definition.list.markdown",
|
||||
"source.css entity.other.attribute-name.parent-selector",
|
||||
"meta.structure.dictionary.json support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#00e8c6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Orange",
|
||||
"scope": [
|
||||
"markup.bold",
|
||||
"constant.numeric",
|
||||
"meta.group.regexp",
|
||||
"constant.other.php",
|
||||
"support.constant.ext.php",
|
||||
"constant.other.class.php",
|
||||
"support.constant.core.php",
|
||||
"fenced_code.block.language",
|
||||
"constant.other.caps.python",
|
||||
"entity.other.attribute-name",
|
||||
"support.type.exception.python",
|
||||
"source.css keyword.other.unit",
|
||||
"variable.other.object.property.js.jsx", "variable.other.object.js"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f39c12"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Yellow",
|
||||
"scope": [
|
||||
"markup.list",
|
||||
"text.xml string",
|
||||
"entity.name.type",
|
||||
"support.function",
|
||||
"entity.other.attribute-name",
|
||||
"meta.at-rule.extend",
|
||||
"entity.name.function",
|
||||
"entity.other.inherited-class",
|
||||
"entity.other.keyframe-offset.css",
|
||||
"text.html.markdown string.quoted",
|
||||
"meta.function-call.generic.python",
|
||||
"meta.at-rule.extend support.constant",
|
||||
"entity.other.attribute-name.class.jade",
|
||||
"source.css entity.other.attribute-name",
|
||||
"text.xml punctuation.definition.string"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#FFE66D"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pink",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"variable.language.this.js",
|
||||
"variable.language.special.self.python"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff00aa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Hot Pink",
|
||||
"scope": [
|
||||
"punctuation.definition.interpolation",
|
||||
"punctuation.section.embedded.end.php",
|
||||
"punctuation.section.embedded.end.ruby",
|
||||
"punctuation.section.embedded.begin.php",
|
||||
"punctuation.section.embedded.begin.ruby",
|
||||
"punctuation.definition.template-expression",
|
||||
"entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f92672"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Purple",
|
||||
"scope": [
|
||||
"storage",
|
||||
"keyword",
|
||||
"meta.link",
|
||||
"meta.image",
|
||||
"markup.italic",
|
||||
"source.js support.type"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c74ded"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Blue",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#7cb7ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Red",
|
||||
"scope": [
|
||||
"constant",
|
||||
"support.class",
|
||||
"keyword.operator",
|
||||
"support.constant",
|
||||
"text.html.markdown string",
|
||||
"source.css support.function",
|
||||
"source.php support.function",
|
||||
"support.function.magic.python",
|
||||
"entity.other.attribute-name.id",
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ee5d43"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Green",
|
||||
"scope": [
|
||||
"string",
|
||||
"text.html.php string",
|
||||
"markup.inline.raw",
|
||||
"markup.inserted",
|
||||
"punctuation.definition.string",
|
||||
"punctuation.definition.markdown",
|
||||
"text.html meta.embedded source.js string",
|
||||
"text.html.php punctuation.definition.string",
|
||||
"text.html meta.embedded source.js punctuation.definition.string",
|
||||
"text.html punctuation.definition.string",
|
||||
"text.html string"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#96E072"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Font Underline",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "underline"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
367
assets/themes/src/vscode/andromeda/andromeda.json
Normal file
@@ -0,0 +1,367 @@
|
||||
{
|
||||
"name": "Andromeda",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#746f77",
|
||||
"foreground": "#D5CED9",
|
||||
"widget.shadow": "#14151A",
|
||||
"selection.background": "#746f77",
|
||||
"errorForeground": "#FC644D",
|
||||
|
||||
"button.background": "#00e8c5cc",
|
||||
"button.hoverBackground": "#07d4b6cc",
|
||||
|
||||
"dropdown.background": "#2b303b",
|
||||
"dropdown.border": "#363c49",
|
||||
|
||||
"input.background": "#2b303b",
|
||||
"input.placeholderForeground": "#746f77",
|
||||
"inputOption.activeBorder": "#C668BA",
|
||||
"inputValidation.errorBackground": "#D65343",
|
||||
"inputValidation.errorBorder": "#D65343",
|
||||
"inputValidation.infoBackground": "#3A6395",
|
||||
"inputValidation.infoBorder": "#3A6395",
|
||||
"inputValidation.warningBackground": "#DE9237",
|
||||
"inputValidation.warningBorder": "#DE9237",
|
||||
|
||||
"scrollbar.shadow": "#23262E",
|
||||
"scrollbarSlider.activeBackground": "#3A3F4CCC",
|
||||
"scrollbarSlider.background": "#3A3F4C77",
|
||||
"scrollbarSlider.hoverBackground": "#3A3F4CAA",
|
||||
|
||||
"badge.background": "#00b0ff",
|
||||
"badge.foreground": "#20232B",
|
||||
|
||||
"progressBar.background": "#C668BA",
|
||||
|
||||
"list.activeSelectionBackground": "#23262E",
|
||||
"list.activeSelectionForeground": "#00e8c6",
|
||||
"list.dropBackground": "#3a404e",
|
||||
"list.focusBackground": "#282b35",
|
||||
"list.focusForeground": "#eee",
|
||||
"list.hoverBackground": "#23262E",
|
||||
"list.hoverForeground": "#eee",
|
||||
"list.inactiveSelectionBackground": "#23262E",
|
||||
"list.inactiveSelectionForeground": "#00e8c6",
|
||||
|
||||
"activityBar.background": "#23262E",
|
||||
"activityBar.dropBackground": "#3a404e",
|
||||
"activityBar.foreground": "#BAAFC0",
|
||||
"activityBarBadge.background": "#00b0ff",
|
||||
"activityBarBadge.foreground": "#20232B",
|
||||
|
||||
"sideBar.background": "#23262E",
|
||||
"sideBarSectionHeader.background": "#23262E",
|
||||
"sideBarTitle.foreground": "#00e8c6",
|
||||
"sideBar.foreground": "#999999",
|
||||
|
||||
"editorGroup.background": "#23262E",
|
||||
"editorGroup.dropBackground": "#495061d7",
|
||||
"editorGroupHeader.tabsBackground": "#23262E",
|
||||
"tab.activeBackground": "#23262e",
|
||||
"tab.inactiveBackground": "#23262E",
|
||||
"tab.activeForeground": "#00e8c6",
|
||||
"tab.inactiveForeground": "#746f77",
|
||||
|
||||
"editor.background": "#23262E",
|
||||
"editor.foreground": "#D5CED9",
|
||||
"editorLineNumber.foreground": "#746f77",
|
||||
"editorCursor.foreground": "#FFF",
|
||||
"editor.selectionBackground": "#3D4352",
|
||||
"editor.selectionHighlightBackground": "#4F435580",
|
||||
"editor.wordHighlightBackground": "#4F4355",
|
||||
"editor.wordHighlightStrongBackground": "#db45a280",
|
||||
"editor.findMatchBackground": "#f39d1256",
|
||||
"editor.findMatchHighlightBackground": "#59b8b377",
|
||||
"editor.findMatchBorder": "#f39d12b6",
|
||||
"editor.hoverHighlightBackground": "#373941",
|
||||
"editor.lineHighlightBackground": "#2e323d",
|
||||
"editor.lineHighlightBorder": "#2e323d",
|
||||
"editorLink.activeForeground": "#3B79C7",
|
||||
"editor.rangeHighlightBackground": "#372F3C",
|
||||
"editorWhitespace.foreground": "#333844",
|
||||
"editorIndentGuide.background": "#333844",
|
||||
"editorIndentGuide.activeBackground": "#585C66",
|
||||
"editorRuler.foreground": "#4F4355",
|
||||
"editorCodeLens.foreground": "#746f77",
|
||||
"editorBracketMatch.background": "#746f77",
|
||||
"editorBracketMatch.border": "#746f77",
|
||||
"editorOverviewRuler.border": "#1B1D23",
|
||||
"editorError.foreground": "#FC644D",
|
||||
"editorWarning.foreground": "#FF9F2E",
|
||||
"editorGutter.modifiedBackground": "#5BC0EBBB",
|
||||
"editorGutter.addedBackground": "#9BC53DBB",
|
||||
"editorGutter.deletedBackground": "#FC644DBB",
|
||||
|
||||
"diffEditor.insertedTextBackground": "#29BF1220",
|
||||
"diffEditor.removedTextBackground": "#F21B3F20",
|
||||
|
||||
"editorWidget.background": "#20232A",
|
||||
"editorSuggestWidget.background": "#20232A",
|
||||
"editorSuggestWidget.border": "#372F3C",
|
||||
"editorSuggestWidget.selectedBackground": "#373941",
|
||||
"editorHoverWidget.background": "#373941",
|
||||
"editorHoverWidget.border": "#00e8c5cc",
|
||||
"debugExceptionWidget.background": "#FF9F2E60",
|
||||
"debugExceptionWidget.border": "#FF9F2E60",
|
||||
|
||||
"minimapSlider.background": "#58607460",
|
||||
"minimapSlider.hoverBackground": "#60698060",
|
||||
"minimapSlider.activeBackground": "#60698060",
|
||||
|
||||
"peekView.border": "#23262E",
|
||||
"peekViewEditor.background": "#1A1C22",
|
||||
"peekViewEditor.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.background": "#1A1C22",
|
||||
"peekViewResult.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.selectionBackground": "#23262E",
|
||||
"peekViewTitle.background": "#1A1C22",
|
||||
"peekViewTitleDescription.foreground": "#746f77",
|
||||
|
||||
"merge.currentHeaderBackground": "#F92672",
|
||||
"merge.currentContentBackground": "#F9267240",
|
||||
"merge.incomingHeaderBackground": "#3B79C7BB",
|
||||
"merge.incomingContentBackground": "#3B79C740",
|
||||
|
||||
"panel.background": "#23262E",
|
||||
"panel.border": "#1B1D23",
|
||||
"panelTitle.activeBorder": "#23262E",
|
||||
"panelTitle.inactiveForeground": "#746f77",
|
||||
|
||||
"statusBar.background": "#23262E",
|
||||
"statusBar.debuggingBackground": "#FC644D",
|
||||
"statusBar.noFolderBackground": "#23262E",
|
||||
"statusBarItem.activeBackground": "#00e8c5cc",
|
||||
"statusBarItem.hoverBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentHoverBackground": "#00e8c5cc",
|
||||
|
||||
"terminal.ansiRed":"#ee5d43",
|
||||
"terminal.ansiGreen":"#96E072",
|
||||
"terminal.ansiYellow":"#FFE66D",
|
||||
"terminal.ansiBlue":"#7cb7ff",
|
||||
"terminal.ansiMagenta":"#ff00aa",
|
||||
"terminal.ansiCyan":"#00e8c6",
|
||||
"terminal.ansiBrightRed":"#ee5d43",
|
||||
"terminal.ansiBrightGreen":"#96E072",
|
||||
"terminal.ansiBrightYellow":"#FFE66D",
|
||||
"terminal.ansiBrightBlue":"#7cb7ff",
|
||||
"terminal.ansiBrightMagenta":"#ff00aa",
|
||||
"terminal.ansiBrightCyan":"#00e8c6",
|
||||
"terminalCursor.background": "#23262E",
|
||||
"terminalCursor.foreground": "#FFE66D",
|
||||
|
||||
"titleBar.activeBackground": "#23262E",
|
||||
|
||||
"notification.background": "#2d313b",
|
||||
"notification.buttonBackground": "#00e8c5cc",
|
||||
"notification.buttonHoverBackground": "#07d4b5b0",
|
||||
"notification.infoBackground": "#00b0ff",
|
||||
"notification.warningBackground": "#FF9F2E",
|
||||
"notification.errorBackground": "#FC644D",
|
||||
|
||||
"extensionButton.prominentBackground": "#07d4b6cc",
|
||||
"extensionButton.prominentHoverBackground": "#07d4b5b0",
|
||||
|
||||
"pickerGroup.border": "#4F4355",
|
||||
"pickerGroup.foreground": "#746f77",
|
||||
|
||||
"debugToolBar.background": "#20232A",
|
||||
|
||||
"walkThrough.embeddedEditorBackground": "#23262E",
|
||||
|
||||
"gitDecoration.ignoredResourceForeground": "#555555"
|
||||
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#D5CED9",
|
||||
"background": "#23262E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment color",
|
||||
"scope": [
|
||||
"comment",
|
||||
"markup.quote.markdown",
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#A0A1A7cc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Text Color",
|
||||
"scope": [
|
||||
"meta.template.expression.js",
|
||||
"constant.name.attribute.tag.jade",
|
||||
"punctuation.definition.metadata.markdown",
|
||||
"punctuation.definition.string.end.markdown",
|
||||
"punctuation.definition.string.begin.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D5CED9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cyan",
|
||||
"scope": [
|
||||
"variable",
|
||||
"support.variable",
|
||||
"entity.name.tag.yaml",
|
||||
"constant.character.entity.html",
|
||||
"source.css entity.name.tag.reference",
|
||||
"beginning.punctuation.definition.list.markdown",
|
||||
"source.css entity.other.attribute-name.parent-selector",
|
||||
"meta.structure.dictionary.json support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#00e8c6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Orange",
|
||||
"scope": [
|
||||
"markup.bold",
|
||||
"constant.numeric",
|
||||
"meta.group.regexp",
|
||||
"constant.other.php",
|
||||
"support.constant.ext.php",
|
||||
"constant.other.class.php",
|
||||
"support.constant.core.php",
|
||||
"fenced_code.block.language",
|
||||
"constant.other.caps.python",
|
||||
"entity.other.attribute-name",
|
||||
"support.type.exception.python",
|
||||
"source.css keyword.other.unit",
|
||||
"variable.other.object.property.js.jsx", "variable.other.object.js"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f39c12"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Yellow",
|
||||
"scope": [
|
||||
"markup.list",
|
||||
"text.xml string",
|
||||
"entity.name.type",
|
||||
"support.function",
|
||||
"entity.other.attribute-name",
|
||||
"meta.at-rule.extend",
|
||||
"entity.name.function",
|
||||
"entity.other.inherited-class",
|
||||
"entity.other.keyframe-offset.css",
|
||||
"text.html.markdown string.quoted",
|
||||
"meta.function-call.generic.python",
|
||||
"meta.at-rule.extend support.constant",
|
||||
"entity.other.attribute-name.class.jade",
|
||||
"source.css entity.other.attribute-name",
|
||||
"text.xml punctuation.definition.string"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#FFE66D"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pink",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"variable.language.this.js",
|
||||
"variable.language.special.self.python"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff00aa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Hot Pink",
|
||||
"scope": [
|
||||
"punctuation.definition.interpolation",
|
||||
"punctuation.section.embedded.end.php",
|
||||
"punctuation.section.embedded.end.ruby",
|
||||
"punctuation.section.embedded.begin.php",
|
||||
"punctuation.section.embedded.begin.ruby",
|
||||
"punctuation.definition.template-expression",
|
||||
"entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f92672"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Purple",
|
||||
"scope": [
|
||||
"storage",
|
||||
"keyword",
|
||||
"meta.link",
|
||||
"meta.image",
|
||||
"markup.italic",
|
||||
"source.js support.type"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c74ded"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Blue",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#7cb7ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Red",
|
||||
"scope": [
|
||||
"constant",
|
||||
"support.class",
|
||||
"keyword.operator",
|
||||
"support.constant",
|
||||
"text.html.markdown string",
|
||||
"source.css support.function",
|
||||
"source.php support.function",
|
||||
"support.function.magic.python",
|
||||
"entity.other.attribute-name.id",
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ee5d43"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Green",
|
||||
"scope": [
|
||||
"string",
|
||||
"text.html.php string",
|
||||
"markup.inline.raw",
|
||||
"markup.inserted",
|
||||
"punctuation.definition.string",
|
||||
"punctuation.definition.markdown",
|
||||
"text.html meta.embedded source.js string",
|
||||
"text.html.php punctuation.definition.string",
|
||||
"text.html meta.embedded source.js punctuation.definition.string",
|
||||
"text.html punctuation.definition.string",
|
||||
"text.html string"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#96E072"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Font Underline",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "underline"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
16
assets/themes/src/vscode/andromeda/family.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "Andromeda",
|
||||
"author": "Eliver Lara (EliverLara)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Andromeda",
|
||||
"file_name": "andromeda.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Andromeda Bordered",
|
||||
"file_name": "andromeda-bordered.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
21
assets/themes/src/vscode/ayu/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 Ike Ku
|
||||
|
||||
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.
|
||||
847
assets/themes/src/vscode/ayu/ayu-dark.json
Normal file
@@ -0,0 +1,847 @@
|
||||
{
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#e6b450b3",
|
||||
"foreground": "#565b66",
|
||||
"widget.shadow": "#00000080",
|
||||
"selection.background": "#409fff4d",
|
||||
"icon.foreground": "#565b66",
|
||||
"errorForeground": "#d95757",
|
||||
"descriptionForeground": "#565b66",
|
||||
"textBlockQuote.background": "#0f131a",
|
||||
"textLink.foreground": "#e6b450",
|
||||
"textLink.activeForeground": "#e6b450",
|
||||
"textPreformat.foreground": "#bfbdb6",
|
||||
"button.background": "#e6b450",
|
||||
"button.foreground": "#734d00",
|
||||
"button.hoverBackground": "#e1af4b",
|
||||
"button.secondaryBackground": "#565b6633",
|
||||
"button.secondaryForeground": "#bfbdb6",
|
||||
"button.secondaryHoverBackground": "#565b6680",
|
||||
"dropdown.background": "#0d1017",
|
||||
"dropdown.foreground": "#565b66",
|
||||
"dropdown.border": "#565b6645",
|
||||
"input.background": "#0d1017",
|
||||
"input.border": "#565b6645",
|
||||
"input.foreground": "#bfbdb6",
|
||||
"input.placeholderForeground": "#565b6680",
|
||||
"inputOption.activeBorder": "#e6b4504d",
|
||||
"inputOption.activeBackground": "#e6b45033",
|
||||
"inputOption.activeForeground": "#e6b450",
|
||||
"inputValidation.errorBackground": "#0d1017",
|
||||
"inputValidation.errorBorder": "#d95757",
|
||||
"inputValidation.infoBackground": "#0b0e14",
|
||||
"inputValidation.infoBorder": "#39bae6",
|
||||
"inputValidation.warningBackground": "#0b0e14",
|
||||
"inputValidation.warningBorder": "#ffb454",
|
||||
"scrollbar.shadow": "#1e232b00",
|
||||
"scrollbarSlider.background": "#565b6666",
|
||||
"scrollbarSlider.hoverBackground": "#565b6699",
|
||||
"scrollbarSlider.activeBackground": "#565b66b3",
|
||||
"badge.background": "#e6b45033",
|
||||
"badge.foreground": "#e6b450",
|
||||
"progressBar.background": "#e6b450",
|
||||
"list.activeSelectionBackground": "#47526640",
|
||||
"list.activeSelectionForeground": "#bfbdb6",
|
||||
"list.focusBackground": "#47526640",
|
||||
"list.focusForeground": "#bfbdb6",
|
||||
"list.focusOutline": "#47526640",
|
||||
"list.highlightForeground": "#e6b450",
|
||||
"list.deemphasizedForeground": "#d95757",
|
||||
"list.hoverBackground": "#47526640",
|
||||
"list.inactiveSelectionBackground": "#47526633",
|
||||
"list.inactiveSelectionForeground": "#565b66",
|
||||
"list.invalidItemForeground": "#565b664d",
|
||||
"list.errorForeground": "#d95757",
|
||||
"tree.indentGuidesStroke": "#6c738080",
|
||||
"listFilterWidget.background": "#0f131a",
|
||||
"listFilterWidget.outline": "#e6b450",
|
||||
"listFilterWidget.noMatchesOutline": "#d95757",
|
||||
"list.filterMatchBackground": "#5f4c7266",
|
||||
"list.filterMatchBorder": "#6c598066",
|
||||
"activityBar.background": "#0b0e14",
|
||||
"activityBar.foreground": "#565b66cc",
|
||||
"activityBar.inactiveForeground": "#565b6699",
|
||||
"activityBar.border": "#0b0e14",
|
||||
"activityBar.activeBorder": "#e6b450",
|
||||
"activityBarBadge.background": "#e6b450",
|
||||
"activityBarBadge.foreground": "#734d00",
|
||||
"sideBar.background": "#0b0e14",
|
||||
"sideBar.border": "#0b0e14",
|
||||
"sideBarTitle.foreground": "#565b66",
|
||||
"sideBarSectionHeader.background": "#0b0e14",
|
||||
"sideBarSectionHeader.foreground": "#565b66",
|
||||
"sideBarSectionHeader.border": "#0b0e14",
|
||||
"minimap.background": "#0b0e14",
|
||||
"minimap.selectionHighlight": "#409fff4d",
|
||||
"minimap.errorHighlight": "#d95757",
|
||||
"minimap.findMatchHighlight": "#6c5980",
|
||||
"minimapGutter.addedBackground": "#7fd962",
|
||||
"minimapGutter.modifiedBackground": "#73b8ff",
|
||||
"minimapGutter.deletedBackground": "#f26d78",
|
||||
"editorGroup.border": "#1e232b",
|
||||
"editorGroup.background": "#0f131a",
|
||||
"editorGroupHeader.noTabsBackground": "#0b0e14",
|
||||
"editorGroupHeader.tabsBackground": "#0b0e14",
|
||||
"editorGroupHeader.tabsBorder": "#0b0e14",
|
||||
"tab.activeBackground": "#0b0e14",
|
||||
"tab.activeForeground": "#bfbdb6",
|
||||
"tab.border": "#0b0e14",
|
||||
"tab.activeBorder": "#e6b450",
|
||||
"tab.unfocusedActiveBorder": "#565b66",
|
||||
"tab.inactiveBackground": "#0b0e14",
|
||||
"tab.inactiveForeground": "#565b66",
|
||||
"tab.unfocusedActiveForeground": "#565b66",
|
||||
"tab.unfocusedInactiveForeground": "#565b66",
|
||||
"editor.background": "#0b0e14",
|
||||
"editor.foreground": "#bfbdb6",
|
||||
"editorLineNumber.foreground": "#6c738099",
|
||||
"editorLineNumber.activeForeground": "#6c7380e6",
|
||||
"editorCursor.foreground": "#e6b450",
|
||||
"editor.inactiveSelectionBackground": "#409fff21",
|
||||
"editor.selectionBackground": "#409fff4d",
|
||||
"editor.selectionHighlightBackground": "#7fd96226",
|
||||
"editor.selectionHighlightBorder": "#7fd96200",
|
||||
"editor.wordHighlightBackground": "#73b8ff14",
|
||||
"editor.wordHighlightStrongBackground": "#7fd96214",
|
||||
"editor.wordHighlightBorder": "#73b8ff80",
|
||||
"editor.wordHighlightStrongBorder": "#7fd96280",
|
||||
"editor.findMatchBackground": "#6c5980",
|
||||
"editor.findMatchBorder": "#6c5980",
|
||||
"editor.findMatchHighlightBackground": "#6c598066",
|
||||
"editor.findMatchHighlightBorder": "#5f4c7266",
|
||||
"editor.findRangeHighlightBackground": "#6c598040",
|
||||
"editor.rangeHighlightBackground": "#6c598033",
|
||||
"editor.lineHighlightBackground": "#131721",
|
||||
"editorLink.activeForeground": "#e6b450",
|
||||
"editorWhitespace.foreground": "#6c738099",
|
||||
"editorIndentGuide.background": "#6c738033",
|
||||
"editorIndentGuide.activeBackground": "#6c738080",
|
||||
"editorRuler.foreground": "#6c738033",
|
||||
"editorCodeLens.foreground": "#acb6bf8c",
|
||||
"editorBracketMatch.background": "#6c73804d",
|
||||
"editorBracketMatch.border": "#6c73804d",
|
||||
"editor.snippetTabstopHighlightBackground": "#7fd96233",
|
||||
"editorOverviewRuler.border": "#1e232b",
|
||||
"editorOverviewRuler.modifiedForeground": "#73b8ff",
|
||||
"editorOverviewRuler.addedForeground": "#7fd962",
|
||||
"editorOverviewRuler.deletedForeground": "#f26d78",
|
||||
"editorOverviewRuler.errorForeground": "#d95757",
|
||||
"editorOverviewRuler.warningForeground": "#e6b450",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#6c7380b3",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#73b8ff66",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#7fd96266",
|
||||
"editorOverviewRuler.findMatchForeground": "#6c5980",
|
||||
"editorError.foreground": "#d95757",
|
||||
"editorWarning.foreground": "#e6b450",
|
||||
"editorGutter.modifiedBackground": "#73b8ffcc",
|
||||
"editorGutter.addedBackground": "#7fd962cc",
|
||||
"editorGutter.deletedBackground": "#f26d78cc",
|
||||
"diffEditor.insertedTextBackground": "#7fd9621f",
|
||||
"diffEditor.removedTextBackground": "#f26d781f",
|
||||
"diffEditor.diagonalFill": "#1e232b",
|
||||
"editorWidget.background": "#0f131a",
|
||||
"editorWidget.border": "#1e232b",
|
||||
"editorHoverWidget.background": "#0f131a",
|
||||
"editorHoverWidget.border": "#1e232b",
|
||||
"editorSuggestWidget.background": "#0f131a",
|
||||
"editorSuggestWidget.border": "#1e232b",
|
||||
"editorSuggestWidget.highlightForeground": "#e6b450",
|
||||
"editorSuggestWidget.selectedBackground": "#47526640",
|
||||
"debugExceptionWidget.border": "#1e232b",
|
||||
"debugExceptionWidget.background": "#0f131a",
|
||||
"editorMarkerNavigation.background": "#0f131a",
|
||||
"peekView.border": "#47526640",
|
||||
"peekViewTitle.background": "#47526640",
|
||||
"peekViewTitleDescription.foreground": "#565b66",
|
||||
"peekViewTitleLabel.foreground": "#bfbdb6",
|
||||
"peekViewEditor.background": "#0f131a",
|
||||
"peekViewEditor.matchHighlightBackground": "#6c598066",
|
||||
"peekViewEditor.matchHighlightBorder": "#5f4c7266",
|
||||
"peekViewResult.background": "#0f131a",
|
||||
"peekViewResult.fileForeground": "#bfbdb6",
|
||||
"peekViewResult.lineForeground": "#565b66",
|
||||
"peekViewResult.matchHighlightBackground": "#6c598066",
|
||||
"peekViewResult.selectionBackground": "#47526640",
|
||||
"panel.background": "#0b0e14",
|
||||
"panel.border": "#1e232b",
|
||||
"panelTitle.activeBorder": "#e6b450",
|
||||
"panelTitle.activeForeground": "#bfbdb6",
|
||||
"panelTitle.inactiveForeground": "#565b66",
|
||||
"statusBar.background": "#0b0e14",
|
||||
"statusBar.foreground": "#565b66",
|
||||
"statusBar.border": "#0b0e14",
|
||||
"statusBar.debuggingBackground": "#f29668",
|
||||
"statusBar.debuggingForeground": "#0d1017",
|
||||
"statusBar.noFolderBackground": "#0f131a",
|
||||
"statusBarItem.activeBackground": "#565b6633",
|
||||
"statusBarItem.hoverBackground": "#565b6633",
|
||||
"statusBarItem.prominentBackground": "#1e232b",
|
||||
"statusBarItem.prominentHoverBackground": "#00000030",
|
||||
"statusBarItem.remoteBackground": "#e6b450",
|
||||
"statusBarItem.remoteForeground": "#734d00",
|
||||
"titleBar.activeBackground": "#0b0e14",
|
||||
"titleBar.activeForeground": "#bfbdb6",
|
||||
"titleBar.inactiveBackground": "#0b0e14",
|
||||
"titleBar.inactiveForeground": "#565b66",
|
||||
"titleBar.border": "#0b0e14",
|
||||
"extensionButton.prominentForeground": "#734d00",
|
||||
"extensionButton.prominentBackground": "#e6b450",
|
||||
"extensionButton.prominentHoverBackground": "#e1af4b",
|
||||
"pickerGroup.border": "#1e232b",
|
||||
"pickerGroup.foreground": "#565b6680",
|
||||
"debugToolBar.background": "#0f131a",
|
||||
"debugIcon.breakpointForeground": "#f29668",
|
||||
"debugIcon.breakpointDisabledForeground": "#f2966880",
|
||||
"debugConsoleInputIcon.foreground": "#e6b450",
|
||||
"welcomePage.tileBackground": "#0b0e14",
|
||||
"welcomePage.tileShadow": "#00000080",
|
||||
"welcomePage.progress.background": "#131721",
|
||||
"welcomePage.buttonBackground": "#e6b45066",
|
||||
"walkThrough.embeddedEditorBackground": "#0f131a",
|
||||
"gitDecoration.modifiedResourceForeground": "#73b8ffb3",
|
||||
"gitDecoration.deletedResourceForeground": "#f26d78b3",
|
||||
"gitDecoration.untrackedResourceForeground": "#7fd962b3",
|
||||
"gitDecoration.ignoredResourceForeground": "#565b6680",
|
||||
"gitDecoration.conflictingResourceForeground": "",
|
||||
"gitDecoration.submoduleResourceForeground": "#d2a6ffb3",
|
||||
"settings.headerForeground": "#bfbdb6",
|
||||
"settings.modifiedItemIndicator": "#73b8ff",
|
||||
"keybindingLabel.background": "#565b661a",
|
||||
"keybindingLabel.foreground": "#bfbdb6",
|
||||
"keybindingLabel.border": "#bfbdb61a",
|
||||
"keybindingLabel.bottomBorder": "#bfbdb61a",
|
||||
"terminal.background": "#0b0e14",
|
||||
"terminal.foreground": "#bfbdb6",
|
||||
"terminal.ansiBlack": "#1e232b",
|
||||
"terminal.ansiRed": "#ea6c73",
|
||||
"terminal.ansiGreen": "#7fd962",
|
||||
"terminal.ansiYellow": "#f9af4f",
|
||||
"terminal.ansiBlue": "#53bdfa",
|
||||
"terminal.ansiMagenta": "#cda1fa",
|
||||
"terminal.ansiCyan": "#90e1c6",
|
||||
"terminal.ansiWhite": "#c7c7c7",
|
||||
"terminal.ansiBrightBlack": "#686868",
|
||||
"terminal.ansiBrightRed": "#f07178",
|
||||
"terminal.ansiBrightGreen": "#aad94c",
|
||||
"terminal.ansiBrightYellow": "#ffb454",
|
||||
"terminal.ansiBrightBlue": "#59c2ff",
|
||||
"terminal.ansiBrightMagenta": "#d2a6ff",
|
||||
"terminal.ansiBrightCyan": "#95e6cb",
|
||||
"terminal.ansiBrightWhite": "#ffffff"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"background": "#0b0e14",
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": [
|
||||
"string",
|
||||
"constant.other.symbol"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regular Expressions and Escape Characters",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": [
|
||||
"constant.numeric"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d2a6ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constants",
|
||||
"scope": [
|
||||
"constant.language"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d2a6ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable",
|
||||
"variable.parameter.function-call"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Member Variable",
|
||||
"scope": [
|
||||
"variable.member"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": [
|
||||
"variable.language"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": [
|
||||
"storage"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": [
|
||||
"keyword"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operators",
|
||||
"scope": [
|
||||
"keyword.operator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Separators like ; or ,",
|
||||
"scope": [
|
||||
"punctuation.separator",
|
||||
"punctuation.terminator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6b3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation",
|
||||
"scope": [
|
||||
"punctuation.section"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Accessor",
|
||||
"scope": [
|
||||
"punctuation.accessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript/TypeScript interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.section.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Interpolation text",
|
||||
"scope": [
|
||||
"meta.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Types fixes",
|
||||
"scope": [
|
||||
"source.java storage.type",
|
||||
"source.haskell storage.type",
|
||||
"source.c storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class type",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Lambda arrow",
|
||||
"scope": [
|
||||
"storage.type.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Java primitive variable types",
|
||||
"scope": [
|
||||
"source.java storage.type.primitive"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": [
|
||||
"entity.name.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function arguments",
|
||||
"scope": [
|
||||
"variable.parameter",
|
||||
"meta.parameter"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d2a6ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function call",
|
||||
"scope": [
|
||||
"variable.function",
|
||||
"variable.annotation",
|
||||
"meta.function-call.generic",
|
||||
"support.function.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": [
|
||||
"support.function",
|
||||
"support.macro"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Imports and packages",
|
||||
"scope": [
|
||||
"entity.name.import",
|
||||
"entity.name.package"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity name",
|
||||
"scope": [
|
||||
"entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag",
|
||||
"scope": [
|
||||
"entity.name.tag",
|
||||
"meta.tag.sgml"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JSX Component",
|
||||
"scope": [
|
||||
"support.class.component"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.end",
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": [
|
||||
"entity.other.attribute-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": [
|
||||
"support.constant"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class",
|
||||
"source.go storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Decorators/annotation",
|
||||
"scope": [
|
||||
"meta.decorator variable.other",
|
||||
"meta.decorator punctuation.decorator",
|
||||
"storage.type.annotation"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6b673"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": [
|
||||
"invalid"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d95757"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff.header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c594c5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby class methods",
|
||||
"scope": [
|
||||
"source.ruby variable.other.readwrite"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS tag names",
|
||||
"scope": [
|
||||
"source.css entity.name.tag",
|
||||
"source.sass entity.name.tag",
|
||||
"source.scss entity.name.tag",
|
||||
"source.less entity.name.tag",
|
||||
"source.stylus entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS browser prefix",
|
||||
"scope": [
|
||||
"source.css support.type",
|
||||
"source.sass support.type",
|
||||
"source.scss support.type",
|
||||
"source.less support.type",
|
||||
"source.stylus support.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS Properties",
|
||||
"scope": [
|
||||
"support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "normal",
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.find-in-files - match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Match Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Lines",
|
||||
"scope": [
|
||||
"entity.name.filename.find-in-files"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"message.error"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d95757"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"markup.heading entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup links",
|
||||
"scope": [
|
||||
"markup.underline.link",
|
||||
"string.other.link"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Italic",
|
||||
"scope": [
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold",
|
||||
"scope": [
|
||||
"markup.bold"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold/italic",
|
||||
"scope": [
|
||||
"markup.italic markup.bold",
|
||||
"markup.bold markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code",
|
||||
"scope": [
|
||||
"markup.raw"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb605"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code Inline",
|
||||
"scope": [
|
||||
"markup.raw.inline"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb60f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown Separator",
|
||||
"scope": [
|
||||
"meta.separator"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"background": "#bfbdb60f",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Blockquote",
|
||||
"scope": [
|
||||
"markup.quote"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup List Bullet",
|
||||
"scope": [
|
||||
"markup.list punctuation.definition.list.begin"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup added",
|
||||
"scope": [
|
||||
"markup.inserted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#7fd962"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup modified",
|
||||
"scope": [
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73b8ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup removed",
|
||||
"scope": [
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f26d78"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Strike",
|
||||
"scope": [
|
||||
"markup.strike"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6b673"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Table",
|
||||
"scope": [
|
||||
"markup.table"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb60f",
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Raw Inline",
|
||||
"scope": [
|
||||
"text.html.markdown markup.inline.raw"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Line Break",
|
||||
"scope": [
|
||||
"text.html.markdown meta.dummy.line-break"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#acb6bf8c",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Raw Block Fenced",
|
||||
"scope": [
|
||||
"punctuation.definition.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb6",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
}
|
||||
],
|
||||
"semanticHighlighting": true,
|
||||
"semanticTokenColors": {
|
||||
"parameter.label": "#bfbdb6"
|
||||
}
|
||||
}
|
||||
847
assets/themes/src/vscode/ayu/ayu-light.json
Normal file
@@ -0,0 +1,847 @@
|
||||
{
|
||||
"type": "light",
|
||||
"colors": {
|
||||
"focusBorder": "#ffaa33b3",
|
||||
"foreground": "#8a9199",
|
||||
"widget.shadow": "#00000026",
|
||||
"selection.background": "#035bd626",
|
||||
"icon.foreground": "#8a9199",
|
||||
"errorForeground": "#e65050",
|
||||
"descriptionForeground": "#8a9199",
|
||||
"textBlockQuote.background": "#f3f4f5",
|
||||
"textLink.foreground": "#ffaa33",
|
||||
"textLink.activeForeground": "#ffaa33",
|
||||
"textPreformat.foreground": "#5c6166",
|
||||
"button.background": "#ffaa33",
|
||||
"button.foreground": "#804a00",
|
||||
"button.hoverBackground": "#f9a52e",
|
||||
"button.secondaryBackground": "#8a919933",
|
||||
"button.secondaryForeground": "#5c6166",
|
||||
"button.secondaryHoverBackground": "#8a919980",
|
||||
"dropdown.background": "#fcfcfc",
|
||||
"dropdown.foreground": "#8a9199",
|
||||
"dropdown.border": "#8a919945",
|
||||
"input.background": "#fcfcfc",
|
||||
"input.border": "#8a919945",
|
||||
"input.foreground": "#5c6166",
|
||||
"input.placeholderForeground": "#8a919980",
|
||||
"inputOption.activeBorder": "#f4a0284d",
|
||||
"inputOption.activeBackground": "#ffaa3333",
|
||||
"inputOption.activeForeground": "#f4a028",
|
||||
"inputValidation.errorBackground": "#fcfcfc",
|
||||
"inputValidation.errorBorder": "#e65050",
|
||||
"inputValidation.infoBackground": "#f8f9fa",
|
||||
"inputValidation.infoBorder": "#55b4d4",
|
||||
"inputValidation.warningBackground": "#f8f9fa",
|
||||
"inputValidation.warningBorder": "#f2ae49",
|
||||
"scrollbar.shadow": "#6b7d8f00",
|
||||
"scrollbarSlider.background": "#8a919966",
|
||||
"scrollbarSlider.hoverBackground": "#8a919999",
|
||||
"scrollbarSlider.activeBackground": "#8a9199b3",
|
||||
"badge.background": "#ffaa3333",
|
||||
"badge.foreground": "#f4a028",
|
||||
"progressBar.background": "#ffaa33",
|
||||
"list.activeSelectionBackground": "#56728f1f",
|
||||
"list.activeSelectionForeground": "#5c6166",
|
||||
"list.focusBackground": "#56728f1f",
|
||||
"list.focusForeground": "#5c6166",
|
||||
"list.focusOutline": "#56728f1f",
|
||||
"list.highlightForeground": "#ffaa33",
|
||||
"list.deemphasizedForeground": "#e65050",
|
||||
"list.hoverBackground": "#56728f1f",
|
||||
"list.inactiveSelectionBackground": "#6b7d8f1f",
|
||||
"list.inactiveSelectionForeground": "#8a9199",
|
||||
"list.invalidItemForeground": "#8a91994d",
|
||||
"list.errorForeground": "#e65050",
|
||||
"tree.indentGuidesStroke": "#8a919959",
|
||||
"listFilterWidget.background": "#f3f4f5",
|
||||
"listFilterWidget.outline": "#ffaa33",
|
||||
"listFilterWidget.noMatchesOutline": "#e65050",
|
||||
"list.filterMatchBackground": "#ddcaef73",
|
||||
"list.filterMatchBorder": "#ecd9ff73",
|
||||
"activityBar.background": "#f8f9fa",
|
||||
"activityBar.foreground": "#8a9199cc",
|
||||
"activityBar.inactiveForeground": "#8a919999",
|
||||
"activityBar.border": "#f8f9fa",
|
||||
"activityBar.activeBorder": "#ffaa33",
|
||||
"activityBarBadge.background": "#ffaa33",
|
||||
"activityBarBadge.foreground": "#f8f9fa",
|
||||
"sideBar.background": "#f8f9fa",
|
||||
"sideBar.border": "#f8f9fa",
|
||||
"sideBarTitle.foreground": "#8a9199",
|
||||
"sideBarSectionHeader.background": "#f8f9fa",
|
||||
"sideBarSectionHeader.foreground": "#8a9199",
|
||||
"sideBarSectionHeader.border": "#f8f9fa",
|
||||
"minimap.background": "#f8f9fa",
|
||||
"minimap.selectionHighlight": "#035bd626",
|
||||
"minimap.errorHighlight": "#e65050",
|
||||
"minimap.findMatchHighlight": "#ecd9ff",
|
||||
"minimapGutter.addedBackground": "#6cbf43",
|
||||
"minimapGutter.modifiedBackground": "#478acc",
|
||||
"minimapGutter.deletedBackground": "#ff7383",
|
||||
"editorGroup.border": "#6b7d8f1f",
|
||||
"editorGroup.background": "#f3f4f5",
|
||||
"editorGroupHeader.noTabsBackground": "#f8f9fa",
|
||||
"editorGroupHeader.tabsBackground": "#f8f9fa",
|
||||
"editorGroupHeader.tabsBorder": "#f8f9fa",
|
||||
"tab.activeBackground": "#f8f9fa",
|
||||
"tab.activeForeground": "#5c6166",
|
||||
"tab.border": "#f8f9fa",
|
||||
"tab.activeBorder": "#ffaa33",
|
||||
"tab.unfocusedActiveBorder": "#8a9199",
|
||||
"tab.inactiveBackground": "#f8f9fa",
|
||||
"tab.inactiveForeground": "#8a9199",
|
||||
"tab.unfocusedActiveForeground": "#8a9199",
|
||||
"tab.unfocusedInactiveForeground": "#8a9199",
|
||||
"editor.background": "#f8f9fa",
|
||||
"editor.foreground": "#5c6166",
|
||||
"editorLineNumber.foreground": "#8a919966",
|
||||
"editorLineNumber.activeForeground": "#8a9199cc",
|
||||
"editorCursor.foreground": "#ffaa33",
|
||||
"editor.inactiveSelectionBackground": "#035bd612",
|
||||
"editor.selectionBackground": "#035bd626",
|
||||
"editor.selectionHighlightBackground": "#6cbf4326",
|
||||
"editor.selectionHighlightBorder": "#6cbf4300",
|
||||
"editor.wordHighlightBackground": "#478acc14",
|
||||
"editor.wordHighlightStrongBackground": "#6cbf4314",
|
||||
"editor.wordHighlightBorder": "#478acc80",
|
||||
"editor.wordHighlightStrongBorder": "#6cbf4380",
|
||||
"editor.findMatchBackground": "#ecd9ff",
|
||||
"editor.findMatchBorder": "#ecd9ff",
|
||||
"editor.findMatchHighlightBackground": "#ecd9ff73",
|
||||
"editor.findMatchHighlightBorder": "#ddcaef73",
|
||||
"editor.findRangeHighlightBackground": "#ecd9ff40",
|
||||
"editor.rangeHighlightBackground": "#ecd9ff33",
|
||||
"editor.lineHighlightBackground": "#8a91991a",
|
||||
"editorLink.activeForeground": "#ffaa33",
|
||||
"editorWhitespace.foreground": "#8a919966",
|
||||
"editorIndentGuide.background": "#8a91992e",
|
||||
"editorIndentGuide.activeBackground": "#8a919959",
|
||||
"editorRuler.foreground": "#8a91992e",
|
||||
"editorCodeLens.foreground": "#787b8099",
|
||||
"editorBracketMatch.background": "#8a91994d",
|
||||
"editorBracketMatch.border": "#8a91994d",
|
||||
"editor.snippetTabstopHighlightBackground": "#6cbf4333",
|
||||
"editorOverviewRuler.border": "#6b7d8f1f",
|
||||
"editorOverviewRuler.modifiedForeground": "#478acc",
|
||||
"editorOverviewRuler.addedForeground": "#6cbf43",
|
||||
"editorOverviewRuler.deletedForeground": "#ff7383",
|
||||
"editorOverviewRuler.errorForeground": "#e65050",
|
||||
"editorOverviewRuler.warningForeground": "#ffaa33",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#478acc66",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#6cbf4366",
|
||||
"editorOverviewRuler.findMatchForeground": "#ecd9ff",
|
||||
"editorError.foreground": "#e65050",
|
||||
"editorWarning.foreground": "#ffaa33",
|
||||
"editorGutter.modifiedBackground": "#478acccc",
|
||||
"editorGutter.addedBackground": "#6cbf43cc",
|
||||
"editorGutter.deletedBackground": "#ff7383cc",
|
||||
"diffEditor.insertedTextBackground": "#6cbf431f",
|
||||
"diffEditor.removedTextBackground": "#ff73831f",
|
||||
"diffEditor.diagonalFill": "#6b7d8f1f",
|
||||
"editorWidget.background": "#f3f4f5",
|
||||
"editorWidget.border": "#6b7d8f1f",
|
||||
"editorHoverWidget.background": "#f3f4f5",
|
||||
"editorHoverWidget.border": "#6b7d8f1f",
|
||||
"editorSuggestWidget.background": "#f3f4f5",
|
||||
"editorSuggestWidget.border": "#6b7d8f1f",
|
||||
"editorSuggestWidget.highlightForeground": "#ffaa33",
|
||||
"editorSuggestWidget.selectedBackground": "#56728f1f",
|
||||
"debugExceptionWidget.border": "#6b7d8f1f",
|
||||
"debugExceptionWidget.background": "#f3f4f5",
|
||||
"editorMarkerNavigation.background": "#f3f4f5",
|
||||
"peekView.border": "#56728f1f",
|
||||
"peekViewTitle.background": "#56728f1f",
|
||||
"peekViewTitleDescription.foreground": "#8a9199",
|
||||
"peekViewTitleLabel.foreground": "#5c6166",
|
||||
"peekViewEditor.background": "#f3f4f5",
|
||||
"peekViewEditor.matchHighlightBackground": "#ecd9ff73",
|
||||
"peekViewEditor.matchHighlightBorder": "#ddcaef73",
|
||||
"peekViewResult.background": "#f3f4f5",
|
||||
"peekViewResult.fileForeground": "#5c6166",
|
||||
"peekViewResult.lineForeground": "#8a9199",
|
||||
"peekViewResult.matchHighlightBackground": "#ecd9ff73",
|
||||
"peekViewResult.selectionBackground": "#56728f1f",
|
||||
"panel.background": "#f8f9fa",
|
||||
"panel.border": "#6b7d8f1f",
|
||||
"panelTitle.activeBorder": "#ffaa33",
|
||||
"panelTitle.activeForeground": "#5c6166",
|
||||
"panelTitle.inactiveForeground": "#8a9199",
|
||||
"statusBar.background": "#f8f9fa",
|
||||
"statusBar.foreground": "#8a9199",
|
||||
"statusBar.border": "#f8f9fa",
|
||||
"statusBar.debuggingBackground": "#ed9366",
|
||||
"statusBar.debuggingForeground": "#fcfcfc",
|
||||
"statusBar.noFolderBackground": "#f3f4f5",
|
||||
"statusBarItem.activeBackground": "#8a919933",
|
||||
"statusBarItem.hoverBackground": "#8a919933",
|
||||
"statusBarItem.prominentBackground": "#6b7d8f1f",
|
||||
"statusBarItem.prominentHoverBackground": "#00000030",
|
||||
"statusBarItem.remoteBackground": "#ffaa33",
|
||||
"statusBarItem.remoteForeground": "#804a00",
|
||||
"titleBar.activeBackground": "#f8f9fa",
|
||||
"titleBar.activeForeground": "#5c6166",
|
||||
"titleBar.inactiveBackground": "#f8f9fa",
|
||||
"titleBar.inactiveForeground": "#8a9199",
|
||||
"titleBar.border": "#f8f9fa",
|
||||
"extensionButton.prominentForeground": "#804a00",
|
||||
"extensionButton.prominentBackground": "#ffaa33",
|
||||
"extensionButton.prominentHoverBackground": "#f9a52e",
|
||||
"pickerGroup.border": "#6b7d8f1f",
|
||||
"pickerGroup.foreground": "#8a919980",
|
||||
"debugToolBar.background": "#f3f4f5",
|
||||
"debugIcon.breakpointForeground": "#ed9366",
|
||||
"debugIcon.breakpointDisabledForeground": "#ed936680",
|
||||
"debugConsoleInputIcon.foreground": "#ffaa33",
|
||||
"welcomePage.tileBackground": "#f8f9fa",
|
||||
"welcomePage.tileShadow": "#00000026",
|
||||
"welcomePage.progress.background": "#8a91991a",
|
||||
"welcomePage.buttonBackground": "#ffaa3366",
|
||||
"walkThrough.embeddedEditorBackground": "#f3f4f5",
|
||||
"gitDecoration.modifiedResourceForeground": "#478accb3",
|
||||
"gitDecoration.deletedResourceForeground": "#ff7383b3",
|
||||
"gitDecoration.untrackedResourceForeground": "#6cbf43b3",
|
||||
"gitDecoration.ignoredResourceForeground": "#8a919980",
|
||||
"gitDecoration.conflictingResourceForeground": "",
|
||||
"gitDecoration.submoduleResourceForeground": "#a37accb3",
|
||||
"settings.headerForeground": "#5c6166",
|
||||
"settings.modifiedItemIndicator": "#478acc",
|
||||
"keybindingLabel.background": "#8a91991a",
|
||||
"keybindingLabel.foreground": "#5c6166",
|
||||
"keybindingLabel.border": "#5c61661a",
|
||||
"keybindingLabel.bottomBorder": "#5c61661a",
|
||||
"terminal.background": "#f8f9fa",
|
||||
"terminal.foreground": "#5c6166",
|
||||
"terminal.ansiBlack": "#000000",
|
||||
"terminal.ansiRed": "#ea6c6d",
|
||||
"terminal.ansiGreen": "#6cbf43",
|
||||
"terminal.ansiYellow": "#eca944",
|
||||
"terminal.ansiBlue": "#3199e1",
|
||||
"terminal.ansiMagenta": "#9e75c7",
|
||||
"terminal.ansiCyan": "#46ba94",
|
||||
"terminal.ansiWhite": "#c7c7c7",
|
||||
"terminal.ansiBrightBlack": "#686868",
|
||||
"terminal.ansiBrightRed": "#f07171",
|
||||
"terminal.ansiBrightGreen": "#86b300",
|
||||
"terminal.ansiBrightYellow": "#f2ae49",
|
||||
"terminal.ansiBrightBlue": "#399ee6",
|
||||
"terminal.ansiBrightMagenta": "#a37acc",
|
||||
"terminal.ansiBrightCyan": "#4cbf99",
|
||||
"terminal.ansiBrightWhite": "#d1d1d1"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"background": "#f8f9fa",
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": [
|
||||
"string",
|
||||
"constant.other.symbol"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regular Expressions and Escape Characters",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#4cbf99"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": [
|
||||
"constant.numeric"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#a37acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constants",
|
||||
"scope": [
|
||||
"constant.language"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#a37acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable",
|
||||
"variable.parameter.function-call"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Member Variable",
|
||||
"scope": [
|
||||
"variable.member"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": [
|
||||
"variable.language"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": [
|
||||
"storage"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": [
|
||||
"keyword"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operators",
|
||||
"scope": [
|
||||
"keyword.operator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Separators like ; or ,",
|
||||
"scope": [
|
||||
"punctuation.separator",
|
||||
"punctuation.terminator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166b3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation",
|
||||
"scope": [
|
||||
"punctuation.section"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Accessor",
|
||||
"scope": [
|
||||
"punctuation.accessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript/TypeScript interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.section.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Interpolation text",
|
||||
"scope": [
|
||||
"meta.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Types fixes",
|
||||
"scope": [
|
||||
"source.java storage.type",
|
||||
"source.haskell storage.type",
|
||||
"source.c storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class type",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Lambda arrow",
|
||||
"scope": [
|
||||
"storage.type.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Java primitive variable types",
|
||||
"scope": [
|
||||
"source.java storage.type.primitive"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": [
|
||||
"entity.name.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function arguments",
|
||||
"scope": [
|
||||
"variable.parameter",
|
||||
"meta.parameter"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#a37acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function call",
|
||||
"scope": [
|
||||
"variable.function",
|
||||
"variable.annotation",
|
||||
"meta.function-call.generic",
|
||||
"support.function.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": [
|
||||
"support.function",
|
||||
"support.macro"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Imports and packages",
|
||||
"scope": [
|
||||
"entity.name.import",
|
||||
"entity.name.package"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity name",
|
||||
"scope": [
|
||||
"entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag",
|
||||
"scope": [
|
||||
"entity.name.tag",
|
||||
"meta.tag.sgml"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JSX Component",
|
||||
"scope": [
|
||||
"support.class.component"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.end",
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": [
|
||||
"entity.other.attribute-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": [
|
||||
"support.constant"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class",
|
||||
"source.go storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Decorators/annotation",
|
||||
"scope": [
|
||||
"meta.decorator variable.other",
|
||||
"meta.decorator punctuation.decorator",
|
||||
"storage.type.annotation"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6ba7e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": [
|
||||
"invalid"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e65050"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff.header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c594c5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby class methods",
|
||||
"scope": [
|
||||
"source.ruby variable.other.readwrite"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS tag names",
|
||||
"scope": [
|
||||
"source.css entity.name.tag",
|
||||
"source.sass entity.name.tag",
|
||||
"source.scss entity.name.tag",
|
||||
"source.less entity.name.tag",
|
||||
"source.stylus entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS browser prefix",
|
||||
"scope": [
|
||||
"source.css support.type",
|
||||
"source.sass support.type",
|
||||
"source.scss support.type",
|
||||
"source.less support.type",
|
||||
"source.stylus support.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS Properties",
|
||||
"scope": [
|
||||
"support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "normal",
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.find-in-files - match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Match Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Lines",
|
||||
"scope": [
|
||||
"entity.name.filename.find-in-files"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"message.error"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e65050"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"markup.heading entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup links",
|
||||
"scope": [
|
||||
"markup.underline.link",
|
||||
"string.other.link"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Italic",
|
||||
"scope": [
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold",
|
||||
"scope": [
|
||||
"markup.bold"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold/italic",
|
||||
"scope": [
|
||||
"markup.italic markup.bold",
|
||||
"markup.bold markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code",
|
||||
"scope": [
|
||||
"markup.raw"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c616605"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code Inline",
|
||||
"scope": [
|
||||
"markup.raw.inline"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c61660f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown Separator",
|
||||
"scope": [
|
||||
"meta.separator"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"background": "#5c61660f",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Blockquote",
|
||||
"scope": [
|
||||
"markup.quote"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#4cbf99",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup List Bullet",
|
||||
"scope": [
|
||||
"markup.list punctuation.definition.list.begin"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup added",
|
||||
"scope": [
|
||||
"markup.inserted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#6cbf43"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup modified",
|
||||
"scope": [
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#478acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup removed",
|
||||
"scope": [
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff7383"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Strike",
|
||||
"scope": [
|
||||
"markup.strike"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6ba7e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Table",
|
||||
"scope": [
|
||||
"markup.table"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c61660f",
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Raw Inline",
|
||||
"scope": [
|
||||
"text.html.markdown markup.inline.raw"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Line Break",
|
||||
"scope": [
|
||||
"text.html.markdown meta.dummy.line-break"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#787b8099",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Raw Block Fenced",
|
||||
"scope": [
|
||||
"punctuation.definition.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c6166",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
}
|
||||
],
|
||||
"semanticHighlighting": true,
|
||||
"semanticTokenColors": {
|
||||
"parameter.label": "#5c6166"
|
||||
}
|
||||
}
|
||||
847
assets/themes/src/vscode/ayu/ayu-mirage.json
Normal file
@@ -0,0 +1,847 @@
|
||||
{
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#ffcc66b3",
|
||||
"foreground": "#707a8c",
|
||||
"widget.shadow": "#12151cb3",
|
||||
"selection.background": "#409fff40",
|
||||
"icon.foreground": "#707a8c",
|
||||
"errorForeground": "#ff6666",
|
||||
"descriptionForeground": "#707a8c",
|
||||
"textBlockQuote.background": "#1c212b",
|
||||
"textLink.foreground": "#ffcc66",
|
||||
"textLink.activeForeground": "#ffcc66",
|
||||
"textPreformat.foreground": "#cccac2",
|
||||
"button.background": "#ffcc66",
|
||||
"button.foreground": "#805500",
|
||||
"button.hoverBackground": "#fac761",
|
||||
"button.secondaryBackground": "#707a8c33",
|
||||
"button.secondaryForeground": "#cccac2",
|
||||
"button.secondaryHoverBackground": "#707a8c80",
|
||||
"dropdown.background": "#242936",
|
||||
"dropdown.foreground": "#707a8c",
|
||||
"dropdown.border": "#707a8c45",
|
||||
"input.background": "#242936",
|
||||
"input.border": "#707a8c45",
|
||||
"input.foreground": "#cccac2",
|
||||
"input.placeholderForeground": "#707a8c80",
|
||||
"inputOption.activeBorder": "#ffcc664d",
|
||||
"inputOption.activeBackground": "#ffcc6633",
|
||||
"inputOption.activeForeground": "#ffcc66",
|
||||
"inputValidation.errorBackground": "#242936",
|
||||
"inputValidation.errorBorder": "#ff6666",
|
||||
"inputValidation.infoBackground": "#1f2430",
|
||||
"inputValidation.infoBorder": "#5ccfe6",
|
||||
"inputValidation.warningBackground": "#1f2430",
|
||||
"inputValidation.warningBorder": "#ffd173",
|
||||
"scrollbar.shadow": "#171b2400",
|
||||
"scrollbarSlider.background": "#707a8c66",
|
||||
"scrollbarSlider.hoverBackground": "#707a8c99",
|
||||
"scrollbarSlider.activeBackground": "#707a8cb3",
|
||||
"badge.background": "#ffcc6633",
|
||||
"badge.foreground": "#ffcc66",
|
||||
"progressBar.background": "#ffcc66",
|
||||
"list.activeSelectionBackground": "#63759926",
|
||||
"list.activeSelectionForeground": "#cccac2",
|
||||
"list.focusBackground": "#63759926",
|
||||
"list.focusForeground": "#cccac2",
|
||||
"list.focusOutline": "#63759926",
|
||||
"list.highlightForeground": "#ffcc66",
|
||||
"list.deemphasizedForeground": "#ff6666",
|
||||
"list.hoverBackground": "#63759926",
|
||||
"list.inactiveSelectionBackground": "#69758c1f",
|
||||
"list.inactiveSelectionForeground": "#707a8c",
|
||||
"list.invalidItemForeground": "#707a8c4d",
|
||||
"list.errorForeground": "#ff6666",
|
||||
"tree.indentGuidesStroke": "#8a919959",
|
||||
"listFilterWidget.background": "#1c212b",
|
||||
"listFilterWidget.outline": "#ffcc66",
|
||||
"listFilterWidget.noMatchesOutline": "#ff6666",
|
||||
"list.filterMatchBackground": "#5c467266",
|
||||
"list.filterMatchBorder": "#69538066",
|
||||
"activityBar.background": "#1f2430",
|
||||
"activityBar.foreground": "#707a8ccc",
|
||||
"activityBar.inactiveForeground": "#707a8c99",
|
||||
"activityBar.border": "#1f2430",
|
||||
"activityBar.activeBorder": "#ffcc66",
|
||||
"activityBarBadge.background": "#ffcc66",
|
||||
"activityBarBadge.foreground": "#805500",
|
||||
"sideBar.background": "#1f2430",
|
||||
"sideBar.border": "#1f2430",
|
||||
"sideBarTitle.foreground": "#707a8c",
|
||||
"sideBarSectionHeader.background": "#1f2430",
|
||||
"sideBarSectionHeader.foreground": "#707a8c",
|
||||
"sideBarSectionHeader.border": "#1f2430",
|
||||
"minimap.background": "#1f2430",
|
||||
"minimap.selectionHighlight": "#409fff40",
|
||||
"minimap.errorHighlight": "#ff6666",
|
||||
"minimap.findMatchHighlight": "#695380",
|
||||
"minimapGutter.addedBackground": "#87d96c",
|
||||
"minimapGutter.modifiedBackground": "#80bfff",
|
||||
"minimapGutter.deletedBackground": "#f27983",
|
||||
"editorGroup.border": "#171b24",
|
||||
"editorGroup.background": "#1c212b",
|
||||
"editorGroupHeader.noTabsBackground": "#1f2430",
|
||||
"editorGroupHeader.tabsBackground": "#1f2430",
|
||||
"editorGroupHeader.tabsBorder": "#1f2430",
|
||||
"tab.activeBackground": "#1f2430",
|
||||
"tab.activeForeground": "#cccac2",
|
||||
"tab.border": "#1f2430",
|
||||
"tab.activeBorder": "#ffcc66",
|
||||
"tab.unfocusedActiveBorder": "#707a8c",
|
||||
"tab.inactiveBackground": "#1f2430",
|
||||
"tab.inactiveForeground": "#707a8c",
|
||||
"tab.unfocusedActiveForeground": "#707a8c",
|
||||
"tab.unfocusedInactiveForeground": "#707a8c",
|
||||
"editor.background": "#1f2430",
|
||||
"editor.foreground": "#cccac2",
|
||||
"editorLineNumber.foreground": "#8a919966",
|
||||
"editorLineNumber.activeForeground": "#8a9199cc",
|
||||
"editorCursor.foreground": "#ffcc66",
|
||||
"editor.inactiveSelectionBackground": "#409fff21",
|
||||
"editor.selectionBackground": "#409fff40",
|
||||
"editor.selectionHighlightBackground": "#87d96c26",
|
||||
"editor.selectionHighlightBorder": "#87d96c00",
|
||||
"editor.wordHighlightBackground": "#80bfff14",
|
||||
"editor.wordHighlightStrongBackground": "#87d96c14",
|
||||
"editor.wordHighlightBorder": "#80bfff80",
|
||||
"editor.wordHighlightStrongBorder": "#87d96c80",
|
||||
"editor.findMatchBackground": "#695380",
|
||||
"editor.findMatchBorder": "#695380",
|
||||
"editor.findMatchHighlightBackground": "#69538066",
|
||||
"editor.findMatchHighlightBorder": "#5c467266",
|
||||
"editor.findRangeHighlightBackground": "#69538040",
|
||||
"editor.rangeHighlightBackground": "#69538033",
|
||||
"editor.lineHighlightBackground": "#1a1f29",
|
||||
"editorLink.activeForeground": "#ffcc66",
|
||||
"editorWhitespace.foreground": "#8a919966",
|
||||
"editorIndentGuide.background": "#8a91992e",
|
||||
"editorIndentGuide.activeBackground": "#8a919959",
|
||||
"editorRuler.foreground": "#8a91992e",
|
||||
"editorCodeLens.foreground": "#b8cfe680",
|
||||
"editorBracketMatch.background": "#8a91994d",
|
||||
"editorBracketMatch.border": "#8a91994d",
|
||||
"editor.snippetTabstopHighlightBackground": "#87d96c33",
|
||||
"editorOverviewRuler.border": "#171b24",
|
||||
"editorOverviewRuler.modifiedForeground": "#80bfff",
|
||||
"editorOverviewRuler.addedForeground": "#87d96c",
|
||||
"editorOverviewRuler.deletedForeground": "#f27983",
|
||||
"editorOverviewRuler.errorForeground": "#ff6666",
|
||||
"editorOverviewRuler.warningForeground": "#ffcc66",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#80bfff66",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#87d96c66",
|
||||
"editorOverviewRuler.findMatchForeground": "#695380",
|
||||
"editorError.foreground": "#ff6666",
|
||||
"editorWarning.foreground": "#ffcc66",
|
||||
"editorGutter.modifiedBackground": "#80bfffcc",
|
||||
"editorGutter.addedBackground": "#87d96ccc",
|
||||
"editorGutter.deletedBackground": "#f27983cc",
|
||||
"diffEditor.insertedTextBackground": "#87d96c1f",
|
||||
"diffEditor.removedTextBackground": "#f279831f",
|
||||
"diffEditor.diagonalFill": "#171b24",
|
||||
"editorWidget.background": "#1c212b",
|
||||
"editorWidget.border": "#171b24",
|
||||
"editorHoverWidget.background": "#1c212b",
|
||||
"editorHoverWidget.border": "#171b24",
|
||||
"editorSuggestWidget.background": "#1c212b",
|
||||
"editorSuggestWidget.border": "#171b24",
|
||||
"editorSuggestWidget.highlightForeground": "#ffcc66",
|
||||
"editorSuggestWidget.selectedBackground": "#63759926",
|
||||
"debugExceptionWidget.border": "#171b24",
|
||||
"debugExceptionWidget.background": "#1c212b",
|
||||
"editorMarkerNavigation.background": "#1c212b",
|
||||
"peekView.border": "#63759926",
|
||||
"peekViewTitle.background": "#63759926",
|
||||
"peekViewTitleDescription.foreground": "#707a8c",
|
||||
"peekViewTitleLabel.foreground": "#cccac2",
|
||||
"peekViewEditor.background": "#1c212b",
|
||||
"peekViewEditor.matchHighlightBackground": "#69538066",
|
||||
"peekViewEditor.matchHighlightBorder": "#5c467266",
|
||||
"peekViewResult.background": "#1c212b",
|
||||
"peekViewResult.fileForeground": "#cccac2",
|
||||
"peekViewResult.lineForeground": "#707a8c",
|
||||
"peekViewResult.matchHighlightBackground": "#69538066",
|
||||
"peekViewResult.selectionBackground": "#63759926",
|
||||
"panel.background": "#1f2430",
|
||||
"panel.border": "#171b24",
|
||||
"panelTitle.activeBorder": "#ffcc66",
|
||||
"panelTitle.activeForeground": "#cccac2",
|
||||
"panelTitle.inactiveForeground": "#707a8c",
|
||||
"statusBar.background": "#1f2430",
|
||||
"statusBar.foreground": "#707a8c",
|
||||
"statusBar.border": "#1f2430",
|
||||
"statusBar.debuggingBackground": "#f29e74",
|
||||
"statusBar.debuggingForeground": "#242936",
|
||||
"statusBar.noFolderBackground": "#1c212b",
|
||||
"statusBarItem.activeBackground": "#707a8c33",
|
||||
"statusBarItem.hoverBackground": "#707a8c33",
|
||||
"statusBarItem.prominentBackground": "#171b24",
|
||||
"statusBarItem.prominentHoverBackground": "#00000030",
|
||||
"statusBarItem.remoteBackground": "#ffcc66",
|
||||
"statusBarItem.remoteForeground": "#805500",
|
||||
"titleBar.activeBackground": "#1f2430",
|
||||
"titleBar.activeForeground": "#cccac2",
|
||||
"titleBar.inactiveBackground": "#1f2430",
|
||||
"titleBar.inactiveForeground": "#707a8c",
|
||||
"titleBar.border": "#1f2430",
|
||||
"extensionButton.prominentForeground": "#805500",
|
||||
"extensionButton.prominentBackground": "#ffcc66",
|
||||
"extensionButton.prominentHoverBackground": "#fac761",
|
||||
"pickerGroup.border": "#171b24",
|
||||
"pickerGroup.foreground": "#707a8c80",
|
||||
"debugToolBar.background": "#1c212b",
|
||||
"debugIcon.breakpointForeground": "#f29e74",
|
||||
"debugIcon.breakpointDisabledForeground": "#f29e7480",
|
||||
"debugConsoleInputIcon.foreground": "#ffcc66",
|
||||
"welcomePage.tileBackground": "#1f2430",
|
||||
"welcomePage.tileShadow": "#12151cb3",
|
||||
"welcomePage.progress.background": "#1a1f29",
|
||||
"welcomePage.buttonBackground": "#ffcc6666",
|
||||
"walkThrough.embeddedEditorBackground": "#1c212b",
|
||||
"gitDecoration.modifiedResourceForeground": "#80bfffb3",
|
||||
"gitDecoration.deletedResourceForeground": "#f27983b3",
|
||||
"gitDecoration.untrackedResourceForeground": "#87d96cb3",
|
||||
"gitDecoration.ignoredResourceForeground": "#707a8c80",
|
||||
"gitDecoration.conflictingResourceForeground": "",
|
||||
"gitDecoration.submoduleResourceForeground": "#dfbfffb3",
|
||||
"settings.headerForeground": "#cccac2",
|
||||
"settings.modifiedItemIndicator": "#80bfff",
|
||||
"keybindingLabel.background": "#707a8c1a",
|
||||
"keybindingLabel.foreground": "#cccac2",
|
||||
"keybindingLabel.border": "#cccac21a",
|
||||
"keybindingLabel.bottomBorder": "#cccac21a",
|
||||
"terminal.background": "#1f2430",
|
||||
"terminal.foreground": "#cccac2",
|
||||
"terminal.ansiBlack": "#171b24",
|
||||
"terminal.ansiRed": "#ed8274",
|
||||
"terminal.ansiGreen": "#87d96c",
|
||||
"terminal.ansiYellow": "#facc6e",
|
||||
"terminal.ansiBlue": "#6dcbfa",
|
||||
"terminal.ansiMagenta": "#dabafa",
|
||||
"terminal.ansiCyan": "#90e1c6",
|
||||
"terminal.ansiWhite": "#c7c7c7",
|
||||
"terminal.ansiBrightBlack": "#686868",
|
||||
"terminal.ansiBrightRed": "#f28779",
|
||||
"terminal.ansiBrightGreen": "#d5ff80",
|
||||
"terminal.ansiBrightYellow": "#ffd173",
|
||||
"terminal.ansiBrightBlue": "#73d0ff",
|
||||
"terminal.ansiBrightMagenta": "#dfbfff",
|
||||
"terminal.ansiBrightCyan": "#95e6cb",
|
||||
"terminal.ansiBrightWhite": "#ffffff"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"background": "#1f2430",
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": [
|
||||
"string",
|
||||
"constant.other.symbol"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regular Expressions and Escape Characters",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": [
|
||||
"constant.numeric"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#dfbfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constants",
|
||||
"scope": [
|
||||
"constant.language"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#dfbfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable",
|
||||
"variable.parameter.function-call"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Member Variable",
|
||||
"scope": [
|
||||
"variable.member"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": [
|
||||
"variable.language"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": [
|
||||
"storage"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": [
|
||||
"keyword"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operators",
|
||||
"scope": [
|
||||
"keyword.operator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Separators like ; or ,",
|
||||
"scope": [
|
||||
"punctuation.separator",
|
||||
"punctuation.terminator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2b3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation",
|
||||
"scope": [
|
||||
"punctuation.section"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Accessor",
|
||||
"scope": [
|
||||
"punctuation.accessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript/TypeScript interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.section.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Interpolation text",
|
||||
"scope": [
|
||||
"meta.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Types fixes",
|
||||
"scope": [
|
||||
"source.java storage.type",
|
||||
"source.haskell storage.type",
|
||||
"source.c storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class type",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Lambda arrow",
|
||||
"scope": [
|
||||
"storage.type.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Java primitive variable types",
|
||||
"scope": [
|
||||
"source.java storage.type.primitive"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": [
|
||||
"entity.name.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function arguments",
|
||||
"scope": [
|
||||
"variable.parameter",
|
||||
"meta.parameter"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#dfbfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function call",
|
||||
"scope": [
|
||||
"variable.function",
|
||||
"variable.annotation",
|
||||
"meta.function-call.generic",
|
||||
"support.function.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": [
|
||||
"support.function",
|
||||
"support.macro"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Imports and packages",
|
||||
"scope": [
|
||||
"entity.name.import",
|
||||
"entity.name.package"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity name",
|
||||
"scope": [
|
||||
"entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag",
|
||||
"scope": [
|
||||
"entity.name.tag",
|
||||
"meta.tag.sgml"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JSX Component",
|
||||
"scope": [
|
||||
"support.class.component"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.end",
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": [
|
||||
"entity.other.attribute-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": [
|
||||
"support.constant"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class",
|
||||
"source.go storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Decorators/annotation",
|
||||
"scope": [
|
||||
"meta.decorator variable.other",
|
||||
"meta.decorator punctuation.decorator",
|
||||
"storage.type.annotation"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffdfb3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": [
|
||||
"invalid"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff6666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff.header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c594c5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby class methods",
|
||||
"scope": [
|
||||
"source.ruby variable.other.readwrite"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS tag names",
|
||||
"scope": [
|
||||
"source.css entity.name.tag",
|
||||
"source.sass entity.name.tag",
|
||||
"source.scss entity.name.tag",
|
||||
"source.less entity.name.tag",
|
||||
"source.stylus entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS browser prefix",
|
||||
"scope": [
|
||||
"source.css support.type",
|
||||
"source.sass support.type",
|
||||
"source.scss support.type",
|
||||
"source.less support.type",
|
||||
"source.stylus support.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS Properties",
|
||||
"scope": [
|
||||
"support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "normal",
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.find-in-files - match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Match Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Lines",
|
||||
"scope": [
|
||||
"entity.name.filename.find-in-files"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"message.error"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff6666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"markup.heading entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup links",
|
||||
"scope": [
|
||||
"markup.underline.link",
|
||||
"string.other.link"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Italic",
|
||||
"scope": [
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold",
|
||||
"scope": [
|
||||
"markup.bold"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold/italic",
|
||||
"scope": [
|
||||
"markup.italic markup.bold",
|
||||
"markup.bold markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code",
|
||||
"scope": [
|
||||
"markup.raw"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac205"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code Inline",
|
||||
"scope": [
|
||||
"markup.raw.inline"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac20f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown Separator",
|
||||
"scope": [
|
||||
"meta.separator"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"background": "#cccac20f",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Blockquote",
|
||||
"scope": [
|
||||
"markup.quote"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup List Bullet",
|
||||
"scope": [
|
||||
"markup.list punctuation.definition.list.begin"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup added",
|
||||
"scope": [
|
||||
"markup.inserted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#87d96c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup modified",
|
||||
"scope": [
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#80bfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup removed",
|
||||
"scope": [
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f27983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Strike",
|
||||
"scope": [
|
||||
"markup.strike"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffdfb3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Table",
|
||||
"scope": [
|
||||
"markup.table"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac20f",
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Raw Inline",
|
||||
"scope": [
|
||||
"text.html.markdown markup.inline.raw"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Line Break",
|
||||
"scope": [
|
||||
"text.html.markdown meta.dummy.line-break"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#b8cfe680",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Raw Block Fenced",
|
||||
"scope": [
|
||||
"punctuation.definition.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac2",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
}
|
||||
],
|
||||
"semanticHighlighting": true,
|
||||
"semanticTokenColors": {
|
||||
"parameter.label": "#cccac2"
|
||||
}
|
||||
}
|
||||
21
assets/themes/src/vscode/ayu/family.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Ayu",
|
||||
"author": "dempfi (Ike Ku)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Ayu Light",
|
||||
"file_name": "ayu-light.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Ayu Mirage",
|
||||
"file_name": "ayu-mirage.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Ayu Dark",
|
||||
"file_name": "ayu-dark.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
21
assets/themes/src/vscode/dracula/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Dracula Theme
|
||||
|
||||
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.
|
||||
1067
assets/themes/src/vscode/dracula/dracula.json
Normal file
11
assets/themes/src/vscode/dracula/family.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Dracula",
|
||||
"author": "Zeno Rocha",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Dracula",
|
||||
"file_name": "dracula.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
1
assets/themes/src/vscode/gruvbox/LICENSE
Normal file
@@ -0,0 +1 @@
|
||||
MIT/X11
|
||||
36
assets/themes/src/vscode/gruvbox/family.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"name": "Gruvbox",
|
||||
"author": "morhetz",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Gruvbox Dark Hard",
|
||||
"file_name": "gruvbox-dark-hard.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Dark Medium",
|
||||
"file_name": "gruvbox-dark-medium.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Dark Soft",
|
||||
"file_name": "gruvbox-dark-soft.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Light Hard",
|
||||
"file_name": "gruvbox-light-hard.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Light Medium",
|
||||
"file_name": "gruvbox-light-medium.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Light Soft",
|
||||
"file_name": "gruvbox-light-soft.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
1096
assets/themes/src/vscode/gruvbox/gruvbox-dark-hard.json
Normal file
1096
assets/themes/src/vscode/gruvbox/gruvbox-dark-medium.json
Normal file
1096
assets/themes/src/vscode/gruvbox/gruvbox-dark-soft.json
Normal file
1095
assets/themes/src/vscode/gruvbox/gruvbox-light-hard.json
Normal file
1095
assets/themes/src/vscode/gruvbox/gruvbox-light-medium.json
Normal file
1095
assets/themes/src/vscode/gruvbox/gruvbox-light-soft.json
Normal file
21
assets/themes/src/vscode/night-owl/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Sarah Drasner
|
||||
|
||||
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.
|
||||
16
assets/themes/src/vscode/night-owl/family.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "Night Owl",
|
||||
"author": "Sarah Drasner (sdras)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Night Owl",
|
||||
"file_name": "night-owl.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Night Owl Light",
|
||||
"file_name": "night-owl-light.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
1723
assets/themes/src/vscode/night-owl/night-owl-light.json
Normal file
1832
assets/themes/src/vscode/night-owl/night-owl.json
Normal file
9
assets/themes/src/vscode/noctis/LICENSE
Normal file
@@ -0,0 +1,9 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Liviu Schera
|
||||
|
||||
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.
|
||||
1113
assets/themes/src/vscode/noctis/azureus.json
Normal file
1112
assets/themes/src/vscode/noctis/bordo.json
Normal file
61
assets/themes/src/vscode/noctis/family.json
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"name": "Noctis",
|
||||
"author": "Liviu Schera (liviuschera)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Noctis Azureus",
|
||||
"file_name": "azureus.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Bordo",
|
||||
"file_name": "bordo.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctus Hibernus",
|
||||
"file_name": "hibernus.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Lilac",
|
||||
"file_name": "lilac.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Lux",
|
||||
"file_name": "lux.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Minimus",
|
||||
"file_name": "minimus.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis",
|
||||
"file_name": "noctis.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Obscuro",
|
||||
"file_name": "obscuro.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Sereno",
|
||||
"file_name": "obscuro.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Uva",
|
||||
"file_name": "uva.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Viola",
|
||||
"file_name": "viola.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
1108
assets/themes/src/vscode/noctis/hibernus.json
Normal file
1113
assets/themes/src/vscode/noctis/lilac.json
Normal file
1108
assets/themes/src/vscode/noctis/lux.json
Normal file
1113
assets/themes/src/vscode/noctis/minimus.json
Normal file
1108
assets/themes/src/vscode/noctis/noctis.json
Normal file
1108
assets/themes/src/vscode/noctis/obscuro.json
Normal file
1108
assets/themes/src/vscode/noctis/sereno.json
Normal file
1112
assets/themes/src/vscode/noctis/uva.json
Normal file
1112
assets/themes/src/vscode/noctis/viola.json
Normal file
21
assets/themes/src/vscode/nord/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
|
||||
|
||||
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.
|
||||
11
assets/themes/src/vscode/nord/family.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Nord",
|
||||
"author": "Sven Greb (svengreb)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Nord",
|
||||
"file_name": "nord.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
1368
assets/themes/src/vscode/nord/nord.json
Normal file
7
assets/themes/src/vscode/palenight/LICENSE
Normal file
@@ -0,0 +1,7 @@
|
||||
Copyright (c) 2017-present Olaolu Olawuyi
|
||||
|
||||
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.
|
||||
21
assets/themes/src/vscode/palenight/family.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Palenight",
|
||||
"author": "Olaolu Olawuyi (whizkydee)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Palenight",
|
||||
"file_name": "palenight.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Palenight Operator",
|
||||
"file_name": "palenight-operator.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Palenight (Mild Contrast)",
|
||||
"file_name": "palenight-mild-contrast.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
1569
assets/themes/src/vscode/palenight/palenight-mild-contrast.json
Normal file
1640
assets/themes/src/vscode/palenight/palenight-operator.json
Normal file
1569
assets/themes/src/vscode/palenight/palenight.json
Normal file
21
assets/themes/src/vscode/rose-pine/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Rosé Pine
|
||||
|
||||
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.
|
||||
21
assets/themes/src/vscode/rose-pine/family.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Rose Pine",
|
||||
"author": "Rosé Pine",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Rose Pine",
|
||||
"file_name": "rose-pine.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Rose Pine Moon",
|
||||
"file_name": "rose-pine-moon.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Rose Pine Dawn",
|
||||
"file_name": "rose-pine-dawn.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
680
assets/themes/src/vscode/rose-pine/rose-pine-dawn.json
Normal file
@@ -0,0 +1,680 @@
|
||||
{
|
||||
"name": "Rosé Pine Dawn",
|
||||
"type": "light",
|
||||
"colors": {
|
||||
"activityBar.activeBorder": "#575279",
|
||||
"activityBar.background": "#faf4ed",
|
||||
"activityBar.dropBorder": "#f2e9e1",
|
||||
"activityBar.foreground": "#575279",
|
||||
"activityBar.inactiveForeground": "#797593",
|
||||
"activityBarBadge.background": "#d7827e",
|
||||
"activityBarBadge.foreground": "#faf4ed",
|
||||
"badge.background": "#d7827e",
|
||||
"badge.foreground": "#faf4ed",
|
||||
"banner.background": "#fffaf3",
|
||||
"banner.foreground": "#575279",
|
||||
"banner.iconForeground": "#797593",
|
||||
"breadcrumb.activeSelectionForeground": "#d7827e",
|
||||
"breadcrumb.background": "#faf4ed",
|
||||
"breadcrumb.focusForeground": "#797593",
|
||||
"breadcrumb.foreground": "#9893a5",
|
||||
"breadcrumbPicker.background": "#fffaf3",
|
||||
"button.background": "#d7827e",
|
||||
"button.foreground": "#faf4ed",
|
||||
"button.hoverBackground": "#d7827ee6",
|
||||
"button.secondaryBackground": "#fffaf3",
|
||||
"button.secondaryForeground": "#575279",
|
||||
"button.secondaryHoverBackground": "#f2e9e1",
|
||||
"charts.blue": "#56949f",
|
||||
"charts.foreground": "#575279",
|
||||
"charts.green": "#286983",
|
||||
"charts.lines": "#797593",
|
||||
"charts.orange": "#d7827e",
|
||||
"charts.purple": "#907aa9",
|
||||
"charts.red": "#b4637a",
|
||||
"charts.yellow": "#ea9d34",
|
||||
"checkbox.background": "#fffaf3",
|
||||
"checkbox.border": "#6e6a8614",
|
||||
"checkbox.foreground": "#575279",
|
||||
"debugExceptionWidget.background": "#fffaf3",
|
||||
"debugExceptionWidget.border": "#6e6a8614",
|
||||
"debugIcon.breakpointCurrentStackframeForeground": "#797593",
|
||||
"debugIcon.breakpointDisabledForeground": "#797593",
|
||||
"debugIcon.breakpointForeground": "#797593",
|
||||
"debugIcon.breakpointStackframeForeground": "#797593",
|
||||
"debugIcon.breakpointUnverifiedForeground": "#797593",
|
||||
"debugIcon.continueForeground": "#797593",
|
||||
"debugIcon.disconnectForeground": "#797593",
|
||||
"debugIcon.pauseForeground": "#797593",
|
||||
"debugIcon.restartForeground": "#797593",
|
||||
"debugIcon.startForeground": "#797593",
|
||||
"debugIcon.stepBackForeground": "#797593",
|
||||
"debugIcon.stepIntoForeground": "#797593",
|
||||
"debugIcon.stepOutForeground": "#797593",
|
||||
"debugIcon.stepOverForeground": "#797593",
|
||||
"debugIcon.stopForeground": "#b4637a",
|
||||
"debugToolBar.background": "#fffaf3",
|
||||
"debugToolBar.border": "#f2e9e1",
|
||||
"descriptionForeground": "#797593",
|
||||
"diffEditor.border": "#f2e9e1",
|
||||
"diffEditor.diagonalFill": "#6e6a8626",
|
||||
"diffEditor.insertedLineBackground": "#56949f26",
|
||||
"diffEditor.insertedTextBackground": "#56949f26",
|
||||
"diffEditor.removedLineBackground": "#b4637a26",
|
||||
"diffEditor.removedTextBackground": "#b4637a26",
|
||||
"diffEditorOverview.insertedForeground": "#56949f80",
|
||||
"diffEditorOverview.removedForeground": "#b4637a80",
|
||||
"dropdown.background": "#fffaf3",
|
||||
"dropdown.border": "#6e6a8614",
|
||||
"dropdown.foreground": "#575279",
|
||||
"dropdown.listBackground": "#fffaf3",
|
||||
"editor.background": "#faf4ed",
|
||||
"editor.findMatchBackground": "#6e6a8626",
|
||||
"editor.findMatchHighlightBackground": "#6e6a8626",
|
||||
"editor.findRangeHighlightBackground": "#6e6a8626",
|
||||
"editor.findRangeHighlightBorder": "#000000",
|
||||
"editor.focusedStackFrameHighlightBackground": "#6e6a8614",
|
||||
"editor.foldBackground": "#fffaf3",
|
||||
"editor.foreground": "#575279",
|
||||
"editor.hoverHighlightBackground": "#000000",
|
||||
"editor.inactiveSelectionBackground": "#6e6a860d",
|
||||
"editor.inlineValuesBackground": "#000000",
|
||||
"editor.inlineValuesForeground": "#797593",
|
||||
"editor.lineHighlightBackground": "#6e6a860d",
|
||||
"editor.lineHighlightBorder": "#000000",
|
||||
"editor.linkedEditingBackground": "#fffaf3",
|
||||
"editor.rangeHighlightBackground": "#6e6a860d",
|
||||
"editor.selectionBackground": "#6e6a8614",
|
||||
"editor.selectionForeground": "#575279",
|
||||
"editor.selectionHighlightBackground": "#6e6a8614",
|
||||
"editor.selectionHighlightBorder": "#faf4ed",
|
||||
"editor.snippetFinalTabstopHighlightBackground": "#6e6a8614",
|
||||
"editor.snippetFinalTabstopHighlightBorder": "#fffaf3",
|
||||
"editor.snippetTabstopHighlightBackground": "#6e6a8614",
|
||||
"editor.snippetTabstopHighlightBorder": "#fffaf3",
|
||||
"editor.stackFrameHighlightBackground": "#6e6a8614",
|
||||
"editor.symbolHighlightBackground": "#6e6a8614",
|
||||
"editor.symbolHighlightBorder": "#000000",
|
||||
"editor.wordHighlightBackground": "#6e6a8614",
|
||||
"editor.wordHighlightBorder": "#000000",
|
||||
"editor.wordHighlightStrongBackground": "#6e6a8614",
|
||||
"editor.wordHighlightStrongBorder": "#6e6a8614",
|
||||
"editorBracketHighlight.foreground1": "#b4637a80",
|
||||
"editorBracketHighlight.foreground2": "#28698380",
|
||||
"editorBracketHighlight.foreground3": "#ea9d3480",
|
||||
"editorBracketHighlight.foreground4": "#56949f80",
|
||||
"editorBracketHighlight.foreground5": "#d7827e80",
|
||||
"editorBracketHighlight.foreground6": "#907aa980",
|
||||
"editorBracketMatch.background": "#000000",
|
||||
"editorBracketMatch.border": "#797593",
|
||||
"editorBracketPairGuide.activeBackground1": "#286983",
|
||||
"editorBracketPairGuide.activeBackground2": "#d7827e",
|
||||
"editorBracketPairGuide.activeBackground3": "#907aa9",
|
||||
"editorBracketPairGuide.activeBackground4": "#56949f",
|
||||
"editorBracketPairGuide.activeBackground5": "#ea9d34",
|
||||
"editorBracketPairGuide.activeBackground6": "#b4637a",
|
||||
"editorBracketPairGuide.background1": "#28698380",
|
||||
"editorBracketPairGuide.background2": "#d7827e80",
|
||||
"editorBracketPairGuide.background3": "#907aa980",
|
||||
"editorBracketPairGuide.background4": "#56949f80",
|
||||
"editorBracketPairGuide.background5": "#ea9d3480",
|
||||
"editorBracketPairGuide.background6": "#b4637a80",
|
||||
"editorCodeLens.foreground": "#d7827e",
|
||||
"editorCursor.background": "#575279",
|
||||
"editorCursor.foreground": "#9893a5",
|
||||
"editorError.border": "#000000",
|
||||
"editorError.foreground": "#b4637a",
|
||||
"editorGhostText.foreground": "#797593",
|
||||
"editorGroup.border": "#000000",
|
||||
"editorGroup.dropBackground": "#fffaf3",
|
||||
"editorGroup.emptyBackground": "#000000",
|
||||
"editorGroup.focusedEmptyBorder": "#000000",
|
||||
"editorGroupHeader.noTabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBorder": "#000000",
|
||||
"editorGutter.addedBackground": "#56949f",
|
||||
"editorGutter.background": "#faf4ed",
|
||||
"editorGutter.commentRangeForeground": "#797593",
|
||||
"editorGutter.deletedBackground": "#b4637a",
|
||||
"editorGutter.foldingControlForeground": "#907aa9",
|
||||
"editorGutter.modifiedBackground": "#d7827e",
|
||||
"editorHint.border": "#000000",
|
||||
"editorHint.foreground": "#797593",
|
||||
"editorHoverWidget.background": "#fffaf3",
|
||||
"editorHoverWidget.border": "#9893a580",
|
||||
"editorHoverWidget.foreground": "#797593",
|
||||
"editorHoverWidget.highlightForeground": "#575279",
|
||||
"editorHoverWidget.statusBarBackground": "#000000",
|
||||
"editorIndentGuide.activeBackground": "#9893a5",
|
||||
"editorIndentGuide.background": "#6e6a8626",
|
||||
"editorInfo.border": "#f2e9e1",
|
||||
"editorInfo.foreground": "#56949f",
|
||||
"editorInlayHint.background": "#f2e9e1",
|
||||
"editorInlayHint.foreground": "#797593",
|
||||
"editorInlayHint.parameterBackground": "#f2e9e1",
|
||||
"editorInlayHint.parameterForeground": "#907aa9",
|
||||
"editorInlayHint.typeBackground": "#f2e9e1",
|
||||
"editorInlayHint.typeForeground": "#56949f",
|
||||
"editorLightBulb.foreground": "#286983",
|
||||
"editorLightBulbAutoFix.foreground": "#d7827e",
|
||||
"editorLineNumber.activeForeground": "#575279",
|
||||
"editorLineNumber.foreground": "#797593",
|
||||
"editorLink.activeForeground": "#d7827e",
|
||||
"editorMarkerNavigation.background": "#fffaf3",
|
||||
"editorMarkerNavigationError.background": "#fffaf3",
|
||||
"editorMarkerNavigationInfo.background": "#fffaf3",
|
||||
"editorMarkerNavigationWarning.background": "#fffaf3",
|
||||
"editorOverviewRuler.addedForeground": "#56949f80",
|
||||
"editorOverviewRuler.background": "#faf4ed",
|
||||
"editorOverviewRuler.border": "#6e6a8626",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#797593",
|
||||
"editorOverviewRuler.commonContentForeground": "#6e6a860d",
|
||||
"editorOverviewRuler.currentContentForeground": "#6e6a8614",
|
||||
"editorOverviewRuler.deletedForeground": "#b4637a80",
|
||||
"editorOverviewRuler.errorForeground": "#b4637a80",
|
||||
"editorOverviewRuler.findMatchForeground": "#6e6a8626",
|
||||
"editorOverviewRuler.incomingContentForeground": "#907aa980",
|
||||
"editorOverviewRuler.infoForeground": "#56949f80",
|
||||
"editorOverviewRuler.modifiedForeground": "#d7827e80",
|
||||
"editorOverviewRuler.rangeHighlightForeground": "#6e6a8626",
|
||||
"editorOverviewRuler.selectionHighlightForeground": "#6e6a8626",
|
||||
"editorOverviewRuler.warningForeground": "#ea9d3480",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#6e6a8614",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8626",
|
||||
"editorPane.background": "#000000",
|
||||
"editorRuler.foreground": "#6e6a8626",
|
||||
"editorSuggestWidget.background": "#fffaf3",
|
||||
"editorSuggestWidget.border": "#000000",
|
||||
"editorSuggestWidget.focusHighlightForeground": "#d7827e",
|
||||
"editorSuggestWidget.foreground": "#797593",
|
||||
"editorSuggestWidget.highlightForeground": "#d7827e",
|
||||
"editorSuggestWidget.selectedBackground": "#6e6a8614",
|
||||
"editorSuggestWidget.selectedForeground": "#575279",
|
||||
"editorSuggestWidget.selectedIconForeground": "#575279",
|
||||
"editorUnnecessaryCode.border": "#000000",
|
||||
"editorUnnecessaryCode.opacity": "#57527980",
|
||||
"editorWarning.border": "#000000",
|
||||
"editorWarning.foreground": "#ea9d34",
|
||||
"editorWhitespace.foreground": "#9893a5",
|
||||
"editorWidget.background": "#fffaf3",
|
||||
"editorWidget.border": "#f2e9e1",
|
||||
"editorWidget.foreground": "#797593",
|
||||
"editorWidget.resizeBorder": "#9893a5",
|
||||
"errorForeground": "#b4637a",
|
||||
"extensionBadge.remoteBackground": "#907aa9",
|
||||
"extensionBadge.remoteForeground": "#faf4ed",
|
||||
"extensionButton.prominentBackground": "#d7827e",
|
||||
"extensionButton.prominentForeground": "#faf4ed",
|
||||
"extensionButton.prominentHoverBackground": "#d7827ee6",
|
||||
"extensionIcon.preReleaseForeground": "#286983",
|
||||
"extensionIcon.starForeground": "#d7827e",
|
||||
"extensionIcon.verifiedForeground": "#907aa9",
|
||||
"focusBorder": "#6e6a8614",
|
||||
"foreground": "#575279",
|
||||
"gitDecoration.addedResourceForeground": "#56949f",
|
||||
"gitDecoration.conflictingResourceForeground": "#b4637a",
|
||||
"gitDecoration.deletedResourceForeground": "#797593",
|
||||
"gitDecoration.ignoredResourceForeground": "#9893a5",
|
||||
"gitDecoration.modifiedResourceForeground": "#d7827e",
|
||||
"gitDecoration.renamedResourceForeground": "#286983",
|
||||
"gitDecoration.stageDeletedResourceForeground": "#b4637a",
|
||||
"gitDecoration.stageModifiedResourceForeground": "#907aa9",
|
||||
"gitDecoration.submoduleResourceForeground": "#ea9d34",
|
||||
"gitDecoration.untrackedResourceForeground": "#ea9d34",
|
||||
"icon.foreground": "#797593",
|
||||
"input.background": "#f2e9e180",
|
||||
"input.border": "#6e6a8614",
|
||||
"input.foreground": "#575279",
|
||||
"input.placeholderForeground": "#797593",
|
||||
"inputOption.activeBackground": "#d7827e26",
|
||||
"inputOption.activeForeground": "#d7827e",
|
||||
"inputValidation.errorBackground": "#fffaf3",
|
||||
"inputValidation.errorBorder": "#6e6a8626",
|
||||
"inputValidation.errorForeground": "#b4637a",
|
||||
"inputValidation.infoBackground": "#fffaf3",
|
||||
"inputValidation.infoBorder": "#6e6a8626",
|
||||
"inputValidation.infoForeground": "#56949f",
|
||||
"inputValidation.warningBackground": "#fffaf3",
|
||||
"inputValidation.warningBorder": "#6e6a8626",
|
||||
"inputValidation.warningForeground": "#56949f80",
|
||||
"keybindingLabel.background": "#f2e9e1",
|
||||
"keybindingLabel.border": "#6e6a8626",
|
||||
"keybindingLabel.bottomBorder": "#6e6a8626",
|
||||
"keybindingLabel.foreground": "#907aa9",
|
||||
"keybindingTable.headerBackground": "#f2e9e1",
|
||||
"keybindingTable.rowsBackground": "#fffaf3",
|
||||
"list.activeSelectionBackground": "#6e6a8614",
|
||||
"list.activeSelectionForeground": "#575279",
|
||||
"list.deemphasizedForeground": "#797593",
|
||||
"list.dropBackground": "#fffaf3",
|
||||
"list.errorForeground": "#b4637a",
|
||||
"list.filterMatchBackground": "#fffaf3",
|
||||
"list.filterMatchBorder": "#d7827e",
|
||||
"list.focusBackground": "#6e6a8626",
|
||||
"list.focusForeground": "#575279",
|
||||
"list.focusOutline": "#6e6a8614",
|
||||
"list.highlightForeground": "#d7827e",
|
||||
"list.hoverBackground": "#6e6a860d",
|
||||
"list.hoverForeground": "#575279",
|
||||
"list.inactiveFocusBackground": "#6e6a860d",
|
||||
"list.inactiveSelectionBackground": "#fffaf3",
|
||||
"list.inactiveSelectionForeground": "#575279",
|
||||
"list.invalidItemForeground": "#b4637a",
|
||||
"list.warningForeground": "#ea9d34",
|
||||
"listFilterWidget.background": "#fffaf3",
|
||||
"listFilterWidget.noMatchesOutline": "#b4637a",
|
||||
"listFilterWidget.outline": "#f2e9e1",
|
||||
"menu.background": "#fffaf3",
|
||||
"menu.border": "#6e6a860d",
|
||||
"menu.foreground": "#575279",
|
||||
"menu.selectionBackground": "#6e6a8614",
|
||||
"menu.selectionBorder": "#f2e9e1",
|
||||
"menu.selectionForeground": "#575279",
|
||||
"menu.separatorBackground": "#6e6a8626",
|
||||
"menubar.selectionBackground": "#6e6a8614",
|
||||
"menubar.selectionBorder": "#6e6a860d",
|
||||
"menubar.selectionForeground": "#575279",
|
||||
"merge.border": "#f2e9e1",
|
||||
"merge.commonContentBackground": "#6e6a8614",
|
||||
"merge.commonHeaderBackground": "#6e6a8614",
|
||||
"merge.currentContentBackground": "#ea9d3480",
|
||||
"merge.currentHeaderBackground": "#ea9d3480",
|
||||
"merge.incomingContentBackground": "#56949f80",
|
||||
"merge.incomingHeaderBackground": "#56949f80",
|
||||
"minimap.background": "#fffaf3",
|
||||
"minimap.errorHighlight": "#b4637a80",
|
||||
"minimap.findMatchHighlight": "#6e6a8614",
|
||||
"minimap.selectionHighlight": "#6e6a8614",
|
||||
"minimap.warningHighlight": "#ea9d3480",
|
||||
"minimapGutter.addedBackground": "#56949f",
|
||||
"minimapGutter.deletedBackground": "#b4637a",
|
||||
"minimapGutter.modifiedBackground": "#d7827e",
|
||||
"minimapSlider.activeBackground": "#6e6a8626",
|
||||
"minimapSlider.background": "#6e6a8614",
|
||||
"minimapSlider.hoverBackground": "#6e6a8614",
|
||||
"notebook.cellBorderColor": "#56949f80",
|
||||
"notebook.cellEditorBackground": "#fffaf3",
|
||||
"notebook.cellHoverBackground": "#f2e9e180",
|
||||
"notebook.focusedCellBackground": "#6e6a860d",
|
||||
"notebook.focusedCellBorder": "#56949f",
|
||||
"notebook.outputContainerBackgroundColor": "#6e6a860d",
|
||||
"notificationCenter.border": "#6e6a8614",
|
||||
"notificationCenterHeader.background": "#fffaf3",
|
||||
"notificationCenterHeader.foreground": "#797593",
|
||||
"notificationLink.foreground": "#907aa9",
|
||||
"notifications.background": "#fffaf3",
|
||||
"notifications.border": "#6e6a8614",
|
||||
"notifications.foreground": "#575279",
|
||||
"notificationsErrorIcon.foreground": "#b4637a",
|
||||
"notificationsInfoIcon.foreground": "#56949f",
|
||||
"notificationsWarningIcon.foreground": "#ea9d34",
|
||||
"notificationToast.border": "#6e6a8614",
|
||||
"panel.background": "#fffaf3",
|
||||
"panel.border": "#000000",
|
||||
"panel.dropBorder": "#f2e9e1",
|
||||
"panelInput.border": "#fffaf3",
|
||||
"panelSection.dropBackground": "#6e6a8614",
|
||||
"panelSectionHeader.background": "#fffaf3",
|
||||
"panelSectionHeader.foreground": "#575279",
|
||||
"panelTitle.activeBorder": "#6e6a8626",
|
||||
"panelTitle.activeForeground": "#575279",
|
||||
"panelTitle.inactiveForeground": "#797593",
|
||||
"peekView.border": "#f2e9e1",
|
||||
"peekViewEditor.background": "#fffaf3",
|
||||
"peekViewEditor.matchHighlightBackground": "#6e6a8626",
|
||||
"peekViewResult.background": "#fffaf3",
|
||||
"peekViewResult.fileForeground": "#797593",
|
||||
"peekViewResult.lineForeground": "#797593",
|
||||
"peekViewResult.matchHighlightBackground": "#6e6a8626",
|
||||
"peekViewResult.selectionBackground": "#6e6a8614",
|
||||
"peekViewResult.selectionForeground": "#575279",
|
||||
"peekViewTitle.background": "#f2e9e1",
|
||||
"peekViewTitleDescription.foreground": "#797593",
|
||||
"pickerGroup.border": "#6e6a8626",
|
||||
"pickerGroup.foreground": "#907aa9",
|
||||
"ports.iconRunningProcessForeground": "#d7827e",
|
||||
"problemsErrorIcon.foreground": "#b4637a",
|
||||
"problemsInfoIcon.foreground": "#56949f",
|
||||
"problemsWarningIcon.foreground": "#ea9d34",
|
||||
"progressBar.background": "#d7827e",
|
||||
"quickInput.background": "#fffaf3",
|
||||
"quickInput.foreground": "#797593",
|
||||
"quickInputList.focusBackground": "#6e6a8614",
|
||||
"quickInputList.focusForeground": "#575279",
|
||||
"quickInputList.focusIconForeground": "#575279",
|
||||
"scrollbar.shadow": "#fffaf34d",
|
||||
"scrollbarSlider.activeBackground": "#28698380",
|
||||
"scrollbarSlider.background": "#6e6a8614",
|
||||
"scrollbarSlider.hoverBackground": "#6e6a8626",
|
||||
"searchEditor.findMatchBackground": "#6e6a8614",
|
||||
"selection.background": "#6e6a8626",
|
||||
"settings.focusedRowBackground": "#fffaf3",
|
||||
"settings.headerForeground": "#575279",
|
||||
"settings.modifiedItemIndicator": "#d7827e",
|
||||
"settings.focusedRowBorder": "#6e6a8614",
|
||||
"settings.rowHoverBackground": "#fffaf3",
|
||||
"sideBar.background": "#faf4ed",
|
||||
"sideBar.dropBackground": "#fffaf3",
|
||||
"sideBar.foreground": "#797593",
|
||||
"sideBarSectionHeader.background": "#000000",
|
||||
"sideBarSectionHeader.border": "#6e6a8614",
|
||||
"statusBar.background": "#faf4ed",
|
||||
"statusBar.debuggingBackground": "#907aa9",
|
||||
"statusBar.debuggingForeground": "#faf4ed",
|
||||
"statusBar.foreground": "#797593",
|
||||
"statusBar.noFolderBackground": "#faf4ed",
|
||||
"statusBar.noFolderForeground": "#797593",
|
||||
"statusBarItem.activeBackground": "#6e6a8626",
|
||||
"statusBarItem.hoverBackground": "#6e6a8614",
|
||||
"statusBarItem.prominentBackground": "#f2e9e1",
|
||||
"statusBarItem.prominentForeground": "#575279",
|
||||
"statusBarItem.prominentHoverBackground": "#6e6a8614",
|
||||
"statusBarItem.remoteBackground": "#faf4ed",
|
||||
"statusBarItem.remoteForeground": "#ea9d34",
|
||||
"statusBarItem.errorBackground": "#faf4ed",
|
||||
"statusBarItem.errorForeground": "#b4637a",
|
||||
"symbolIcon.arrayForeground": "#797593",
|
||||
"symbolIcon.classForeground": "#797593",
|
||||
"symbolIcon.colorForeground": "#797593",
|
||||
"symbolIcon.constantForeground": "#797593",
|
||||
"symbolIcon.constructorForeground": "#797593",
|
||||
"symbolIcon.enumeratorForeground": "#797593",
|
||||
"symbolIcon.enumeratorMemberForeground": "#797593",
|
||||
"symbolIcon.eventForeground": "#797593",
|
||||
"symbolIcon.fieldForeground": "#797593",
|
||||
"symbolIcon.fileForeground": "#797593",
|
||||
"symbolIcon.folderForeground": "#797593",
|
||||
"symbolIcon.functionForeground": "#797593",
|
||||
"symbolIcon.interfaceForeground": "#797593",
|
||||
"symbolIcon.keyForeground": "#797593",
|
||||
"symbolIcon.keywordForeground": "#797593",
|
||||
"symbolIcon.methodForeground": "#797593",
|
||||
"symbolIcon.moduleForeground": "#797593",
|
||||
"symbolIcon.namespaceForeground": "#797593",
|
||||
"symbolIcon.nullForeground": "#797593",
|
||||
"symbolIcon.numberForeground": "#797593",
|
||||
"symbolIcon.objectForeground": "#797593",
|
||||
"symbolIcon.operatorForeground": "#797593",
|
||||
"symbolIcon.packageForeground": "#797593",
|
||||
"symbolIcon.propertyForeground": "#797593",
|
||||
"symbolIcon.referenceForeground": "#797593",
|
||||
"symbolIcon.snippetForeground": "#797593",
|
||||
"symbolIcon.stringForeground": "#797593",
|
||||
"symbolIcon.structForeground": "#797593",
|
||||
"symbolIcon.textForeground": "#797593",
|
||||
"symbolIcon.typeParameterForeground": "#797593",
|
||||
"symbolIcon.unitForeground": "#797593",
|
||||
"symbolIcon.variableForeground": "#797593",
|
||||
"tab.activeBackground": "#6e6a860d",
|
||||
"tab.activeForeground": "#575279",
|
||||
"tab.activeModifiedBorder": "#56949f",
|
||||
"tab.border": "#000000",
|
||||
"tab.hoverBackground": "#6e6a8614",
|
||||
"tab.inactiveBackground": "#000000",
|
||||
"tab.inactiveForeground": "#797593",
|
||||
"tab.inactiveModifiedBorder": "#56949f80",
|
||||
"tab.lastPinnedBorder": "#9893a5",
|
||||
"tab.unfocusedActiveBackground": "#000000",
|
||||
"tab.unfocusedHoverBackground": "#000000",
|
||||
"tab.unfocusedInactiveBackground": "#000000",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#56949f80",
|
||||
"terminal.ansiBlack": "#f2e9e1",
|
||||
"terminal.ansiBlue": "#56949f",
|
||||
"terminal.ansiBrightBlack": "#797593",
|
||||
"terminal.ansiBrightBlue": "#56949f",
|
||||
"terminal.ansiBrightCyan": "#d7827e",
|
||||
"terminal.ansiBrightGreen": "#286983",
|
||||
"terminal.ansiBrightMagenta": "#907aa9",
|
||||
"terminal.ansiBrightRed": "#b4637a",
|
||||
"terminal.ansiBrightWhite": "#575279",
|
||||
"terminal.ansiBrightYellow": "#ea9d34",
|
||||
"terminal.ansiCyan": "#d7827e",
|
||||
"terminal.ansiGreen": "#286983",
|
||||
"terminal.ansiMagenta": "#907aa9",
|
||||
"terminal.ansiRed": "#b4637a",
|
||||
"terminal.ansiWhite": "#575279",
|
||||
"terminal.ansiYellow": "#ea9d34",
|
||||
"terminal.dropBackground": "#6e6a8614",
|
||||
"terminal.foreground": "#575279",
|
||||
"terminal.selectionBackground": "#6e6a8614",
|
||||
"terminal.tab.activeBorder": "#575279",
|
||||
"terminalCursor.background": "#575279",
|
||||
"terminalCursor.foreground": "#9893a5",
|
||||
"textBlockQuote.background": "#fffaf3",
|
||||
"textBlockQuote.border": "#6e6a8614",
|
||||
"textCodeBlock.background": "#fffaf3",
|
||||
"textLink.activeForeground": "#907aa9e6",
|
||||
"textLink.foreground": "#907aa9",
|
||||
"textPreformat.foreground": "#ea9d34",
|
||||
"textSeparator.foreground": "#797593",
|
||||
"titleBar.activeBackground": "#faf4ed",
|
||||
"titleBar.activeForeground": "#797593",
|
||||
"titleBar.inactiveBackground": "#fffaf3",
|
||||
"titleBar.inactiveForeground": "#797593",
|
||||
"toolbar.activeBackground": "#6e6a8626",
|
||||
"toolbar.hoverBackground": "#6e6a8614",
|
||||
"tree.indentGuidesStroke": "#797593",
|
||||
"walkThrough.embeddedEditorBackground": "#faf4ed",
|
||||
"welcomePage.background": "#faf4ed",
|
||||
"welcomePage.buttonBackground": "#fffaf3",
|
||||
"welcomePage.buttonHoverBackground": "#f2e9e1",
|
||||
"widget.shadow": "#fffaf34d",
|
||||
"window.activeBorder": "#fffaf3",
|
||||
"window.inactiveBorder": "#fffaf3"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"scope": ["comment"],
|
||||
"settings": {
|
||||
"foreground": "#9893a5",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant.numeric", "constant.language"],
|
||||
"settings": {
|
||||
"foreground": "#d7827e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.name"],
|
||||
"settings": {
|
||||
"foreground": "#d7827e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"entity.name.section",
|
||||
"entity.name.tag",
|
||||
"entity.name.namespace",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
|
||||
"settings": {
|
||||
"foreground": "#907aa9",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid"],
|
||||
"settings": {
|
||||
"foreground": "#b4637a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid.deprecated"],
|
||||
"settings": {
|
||||
"foreground": "#797593"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.inserted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.deleted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#b4637a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.bold.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.italic.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.diff.range"],
|
||||
"settings": {
|
||||
"foreground": "#907aa9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.tag", "meta.brace"],
|
||||
"settings": {
|
||||
"foreground": "#575279"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.import", "meta.export"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.directive.vue",
|
||||
"settings": {
|
||||
"foreground": "#907aa9",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-name.css",
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-value.css",
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.tag.other.html",
|
||||
"settings": {
|
||||
"foreground": "#797593"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation"],
|
||||
"settings": {
|
||||
"foreground": "#797593"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.accessor"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.string"],
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#9893a5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["string"],
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support"],
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.constant"],
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.function"],
|
||||
"settings": {
|
||||
"foreground": "#b4637a",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable"],
|
||||
"settings": {
|
||||
"foreground": "#d7827e",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"variable.other",
|
||||
"variable.language",
|
||||
"variable.function",
|
||||
"variable.argument"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#575279"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#907aa9"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
680
assets/themes/src/vscode/rose-pine/rose-pine-moon.json
Normal file
@@ -0,0 +1,680 @@
|
||||
{
|
||||
"name": "Rosé Pine Moon",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"activityBar.activeBorder": "#e0def4",
|
||||
"activityBar.background": "#232136",
|
||||
"activityBar.dropBorder": "#393552",
|
||||
"activityBar.foreground": "#e0def4",
|
||||
"activityBar.inactiveForeground": "#908caa",
|
||||
"activityBarBadge.background": "#ea9a97",
|
||||
"activityBarBadge.foreground": "#232136",
|
||||
"badge.background": "#ea9a97",
|
||||
"badge.foreground": "#232136",
|
||||
"banner.background": "#2a273f",
|
||||
"banner.foreground": "#e0def4",
|
||||
"banner.iconForeground": "#908caa",
|
||||
"breadcrumb.activeSelectionForeground": "#ea9a97",
|
||||
"breadcrumb.background": "#232136",
|
||||
"breadcrumb.focusForeground": "#908caa",
|
||||
"breadcrumb.foreground": "#6e6a86",
|
||||
"breadcrumbPicker.background": "#2a273f",
|
||||
"button.background": "#ea9a97",
|
||||
"button.foreground": "#232136",
|
||||
"button.hoverBackground": "#ea9a97e6",
|
||||
"button.secondaryBackground": "#2a273f",
|
||||
"button.secondaryForeground": "#e0def4",
|
||||
"button.secondaryHoverBackground": "#393552",
|
||||
"charts.blue": "#9ccfd8",
|
||||
"charts.foreground": "#e0def4",
|
||||
"charts.green": "#3e8fb0",
|
||||
"charts.lines": "#908caa",
|
||||
"charts.orange": "#ea9a97",
|
||||
"charts.purple": "#c4a7e7",
|
||||
"charts.red": "#eb6f92",
|
||||
"charts.yellow": "#f6c177",
|
||||
"checkbox.background": "#2a273f",
|
||||
"checkbox.border": "#817c9c26",
|
||||
"checkbox.foreground": "#e0def4",
|
||||
"debugExceptionWidget.background": "#2a273f",
|
||||
"debugExceptionWidget.border": "#817c9c26",
|
||||
"debugIcon.breakpointCurrentStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointDisabledForeground": "#908caa",
|
||||
"debugIcon.breakpointForeground": "#908caa",
|
||||
"debugIcon.breakpointStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointUnverifiedForeground": "#908caa",
|
||||
"debugIcon.continueForeground": "#908caa",
|
||||
"debugIcon.disconnectForeground": "#908caa",
|
||||
"debugIcon.pauseForeground": "#908caa",
|
||||
"debugIcon.restartForeground": "#908caa",
|
||||
"debugIcon.startForeground": "#908caa",
|
||||
"debugIcon.stepBackForeground": "#908caa",
|
||||
"debugIcon.stepIntoForeground": "#908caa",
|
||||
"debugIcon.stepOutForeground": "#908caa",
|
||||
"debugIcon.stepOverForeground": "#908caa",
|
||||
"debugIcon.stopForeground": "#eb6f92",
|
||||
"debugToolBar.background": "#2a273f",
|
||||
"debugToolBar.border": "#393552",
|
||||
"descriptionForeground": "#908caa",
|
||||
"diffEditor.border": "#393552",
|
||||
"diffEditor.diagonalFill": "#817c9c4d",
|
||||
"diffEditor.insertedLineBackground": "#9ccfd826",
|
||||
"diffEditor.insertedTextBackground": "#9ccfd826",
|
||||
"diffEditor.removedLineBackground": "#eb6f9226",
|
||||
"diffEditor.removedTextBackground": "#eb6f9226",
|
||||
"diffEditorOverview.insertedForeground": "#9ccfd880",
|
||||
"diffEditorOverview.removedForeground": "#eb6f9280",
|
||||
"dropdown.background": "#2a273f",
|
||||
"dropdown.border": "#817c9c26",
|
||||
"dropdown.foreground": "#e0def4",
|
||||
"dropdown.listBackground": "#2a273f",
|
||||
"editor.background": "#232136",
|
||||
"editor.findMatchBackground": "#817c9c4d",
|
||||
"editor.findMatchHighlightBackground": "#817c9c4d",
|
||||
"editor.findRangeHighlightBackground": "#817c9c4d",
|
||||
"editor.findRangeHighlightBorder": "#000000",
|
||||
"editor.focusedStackFrameHighlightBackground": "#817c9c26",
|
||||
"editor.foldBackground": "#2a273f",
|
||||
"editor.foreground": "#e0def4",
|
||||
"editor.hoverHighlightBackground": "#000000",
|
||||
"editor.inactiveSelectionBackground": "#817c9c14",
|
||||
"editor.inlineValuesBackground": "#000000",
|
||||
"editor.inlineValuesForeground": "#908caa",
|
||||
"editor.lineHighlightBackground": "#817c9c14",
|
||||
"editor.lineHighlightBorder": "#000000",
|
||||
"editor.linkedEditingBackground": "#2a273f",
|
||||
"editor.rangeHighlightBackground": "#817c9c14",
|
||||
"editor.selectionBackground": "#817c9c26",
|
||||
"editor.selectionForeground": "#e0def4",
|
||||
"editor.selectionHighlightBackground": "#817c9c26",
|
||||
"editor.selectionHighlightBorder": "#232136",
|
||||
"editor.snippetFinalTabstopHighlightBackground": "#817c9c26",
|
||||
"editor.snippetFinalTabstopHighlightBorder": "#2a273f",
|
||||
"editor.snippetTabstopHighlightBackground": "#817c9c26",
|
||||
"editor.snippetTabstopHighlightBorder": "#2a273f",
|
||||
"editor.stackFrameHighlightBackground": "#817c9c26",
|
||||
"editor.symbolHighlightBackground": "#817c9c26",
|
||||
"editor.symbolHighlightBorder": "#000000",
|
||||
"editor.wordHighlightBackground": "#817c9c26",
|
||||
"editor.wordHighlightBorder": "#000000",
|
||||
"editor.wordHighlightStrongBackground": "#817c9c26",
|
||||
"editor.wordHighlightStrongBorder": "#817c9c26",
|
||||
"editorBracketHighlight.foreground1": "#eb6f9280",
|
||||
"editorBracketHighlight.foreground2": "#3e8fb080",
|
||||
"editorBracketHighlight.foreground3": "#f6c17780",
|
||||
"editorBracketHighlight.foreground4": "#9ccfd880",
|
||||
"editorBracketHighlight.foreground5": "#ea9a9780",
|
||||
"editorBracketHighlight.foreground6": "#c4a7e780",
|
||||
"editorBracketMatch.background": "#000000",
|
||||
"editorBracketMatch.border": "#908caa",
|
||||
"editorBracketPairGuide.activeBackground1": "#3e8fb0",
|
||||
"editorBracketPairGuide.activeBackground2": "#ea9a97",
|
||||
"editorBracketPairGuide.activeBackground3": "#c4a7e7",
|
||||
"editorBracketPairGuide.activeBackground4": "#9ccfd8",
|
||||
"editorBracketPairGuide.activeBackground5": "#f6c177",
|
||||
"editorBracketPairGuide.activeBackground6": "#eb6f92",
|
||||
"editorBracketPairGuide.background1": "#3e8fb080",
|
||||
"editorBracketPairGuide.background2": "#ea9a9780",
|
||||
"editorBracketPairGuide.background3": "#c4a7e780",
|
||||
"editorBracketPairGuide.background4": "#9ccfd880",
|
||||
"editorBracketPairGuide.background5": "#f6c17780",
|
||||
"editorBracketPairGuide.background6": "#eb6f9280",
|
||||
"editorCodeLens.foreground": "#ea9a97",
|
||||
"editorCursor.background": "#e0def4",
|
||||
"editorCursor.foreground": "#6e6a86",
|
||||
"editorError.border": "#000000",
|
||||
"editorError.foreground": "#eb6f92",
|
||||
"editorGhostText.foreground": "#908caa",
|
||||
"editorGroup.border": "#000000",
|
||||
"editorGroup.dropBackground": "#2a273f",
|
||||
"editorGroup.emptyBackground": "#000000",
|
||||
"editorGroup.focusedEmptyBorder": "#000000",
|
||||
"editorGroupHeader.noTabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBorder": "#000000",
|
||||
"editorGutter.addedBackground": "#9ccfd8",
|
||||
"editorGutter.background": "#232136",
|
||||
"editorGutter.commentRangeForeground": "#908caa",
|
||||
"editorGutter.deletedBackground": "#eb6f92",
|
||||
"editorGutter.foldingControlForeground": "#c4a7e7",
|
||||
"editorGutter.modifiedBackground": "#ea9a97",
|
||||
"editorHint.border": "#000000",
|
||||
"editorHint.foreground": "#908caa",
|
||||
"editorHoverWidget.background": "#2a273f",
|
||||
"editorHoverWidget.border": "#6e6a8680",
|
||||
"editorHoverWidget.foreground": "#908caa",
|
||||
"editorHoverWidget.highlightForeground": "#e0def4",
|
||||
"editorHoverWidget.statusBarBackground": "#000000",
|
||||
"editorIndentGuide.activeBackground": "#6e6a86",
|
||||
"editorIndentGuide.background": "#817c9c4d",
|
||||
"editorInfo.border": "#393552",
|
||||
"editorInfo.foreground": "#9ccfd8",
|
||||
"editorInlayHint.background": "#393552",
|
||||
"editorInlayHint.foreground": "#908caa",
|
||||
"editorInlayHint.parameterBackground": "#393552",
|
||||
"editorInlayHint.parameterForeground": "#c4a7e7",
|
||||
"editorInlayHint.typeBackground": "#393552",
|
||||
"editorInlayHint.typeForeground": "#9ccfd8",
|
||||
"editorLightBulb.foreground": "#3e8fb0",
|
||||
"editorLightBulbAutoFix.foreground": "#ea9a97",
|
||||
"editorLineNumber.activeForeground": "#e0def4",
|
||||
"editorLineNumber.foreground": "#908caa",
|
||||
"editorLink.activeForeground": "#ea9a97",
|
||||
"editorMarkerNavigation.background": "#2a273f",
|
||||
"editorMarkerNavigationError.background": "#2a273f",
|
||||
"editorMarkerNavigationInfo.background": "#2a273f",
|
||||
"editorMarkerNavigationWarning.background": "#2a273f",
|
||||
"editorOverviewRuler.addedForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.background": "#232136",
|
||||
"editorOverviewRuler.border": "#817c9c4d",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#908caa",
|
||||
"editorOverviewRuler.commonContentForeground": "#817c9c14",
|
||||
"editorOverviewRuler.currentContentForeground": "#817c9c26",
|
||||
"editorOverviewRuler.deletedForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.errorForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.findMatchForeground": "#817c9c4d",
|
||||
"editorOverviewRuler.incomingContentForeground": "#c4a7e780",
|
||||
"editorOverviewRuler.infoForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.modifiedForeground": "#ea9a9780",
|
||||
"editorOverviewRuler.rangeHighlightForeground": "#817c9c4d",
|
||||
"editorOverviewRuler.selectionHighlightForeground": "#817c9c4d",
|
||||
"editorOverviewRuler.warningForeground": "#f6c17780",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#817c9c26",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#817c9c4d",
|
||||
"editorPane.background": "#000000",
|
||||
"editorRuler.foreground": "#817c9c4d",
|
||||
"editorSuggestWidget.background": "#2a273f",
|
||||
"editorSuggestWidget.border": "#000000",
|
||||
"editorSuggestWidget.focusHighlightForeground": "#ea9a97",
|
||||
"editorSuggestWidget.foreground": "#908caa",
|
||||
"editorSuggestWidget.highlightForeground": "#ea9a97",
|
||||
"editorSuggestWidget.selectedBackground": "#817c9c26",
|
||||
"editorSuggestWidget.selectedForeground": "#e0def4",
|
||||
"editorSuggestWidget.selectedIconForeground": "#e0def4",
|
||||
"editorUnnecessaryCode.border": "#000000",
|
||||
"editorUnnecessaryCode.opacity": "#e0def480",
|
||||
"editorWarning.border": "#000000",
|
||||
"editorWarning.foreground": "#f6c177",
|
||||
"editorWhitespace.foreground": "#6e6a86",
|
||||
"editorWidget.background": "#2a273f",
|
||||
"editorWidget.border": "#393552",
|
||||
"editorWidget.foreground": "#908caa",
|
||||
"editorWidget.resizeBorder": "#6e6a86",
|
||||
"errorForeground": "#eb6f92",
|
||||
"extensionBadge.remoteBackground": "#c4a7e7",
|
||||
"extensionBadge.remoteForeground": "#232136",
|
||||
"extensionButton.prominentBackground": "#ea9a97",
|
||||
"extensionButton.prominentForeground": "#232136",
|
||||
"extensionButton.prominentHoverBackground": "#ea9a97e6",
|
||||
"extensionIcon.preReleaseForeground": "#3e8fb0",
|
||||
"extensionIcon.starForeground": "#ea9a97",
|
||||
"extensionIcon.verifiedForeground": "#c4a7e7",
|
||||
"focusBorder": "#817c9c26",
|
||||
"foreground": "#e0def4",
|
||||
"gitDecoration.addedResourceForeground": "#9ccfd8",
|
||||
"gitDecoration.conflictingResourceForeground": "#eb6f92",
|
||||
"gitDecoration.deletedResourceForeground": "#908caa",
|
||||
"gitDecoration.ignoredResourceForeground": "#6e6a86",
|
||||
"gitDecoration.modifiedResourceForeground": "#ea9a97",
|
||||
"gitDecoration.renamedResourceForeground": "#3e8fb0",
|
||||
"gitDecoration.stageDeletedResourceForeground": "#eb6f92",
|
||||
"gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
|
||||
"gitDecoration.submoduleResourceForeground": "#f6c177",
|
||||
"gitDecoration.untrackedResourceForeground": "#f6c177",
|
||||
"icon.foreground": "#908caa",
|
||||
"input.background": "#39355280",
|
||||
"input.border": "#817c9c26",
|
||||
"input.foreground": "#e0def4",
|
||||
"input.placeholderForeground": "#908caa",
|
||||
"inputOption.activeBackground": "#ea9a9726",
|
||||
"inputOption.activeForeground": "#ea9a97",
|
||||
"inputValidation.errorBackground": "#2a273f",
|
||||
"inputValidation.errorBorder": "#817c9c4d",
|
||||
"inputValidation.errorForeground": "#eb6f92",
|
||||
"inputValidation.infoBackground": "#2a273f",
|
||||
"inputValidation.infoBorder": "#817c9c4d",
|
||||
"inputValidation.infoForeground": "#9ccfd8",
|
||||
"inputValidation.warningBackground": "#2a273f",
|
||||
"inputValidation.warningBorder": "#817c9c4d",
|
||||
"inputValidation.warningForeground": "#9ccfd880",
|
||||
"keybindingLabel.background": "#393552",
|
||||
"keybindingLabel.border": "#817c9c4d",
|
||||
"keybindingLabel.bottomBorder": "#817c9c4d",
|
||||
"keybindingLabel.foreground": "#c4a7e7",
|
||||
"keybindingTable.headerBackground": "#393552",
|
||||
"keybindingTable.rowsBackground": "#2a273f",
|
||||
"list.activeSelectionBackground": "#817c9c26",
|
||||
"list.activeSelectionForeground": "#e0def4",
|
||||
"list.deemphasizedForeground": "#908caa",
|
||||
"list.dropBackground": "#2a273f",
|
||||
"list.errorForeground": "#eb6f92",
|
||||
"list.filterMatchBackground": "#2a273f",
|
||||
"list.filterMatchBorder": "#ea9a97",
|
||||
"list.focusBackground": "#817c9c4d",
|
||||
"list.focusForeground": "#e0def4",
|
||||
"list.focusOutline": "#817c9c26",
|
||||
"list.highlightForeground": "#ea9a97",
|
||||
"list.hoverBackground": "#817c9c14",
|
||||
"list.hoverForeground": "#e0def4",
|
||||
"list.inactiveFocusBackground": "#817c9c14",
|
||||
"list.inactiveSelectionBackground": "#2a273f",
|
||||
"list.inactiveSelectionForeground": "#e0def4",
|
||||
"list.invalidItemForeground": "#eb6f92",
|
||||
"list.warningForeground": "#f6c177",
|
||||
"listFilterWidget.background": "#2a273f",
|
||||
"listFilterWidget.noMatchesOutline": "#eb6f92",
|
||||
"listFilterWidget.outline": "#393552",
|
||||
"menu.background": "#2a273f",
|
||||
"menu.border": "#817c9c14",
|
||||
"menu.foreground": "#e0def4",
|
||||
"menu.selectionBackground": "#817c9c26",
|
||||
"menu.selectionBorder": "#393552",
|
||||
"menu.selectionForeground": "#e0def4",
|
||||
"menu.separatorBackground": "#817c9c4d",
|
||||
"menubar.selectionBackground": "#817c9c26",
|
||||
"menubar.selectionBorder": "#817c9c14",
|
||||
"menubar.selectionForeground": "#e0def4",
|
||||
"merge.border": "#393552",
|
||||
"merge.commonContentBackground": "#817c9c26",
|
||||
"merge.commonHeaderBackground": "#817c9c26",
|
||||
"merge.currentContentBackground": "#f6c17780",
|
||||
"merge.currentHeaderBackground": "#f6c17780",
|
||||
"merge.incomingContentBackground": "#9ccfd880",
|
||||
"merge.incomingHeaderBackground": "#9ccfd880",
|
||||
"minimap.background": "#2a273f",
|
||||
"minimap.errorHighlight": "#eb6f9280",
|
||||
"minimap.findMatchHighlight": "#817c9c26",
|
||||
"minimap.selectionHighlight": "#817c9c26",
|
||||
"minimap.warningHighlight": "#f6c17780",
|
||||
"minimapGutter.addedBackground": "#9ccfd8",
|
||||
"minimapGutter.deletedBackground": "#eb6f92",
|
||||
"minimapGutter.modifiedBackground": "#ea9a97",
|
||||
"minimapSlider.activeBackground": "#817c9c4d",
|
||||
"minimapSlider.background": "#817c9c26",
|
||||
"minimapSlider.hoverBackground": "#817c9c26",
|
||||
"notebook.cellBorderColor": "#9ccfd880",
|
||||
"notebook.cellEditorBackground": "#2a273f",
|
||||
"notebook.cellHoverBackground": "#39355280",
|
||||
"notebook.focusedCellBackground": "#817c9c14",
|
||||
"notebook.focusedCellBorder": "#9ccfd8",
|
||||
"notebook.outputContainerBackgroundColor": "#817c9c14",
|
||||
"notificationCenter.border": "#817c9c26",
|
||||
"notificationCenterHeader.background": "#2a273f",
|
||||
"notificationCenterHeader.foreground": "#908caa",
|
||||
"notificationLink.foreground": "#c4a7e7",
|
||||
"notifications.background": "#2a273f",
|
||||
"notifications.border": "#817c9c26",
|
||||
"notifications.foreground": "#e0def4",
|
||||
"notificationsErrorIcon.foreground": "#eb6f92",
|
||||
"notificationsInfoIcon.foreground": "#9ccfd8",
|
||||
"notificationsWarningIcon.foreground": "#f6c177",
|
||||
"notificationToast.border": "#817c9c26",
|
||||
"panel.background": "#2a273f",
|
||||
"panel.border": "#000000",
|
||||
"panel.dropBorder": "#393552",
|
||||
"panelInput.border": "#2a273f",
|
||||
"panelSection.dropBackground": "#817c9c26",
|
||||
"panelSectionHeader.background": "#2a273f",
|
||||
"panelSectionHeader.foreground": "#e0def4",
|
||||
"panelTitle.activeBorder": "#817c9c4d",
|
||||
"panelTitle.activeForeground": "#e0def4",
|
||||
"panelTitle.inactiveForeground": "#908caa",
|
||||
"peekView.border": "#393552",
|
||||
"peekViewEditor.background": "#2a273f",
|
||||
"peekViewEditor.matchHighlightBackground": "#817c9c4d",
|
||||
"peekViewResult.background": "#2a273f",
|
||||
"peekViewResult.fileForeground": "#908caa",
|
||||
"peekViewResult.lineForeground": "#908caa",
|
||||
"peekViewResult.matchHighlightBackground": "#817c9c4d",
|
||||
"peekViewResult.selectionBackground": "#817c9c26",
|
||||
"peekViewResult.selectionForeground": "#e0def4",
|
||||
"peekViewTitle.background": "#393552",
|
||||
"peekViewTitleDescription.foreground": "#908caa",
|
||||
"pickerGroup.border": "#817c9c4d",
|
||||
"pickerGroup.foreground": "#c4a7e7",
|
||||
"ports.iconRunningProcessForeground": "#ea9a97",
|
||||
"problemsErrorIcon.foreground": "#eb6f92",
|
||||
"problemsInfoIcon.foreground": "#9ccfd8",
|
||||
"problemsWarningIcon.foreground": "#f6c177",
|
||||
"progressBar.background": "#ea9a97",
|
||||
"quickInput.background": "#2a273f",
|
||||
"quickInput.foreground": "#908caa",
|
||||
"quickInputList.focusBackground": "#817c9c26",
|
||||
"quickInputList.focusForeground": "#e0def4",
|
||||
"quickInputList.focusIconForeground": "#e0def4",
|
||||
"scrollbar.shadow": "#2a273f4d",
|
||||
"scrollbarSlider.activeBackground": "#3e8fb080",
|
||||
"scrollbarSlider.background": "#817c9c26",
|
||||
"scrollbarSlider.hoverBackground": "#817c9c4d",
|
||||
"searchEditor.findMatchBackground": "#817c9c26",
|
||||
"selection.background": "#817c9c4d",
|
||||
"settings.focusedRowBackground": "#2a273f",
|
||||
"settings.headerForeground": "#e0def4",
|
||||
"settings.modifiedItemIndicator": "#ea9a97",
|
||||
"settings.focusedRowBorder": "#817c9c26",
|
||||
"settings.rowHoverBackground": "#2a273f",
|
||||
"sideBar.background": "#232136",
|
||||
"sideBar.dropBackground": "#2a273f",
|
||||
"sideBar.foreground": "#908caa",
|
||||
"sideBarSectionHeader.background": "#000000",
|
||||
"sideBarSectionHeader.border": "#817c9c26",
|
||||
"statusBar.background": "#232136",
|
||||
"statusBar.debuggingBackground": "#c4a7e7",
|
||||
"statusBar.debuggingForeground": "#232136",
|
||||
"statusBar.foreground": "#908caa",
|
||||
"statusBar.noFolderBackground": "#232136",
|
||||
"statusBar.noFolderForeground": "#908caa",
|
||||
"statusBarItem.activeBackground": "#817c9c4d",
|
||||
"statusBarItem.hoverBackground": "#817c9c26",
|
||||
"statusBarItem.prominentBackground": "#393552",
|
||||
"statusBarItem.prominentForeground": "#e0def4",
|
||||
"statusBarItem.prominentHoverBackground": "#817c9c26",
|
||||
"statusBarItem.remoteBackground": "#232136",
|
||||
"statusBarItem.remoteForeground": "#f6c177",
|
||||
"statusBarItem.errorBackground": "#232136",
|
||||
"statusBarItem.errorForeground": "#eb6f92",
|
||||
"symbolIcon.arrayForeground": "#908caa",
|
||||
"symbolIcon.classForeground": "#908caa",
|
||||
"symbolIcon.colorForeground": "#908caa",
|
||||
"symbolIcon.constantForeground": "#908caa",
|
||||
"symbolIcon.constructorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorMemberForeground": "#908caa",
|
||||
"symbolIcon.eventForeground": "#908caa",
|
||||
"symbolIcon.fieldForeground": "#908caa",
|
||||
"symbolIcon.fileForeground": "#908caa",
|
||||
"symbolIcon.folderForeground": "#908caa",
|
||||
"symbolIcon.functionForeground": "#908caa",
|
||||
"symbolIcon.interfaceForeground": "#908caa",
|
||||
"symbolIcon.keyForeground": "#908caa",
|
||||
"symbolIcon.keywordForeground": "#908caa",
|
||||
"symbolIcon.methodForeground": "#908caa",
|
||||
"symbolIcon.moduleForeground": "#908caa",
|
||||
"symbolIcon.namespaceForeground": "#908caa",
|
||||
"symbolIcon.nullForeground": "#908caa",
|
||||
"symbolIcon.numberForeground": "#908caa",
|
||||
"symbolIcon.objectForeground": "#908caa",
|
||||
"symbolIcon.operatorForeground": "#908caa",
|
||||
"symbolIcon.packageForeground": "#908caa",
|
||||
"symbolIcon.propertyForeground": "#908caa",
|
||||
"symbolIcon.referenceForeground": "#908caa",
|
||||
"symbolIcon.snippetForeground": "#908caa",
|
||||
"symbolIcon.stringForeground": "#908caa",
|
||||
"symbolIcon.structForeground": "#908caa",
|
||||
"symbolIcon.textForeground": "#908caa",
|
||||
"symbolIcon.typeParameterForeground": "#908caa",
|
||||
"symbolIcon.unitForeground": "#908caa",
|
||||
"symbolIcon.variableForeground": "#908caa",
|
||||
"tab.activeBackground": "#817c9c14",
|
||||
"tab.activeForeground": "#e0def4",
|
||||
"tab.activeModifiedBorder": "#9ccfd8",
|
||||
"tab.border": "#000000",
|
||||
"tab.hoverBackground": "#817c9c26",
|
||||
"tab.inactiveBackground": "#000000",
|
||||
"tab.inactiveForeground": "#908caa",
|
||||
"tab.inactiveModifiedBorder": "#9ccfd880",
|
||||
"tab.lastPinnedBorder": "#6e6a86",
|
||||
"tab.unfocusedActiveBackground": "#000000",
|
||||
"tab.unfocusedHoverBackground": "#000000",
|
||||
"tab.unfocusedInactiveBackground": "#000000",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
|
||||
"terminal.ansiBlack": "#393552",
|
||||
"terminal.ansiBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightBlack": "#908caa",
|
||||
"terminal.ansiBrightBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightCyan": "#ea9a97",
|
||||
"terminal.ansiBrightGreen": "#3e8fb0",
|
||||
"terminal.ansiBrightMagenta": "#c4a7e7",
|
||||
"terminal.ansiBrightRed": "#eb6f92",
|
||||
"terminal.ansiBrightWhite": "#e0def4",
|
||||
"terminal.ansiBrightYellow": "#f6c177",
|
||||
"terminal.ansiCyan": "#ea9a97",
|
||||
"terminal.ansiGreen": "#3e8fb0",
|
||||
"terminal.ansiMagenta": "#c4a7e7",
|
||||
"terminal.ansiRed": "#eb6f92",
|
||||
"terminal.ansiWhite": "#e0def4",
|
||||
"terminal.ansiYellow": "#f6c177",
|
||||
"terminal.dropBackground": "#817c9c26",
|
||||
"terminal.foreground": "#e0def4",
|
||||
"terminal.selectionBackground": "#817c9c26",
|
||||
"terminal.tab.activeBorder": "#e0def4",
|
||||
"terminalCursor.background": "#e0def4",
|
||||
"terminalCursor.foreground": "#6e6a86",
|
||||
"textBlockQuote.background": "#2a273f",
|
||||
"textBlockQuote.border": "#817c9c26",
|
||||
"textCodeBlock.background": "#2a273f",
|
||||
"textLink.activeForeground": "#c4a7e7e6",
|
||||
"textLink.foreground": "#c4a7e7",
|
||||
"textPreformat.foreground": "#f6c177",
|
||||
"textSeparator.foreground": "#908caa",
|
||||
"titleBar.activeBackground": "#232136",
|
||||
"titleBar.activeForeground": "#908caa",
|
||||
"titleBar.inactiveBackground": "#2a273f",
|
||||
"titleBar.inactiveForeground": "#908caa",
|
||||
"toolbar.activeBackground": "#817c9c4d",
|
||||
"toolbar.hoverBackground": "#817c9c26",
|
||||
"tree.indentGuidesStroke": "#908caa",
|
||||
"walkThrough.embeddedEditorBackground": "#232136",
|
||||
"welcomePage.background": "#232136",
|
||||
"welcomePage.buttonBackground": "#2a273f",
|
||||
"welcomePage.buttonHoverBackground": "#393552",
|
||||
"widget.shadow": "#2a273f4d",
|
||||
"window.activeBorder": "#2a273f",
|
||||
"window.inactiveBorder": "#2a273f"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"scope": ["comment"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant.numeric", "constant.language"],
|
||||
"settings": {
|
||||
"foreground": "#ea9a97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.name"],
|
||||
"settings": {
|
||||
"foreground": "#ea9a97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"entity.name.section",
|
||||
"entity.name.tag",
|
||||
"entity.name.namespace",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid.deprecated"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.inserted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.deleted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.bold.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.italic.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.diff.range"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.tag", "meta.brace"],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.import", "meta.export"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.directive.vue",
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-name.css",
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-value.css",
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.tag.other.html",
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.accessor"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.constant"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.function"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable"],
|
||||
"settings": {
|
||||
"foreground": "#ea9a97",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"variable.other",
|
||||
"variable.language",
|
||||
"variable.function",
|
||||
"variable.argument"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
680
assets/themes/src/vscode/rose-pine/rose-pine.json
Normal file
@@ -0,0 +1,680 @@
|
||||
{
|
||||
"name": "Rosé Pine",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"activityBar.activeBorder": "#e0def4",
|
||||
"activityBar.background": "#191724",
|
||||
"activityBar.dropBorder": "#26233a",
|
||||
"activityBar.foreground": "#e0def4",
|
||||
"activityBar.inactiveForeground": "#908caa",
|
||||
"activityBarBadge.background": "#ebbcba",
|
||||
"activityBarBadge.foreground": "#191724",
|
||||
"badge.background": "#ebbcba",
|
||||
"badge.foreground": "#191724",
|
||||
"banner.background": "#1f1d2e",
|
||||
"banner.foreground": "#e0def4",
|
||||
"banner.iconForeground": "#908caa",
|
||||
"breadcrumb.activeSelectionForeground": "#ebbcba",
|
||||
"breadcrumb.background": "#191724",
|
||||
"breadcrumb.focusForeground": "#908caa",
|
||||
"breadcrumb.foreground": "#6e6a86",
|
||||
"breadcrumbPicker.background": "#1f1d2e",
|
||||
"button.background": "#ebbcba",
|
||||
"button.foreground": "#191724",
|
||||
"button.hoverBackground": "#ebbcbae6",
|
||||
"button.secondaryBackground": "#1f1d2e",
|
||||
"button.secondaryForeground": "#e0def4",
|
||||
"button.secondaryHoverBackground": "#26233a",
|
||||
"charts.blue": "#9ccfd8",
|
||||
"charts.foreground": "#e0def4",
|
||||
"charts.green": "#31748f",
|
||||
"charts.lines": "#908caa",
|
||||
"charts.orange": "#ebbcba",
|
||||
"charts.purple": "#c4a7e7",
|
||||
"charts.red": "#eb6f92",
|
||||
"charts.yellow": "#f6c177",
|
||||
"checkbox.background": "#1f1d2e",
|
||||
"checkbox.border": "#6e6a8633",
|
||||
"checkbox.foreground": "#e0def4",
|
||||
"debugExceptionWidget.background": "#1f1d2e",
|
||||
"debugExceptionWidget.border": "#6e6a8633",
|
||||
"debugIcon.breakpointCurrentStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointDisabledForeground": "#908caa",
|
||||
"debugIcon.breakpointForeground": "#908caa",
|
||||
"debugIcon.breakpointStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointUnverifiedForeground": "#908caa",
|
||||
"debugIcon.continueForeground": "#908caa",
|
||||
"debugIcon.disconnectForeground": "#908caa",
|
||||
"debugIcon.pauseForeground": "#908caa",
|
||||
"debugIcon.restartForeground": "#908caa",
|
||||
"debugIcon.startForeground": "#908caa",
|
||||
"debugIcon.stepBackForeground": "#908caa",
|
||||
"debugIcon.stepIntoForeground": "#908caa",
|
||||
"debugIcon.stepOutForeground": "#908caa",
|
||||
"debugIcon.stepOverForeground": "#908caa",
|
||||
"debugIcon.stopForeground": "#eb6f92",
|
||||
"debugToolBar.background": "#1f1d2e",
|
||||
"debugToolBar.border": "#26233a",
|
||||
"descriptionForeground": "#908caa",
|
||||
"diffEditor.border": "#26233a",
|
||||
"diffEditor.diagonalFill": "#6e6a8666",
|
||||
"diffEditor.insertedLineBackground": "#9ccfd826",
|
||||
"diffEditor.insertedTextBackground": "#9ccfd826",
|
||||
"diffEditor.removedLineBackground": "#eb6f9226",
|
||||
"diffEditor.removedTextBackground": "#eb6f9226",
|
||||
"diffEditorOverview.insertedForeground": "#9ccfd880",
|
||||
"diffEditorOverview.removedForeground": "#eb6f9280",
|
||||
"dropdown.background": "#1f1d2e",
|
||||
"dropdown.border": "#6e6a8633",
|
||||
"dropdown.foreground": "#e0def4",
|
||||
"dropdown.listBackground": "#1f1d2e",
|
||||
"editor.background": "#191724",
|
||||
"editor.findMatchBackground": "#6e6a8666",
|
||||
"editor.findMatchHighlightBackground": "#6e6a8666",
|
||||
"editor.findRangeHighlightBackground": "#6e6a8666",
|
||||
"editor.findRangeHighlightBorder": "#000000",
|
||||
"editor.focusedStackFrameHighlightBackground": "#6e6a8633",
|
||||
"editor.foldBackground": "#1f1d2e",
|
||||
"editor.foreground": "#e0def4",
|
||||
"editor.hoverHighlightBackground": "#000000",
|
||||
"editor.inactiveSelectionBackground": "#6e6a861a",
|
||||
"editor.inlineValuesBackground": "#000000",
|
||||
"editor.inlineValuesForeground": "#908caa",
|
||||
"editor.lineHighlightBackground": "#6e6a861a",
|
||||
"editor.lineHighlightBorder": "#000000",
|
||||
"editor.linkedEditingBackground": "#1f1d2e",
|
||||
"editor.rangeHighlightBackground": "#6e6a861a",
|
||||
"editor.selectionBackground": "#6e6a8633",
|
||||
"editor.selectionForeground": "#e0def4",
|
||||
"editor.selectionHighlightBackground": "#6e6a8633",
|
||||
"editor.selectionHighlightBorder": "#191724",
|
||||
"editor.snippetFinalTabstopHighlightBackground": "#6e6a8633",
|
||||
"editor.snippetFinalTabstopHighlightBorder": "#1f1d2e",
|
||||
"editor.snippetTabstopHighlightBackground": "#6e6a8633",
|
||||
"editor.snippetTabstopHighlightBorder": "#1f1d2e",
|
||||
"editor.stackFrameHighlightBackground": "#6e6a8633",
|
||||
"editor.symbolHighlightBackground": "#6e6a8633",
|
||||
"editor.symbolHighlightBorder": "#000000",
|
||||
"editor.wordHighlightBackground": "#6e6a8633",
|
||||
"editor.wordHighlightBorder": "#000000",
|
||||
"editor.wordHighlightStrongBackground": "#6e6a8633",
|
||||
"editor.wordHighlightStrongBorder": "#6e6a8633",
|
||||
"editorBracketHighlight.foreground1": "#eb6f9280",
|
||||
"editorBracketHighlight.foreground2": "#31748f80",
|
||||
"editorBracketHighlight.foreground3": "#f6c17780",
|
||||
"editorBracketHighlight.foreground4": "#9ccfd880",
|
||||
"editorBracketHighlight.foreground5": "#ebbcba80",
|
||||
"editorBracketHighlight.foreground6": "#c4a7e780",
|
||||
"editorBracketMatch.background": "#000000",
|
||||
"editorBracketMatch.border": "#908caa",
|
||||
"editorBracketPairGuide.activeBackground1": "#31748f",
|
||||
"editorBracketPairGuide.activeBackground2": "#ebbcba",
|
||||
"editorBracketPairGuide.activeBackground3": "#c4a7e7",
|
||||
"editorBracketPairGuide.activeBackground4": "#9ccfd8",
|
||||
"editorBracketPairGuide.activeBackground5": "#f6c177",
|
||||
"editorBracketPairGuide.activeBackground6": "#eb6f92",
|
||||
"editorBracketPairGuide.background1": "#31748f80",
|
||||
"editorBracketPairGuide.background2": "#ebbcba80",
|
||||
"editorBracketPairGuide.background3": "#c4a7e780",
|
||||
"editorBracketPairGuide.background4": "#9ccfd880",
|
||||
"editorBracketPairGuide.background5": "#f6c17780",
|
||||
"editorBracketPairGuide.background6": "#eb6f9280",
|
||||
"editorCodeLens.foreground": "#ebbcba",
|
||||
"editorCursor.background": "#e0def4",
|
||||
"editorCursor.foreground": "#6e6a86",
|
||||
"editorError.border": "#000000",
|
||||
"editorError.foreground": "#eb6f92",
|
||||
"editorGhostText.foreground": "#908caa",
|
||||
"editorGroup.border": "#000000",
|
||||
"editorGroup.dropBackground": "#1f1d2e",
|
||||
"editorGroup.emptyBackground": "#000000",
|
||||
"editorGroup.focusedEmptyBorder": "#000000",
|
||||
"editorGroupHeader.noTabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBorder": "#000000",
|
||||
"editorGutter.addedBackground": "#9ccfd8",
|
||||
"editorGutter.background": "#191724",
|
||||
"editorGutter.commentRangeForeground": "#908caa",
|
||||
"editorGutter.deletedBackground": "#eb6f92",
|
||||
"editorGutter.foldingControlForeground": "#c4a7e7",
|
||||
"editorGutter.modifiedBackground": "#ebbcba",
|
||||
"editorHint.border": "#000000",
|
||||
"editorHint.foreground": "#908caa",
|
||||
"editorHoverWidget.background": "#1f1d2e",
|
||||
"editorHoverWidget.border": "#6e6a8680",
|
||||
"editorHoverWidget.foreground": "#908caa",
|
||||
"editorHoverWidget.highlightForeground": "#e0def4",
|
||||
"editorHoverWidget.statusBarBackground": "#000000",
|
||||
"editorIndentGuide.activeBackground": "#6e6a86",
|
||||
"editorIndentGuide.background": "#6e6a8666",
|
||||
"editorInfo.border": "#26233a",
|
||||
"editorInfo.foreground": "#9ccfd8",
|
||||
"editorInlayHint.background": "#26233a",
|
||||
"editorInlayHint.foreground": "#908caa",
|
||||
"editorInlayHint.parameterBackground": "#26233a",
|
||||
"editorInlayHint.parameterForeground": "#c4a7e7",
|
||||
"editorInlayHint.typeBackground": "#26233a",
|
||||
"editorInlayHint.typeForeground": "#9ccfd8",
|
||||
"editorLightBulb.foreground": "#31748f",
|
||||
"editorLightBulbAutoFix.foreground": "#ebbcba",
|
||||
"editorLineNumber.activeForeground": "#e0def4",
|
||||
"editorLineNumber.foreground": "#908caa",
|
||||
"editorLink.activeForeground": "#ebbcba",
|
||||
"editorMarkerNavigation.background": "#1f1d2e",
|
||||
"editorMarkerNavigationError.background": "#1f1d2e",
|
||||
"editorMarkerNavigationInfo.background": "#1f1d2e",
|
||||
"editorMarkerNavigationWarning.background": "#1f1d2e",
|
||||
"editorOverviewRuler.addedForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.background": "#191724",
|
||||
"editorOverviewRuler.border": "#6e6a8666",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#908caa",
|
||||
"editorOverviewRuler.commonContentForeground": "#6e6a861a",
|
||||
"editorOverviewRuler.currentContentForeground": "#6e6a8633",
|
||||
"editorOverviewRuler.deletedForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.errorForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.findMatchForeground": "#6e6a8666",
|
||||
"editorOverviewRuler.incomingContentForeground": "#c4a7e780",
|
||||
"editorOverviewRuler.infoForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.modifiedForeground": "#ebbcba80",
|
||||
"editorOverviewRuler.rangeHighlightForeground": "#6e6a8666",
|
||||
"editorOverviewRuler.selectionHighlightForeground": "#6e6a8666",
|
||||
"editorOverviewRuler.warningForeground": "#f6c17780",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#6e6a8633",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8666",
|
||||
"editorPane.background": "#000000",
|
||||
"editorRuler.foreground": "#6e6a8666",
|
||||
"editorSuggestWidget.background": "#1f1d2e",
|
||||
"editorSuggestWidget.border": "#000000",
|
||||
"editorSuggestWidget.focusHighlightForeground": "#ebbcba",
|
||||
"editorSuggestWidget.foreground": "#908caa",
|
||||
"editorSuggestWidget.highlightForeground": "#ebbcba",
|
||||
"editorSuggestWidget.selectedBackground": "#6e6a8633",
|
||||
"editorSuggestWidget.selectedForeground": "#e0def4",
|
||||
"editorSuggestWidget.selectedIconForeground": "#e0def4",
|
||||
"editorUnnecessaryCode.border": "#000000",
|
||||
"editorUnnecessaryCode.opacity": "#e0def480",
|
||||
"editorWarning.border": "#000000",
|
||||
"editorWarning.foreground": "#f6c177",
|
||||
"editorWhitespace.foreground": "#6e6a86",
|
||||
"editorWidget.background": "#1f1d2e",
|
||||
"editorWidget.border": "#26233a",
|
||||
"editorWidget.foreground": "#908caa",
|
||||
"editorWidget.resizeBorder": "#6e6a86",
|
||||
"errorForeground": "#eb6f92",
|
||||
"extensionBadge.remoteBackground": "#c4a7e7",
|
||||
"extensionBadge.remoteForeground": "#191724",
|
||||
"extensionButton.prominentBackground": "#ebbcba",
|
||||
"extensionButton.prominentForeground": "#191724",
|
||||
"extensionButton.prominentHoverBackground": "#ebbcbae6",
|
||||
"extensionIcon.preReleaseForeground": "#31748f",
|
||||
"extensionIcon.starForeground": "#ebbcba",
|
||||
"extensionIcon.verifiedForeground": "#c4a7e7",
|
||||
"focusBorder": "#6e6a8633",
|
||||
"foreground": "#e0def4",
|
||||
"gitDecoration.addedResourceForeground": "#9ccfd8",
|
||||
"gitDecoration.conflictingResourceForeground": "#eb6f92",
|
||||
"gitDecoration.deletedResourceForeground": "#908caa",
|
||||
"gitDecoration.ignoredResourceForeground": "#6e6a86",
|
||||
"gitDecoration.modifiedResourceForeground": "#ebbcba",
|
||||
"gitDecoration.renamedResourceForeground": "#31748f",
|
||||
"gitDecoration.stageDeletedResourceForeground": "#eb6f92",
|
||||
"gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
|
||||
"gitDecoration.submoduleResourceForeground": "#f6c177",
|
||||
"gitDecoration.untrackedResourceForeground": "#f6c177",
|
||||
"icon.foreground": "#908caa",
|
||||
"input.background": "#26233a80",
|
||||
"input.border": "#6e6a8633",
|
||||
"input.foreground": "#e0def4",
|
||||
"input.placeholderForeground": "#908caa",
|
||||
"inputOption.activeBackground": "#ebbcba26",
|
||||
"inputOption.activeForeground": "#ebbcba",
|
||||
"inputValidation.errorBackground": "#1f1d2e",
|
||||
"inputValidation.errorBorder": "#6e6a8666",
|
||||
"inputValidation.errorForeground": "#eb6f92",
|
||||
"inputValidation.infoBackground": "#1f1d2e",
|
||||
"inputValidation.infoBorder": "#6e6a8666",
|
||||
"inputValidation.infoForeground": "#9ccfd8",
|
||||
"inputValidation.warningBackground": "#1f1d2e",
|
||||
"inputValidation.warningBorder": "#6e6a8666",
|
||||
"inputValidation.warningForeground": "#9ccfd880",
|
||||
"keybindingLabel.background": "#26233a",
|
||||
"keybindingLabel.border": "#6e6a8666",
|
||||
"keybindingLabel.bottomBorder": "#6e6a8666",
|
||||
"keybindingLabel.foreground": "#c4a7e7",
|
||||
"keybindingTable.headerBackground": "#26233a",
|
||||
"keybindingTable.rowsBackground": "#1f1d2e",
|
||||
"list.activeSelectionBackground": "#6e6a8633",
|
||||
"list.activeSelectionForeground": "#e0def4",
|
||||
"list.deemphasizedForeground": "#908caa",
|
||||
"list.dropBackground": "#1f1d2e",
|
||||
"list.errorForeground": "#eb6f92",
|
||||
"list.filterMatchBackground": "#1f1d2e",
|
||||
"list.filterMatchBorder": "#ebbcba",
|
||||
"list.focusBackground": "#6e6a8666",
|
||||
"list.focusForeground": "#e0def4",
|
||||
"list.focusOutline": "#6e6a8633",
|
||||
"list.highlightForeground": "#ebbcba",
|
||||
"list.hoverBackground": "#6e6a861a",
|
||||
"list.hoverForeground": "#e0def4",
|
||||
"list.inactiveFocusBackground": "#6e6a861a",
|
||||
"list.inactiveSelectionBackground": "#1f1d2e",
|
||||
"list.inactiveSelectionForeground": "#e0def4",
|
||||
"list.invalidItemForeground": "#eb6f92",
|
||||
"list.warningForeground": "#f6c177",
|
||||
"listFilterWidget.background": "#1f1d2e",
|
||||
"listFilterWidget.noMatchesOutline": "#eb6f92",
|
||||
"listFilterWidget.outline": "#26233a",
|
||||
"menu.background": "#1f1d2e",
|
||||
"menu.border": "#6e6a861a",
|
||||
"menu.foreground": "#e0def4",
|
||||
"menu.selectionBackground": "#6e6a8633",
|
||||
"menu.selectionBorder": "#26233a",
|
||||
"menu.selectionForeground": "#e0def4",
|
||||
"menu.separatorBackground": "#6e6a8666",
|
||||
"menubar.selectionBackground": "#6e6a8633",
|
||||
"menubar.selectionBorder": "#6e6a861a",
|
||||
"menubar.selectionForeground": "#e0def4",
|
||||
"merge.border": "#26233a",
|
||||
"merge.commonContentBackground": "#6e6a8633",
|
||||
"merge.commonHeaderBackground": "#6e6a8633",
|
||||
"merge.currentContentBackground": "#f6c17780",
|
||||
"merge.currentHeaderBackground": "#f6c17780",
|
||||
"merge.incomingContentBackground": "#9ccfd880",
|
||||
"merge.incomingHeaderBackground": "#9ccfd880",
|
||||
"minimap.background": "#1f1d2e",
|
||||
"minimap.errorHighlight": "#eb6f9280",
|
||||
"minimap.findMatchHighlight": "#6e6a8633",
|
||||
"minimap.selectionHighlight": "#6e6a8633",
|
||||
"minimap.warningHighlight": "#f6c17780",
|
||||
"minimapGutter.addedBackground": "#9ccfd8",
|
||||
"minimapGutter.deletedBackground": "#eb6f92",
|
||||
"minimapGutter.modifiedBackground": "#ebbcba",
|
||||
"minimapSlider.activeBackground": "#6e6a8666",
|
||||
"minimapSlider.background": "#6e6a8633",
|
||||
"minimapSlider.hoverBackground": "#6e6a8633",
|
||||
"notebook.cellBorderColor": "#9ccfd880",
|
||||
"notebook.cellEditorBackground": "#1f1d2e",
|
||||
"notebook.cellHoverBackground": "#26233a80",
|
||||
"notebook.focusedCellBackground": "#6e6a861a",
|
||||
"notebook.focusedCellBorder": "#9ccfd8",
|
||||
"notebook.outputContainerBackgroundColor": "#6e6a861a",
|
||||
"notificationCenter.border": "#6e6a8633",
|
||||
"notificationCenterHeader.background": "#1f1d2e",
|
||||
"notificationCenterHeader.foreground": "#908caa",
|
||||
"notificationLink.foreground": "#c4a7e7",
|
||||
"notifications.background": "#1f1d2e",
|
||||
"notifications.border": "#6e6a8633",
|
||||
"notifications.foreground": "#e0def4",
|
||||
"notificationsErrorIcon.foreground": "#eb6f92",
|
||||
"notificationsInfoIcon.foreground": "#9ccfd8",
|
||||
"notificationsWarningIcon.foreground": "#f6c177",
|
||||
"notificationToast.border": "#6e6a8633",
|
||||
"panel.background": "#1f1d2e",
|
||||
"panel.border": "#000000",
|
||||
"panel.dropBorder": "#26233a",
|
||||
"panelInput.border": "#1f1d2e",
|
||||
"panelSection.dropBackground": "#6e6a8633",
|
||||
"panelSectionHeader.background": "#1f1d2e",
|
||||
"panelSectionHeader.foreground": "#e0def4",
|
||||
"panelTitle.activeBorder": "#6e6a8666",
|
||||
"panelTitle.activeForeground": "#e0def4",
|
||||
"panelTitle.inactiveForeground": "#908caa",
|
||||
"peekView.border": "#26233a",
|
||||
"peekViewEditor.background": "#1f1d2e",
|
||||
"peekViewEditor.matchHighlightBackground": "#6e6a8666",
|
||||
"peekViewResult.background": "#1f1d2e",
|
||||
"peekViewResult.fileForeground": "#908caa",
|
||||
"peekViewResult.lineForeground": "#908caa",
|
||||
"peekViewResult.matchHighlightBackground": "#6e6a8666",
|
||||
"peekViewResult.selectionBackground": "#6e6a8633",
|
||||
"peekViewResult.selectionForeground": "#e0def4",
|
||||
"peekViewTitle.background": "#26233a",
|
||||
"peekViewTitleDescription.foreground": "#908caa",
|
||||
"pickerGroup.border": "#6e6a8666",
|
||||
"pickerGroup.foreground": "#c4a7e7",
|
||||
"ports.iconRunningProcessForeground": "#ebbcba",
|
||||
"problemsErrorIcon.foreground": "#eb6f92",
|
||||
"problemsInfoIcon.foreground": "#9ccfd8",
|
||||
"problemsWarningIcon.foreground": "#f6c177",
|
||||
"progressBar.background": "#ebbcba",
|
||||
"quickInput.background": "#1f1d2e",
|
||||
"quickInput.foreground": "#908caa",
|
||||
"quickInputList.focusBackground": "#6e6a8633",
|
||||
"quickInputList.focusForeground": "#e0def4",
|
||||
"quickInputList.focusIconForeground": "#e0def4",
|
||||
"scrollbar.shadow": "#1f1d2e4d",
|
||||
"scrollbarSlider.activeBackground": "#31748f80",
|
||||
"scrollbarSlider.background": "#6e6a8633",
|
||||
"scrollbarSlider.hoverBackground": "#6e6a8666",
|
||||
"searchEditor.findMatchBackground": "#6e6a8633",
|
||||
"selection.background": "#6e6a8666",
|
||||
"settings.focusedRowBackground": "#1f1d2e",
|
||||
"settings.headerForeground": "#e0def4",
|
||||
"settings.modifiedItemIndicator": "#ebbcba",
|
||||
"settings.focusedRowBorder": "#6e6a8633",
|
||||
"settings.rowHoverBackground": "#1f1d2e",
|
||||
"sideBar.background": "#191724",
|
||||
"sideBar.dropBackground": "#1f1d2e",
|
||||
"sideBar.foreground": "#908caa",
|
||||
"sideBarSectionHeader.background": "#000000",
|
||||
"sideBarSectionHeader.border": "#6e6a8633",
|
||||
"statusBar.background": "#191724",
|
||||
"statusBar.debuggingBackground": "#c4a7e7",
|
||||
"statusBar.debuggingForeground": "#191724",
|
||||
"statusBar.foreground": "#908caa",
|
||||
"statusBar.noFolderBackground": "#191724",
|
||||
"statusBar.noFolderForeground": "#908caa",
|
||||
"statusBarItem.activeBackground": "#6e6a8666",
|
||||
"statusBarItem.hoverBackground": "#6e6a8633",
|
||||
"statusBarItem.prominentBackground": "#26233a",
|
||||
"statusBarItem.prominentForeground": "#e0def4",
|
||||
"statusBarItem.prominentHoverBackground": "#6e6a8633",
|
||||
"statusBarItem.remoteBackground": "#191724",
|
||||
"statusBarItem.remoteForeground": "#f6c177",
|
||||
"statusBarItem.errorBackground": "#191724",
|
||||
"statusBarItem.errorForeground": "#eb6f92",
|
||||
"symbolIcon.arrayForeground": "#908caa",
|
||||
"symbolIcon.classForeground": "#908caa",
|
||||
"symbolIcon.colorForeground": "#908caa",
|
||||
"symbolIcon.constantForeground": "#908caa",
|
||||
"symbolIcon.constructorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorMemberForeground": "#908caa",
|
||||
"symbolIcon.eventForeground": "#908caa",
|
||||
"symbolIcon.fieldForeground": "#908caa",
|
||||
"symbolIcon.fileForeground": "#908caa",
|
||||
"symbolIcon.folderForeground": "#908caa",
|
||||
"symbolIcon.functionForeground": "#908caa",
|
||||
"symbolIcon.interfaceForeground": "#908caa",
|
||||
"symbolIcon.keyForeground": "#908caa",
|
||||
"symbolIcon.keywordForeground": "#908caa",
|
||||
"symbolIcon.methodForeground": "#908caa",
|
||||
"symbolIcon.moduleForeground": "#908caa",
|
||||
"symbolIcon.namespaceForeground": "#908caa",
|
||||
"symbolIcon.nullForeground": "#908caa",
|
||||
"symbolIcon.numberForeground": "#908caa",
|
||||
"symbolIcon.objectForeground": "#908caa",
|
||||
"symbolIcon.operatorForeground": "#908caa",
|
||||
"symbolIcon.packageForeground": "#908caa",
|
||||
"symbolIcon.propertyForeground": "#908caa",
|
||||
"symbolIcon.referenceForeground": "#908caa",
|
||||
"symbolIcon.snippetForeground": "#908caa",
|
||||
"symbolIcon.stringForeground": "#908caa",
|
||||
"symbolIcon.structForeground": "#908caa",
|
||||
"symbolIcon.textForeground": "#908caa",
|
||||
"symbolIcon.typeParameterForeground": "#908caa",
|
||||
"symbolIcon.unitForeground": "#908caa",
|
||||
"symbolIcon.variableForeground": "#908caa",
|
||||
"tab.activeBackground": "#6e6a861a",
|
||||
"tab.activeForeground": "#e0def4",
|
||||
"tab.activeModifiedBorder": "#9ccfd8",
|
||||
"tab.border": "#000000",
|
||||
"tab.hoverBackground": "#6e6a8633",
|
||||
"tab.inactiveBackground": "#000000",
|
||||
"tab.inactiveForeground": "#908caa",
|
||||
"tab.inactiveModifiedBorder": "#9ccfd880",
|
||||
"tab.lastPinnedBorder": "#6e6a86",
|
||||
"tab.unfocusedActiveBackground": "#000000",
|
||||
"tab.unfocusedHoverBackground": "#000000",
|
||||
"tab.unfocusedInactiveBackground": "#000000",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
|
||||
"terminal.ansiBlack": "#26233a",
|
||||
"terminal.ansiBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightBlack": "#908caa",
|
||||
"terminal.ansiBrightBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightCyan": "#ebbcba",
|
||||
"terminal.ansiBrightGreen": "#31748f",
|
||||
"terminal.ansiBrightMagenta": "#c4a7e7",
|
||||
"terminal.ansiBrightRed": "#eb6f92",
|
||||
"terminal.ansiBrightWhite": "#e0def4",
|
||||
"terminal.ansiBrightYellow": "#f6c177",
|
||||
"terminal.ansiCyan": "#ebbcba",
|
||||
"terminal.ansiGreen": "#31748f",
|
||||
"terminal.ansiMagenta": "#c4a7e7",
|
||||
"terminal.ansiRed": "#eb6f92",
|
||||
"terminal.ansiWhite": "#e0def4",
|
||||
"terminal.ansiYellow": "#f6c177",
|
||||
"terminal.dropBackground": "#6e6a8633",
|
||||
"terminal.foreground": "#e0def4",
|
||||
"terminal.selectionBackground": "#6e6a8633",
|
||||
"terminal.tab.activeBorder": "#e0def4",
|
||||
"terminalCursor.background": "#e0def4",
|
||||
"terminalCursor.foreground": "#6e6a86",
|
||||
"textBlockQuote.background": "#1f1d2e",
|
||||
"textBlockQuote.border": "#6e6a8633",
|
||||
"textCodeBlock.background": "#1f1d2e",
|
||||
"textLink.activeForeground": "#c4a7e7e6",
|
||||
"textLink.foreground": "#c4a7e7",
|
||||
"textPreformat.foreground": "#f6c177",
|
||||
"textSeparator.foreground": "#908caa",
|
||||
"titleBar.activeBackground": "#191724",
|
||||
"titleBar.activeForeground": "#908caa",
|
||||
"titleBar.inactiveBackground": "#1f1d2e",
|
||||
"titleBar.inactiveForeground": "#908caa",
|
||||
"toolbar.activeBackground": "#6e6a8666",
|
||||
"toolbar.hoverBackground": "#6e6a8633",
|
||||
"tree.indentGuidesStroke": "#908caa",
|
||||
"walkThrough.embeddedEditorBackground": "#191724",
|
||||
"welcomePage.background": "#191724",
|
||||
"welcomePage.buttonBackground": "#1f1d2e",
|
||||
"welcomePage.buttonHoverBackground": "#26233a",
|
||||
"widget.shadow": "#1f1d2e4d",
|
||||
"window.activeBorder": "#1f1d2e",
|
||||
"window.inactiveBorder": "#1f1d2e"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"scope": ["comment"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant.numeric", "constant.language"],
|
||||
"settings": {
|
||||
"foreground": "#ebbcba"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.name"],
|
||||
"settings": {
|
||||
"foreground": "#ebbcba"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"entity.name.section",
|
||||
"entity.name.tag",
|
||||
"entity.name.namespace",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid.deprecated"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.inserted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.deleted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.bold.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.italic.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.diff.range"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.tag", "meta.brace"],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.import", "meta.export"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.directive.vue",
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-name.css",
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-value.css",
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.tag.other.html",
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.accessor"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.constant"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.function"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable"],
|
||||
"settings": {
|
||||
"foreground": "#ebbcba",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"variable.other",
|
||||
"variable.language",
|
||||
"variable.function",
|
||||
"variable.argument"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
19
assets/themes/src/vscode/solarized/LICENSE
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (c) 2011 Ethan Schoonover
|
||||
|
||||
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.
|
||||
558
assets/themes/src/vscode/solarized/dark.json
Normal file
@@ -0,0 +1,558 @@
|
||||
{
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"errorForeground": "#ffeaea",
|
||||
"focusBorder": "#2aa19899",
|
||||
"selection.background": "#2aa19899",
|
||||
"input.background": "#003847",
|
||||
"input.foreground": "#93a1a1",
|
||||
"inputOption.activeBorder": "#2aa19899",
|
||||
"input.placeholderForeground": "#93a1a1aa",
|
||||
"inputValidation.infoBackground": "#052730",
|
||||
"inputValidation.infoBorder": "#363b5f",
|
||||
"inputValidation.warningBackground": "#5d5938",
|
||||
"inputValidation.warningBorder": "#9d8a5e",
|
||||
"inputValidation.errorBackground": "#571b26",
|
||||
"inputValidation.errorBorder": "#a92049",
|
||||
"dropdown.background": "#00212b",
|
||||
"dropdown.border": "#2aa19899",
|
||||
"list.focusBackground": "#005a6f",
|
||||
"list.activeSelectionBackground": "#005a6f",
|
||||
"list.inactiveSelectionBackground": "#00445488",
|
||||
"list.hoverBackground": "#004454aa",
|
||||
"list.dropBackground": "#00445488",
|
||||
"list.highlightForeground": "#1ebcc5",
|
||||
"pickerGroup.foreground": "#2aa19899",
|
||||
"pickerGroup.border": "#2aa19899",
|
||||
"button.background": "#2aa19899",
|
||||
"badge.background": "#047aa6",
|
||||
"progressBar.background": "#047aa6",
|
||||
"editor.background": "#002b36",
|
||||
"editorWidget.background": "#00212b",
|
||||
"editor.selectionBackground": "#073642",
|
||||
"editor.selectionHighlightBackground": "#005a6faa",
|
||||
"editorHoverWidget.background": "#004052",
|
||||
"editor.lineHighlightBackground": "#073642",
|
||||
"editorCursor.foreground": "#839496",
|
||||
"editorWhitespace.foreground": "#93a1a180",
|
||||
"editorLineNumber.foreground": "#566c74",
|
||||
"editorLineNumber.activeForeground": "#6e8a93",
|
||||
"editorGutter.background": "#073642",
|
||||
"editorMarkerNavigationError.background": "#ab395b",
|
||||
"editorMarkerNavigationWarning.background": "#5b7e7a",
|
||||
"editor.wordHighlightBackground": "#004454aa",
|
||||
"editor.wordHighlightStrongBackground": "#005a6faa",
|
||||
"peekViewTitle.background": "#00212b",
|
||||
"peekView.border": "#003847",
|
||||
"peekViewResult.background": "#00212b",
|
||||
"peekViewEditor.background": "#10192c",
|
||||
"peekViewEditorGutter.background": "#073642",
|
||||
"peekViewEditor.matchHighlightBackground": "#7744aa40",
|
||||
"tab.activeBackground": "#002b37",
|
||||
"tab.inactiveBackground": "#004052",
|
||||
"tab.border": "#003847",
|
||||
"tab.activeForeground": "#d6dbdb",
|
||||
"tab.inactiveForeground": "#93a1a1",
|
||||
"editorGroup.background": "#011b23",
|
||||
"editorGroupHeader.tabsBackground": "#004052",
|
||||
"editorGroup.border": "#00212b",
|
||||
"editorGroup.dropBackground": "#2aa19844",
|
||||
"panel.border": "#003847",
|
||||
"statusBar.foreground": "#93a1a1",
|
||||
"statusBar.background": "#00212b",
|
||||
"statusBar.noFolderBackground": "#00212b",
|
||||
"statusBarItem.prominentBackground": "#003847",
|
||||
"statusBarItem.prominentHoverBackground": "#003847",
|
||||
"activityBar.background": "#003847",
|
||||
"sideBar.background": "#00212b",
|
||||
"sideBarTitle.foreground": "#93a1a1",
|
||||
"titleBar.activeBackground": "#002c39",
|
||||
"terminal.foreground": "#839496",
|
||||
"statusBar.debuggingBackground": "#00212b",
|
||||
"debugExceptionWidget.border": "#ab395b",
|
||||
"debugExceptionWidget.background": "#00212b",
|
||||
"debugToolBar.background": "#00212b",
|
||||
"terminal.ansiBlack": "#073642",
|
||||
"terminal.ansiRed": "#dc322f",
|
||||
"terminal.ansiGreen": "#859900",
|
||||
"terminal.ansiYellow": "#b58900",
|
||||
"terminal.ansiBlue": "#268bd2",
|
||||
"terminal.ansiMagenta": "#d33682",
|
||||
"terminal.ansiCyan": "#2aa198",
|
||||
"terminal.ansiWhite": "#839496",
|
||||
"terminal.ansiBrightBlack": "#586e75",
|
||||
"terminal.ansiBrightRed": "#cb4b16",
|
||||
"terminal.ansiBrightGreen": "#859900",
|
||||
"terminal.ansiBrightYellow": "#657b83",
|
||||
"terminal.ansiBrightBlue": "#839496",
|
||||
"terminal.ansiBrightMagenta": "#6c71c4",
|
||||
"terminal.ansiBrightCyan": "#93a1a1",
|
||||
"terminal.ansiBrightWhite": "#839496",
|
||||
"editorBracketHighlight.foreground1": "#268bd2",
|
||||
"editorBracketHighlight.foreground2": "#b58900",
|
||||
"editorBracketHighlight.foreground3": "#d33682"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#bbbbbbff",
|
||||
"background": "#002b36ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#002B36",
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": "comment",
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": "string",
|
||||
"settings": {
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regexp",
|
||||
"scope": "string.regexp",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": "constant.numeric",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": ["variable.language", "variable.other"],
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": "keyword",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": "storage",
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Class name",
|
||||
"scope": ["entity.name.class", "entity.name.type"],
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable start",
|
||||
"scope": "punctuation.definition.variable",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Embedded code markers",
|
||||
"scope": [
|
||||
"punctuation.section.embedded.begin",
|
||||
"punctuation.section.embedded.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constant",
|
||||
"scope": ["constant.language", "meta.preprocessor"],
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support.construct",
|
||||
"scope": ["support.function.construct", "keyword.other.new"],
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "User-defined constant",
|
||||
"scope": ["constant.character", "constant.other"],
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class",
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {
|
||||
"foreground": "#6C71C4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function argument",
|
||||
"scope": "variable.parameter",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Tag name",
|
||||
"scope": "entity.name.tag",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": "punctuation.definition.tag",
|
||||
"settings": {
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": "entity.other.attribute-name",
|
||||
"settings": {
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": "support.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Continuation",
|
||||
"scope": "punctuation.separator.continuation",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": "support.constant",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": ["support.type", "support.class"],
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library Exception",
|
||||
"scope": "support.type.exception",
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library variable",
|
||||
"scope": "support.other.variable",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": "invalid",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "diff: header",
|
||||
"scope": ["meta.diff", "meta.diff.header"],
|
||||
"settings": {
|
||||
"background": "#b58900",
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#E0EDDD"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: deleted",
|
||||
"scope": "markup.deleted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#dc322f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: changed",
|
||||
"scope": "markup.changed",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: inserted",
|
||||
"scope": "markup.inserted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"foreground": "#219186"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Quote",
|
||||
"scope": "markup.quote",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Lists",
|
||||
"scope": "markup.list",
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Styling",
|
||||
"scope": ["markup.bold", "markup.italic"],
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Inline",
|
||||
"scope": "markup.inline.raw",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Headings",
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Setext Header",
|
||||
"scope": "markup.heading.setext",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.info-token",
|
||||
"settings": {
|
||||
"foreground": "#6796e6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.warn-token",
|
||||
"settings": {
|
||||
"foreground": "#cd9731"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.error-token",
|
||||
"settings": {
|
||||
"foreground": "#f44747"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.debug-token",
|
||||
"settings": {
|
||||
"foreground": "#b267e6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.object.property",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.parameter",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type",
|
||||
"settings": {
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type.function",
|
||||
"settings": {
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.async",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.import",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.ts",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.function-call",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.other",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.tsx",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type.class.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.python",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.from",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "constant.language.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.separator.dictionary.key-value.json, punctuation.separator.array.json, punctuation.separator.dictionary.pair.json",
|
||||
"settings": {
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type.ts",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type.primitive",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.definition.dictionary.begin.json, punctuation.definition.dictionary.end.json, punctuation.definition.array.begin.json, punctuation.definition.array.end.json",
|
||||
"settings": {
|
||||
"foreground": "#DC3272"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
16
assets/themes/src/vscode/solarized/family.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "Solarized",
|
||||
"author": "Ethan Schoonover (altercation)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Solarized Dark",
|
||||
"file_name": "dark.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Solarized Light",
|
||||
"file_name": "light.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
591
assets/themes/src/vscode/solarized/light.json
Normal file
@@ -0,0 +1,591 @@
|
||||
{
|
||||
"type": "light",
|
||||
"colors": {
|
||||
"focusBorder": "#d3af86",
|
||||
"selection.background": "#ccc4b0",
|
||||
"input.background": "#ddd6c1",
|
||||
"input.foreground": "#586e75",
|
||||
"inputOption.activeBorder": "#d3af86",
|
||||
"input.placeholderForeground": "#586e75aa",
|
||||
"dropdown.background": "#eee8d5",
|
||||
"dropdown.border": "#d3af86",
|
||||
"list.focusBackground": "#dfca8866",
|
||||
"list.activeSelectionBackground": "#dfca88",
|
||||
"list.activeSelectionForeground": "#6c6c6c",
|
||||
"list.inactiveSelectionBackground": "#d1cbb8",
|
||||
"list.hoverBackground": "#dfca8844",
|
||||
"list.highlightForeground": "#b58900",
|
||||
"pickerGroup.foreground": "#2aa19899",
|
||||
"pickerGroup.border": "#2aa19899",
|
||||
"button.background": "#ac9d57",
|
||||
"badge.background": "#b58900aa",
|
||||
"progressBar.background": "#b58900",
|
||||
"editor.background": "#fdf6e3",
|
||||
"editorWidget.background": "#eee8d5",
|
||||
"editor.selectionBackground": "#eee8d5",
|
||||
"editorHoverWidget.background": "#ccc4b0",
|
||||
"editor.lineHighlightBackground": "#eee8d5",
|
||||
"editorCursor.foreground": "#657b83",
|
||||
"editorWhitespace.foreground": "#586e7580",
|
||||
"editorLineNumber.foreground": "#9ca8a6",
|
||||
"editorLineNumber.activeForeground": "#6f7776",
|
||||
"editorGutter.background": "#eee8d5",
|
||||
"peekViewTitle.background": "#eee8d5",
|
||||
"peekView.border": "#b58900",
|
||||
"peekViewResult.background": "#eee8d5",
|
||||
"peekViewEditor.background": "#fffbf2",
|
||||
"peekViewEditor.matchHighlightBackground": "#7744aa40",
|
||||
"tab.activeBackground": "#fdf6e3",
|
||||
"tab.inactiveBackground": "#d3cbb7",
|
||||
"tab.border": "#ddd6c1",
|
||||
"tab.inactiveForeground": "#586e75",
|
||||
"editorGroup.background": "#fffbf2",
|
||||
"editorGroupHeader.tabsBackground": "#d9d2c2",
|
||||
"editorGroup.border": "#ddd6c1",
|
||||
"editorGroup.dropBackground": "#ddd6c1aa",
|
||||
"panel.border": "#ddd6c1",
|
||||
"statusBar.foreground": "#586e75",
|
||||
"statusBar.background": "#eee8d5",
|
||||
"statusBar.noFolderBackground": "#eee8d5",
|
||||
"statusBarItem.prominentBackground": "#ddd6c1",
|
||||
"statusBarItem.prominentHoverBackground": "#ddd6c199",
|
||||
"activityBar.background": "#ddd6c1",
|
||||
"activityBar.foreground": "#584c27",
|
||||
"activityBar.dropBackground": "#eee8d5",
|
||||
"activityBarBadge.background": "#b58900",
|
||||
"sideBar.background": "#eee8d5",
|
||||
"sideBarTitle.foreground": "#586e75",
|
||||
"titleBar.activeBackground": "#eee8d5",
|
||||
"terminal.foreground": "#657b83",
|
||||
"statusBar.debuggingBackground": "#eee8d5",
|
||||
"debugExceptionWidget.border": "#ab395b",
|
||||
"debugExceptionWidget.background": "#ddd6c1",
|
||||
"debugToolBar.background": "#ddd6c1",
|
||||
"extensionButton.prominentBackground": "#b58900",
|
||||
"extensionButton.prominentHoverBackground": "#584c27aa",
|
||||
"terminal.ansiBlack": "#657b83",
|
||||
"terminal.ansiRed": "#dc322f",
|
||||
"terminal.ansiGreen": "#859900",
|
||||
"terminal.ansiYellow": "#b58900",
|
||||
"terminal.ansiBlue": "#268bd2",
|
||||
"terminal.ansiMagenta": "#d33682",
|
||||
"terminal.ansiCyan": "#2aa198",
|
||||
"terminal.ansiWhite": "#eee8d5",
|
||||
"terminal.ansiBrightBlack": "#657b83",
|
||||
"terminal.ansiBrightRed": "#cb4b16",
|
||||
"terminal.ansiBrightGreen": "#859900",
|
||||
"terminal.ansiBrightYellow": "#657b83",
|
||||
"terminal.ansiBrightBlue": "#839496",
|
||||
"terminal.ansiBrightMagenta": "#6c71c4",
|
||||
"terminal.ansiBrightCyan": "#93a1a1",
|
||||
"terminal.ansiBrightWhite": "#eee8d5",
|
||||
"editorBracketHighlight.foreground1": "#268bd2",
|
||||
"editorBracketHighlight.foreground2": "#b58900",
|
||||
"editorBracketHighlight.foreground3": "#d33682"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#333333ff",
|
||||
"background": "#fdf6e3ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"meta.embedded",
|
||||
"source.groovy.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#FDF6E3",
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": "comment",
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": "string",
|
||||
"settings": {
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regexp",
|
||||
"scope": "string.regexp",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": "constant.numeric",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable.language",
|
||||
"variable.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": "keyword",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": "storage",
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#073642"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Class name",
|
||||
"scope": [
|
||||
"entity.name.class",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable start",
|
||||
"scope": "punctuation.definition.variable",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Embedded code markers",
|
||||
"scope": [
|
||||
"punctuation.section.embedded.begin",
|
||||
"punctuation.section.embedded.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constant",
|
||||
"scope": [
|
||||
"constant.language",
|
||||
"meta.preprocessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support.construct",
|
||||
"scope": [
|
||||
"support.function.construct",
|
||||
"keyword.other.new"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "User-defined constant",
|
||||
"scope": [
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class",
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Function argument",
|
||||
"scope": "variable.parameter",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Tag name",
|
||||
"scope": "entity.name.tag",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": "entity.other.attribute-name",
|
||||
"settings": {
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": "support.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Continuation",
|
||||
"scope": "punctuation.separator.continuation",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": "support.constant",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library Exception",
|
||||
"scope": "support.type.exception",
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library variable",
|
||||
"scope": "support.other.variable",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": "invalid",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "diff: header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#b58900",
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#E0EDDD"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: deleted",
|
||||
"scope": "markup.deleted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#dc322f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: changed",
|
||||
"scope": "markup.changed",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: inserted",
|
||||
"scope": "markup.inserted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"foreground": "#219186"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Quote",
|
||||
"scope": "markup.quote",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Lists",
|
||||
"scope": "markup.list",
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Styling",
|
||||
"scope": [
|
||||
"markup.bold",
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Inline",
|
||||
"scope": "markup.inline.raw",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Headings",
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Setext Header",
|
||||
"scope": "markup.heading.setext",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.info-token",
|
||||
"settings": {
|
||||
"foreground": "#316bcd"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.warn-token",
|
||||
"settings": {
|
||||
"foreground": "#cd9731"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.error-token",
|
||||
"settings": {
|
||||
"foreground": "#cd3131"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.debug-token",
|
||||
"settings": {
|
||||
"foreground": "#800080"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.async",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.import",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.ts",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.function-call",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.other",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.tsx",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.async",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.import",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.ts",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.function-call",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.other",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.tsx",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.separator.dictionary.key-value.json, punctuation.separator.array.json, punctuation.separator.dictionary.pair.json",
|
||||
"settings": {
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.definition.dictionary.begin.json, punctuation.definition.dictionary.end.json, punctuation.definition.array.begin.json, punctuation.definition.array.end.json",
|
||||
"settings": {
|
||||
"foreground": "#DC3272"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type.primitive",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.from",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
21
assets/themes/src/vscode/synthwave-84/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Robb Owen
|
||||
|
||||
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.
|
||||
11
assets/themes/src/vscode/synthwave-84/family.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Synthwave 84",
|
||||
"author": "Robb Owen (robb0wen)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Synthwave 84",
|
||||
"file_name": "synthwave.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
841
assets/themes/src/vscode/synthwave-84/synthwave.json
Normal file
@@ -0,0 +1,841 @@
|
||||
{
|
||||
"name": "SynthWave 84",
|
||||
"type": "dark",
|
||||
"semanticHighlighting": true,
|
||||
"colors": {
|
||||
"focusBorder": "#1f212b",
|
||||
"foreground": "#ffffff",
|
||||
"widget.shadow": "#2a2139",
|
||||
"selection.background": "#ffffff20",
|
||||
"errorForeground": "#fe4450",
|
||||
"textLink.activeForeground": "#ff7edb",
|
||||
"textLink.foreground": "#f97e72",
|
||||
"button.background": "#614D85",
|
||||
"dropdown.background": "#232530",
|
||||
"dropdown.listBackground": "#2a2139",
|
||||
"input.background": "#2a2139",
|
||||
"inputOption.activeBorder": "#ff7edb99",
|
||||
"inputValidation.errorBackground": "#fe445080",
|
||||
"inputValidation.errorBorder": "#fe445000",
|
||||
"scrollbar.shadow": "#2a2139",
|
||||
"scrollbarSlider.activeBackground": "#9d8bca20",
|
||||
"scrollbarSlider.background": "#9d8bca30",
|
||||
"scrollbarSlider.hoverBackground": "#9d8bca50",
|
||||
"badge.foreground": "#ffffff",
|
||||
"badge.background": "#2a2139",
|
||||
"progressBar.background": "#f97e72",
|
||||
"list.activeSelectionBackground": "#ffffff20",
|
||||
"list.activeSelectionForeground": "#ffffff",
|
||||
"list.dropBackground": "#34294f66",
|
||||
"list.focusBackground": "#ffffff20",
|
||||
"list.focusForeground": "#ffffff",
|
||||
"list.highlightForeground": "#f97e72",
|
||||
"list.hoverBackground": "#37294d99",
|
||||
"list.hoverForeground": "#ffffff",
|
||||
"list.inactiveSelectionBackground": "#ffffff20",
|
||||
"list.inactiveSelectionForeground": "#ffffff",
|
||||
"list.inactiveFocusBackground": "#2a213999",
|
||||
"list.errorForeground": "#fe4450E6",
|
||||
"list.warningForeground": "#72f1b8bb",
|
||||
"activityBar.background": "#171520",
|
||||
"activityBar.dropBackground": "#34294f66",
|
||||
"activityBar.foreground": "#ffffffCC",
|
||||
"activityBarBadge.background": "#f97e72",
|
||||
"activityBarBadge.foreground": "#2a2139",
|
||||
"sideBar.background": "#241b2f",
|
||||
"sideBar.foreground": "#ffffff99",
|
||||
"sideBar.dropBackground": "#34294f4c",
|
||||
"sideBarSectionHeader.background": "#241b2f",
|
||||
"sideBarSectionHeader.foreground": "#ffffffca",
|
||||
"menu.background": "#463465",
|
||||
"editorGroup.border": "#495495",
|
||||
"editorGroup.dropBackground": "#4954954a",
|
||||
"editorGroupHeader.tabsBackground": "#241b2f",
|
||||
"tab.border": "#241b2f00",
|
||||
"tab.activeBorder": "#880088",
|
||||
"tab.inactiveBackground": "#262335",
|
||||
"editor.background": "#262335",
|
||||
"editorLineNumber.foreground": "#ffffff73",
|
||||
"editorLineNumber.activeForeground": "#ffffffcc",
|
||||
"editorCursor.background": "#241b2f",
|
||||
"editorCursor.foreground": "#f97e72",
|
||||
"editor.selectionBackground": "#ffffff20",
|
||||
"editor.selectionHighlightBackground": "#ffffff20",
|
||||
"editor.wordHighlightBackground": "#34294f88",
|
||||
"editor.wordHighlightStrongBackground": "#34294f88",
|
||||
"editor.findMatchBackground": "#D18616bb",
|
||||
"editor.findMatchHighlightBackground": "#D1861655",
|
||||
"editor.findRangeHighlightBackground": "#34294f1a",
|
||||
"editor.hoverHighlightBackground": "#463564",
|
||||
"editor.lineHighlightBorder": "#7059AB66",
|
||||
"editor.rangeHighlightBackground": "#49549539",
|
||||
"editorIndentGuide.background": "#444251",
|
||||
"editorIndentGuide.activeBackground": "#A148AB80",
|
||||
"editorRuler.foreground": "#A148AB80",
|
||||
"editorCodeLens.foreground": "#ffffff7c",
|
||||
"editorBracketMatch.background": "#34294f66",
|
||||
"editorBracketMatch.border": "#495495",
|
||||
"editorOverviewRuler.border": "#34294fb3",
|
||||
"editorOverviewRuler.findMatchForeground": "#D1861699",
|
||||
"editorOverviewRuler.modifiedForeground": "#b893ce99",
|
||||
"editorOverviewRuler.addedForeground": "#09f7a099",
|
||||
"editorOverviewRuler.deletedForeground": "#fe445099",
|
||||
"editorOverviewRuler.errorForeground": "#fe4450dd",
|
||||
"editorOverviewRuler.warningForeground": "#72f1b8cc",
|
||||
"editorError.foreground": "#fe4450",
|
||||
"editorWarning.foreground": "#72f1b8cc",
|
||||
"editorGutter.modifiedBackground": "#b893ce8f",
|
||||
"editorGutter.addedBackground": "#206d4bd6",
|
||||
"editorGutter.deletedBackground": "#fa2e46a4",
|
||||
"diffEditor.insertedTextBackground": "#0beb9935",
|
||||
"diffEditor.removedTextBackground": "#fe445035",
|
||||
"editorWidget.background": "#171520DC",
|
||||
"editorWidget.border": "#ffffff22",
|
||||
"editorWidget.resizeBorder": "#ffffff44",
|
||||
"editorSuggestWidget.highlightForeground": "#f97e72",
|
||||
"editorSuggestWidget.selectedBackground": "#ffffff36",
|
||||
"peekView.border": "#495495",
|
||||
"peekViewEditor.background": "#232530",
|
||||
"peekViewEditor.matchHighlightBackground": "#D18616bb",
|
||||
"peekViewResult.background": "#232530",
|
||||
"peekViewResult.matchHighlightBackground": "#D1861655",
|
||||
"peekViewResult.selectionBackground": "#2a213980",
|
||||
"peekViewTitle.background": "#232530",
|
||||
"panelTitle.activeBorder": "#f97e72",
|
||||
"statusBar.background": "#241b2f",
|
||||
"statusBar.foreground": "#ffffff80",
|
||||
"statusBar.debuggingBackground": "#f97e72",
|
||||
"statusBar.debuggingForeground": "#08080f",
|
||||
"statusBar.noFolderBackground": "#241b2f",
|
||||
"statusBarItem.prominentBackground": "#2a2139",
|
||||
"statusBarItem.prominentHoverBackground": "#34294f",
|
||||
"titleBar.activeBackground": "#241b2f",
|
||||
"titleBar.inactiveBackground": "#241b2f",
|
||||
"extensionButton.prominentBackground": "#f97e72",
|
||||
"extensionButton.prominentHoverBackground": "#ff7edb",
|
||||
"pickerGroup.foreground": "#f97e72ea",
|
||||
"terminal.foreground": "#ffffff",
|
||||
"terminal.ansiBlue": "#03edf9",
|
||||
"terminal.ansiBrightBlue": "#03edf9",
|
||||
"terminal.ansiBrightCyan": "#03edf9",
|
||||
"terminal.ansiBrightGreen": "#72f1b8",
|
||||
"terminal.ansiBrightMagenta": "#ff7edb",
|
||||
"terminal.ansiBrightRed": "#fe4450",
|
||||
"terminal.ansiBrightYellow": "#fede5d",
|
||||
"terminal.ansiCyan": "#03edf9",
|
||||
"terminal.ansiGreen": "#72f1b8",
|
||||
"terminal.ansiMagenta": "#ff7edb",
|
||||
"terminal.ansiRed": "#fe4450",
|
||||
"terminal.ansiYellow": "#f3e70f",
|
||||
"terminal.selectionBackground": "#ffffff20",
|
||||
"terminalCursor.background": "#ffffff",
|
||||
"terminalCursor.foreground": "#03edf9",
|
||||
"debugToolBar.background": "#463465",
|
||||
"walkThrough.embeddedEditorBackground": "#232530",
|
||||
"gitDecoration.modifiedResourceForeground": "#b893ceee",
|
||||
"gitDecoration.deletedResourceForeground": "#fe4450",
|
||||
"gitDecoration.addedResourceForeground": "#72f1b8cc",
|
||||
"gitDecoration.untrackedResourceForeground": "#72f1b8",
|
||||
"gitDecoration.ignoredResourceForeground": "#ffffff59",
|
||||
"minimapGutter.addedBackground": "#09f7a099",
|
||||
"minimapGutter.modifiedBackground": "#b893ce",
|
||||
"minimapGutter.deletedBackground": "#fe4450",
|
||||
"breadcrumbPicker.background": "#232530"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment",
|
||||
"string.quoted.docstring.multi.python",
|
||||
"string.quoted.docstring.multi.python punctuation.definition.string.begin.python",
|
||||
"string.quoted.docstring.multi.python punctuation.definition.string.end.python"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#848bbd",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": [
|
||||
"string.quoted",
|
||||
"string.template",
|
||||
"punctuation.definition.string"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8b39"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation within templates",
|
||||
"scope": "string.template meta.embedded.line",
|
||||
"settings": {
|
||||
"foreground": "#b6b1b1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": ["variable", "entity.name.variable"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": "variable.language",
|
||||
"settings": {
|
||||
"foreground": "#fe4450",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Parameter",
|
||||
"scope": "variable.parameter",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage (declaration or modifier keyword)",
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Constant",
|
||||
"scope": "constant",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regex",
|
||||
"scope": "string.regexp",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": "constant.numeric",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language constant (boolean, null)",
|
||||
"scope": "constant.language",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Character escape",
|
||||
"scope": "constant.character.escape",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity",
|
||||
"scope": "entity.name",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "HTML or XML tag",
|
||||
"scope": "entity.name.tag",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "HTML or XML tag brackets",
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": "entity.other.attribute-name",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute HTML",
|
||||
"scope": "entity.other.attribute-name.html",
|
||||
"settings": {
|
||||
"foreground": "#fede5d",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Class",
|
||||
"scope": ["entity.name.type", "meta.attribute.class.html"],
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class",
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {
|
||||
"foreground": "#D50"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function",
|
||||
"scope": ["entity.name.function", "variable.function"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS Export",
|
||||
"scope": ["keyword.control.export.js", "keyword.control.import.js"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS Numerics",
|
||||
"scope": ["constant.numeric.decimal.js"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": "keyword",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Control keyword",
|
||||
"scope": "keyword.control",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operator",
|
||||
"scope": "keyword.operator",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Special operator",
|
||||
"scope": [
|
||||
"keyword.operator.new",
|
||||
"keyword.operator.expression",
|
||||
"keyword.operator.logical"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Unit",
|
||||
"scope": "keyword.other.unit",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support",
|
||||
"scope": "support",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support function",
|
||||
"scope": "support.function",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support variable",
|
||||
"scope": "support.variable",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Object literal key / property",
|
||||
"scope": ["meta.object-literal.key", "support.type.property-name"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Key-value separator",
|
||||
"scope": "punctuation.separator.key-value",
|
||||
"settings": {
|
||||
"foreground": "#b6b1b1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Embedded punctuation",
|
||||
"scope": "punctuation.section.embedded",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Template expression",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression.begin",
|
||||
"punctuation.definition.template-expression.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS property",
|
||||
"scope": [
|
||||
"support.type.property-name.css",
|
||||
"support.type.property-name.json"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS Switch control",
|
||||
"scope": "switch-block.expr.js",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS object path",
|
||||
"scope": "variable.other.constant.property.js, variable.other.property.js",
|
||||
"settings": {
|
||||
"foreground": "#2ee2fa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Color",
|
||||
"scope": "constant.other.color",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Font names",
|
||||
"scope": "support.constant.font-name",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS #id",
|
||||
"scope": "entity.other.attribute-name.id",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pseudo CSS",
|
||||
"scope": [
|
||||
"entity.other.attribute-name.pseudo-element",
|
||||
"entity.other.attribute-name.pseudo-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D50"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS support functions (rgb)",
|
||||
"scope": "support.function.misc.css",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": ["markup.heading", "entity.name.section"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup text",
|
||||
"scope": ["text.html", "keyword.operator.assignment"],
|
||||
"settings": {
|
||||
"foreground": "#ffffffee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup quote",
|
||||
"scope": "markup.quote",
|
||||
"settings": {
|
||||
"foreground": "#b6b1b1cc",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup list",
|
||||
"scope": "beginning.punctuation.definition.list",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup link",
|
||||
"scope": "markup.underline.link",
|
||||
"settings": {
|
||||
"foreground": "#D50"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup link description",
|
||||
"scope": "string.other.link.description",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Python function call",
|
||||
"scope": "meta.function-call.generic.python",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Python variable params",
|
||||
"scope": "variable.parameter.function-call.python",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C# storage type",
|
||||
"scope": "storage.type.cs",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C# local variable",
|
||||
"scope": "entity.name.variable.local.cs",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C# properties and fields",
|
||||
"scope": [
|
||||
"entity.name.variable.field.cs",
|
||||
"entity.name.variable.property.cs"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C placeholder",
|
||||
"scope": "constant.other.placeholder.c",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C preprocessors",
|
||||
"scope": [
|
||||
"keyword.control.directive.include.c",
|
||||
"keyword.control.directive.define.c"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C storage modifier",
|
||||
"scope": "storage.modifier.c",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ operators",
|
||||
"scope": "source.cpp keyword.operator",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ placeholder",
|
||||
"scope": "constant.other.placeholder.cpp",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ include",
|
||||
"scope": [
|
||||
"keyword.control.directive.include.cpp",
|
||||
"keyword.control.directive.define.cpp"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ constant modifier",
|
||||
"scope": "storage.modifier.specifier.const.cpp",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Classes",
|
||||
"scope": [
|
||||
"source.elixir support.type.elixir",
|
||||
"source.elixir meta.module.elixir entity.name.class.elixir"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Functions",
|
||||
"scope": "source.elixir entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Constants",
|
||||
"scope": [
|
||||
"source.elixir constant.other.symbol.elixir",
|
||||
"source.elixir constant.other.keywords.elixir"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir String Punctuation",
|
||||
"scope": "source.elixir punctuation.definition.string",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir",
|
||||
"scope": [
|
||||
"source.elixir variable.other.readwrite.module.elixir",
|
||||
"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Binary Punctuation",
|
||||
"scope": "source.elixir .punctuation.binary.elixir",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Globals",
|
||||
"scope": ["entity.global.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Storage",
|
||||
"scope": ["storage.control.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Metadata",
|
||||
"scope": ["meta.metadata.simple.clojure", "meta.metadata.map.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#fe4450",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Macros, Quoted",
|
||||
"scope": ["meta.quoted-expression.clojure"],
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Symbols",
|
||||
"scope": ["meta.symbol.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edbff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go basic",
|
||||
"scope": "source.go",
|
||||
"settings": {
|
||||
"foreground": "#ff7edbff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go Function Calls",
|
||||
"scope": "source.go meta.function-call.go",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go Keywords",
|
||||
"scope": [
|
||||
"source.go keyword.package.go",
|
||||
"source.go keyword.import.go",
|
||||
"source.go keyword.function.go",
|
||||
"source.go keyword.type.go",
|
||||
"source.go keyword.const.go",
|
||||
"source.go keyword.var.go",
|
||||
"source.go keyword.map.go",
|
||||
"source.go keyword.channel.go",
|
||||
"source.go keyword.control.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go interfaces",
|
||||
"scope": [
|
||||
"source.go storage.type",
|
||||
"source.go keyword.struct.go",
|
||||
"source.go keyword.interface.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go Constants e.g. nil, string format (%s, %d, etc.)",
|
||||
"scope": [
|
||||
"source.go constant.language.go",
|
||||
"source.go constant.other.placeholder.go",
|
||||
"source.go variable"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown links and image paths",
|
||||
"scope": [
|
||||
"markup.underline.link.markdown",
|
||||
"markup.inline.raw.string.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown links and image paths",
|
||||
"scope": ["string.other.link.title.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown headings",
|
||||
"scope": ["markup.heading.markdown", "entity.name.section.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown italic",
|
||||
"scope": ["markup.italic.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown bold",
|
||||
"scope": ["markup.bold.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown quotes",
|
||||
"scope": [
|
||||
"punctuation.definition.quote.begin.markdown",
|
||||
"markup.quote.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Basic source colours",
|
||||
"scope": ["source.dart", "source.python", "source.scala"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edbff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Dart strings",
|
||||
"scope": ["string.interpolated.single.dart"],
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Dart variable params",
|
||||
"scope": ["variable.parameter.dart"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Dart numerics",
|
||||
"scope": ["constant.numeric.dart"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Scala variable params",
|
||||
"scope": ["variable.parameter.scala"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Scala",
|
||||
"scope": ["meta.template.expression.scala"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -8,9 +8,13 @@ publish = false
|
||||
path = "src/ai.rs"
|
||||
doctest = false
|
||||
|
||||
[features]
|
||||
test-support = []
|
||||
|
||||
[dependencies]
|
||||
gpui = { path = "../gpui" }
|
||||
util = { path = "../util" }
|
||||
language = { path = "../language" }
|
||||
async-trait.workspace = true
|
||||
anyhow.workspace = true
|
||||
futures.workspace = true
|
||||
@@ -25,7 +29,7 @@ postage.workspace = true
|
||||
rand.workspace = true
|
||||
log.workspace = true
|
||||
parse_duration = "2.1.1"
|
||||
tiktoken-rs = "0.5.0"
|
||||
tiktoken-rs.workspace = true
|
||||
matrixmultiply = "0.3.7"
|
||||
rusqlite = { version = "0.29.0", features = ["blob", "array", "modern_sqlite"] }
|
||||
bincode = "1.3.3"
|
||||
|
||||
@@ -1,2 +1,8 @@
|
||||
pub mod auth;
|
||||
pub mod completion;
|
||||
pub mod embedding;
|
||||
pub mod models;
|
||||
pub mod prompts;
|
||||
pub mod providers;
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
pub mod test;
|
||||
|
||||
15
crates/ai/src/auth.rs
Normal file
@@ -0,0 +1,15 @@
|
||||
use gpui::AppContext;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub enum ProviderCredential {
|
||||
Credentials { api_key: String },
|
||||
NoCredentials,
|
||||
NotNeeded,
|
||||
}
|
||||
|
||||
pub trait CredentialProvider: Send + Sync {
|
||||
fn has_credentials(&self) -> bool;
|
||||
fn retrieve_credentials(&self, cx: &AppContext) -> ProviderCredential;
|
||||
fn save_credentials(&self, cx: &AppContext, credential: ProviderCredential);
|
||||
fn delete_credentials(&self, cx: &AppContext);
|
||||
}
|
||||
@@ -1,212 +1,23 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use futures::{
|
||||
future::BoxFuture, io::BufReader, stream::BoxStream, AsyncBufReadExt, AsyncReadExt, FutureExt,
|
||||
Stream, StreamExt,
|
||||
};
|
||||
use gpui::executor::Background;
|
||||
use isahc::{http::StatusCode, Request, RequestExt};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{
|
||||
fmt::{self, Display},
|
||||
io,
|
||||
sync::Arc,
|
||||
};
|
||||
use anyhow::Result;
|
||||
use futures::{future::BoxFuture, stream::BoxStream};
|
||||
|
||||
pub const OPENAI_API_URL: &'static str = "https://api.openai.com/v1";
|
||||
use crate::{auth::CredentialProvider, models::LanguageModel};
|
||||
|
||||
#[derive(Clone, Copy, Serialize, Deserialize, Debug, Eq, PartialEq)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum Role {
|
||||
User,
|
||||
Assistant,
|
||||
System,
|
||||
pub trait CompletionRequest: Send + Sync {
|
||||
fn data(&self) -> serde_json::Result<String>;
|
||||
}
|
||||
|
||||
impl Role {
|
||||
pub fn cycle(&mut self) {
|
||||
*self = match self {
|
||||
Role::User => Role::Assistant,
|
||||
Role::Assistant => Role::System,
|
||||
Role::System => Role::User,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Role {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Role::User => write!(f, "User"),
|
||||
Role::Assistant => write!(f, "Assistant"),
|
||||
Role::System => write!(f, "System"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
|
||||
pub struct RequestMessage {
|
||||
pub role: Role,
|
||||
pub content: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Serialize)]
|
||||
pub struct OpenAIRequest {
|
||||
pub model: String,
|
||||
pub messages: Vec<RequestMessage>,
|
||||
pub stream: bool,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
|
||||
pub struct ResponseMessage {
|
||||
pub role: Option<Role>,
|
||||
pub content: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct OpenAIUsage {
|
||||
pub prompt_tokens: u32,
|
||||
pub completion_tokens: u32,
|
||||
pub total_tokens: u32,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct ChatChoiceDelta {
|
||||
pub index: u32,
|
||||
pub delta: ResponseMessage,
|
||||
pub finish_reason: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct OpenAIResponseStreamEvent {
|
||||
pub id: Option<String>,
|
||||
pub object: String,
|
||||
pub created: u32,
|
||||
pub model: String,
|
||||
pub choices: Vec<ChatChoiceDelta>,
|
||||
pub usage: Option<OpenAIUsage>,
|
||||
}
|
||||
|
||||
pub async fn stream_completion(
|
||||
api_key: String,
|
||||
executor: Arc<Background>,
|
||||
mut request: OpenAIRequest,
|
||||
) -> Result<impl Stream<Item = Result<OpenAIResponseStreamEvent>>> {
|
||||
request.stream = true;
|
||||
|
||||
let (tx, rx) = futures::channel::mpsc::unbounded::<Result<OpenAIResponseStreamEvent>>();
|
||||
|
||||
let json_data = serde_json::to_string(&request)?;
|
||||
let mut response = Request::post(format!("{OPENAI_API_URL}/chat/completions"))
|
||||
.header("Content-Type", "application/json")
|
||||
.header("Authorization", format!("Bearer {}", api_key))
|
||||
.body(json_data)?
|
||||
.send_async()
|
||||
.await?;
|
||||
|
||||
let status = response.status();
|
||||
if status == StatusCode::OK {
|
||||
executor
|
||||
.spawn(async move {
|
||||
let mut lines = BufReader::new(response.body_mut()).lines();
|
||||
|
||||
fn parse_line(
|
||||
line: Result<String, io::Error>,
|
||||
) -> Result<Option<OpenAIResponseStreamEvent>> {
|
||||
if let Some(data) = line?.strip_prefix("data: ") {
|
||||
let event = serde_json::from_str(&data)?;
|
||||
Ok(Some(event))
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
while let Some(line) = lines.next().await {
|
||||
if let Some(event) = parse_line(line).transpose() {
|
||||
let done = event.as_ref().map_or(false, |event| {
|
||||
event
|
||||
.choices
|
||||
.last()
|
||||
.map_or(false, |choice| choice.finish_reason.is_some())
|
||||
});
|
||||
if tx.unbounded_send(event).is_err() {
|
||||
break;
|
||||
}
|
||||
|
||||
if done {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
anyhow::Ok(())
|
||||
})
|
||||
.detach();
|
||||
|
||||
Ok(rx)
|
||||
} else {
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIResponse {
|
||||
error: OpenAIError,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIError {
|
||||
message: String,
|
||||
}
|
||||
|
||||
match serde_json::from_str::<OpenAIResponse>(&body) {
|
||||
Ok(response) if !response.error.message.is_empty() => Err(anyhow!(
|
||||
"Failed to connect to OpenAI API: {}",
|
||||
response.error.message,
|
||||
)),
|
||||
|
||||
_ => Err(anyhow!(
|
||||
"Failed to connect to OpenAI API: {} {}",
|
||||
response.status(),
|
||||
body,
|
||||
)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait CompletionProvider {
|
||||
pub trait CompletionProvider: CredentialProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel>;
|
||||
fn complete(
|
||||
&self,
|
||||
prompt: OpenAIRequest,
|
||||
prompt: Box<dyn CompletionRequest>,
|
||||
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>>;
|
||||
fn box_clone(&self) -> Box<dyn CompletionProvider>;
|
||||
}
|
||||
|
||||
pub struct OpenAICompletionProvider {
|
||||
api_key: String,
|
||||
executor: Arc<Background>,
|
||||
}
|
||||
|
||||
impl OpenAICompletionProvider {
|
||||
pub fn new(api_key: String, executor: Arc<Background>) -> Self {
|
||||
Self { api_key, executor }
|
||||
}
|
||||
}
|
||||
|
||||
impl CompletionProvider for OpenAICompletionProvider {
|
||||
fn complete(
|
||||
&self,
|
||||
prompt: OpenAIRequest,
|
||||
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>> {
|
||||
let request = stream_completion(self.api_key.clone(), self.executor.clone(), prompt);
|
||||
async move {
|
||||
let response = request.await?;
|
||||
let stream = response
|
||||
.filter_map(|response| async move {
|
||||
match response {
|
||||
Ok(mut response) => Some(Ok(response.choices.pop()?.delta.content?)),
|
||||
Err(error) => Some(Err(error)),
|
||||
}
|
||||
})
|
||||
.boxed();
|
||||
Ok(stream)
|
||||
}
|
||||
.boxed()
|
||||
impl Clone for Box<dyn CompletionProvider> {
|
||||
fn clone(&self) -> Box<dyn CompletionProvider> {
|
||||
self.box_clone()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,13 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use std::time::Instant;
|
||||
|
||||
use anyhow::Result;
|
||||
use async_trait::async_trait;
|
||||
use futures::AsyncReadExt;
|
||||
use gpui::executor::Background;
|
||||
use gpui::serde_json;
|
||||
use isahc::http::StatusCode;
|
||||
use isahc::prelude::Configurable;
|
||||
use isahc::{AsyncBody, Response};
|
||||
use lazy_static::lazy_static;
|
||||
use ordered_float::OrderedFloat;
|
||||
use parking_lot::Mutex;
|
||||
use parse_duration::parse;
|
||||
use postage::watch;
|
||||
use rusqlite::types::{FromSql, FromSqlResult, ToSqlOutput, ValueRef};
|
||||
use rusqlite::ToSql;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::env;
|
||||
use std::ops::Add;
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, Instant};
|
||||
use tiktoken_rs::{cl100k_base, CoreBPE};
|
||||
use util::http::{HttpClient, Request};
|
||||
|
||||
lazy_static! {
|
||||
static ref OPENAI_API_KEY: Option<String> = env::var("OPENAI_API_KEY").ok();
|
||||
static ref OPENAI_BPE_TOKENIZER: CoreBPE = cl100k_base().unwrap();
|
||||
}
|
||||
use crate::auth::CredentialProvider;
|
||||
use crate::models::LanguageModel;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub struct Embedding(pub Vec<f32>);
|
||||
@@ -85,277 +68,14 @@ impl Embedding {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct OpenAIEmbeddings {
|
||||
pub client: Arc<dyn HttpClient>,
|
||||
pub executor: Arc<Background>,
|
||||
rate_limit_count_rx: watch::Receiver<Option<Instant>>,
|
||||
rate_limit_count_tx: Arc<Mutex<watch::Sender<Option<Instant>>>>,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct OpenAIEmbeddingRequest<'a> {
|
||||
model: &'static str,
|
||||
input: Vec<&'a str>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIEmbeddingResponse {
|
||||
data: Vec<OpenAIEmbedding>,
|
||||
usage: OpenAIEmbeddingUsage,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct OpenAIEmbedding {
|
||||
embedding: Vec<f32>,
|
||||
index: usize,
|
||||
object: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIEmbeddingUsage {
|
||||
prompt_tokens: usize,
|
||||
total_tokens: usize,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait EmbeddingProvider: Sync + Send {
|
||||
fn is_authenticated(&self) -> bool;
|
||||
pub trait EmbeddingProvider: CredentialProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel>;
|
||||
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>>;
|
||||
fn max_tokens_per_batch(&self) -> usize;
|
||||
fn truncate(&self, span: &str) -> (String, usize);
|
||||
fn rate_limit_expiration(&self) -> Option<Instant>;
|
||||
}
|
||||
|
||||
pub struct DummyEmbeddings {}
|
||||
|
||||
#[async_trait]
|
||||
impl EmbeddingProvider for DummyEmbeddings {
|
||||
fn is_authenticated(&self) -> bool {
|
||||
true
|
||||
}
|
||||
fn rate_limit_expiration(&self) -> Option<Instant> {
|
||||
None
|
||||
}
|
||||
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>> {
|
||||
// 1024 is the OpenAI Embeddings size for ada models.
|
||||
// the model we will likely be starting with.
|
||||
let dummy_vec = Embedding::from(vec![0.32 as f32; 1536]);
|
||||
return Ok(vec![dummy_vec; spans.len()]);
|
||||
}
|
||||
|
||||
fn max_tokens_per_batch(&self) -> usize {
|
||||
OPENAI_INPUT_LIMIT
|
||||
}
|
||||
|
||||
fn truncate(&self, span: &str) -> (String, usize) {
|
||||
let mut tokens = OPENAI_BPE_TOKENIZER.encode_with_special_tokens(span);
|
||||
let token_count = tokens.len();
|
||||
let output = if token_count > OPENAI_INPUT_LIMIT {
|
||||
tokens.truncate(OPENAI_INPUT_LIMIT);
|
||||
let new_input = OPENAI_BPE_TOKENIZER.decode(tokens.clone());
|
||||
new_input.ok().unwrap_or_else(|| span.to_string())
|
||||
} else {
|
||||
span.to_string()
|
||||
};
|
||||
|
||||
(output, tokens.len())
|
||||
}
|
||||
}
|
||||
|
||||
const OPENAI_INPUT_LIMIT: usize = 8190;
|
||||
|
||||
impl OpenAIEmbeddings {
|
||||
pub fn new(client: Arc<dyn HttpClient>, executor: Arc<Background>) -> Self {
|
||||
let (rate_limit_count_tx, rate_limit_count_rx) = watch::channel_with(None);
|
||||
let rate_limit_count_tx = Arc::new(Mutex::new(rate_limit_count_tx));
|
||||
|
||||
OpenAIEmbeddings {
|
||||
client,
|
||||
executor,
|
||||
rate_limit_count_rx,
|
||||
rate_limit_count_tx,
|
||||
}
|
||||
}
|
||||
|
||||
fn resolve_rate_limit(&self) {
|
||||
let reset_time = *self.rate_limit_count_tx.lock().borrow();
|
||||
|
||||
if let Some(reset_time) = reset_time {
|
||||
if Instant::now() >= reset_time {
|
||||
*self.rate_limit_count_tx.lock().borrow_mut() = None
|
||||
}
|
||||
}
|
||||
|
||||
log::trace!(
|
||||
"resolving reset time: {:?}",
|
||||
*self.rate_limit_count_tx.lock().borrow()
|
||||
);
|
||||
}
|
||||
|
||||
fn update_reset_time(&self, reset_time: Instant) {
|
||||
let original_time = *self.rate_limit_count_tx.lock().borrow();
|
||||
|
||||
let updated_time = if let Some(original_time) = original_time {
|
||||
if reset_time < original_time {
|
||||
Some(reset_time)
|
||||
} else {
|
||||
Some(original_time)
|
||||
}
|
||||
} else {
|
||||
Some(reset_time)
|
||||
};
|
||||
|
||||
log::trace!("updating rate limit time: {:?}", updated_time);
|
||||
|
||||
*self.rate_limit_count_tx.lock().borrow_mut() = updated_time;
|
||||
}
|
||||
async fn send_request(
|
||||
&self,
|
||||
api_key: &str,
|
||||
spans: Vec<&str>,
|
||||
request_timeout: u64,
|
||||
) -> Result<Response<AsyncBody>> {
|
||||
let request = Request::post("https://api.openai.com/v1/embeddings")
|
||||
.redirect_policy(isahc::config::RedirectPolicy::Follow)
|
||||
.timeout(Duration::from_secs(request_timeout))
|
||||
.header("Content-Type", "application/json")
|
||||
.header("Authorization", format!("Bearer {}", api_key))
|
||||
.body(
|
||||
serde_json::to_string(&OpenAIEmbeddingRequest {
|
||||
input: spans.clone(),
|
||||
model: "text-embedding-ada-002",
|
||||
})
|
||||
.unwrap()
|
||||
.into(),
|
||||
)?;
|
||||
|
||||
Ok(self.client.send(request).await?)
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl EmbeddingProvider for OpenAIEmbeddings {
|
||||
fn is_authenticated(&self) -> bool {
|
||||
OPENAI_API_KEY.as_ref().is_some()
|
||||
}
|
||||
fn max_tokens_per_batch(&self) -> usize {
|
||||
50000
|
||||
}
|
||||
|
||||
fn rate_limit_expiration(&self) -> Option<Instant> {
|
||||
*self.rate_limit_count_rx.borrow()
|
||||
}
|
||||
fn truncate(&self, span: &str) -> (String, usize) {
|
||||
let mut tokens = OPENAI_BPE_TOKENIZER.encode_with_special_tokens(span);
|
||||
let output = if tokens.len() > OPENAI_INPUT_LIMIT {
|
||||
tokens.truncate(OPENAI_INPUT_LIMIT);
|
||||
OPENAI_BPE_TOKENIZER
|
||||
.decode(tokens.clone())
|
||||
.ok()
|
||||
.unwrap_or_else(|| span.to_string())
|
||||
} else {
|
||||
span.to_string()
|
||||
};
|
||||
|
||||
(output, tokens.len())
|
||||
}
|
||||
|
||||
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>> {
|
||||
const BACKOFF_SECONDS: [usize; 4] = [3, 5, 15, 45];
|
||||
const MAX_RETRIES: usize = 4;
|
||||
|
||||
let api_key = OPENAI_API_KEY
|
||||
.as_ref()
|
||||
.ok_or_else(|| anyhow!("no api key"))?;
|
||||
|
||||
let mut request_number = 0;
|
||||
let mut rate_limiting = false;
|
||||
let mut request_timeout: u64 = 15;
|
||||
let mut response: Response<AsyncBody>;
|
||||
while request_number < MAX_RETRIES {
|
||||
response = self
|
||||
.send_request(
|
||||
api_key,
|
||||
spans.iter().map(|x| &**x).collect(),
|
||||
request_timeout,
|
||||
)
|
||||
.await?;
|
||||
|
||||
request_number += 1;
|
||||
|
||||
match response.status() {
|
||||
StatusCode::REQUEST_TIMEOUT => {
|
||||
request_timeout += 5;
|
||||
}
|
||||
StatusCode::OK => {
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
let response: OpenAIEmbeddingResponse = serde_json::from_str(&body)?;
|
||||
|
||||
log::trace!(
|
||||
"openai embedding completed. tokens: {:?}",
|
||||
response.usage.total_tokens
|
||||
);
|
||||
|
||||
// If we complete a request successfully that was previously rate_limited
|
||||
// resolve the rate limit
|
||||
if rate_limiting {
|
||||
self.resolve_rate_limit()
|
||||
}
|
||||
|
||||
return Ok(response
|
||||
.data
|
||||
.into_iter()
|
||||
.map(|embedding| Embedding::from(embedding.embedding))
|
||||
.collect());
|
||||
}
|
||||
StatusCode::TOO_MANY_REQUESTS => {
|
||||
rate_limiting = true;
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
|
||||
let delay_duration = {
|
||||
let delay = Duration::from_secs(BACKOFF_SECONDS[request_number - 1] as u64);
|
||||
if let Some(time_to_reset) =
|
||||
response.headers().get("x-ratelimit-reset-tokens")
|
||||
{
|
||||
if let Ok(time_str) = time_to_reset.to_str() {
|
||||
parse(time_str).unwrap_or(delay)
|
||||
} else {
|
||||
delay
|
||||
}
|
||||
} else {
|
||||
delay
|
||||
}
|
||||
};
|
||||
|
||||
// If we've previously rate limited, increment the duration but not the count
|
||||
let reset_time = Instant::now().add(delay_duration);
|
||||
self.update_reset_time(reset_time);
|
||||
|
||||
log::trace!(
|
||||
"openai rate limiting: waiting {:?} until lifted",
|
||||
&delay_duration
|
||||
);
|
||||
|
||||
self.executor.timer(delay_duration).await;
|
||||
}
|
||||
_ => {
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
return Err(anyhow!(
|
||||
"open ai bad request: {:?} {:?}",
|
||||
&response.status(),
|
||||
body
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(anyhow!("openai max retries"))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
16
crates/ai/src/models.rs
Normal file
@@ -0,0 +1,16 @@
|
||||
pub enum TruncationDirection {
|
||||
Start,
|
||||
End,
|
||||
}
|
||||
|
||||
pub trait LanguageModel {
|
||||
fn name(&self) -> String;
|
||||
fn count_tokens(&self, content: &str) -> anyhow::Result<usize>;
|
||||
fn truncate(
|
||||
&self,
|
||||
content: &str,
|
||||
length: usize,
|
||||
direction: TruncationDirection,
|
||||
) -> anyhow::Result<String>;
|
||||
fn capacity(&self) -> anyhow::Result<usize>;
|
||||
}
|
||||
330
crates/ai/src/prompts/base.rs
Normal file
@@ -0,0 +1,330 @@
|
||||
use std::cmp::Reverse;
|
||||
use std::ops::Range;
|
||||
use std::sync::Arc;
|
||||
|
||||
use language::BufferSnapshot;
|
||||
use util::ResultExt;
|
||||
|
||||
use crate::models::LanguageModel;
|
||||
use crate::prompts::repository_context::PromptCodeSnippet;
|
||||
|
||||
pub(crate) enum PromptFileType {
|
||||
Text,
|
||||
Code,
|
||||
}
|
||||
|
||||
// TODO: Set this up to manage for defaults well
|
||||
pub struct PromptArguments {
|
||||
pub model: Arc<dyn LanguageModel>,
|
||||
pub user_prompt: Option<String>,
|
||||
pub language_name: Option<String>,
|
||||
pub project_name: Option<String>,
|
||||
pub snippets: Vec<PromptCodeSnippet>,
|
||||
pub reserved_tokens: usize,
|
||||
pub buffer: Option<BufferSnapshot>,
|
||||
pub selected_range: Option<Range<usize>>,
|
||||
}
|
||||
|
||||
impl PromptArguments {
|
||||
pub(crate) fn get_file_type(&self) -> PromptFileType {
|
||||
if self
|
||||
.language_name
|
||||
.as_ref()
|
||||
.and_then(|name| Some(!["Markdown", "Plain Text"].contains(&name.as_str())))
|
||||
.unwrap_or(true)
|
||||
{
|
||||
PromptFileType::Code
|
||||
} else {
|
||||
PromptFileType::Text
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait PromptTemplate {
|
||||
fn generate(
|
||||
&self,
|
||||
args: &PromptArguments,
|
||||
max_token_length: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize)>;
|
||||
}
|
||||
|
||||
#[repr(i8)]
|
||||
#[derive(PartialEq, Eq, Ord)]
|
||||
pub enum PromptPriority {
|
||||
Mandatory, // Ignores truncation
|
||||
Ordered { order: usize }, // Truncates based on priority
|
||||
}
|
||||
|
||||
impl PartialOrd for PromptPriority {
|
||||
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
|
||||
match (self, other) {
|
||||
(Self::Mandatory, Self::Mandatory) => Some(std::cmp::Ordering::Equal),
|
||||
(Self::Mandatory, Self::Ordered { .. }) => Some(std::cmp::Ordering::Greater),
|
||||
(Self::Ordered { .. }, Self::Mandatory) => Some(std::cmp::Ordering::Less),
|
||||
(Self::Ordered { order: a }, Self::Ordered { order: b }) => b.partial_cmp(a),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct PromptChain {
|
||||
args: PromptArguments,
|
||||
templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)>,
|
||||
}
|
||||
|
||||
impl PromptChain {
|
||||
pub fn new(
|
||||
args: PromptArguments,
|
||||
templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)>,
|
||||
) -> Self {
|
||||
PromptChain { args, templates }
|
||||
}
|
||||
|
||||
pub fn generate(&self, truncate: bool) -> anyhow::Result<(String, usize)> {
|
||||
// Argsort based on Prompt Priority
|
||||
let seperator = "\n";
|
||||
let seperator_tokens = self.args.model.count_tokens(seperator)?;
|
||||
let mut sorted_indices = (0..self.templates.len()).collect::<Vec<_>>();
|
||||
sorted_indices.sort_by_key(|&i| Reverse(&self.templates[i].0));
|
||||
|
||||
// If Truncate
|
||||
let mut tokens_outstanding = if truncate {
|
||||
Some(self.args.model.capacity()? - self.args.reserved_tokens)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let mut prompts = vec!["".to_string(); sorted_indices.len()];
|
||||
for idx in sorted_indices {
|
||||
let (_, template) = &self.templates[idx];
|
||||
|
||||
if let Some((template_prompt, prompt_token_count)) =
|
||||
template.generate(&self.args, tokens_outstanding).log_err()
|
||||
{
|
||||
if template_prompt != "" {
|
||||
prompts[idx] = template_prompt;
|
||||
|
||||
if let Some(remaining_tokens) = tokens_outstanding {
|
||||
let new_tokens = prompt_token_count + seperator_tokens;
|
||||
tokens_outstanding = if remaining_tokens > new_tokens {
|
||||
Some(remaining_tokens - new_tokens)
|
||||
} else {
|
||||
Some(0)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
prompts.retain(|x| x != "");
|
||||
|
||||
let full_prompt = prompts.join(seperator);
|
||||
let total_token_count = self.args.model.count_tokens(&full_prompt)?;
|
||||
anyhow::Ok((prompts.join(seperator), total_token_count))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub(crate) mod tests {
|
||||
use crate::models::TruncationDirection;
|
||||
use crate::test::FakeLanguageModel;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
pub fn test_prompt_chain() {
|
||||
struct TestPromptTemplate {}
|
||||
impl PromptTemplate for TestPromptTemplate {
|
||||
fn generate(
|
||||
&self,
|
||||
args: &PromptArguments,
|
||||
max_token_length: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize)> {
|
||||
let mut content = "This is a test prompt template".to_string();
|
||||
|
||||
let mut token_count = args.model.count_tokens(&content)?;
|
||||
if let Some(max_token_length) = max_token_length {
|
||||
if token_count > max_token_length {
|
||||
content = args.model.truncate(
|
||||
&content,
|
||||
max_token_length,
|
||||
TruncationDirection::End,
|
||||
)?;
|
||||
token_count = max_token_length;
|
||||
}
|
||||
}
|
||||
|
||||
anyhow::Ok((content, token_count))
|
||||
}
|
||||
}
|
||||
|
||||
struct TestLowPriorityTemplate {}
|
||||
impl PromptTemplate for TestLowPriorityTemplate {
|
||||
fn generate(
|
||||
&self,
|
||||
args: &PromptArguments,
|
||||
max_token_length: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize)> {
|
||||
let mut content = "This is a low priority test prompt template".to_string();
|
||||
|
||||
let mut token_count = args.model.count_tokens(&content)?;
|
||||
if let Some(max_token_length) = max_token_length {
|
||||
if token_count > max_token_length {
|
||||
content = args.model.truncate(
|
||||
&content,
|
||||
max_token_length,
|
||||
TruncationDirection::End,
|
||||
)?;
|
||||
token_count = max_token_length;
|
||||
}
|
||||
}
|
||||
|
||||
anyhow::Ok((content, token_count))
|
||||
}
|
||||
}
|
||||
|
||||
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity: 100 });
|
||||
let args = PromptArguments {
|
||||
model: model.clone(),
|
||||
language_name: None,
|
||||
project_name: None,
|
||||
snippets: Vec::new(),
|
||||
reserved_tokens: 0,
|
||||
buffer: None,
|
||||
selected_range: None,
|
||||
user_prompt: None,
|
||||
};
|
||||
|
||||
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
|
||||
(
|
||||
PromptPriority::Ordered { order: 0 },
|
||||
Box::new(TestPromptTemplate {}),
|
||||
),
|
||||
(
|
||||
PromptPriority::Ordered { order: 1 },
|
||||
Box::new(TestLowPriorityTemplate {}),
|
||||
),
|
||||
];
|
||||
let chain = PromptChain::new(args, templates);
|
||||
|
||||
let (prompt, token_count) = chain.generate(false).unwrap();
|
||||
|
||||
assert_eq!(
|
||||
prompt,
|
||||
"This is a test prompt template\nThis is a low priority test prompt template"
|
||||
.to_string()
|
||||
);
|
||||
|
||||
assert_eq!(model.count_tokens(&prompt).unwrap(), token_count);
|
||||
|
||||
// Testing with Truncation Off
|
||||
// Should ignore capacity and return all prompts
|
||||
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity: 20 });
|
||||
let args = PromptArguments {
|
||||
model: model.clone(),
|
||||
language_name: None,
|
||||
project_name: None,
|
||||
snippets: Vec::new(),
|
||||
reserved_tokens: 0,
|
||||
buffer: None,
|
||||
selected_range: None,
|
||||
user_prompt: None,
|
||||
};
|
||||
|
||||
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
|
||||
(
|
||||
PromptPriority::Ordered { order: 0 },
|
||||
Box::new(TestPromptTemplate {}),
|
||||
),
|
||||
(
|
||||
PromptPriority::Ordered { order: 1 },
|
||||
Box::new(TestLowPriorityTemplate {}),
|
||||
),
|
||||
];
|
||||
let chain = PromptChain::new(args, templates);
|
||||
|
||||
let (prompt, token_count) = chain.generate(false).unwrap();
|
||||
|
||||
assert_eq!(
|
||||
prompt,
|
||||
"This is a test prompt template\nThis is a low priority test prompt template"
|
||||
.to_string()
|
||||
);
|
||||
|
||||
assert_eq!(model.count_tokens(&prompt).unwrap(), token_count);
|
||||
|
||||
// Testing with Truncation Off
|
||||
// Should ignore capacity and return all prompts
|
||||
let capacity = 20;
|
||||
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity });
|
||||
let args = PromptArguments {
|
||||
model: model.clone(),
|
||||
language_name: None,
|
||||
project_name: None,
|
||||
snippets: Vec::new(),
|
||||
reserved_tokens: 0,
|
||||
buffer: None,
|
||||
selected_range: None,
|
||||
user_prompt: None,
|
||||
};
|
||||
|
||||
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
|
||||
(
|
||||
PromptPriority::Ordered { order: 0 },
|
||||
Box::new(TestPromptTemplate {}),
|
||||
),
|
||||
(
|
||||
PromptPriority::Ordered { order: 1 },
|
||||
Box::new(TestLowPriorityTemplate {}),
|
||||
),
|
||||
(
|
||||
PromptPriority::Ordered { order: 2 },
|
||||
Box::new(TestLowPriorityTemplate {}),
|
||||
),
|
||||
];
|
||||
let chain = PromptChain::new(args, templates);
|
||||
|
||||
let (prompt, token_count) = chain.generate(true).unwrap();
|
||||
|
||||
assert_eq!(prompt, "This is a test promp".to_string());
|
||||
assert_eq!(token_count, capacity);
|
||||
|
||||
// Change Ordering of Prompts Based on Priority
|
||||
let capacity = 120;
|
||||
let reserved_tokens = 10;
|
||||
let model: Arc<dyn LanguageModel> = Arc::new(FakeLanguageModel { capacity });
|
||||
let args = PromptArguments {
|
||||
model: model.clone(),
|
||||
language_name: None,
|
||||
project_name: None,
|
||||
snippets: Vec::new(),
|
||||
reserved_tokens,
|
||||
buffer: None,
|
||||
selected_range: None,
|
||||
user_prompt: None,
|
||||
};
|
||||
let templates: Vec<(PromptPriority, Box<dyn PromptTemplate>)> = vec![
|
||||
(
|
||||
PromptPriority::Mandatory,
|
||||
Box::new(TestLowPriorityTemplate {}),
|
||||
),
|
||||
(
|
||||
PromptPriority::Ordered { order: 0 },
|
||||
Box::new(TestPromptTemplate {}),
|
||||
),
|
||||
(
|
||||
PromptPriority::Ordered { order: 1 },
|
||||
Box::new(TestLowPriorityTemplate {}),
|
||||
),
|
||||
];
|
||||
let chain = PromptChain::new(args, templates);
|
||||
|
||||
let (prompt, token_count) = chain.generate(true).unwrap();
|
||||
|
||||
assert_eq!(
|
||||
prompt,
|
||||
"This is a low priority test prompt template\nThis is a test prompt template\nThis is a low priority test prompt "
|
||||
.to_string()
|
||||
);
|
||||
assert_eq!(token_count, capacity - reserved_tokens);
|
||||
}
|
||||
}
|
||||
164
crates/ai/src/prompts/file_context.rs
Normal file
@@ -0,0 +1,164 @@
|
||||
use anyhow::anyhow;
|
||||
use language::BufferSnapshot;
|
||||
use language::ToOffset;
|
||||
|
||||
use crate::models::LanguageModel;
|
||||
use crate::models::TruncationDirection;
|
||||
use crate::prompts::base::PromptArguments;
|
||||
use crate::prompts::base::PromptTemplate;
|
||||
use std::fmt::Write;
|
||||
use std::ops::Range;
|
||||
use std::sync::Arc;
|
||||
|
||||
fn retrieve_context(
|
||||
buffer: &BufferSnapshot,
|
||||
selected_range: &Option<Range<usize>>,
|
||||
model: Arc<dyn LanguageModel>,
|
||||
max_token_count: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize, bool)> {
|
||||
let mut prompt = String::new();
|
||||
let mut truncated = false;
|
||||
if let Some(selected_range) = selected_range {
|
||||
let start = selected_range.start.to_offset(buffer);
|
||||
let end = selected_range.end.to_offset(buffer);
|
||||
|
||||
let start_window = buffer.text_for_range(0..start).collect::<String>();
|
||||
|
||||
let mut selected_window = String::new();
|
||||
if start == end {
|
||||
write!(selected_window, "<|START|>").unwrap();
|
||||
} else {
|
||||
write!(selected_window, "<|START|").unwrap();
|
||||
}
|
||||
|
||||
write!(
|
||||
selected_window,
|
||||
"{}",
|
||||
buffer.text_for_range(start..end).collect::<String>()
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
if start != end {
|
||||
write!(selected_window, "|END|>").unwrap();
|
||||
}
|
||||
|
||||
let end_window = buffer.text_for_range(end..buffer.len()).collect::<String>();
|
||||
|
||||
if let Some(max_token_count) = max_token_count {
|
||||
let selected_tokens = model.count_tokens(&selected_window)?;
|
||||
if selected_tokens > max_token_count {
|
||||
return Err(anyhow!(
|
||||
"selected range is greater than model context window, truncation not possible"
|
||||
));
|
||||
};
|
||||
|
||||
let mut remaining_tokens = max_token_count - selected_tokens;
|
||||
let start_window_tokens = model.count_tokens(&start_window)?;
|
||||
let end_window_tokens = model.count_tokens(&end_window)?;
|
||||
let outside_tokens = start_window_tokens + end_window_tokens;
|
||||
if outside_tokens > remaining_tokens {
|
||||
let (start_goal_tokens, end_goal_tokens) =
|
||||
if start_window_tokens < end_window_tokens {
|
||||
let start_goal_tokens = (remaining_tokens / 2).min(start_window_tokens);
|
||||
remaining_tokens -= start_goal_tokens;
|
||||
let end_goal_tokens = remaining_tokens.min(end_window_tokens);
|
||||
(start_goal_tokens, end_goal_tokens)
|
||||
} else {
|
||||
let end_goal_tokens = (remaining_tokens / 2).min(end_window_tokens);
|
||||
remaining_tokens -= end_goal_tokens;
|
||||
let start_goal_tokens = remaining_tokens.min(start_window_tokens);
|
||||
(start_goal_tokens, end_goal_tokens)
|
||||
};
|
||||
|
||||
let truncated_start_window =
|
||||
model.truncate(&start_window, start_goal_tokens, TruncationDirection::Start)?;
|
||||
let truncated_end_window =
|
||||
model.truncate(&end_window, end_goal_tokens, TruncationDirection::End)?;
|
||||
writeln!(
|
||||
prompt,
|
||||
"{truncated_start_window}{selected_window}{truncated_end_window}"
|
||||
)
|
||||
.unwrap();
|
||||
truncated = true;
|
||||
} else {
|
||||
writeln!(prompt, "{start_window}{selected_window}{end_window}").unwrap();
|
||||
}
|
||||
} else {
|
||||
// If we dont have a selected range, include entire file.
|
||||
writeln!(prompt, "{}", &buffer.text()).unwrap();
|
||||
|
||||
// Dumb truncation strategy
|
||||
if let Some(max_token_count) = max_token_count {
|
||||
if model.count_tokens(&prompt)? > max_token_count {
|
||||
truncated = true;
|
||||
prompt = model.truncate(&prompt, max_token_count, TruncationDirection::End)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let token_count = model.count_tokens(&prompt)?;
|
||||
anyhow::Ok((prompt, token_count, truncated))
|
||||
}
|
||||
|
||||
pub struct FileContext {}
|
||||
|
||||
impl PromptTemplate for FileContext {
|
||||
fn generate(
|
||||
&self,
|
||||
args: &PromptArguments,
|
||||
max_token_length: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize)> {
|
||||
if let Some(buffer) = &args.buffer {
|
||||
let mut prompt = String::new();
|
||||
// Add Initial Preamble
|
||||
// TODO: Do we want to add the path in here?
|
||||
writeln!(
|
||||
prompt,
|
||||
"The file you are currently working on has the following content:"
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let language_name = args
|
||||
.language_name
|
||||
.clone()
|
||||
.unwrap_or("".to_string())
|
||||
.to_lowercase();
|
||||
|
||||
let (context, _, truncated) = retrieve_context(
|
||||
buffer,
|
||||
&args.selected_range,
|
||||
args.model.clone(),
|
||||
max_token_length,
|
||||
)?;
|
||||
writeln!(prompt, "```{language_name}\n{context}\n```").unwrap();
|
||||
|
||||
if truncated {
|
||||
writeln!(prompt, "Note the content has been truncated and only represents a portion of the file.").unwrap();
|
||||
}
|
||||
|
||||
if let Some(selected_range) = &args.selected_range {
|
||||
let start = selected_range.start.to_offset(buffer);
|
||||
let end = selected_range.end.to_offset(buffer);
|
||||
|
||||
if start == end {
|
||||
writeln!(prompt, "In particular, the user's cursor is currently on the '<|START|>' span in the above content, with no text selected.").unwrap();
|
||||
} else {
|
||||
writeln!(prompt, "In particular, the user has selected a section of the text between the '<|START|' and '|END|>' spans.").unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
// Really dumb truncation strategy
|
||||
if let Some(max_tokens) = max_token_length {
|
||||
prompt = args
|
||||
.model
|
||||
.truncate(&prompt, max_tokens, TruncationDirection::End)?;
|
||||
}
|
||||
|
||||
let token_count = args.model.count_tokens(&prompt)?;
|
||||
anyhow::Ok((prompt, token_count))
|
||||
} else {
|
||||
Err(anyhow!("no buffer provided to retrieve file context from"))
|
||||
}
|
||||
}
|
||||
}
|
||||
99
crates/ai/src/prompts/generate.rs
Normal file
@@ -0,0 +1,99 @@
|
||||
use crate::prompts::base::{PromptArguments, PromptFileType, PromptTemplate};
|
||||
use anyhow::anyhow;
|
||||
use std::fmt::Write;
|
||||
|
||||
pub fn capitalize(s: &str) -> String {
|
||||
let mut c = s.chars();
|
||||
match c.next() {
|
||||
None => String::new(),
|
||||
Some(f) => f.to_uppercase().collect::<String>() + c.as_str(),
|
||||
}
|
||||
}
|
||||
|
||||
pub struct GenerateInlineContent {}
|
||||
|
||||
impl PromptTemplate for GenerateInlineContent {
|
||||
fn generate(
|
||||
&self,
|
||||
args: &PromptArguments,
|
||||
max_token_length: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize)> {
|
||||
let Some(user_prompt) = &args.user_prompt else {
|
||||
return Err(anyhow!("user prompt not provided"));
|
||||
};
|
||||
|
||||
let file_type = args.get_file_type();
|
||||
let content_type = match &file_type {
|
||||
PromptFileType::Code => "code",
|
||||
PromptFileType::Text => "text",
|
||||
};
|
||||
|
||||
let mut prompt = String::new();
|
||||
|
||||
if let Some(selected_range) = &args.selected_range {
|
||||
if selected_range.start == selected_range.end {
|
||||
writeln!(
|
||||
prompt,
|
||||
"Assume the cursor is located where the `<|START|>` span is."
|
||||
)
|
||||
.unwrap();
|
||||
writeln!(
|
||||
prompt,
|
||||
"{} can't be replaced, so assume your answer will be inserted at the cursor.",
|
||||
capitalize(content_type)
|
||||
)
|
||||
.unwrap();
|
||||
writeln!(
|
||||
prompt,
|
||||
"Generate {content_type} based on the users prompt: {user_prompt}",
|
||||
)
|
||||
.unwrap();
|
||||
} else {
|
||||
writeln!(prompt, "Modify the user's selected {content_type} based upon the users prompt: '{user_prompt}'").unwrap();
|
||||
writeln!(prompt, "You must reply with only the adjusted {content_type} (within the '<|START|' and '|END|>' spans) not the entire file.").unwrap();
|
||||
writeln!(prompt, "Double check that you only return code and not the '<|START|' and '|END|'> spans").unwrap();
|
||||
}
|
||||
} else {
|
||||
writeln!(
|
||||
prompt,
|
||||
"Generate {content_type} based on the users prompt: {user_prompt}"
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
if let Some(language_name) = &args.language_name {
|
||||
writeln!(
|
||||
prompt,
|
||||
"Your answer MUST always and only be valid {}.",
|
||||
language_name
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
writeln!(prompt, "Never make remarks about the output.").unwrap();
|
||||
writeln!(
|
||||
prompt,
|
||||
"Do not return anything else, except the generated {content_type}."
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
match file_type {
|
||||
PromptFileType::Code => {
|
||||
// writeln!(prompt, "Always wrap your code in a Markdown block.").unwrap();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
// Really dumb truncation strategy
|
||||
if let Some(max_tokens) = max_token_length {
|
||||
prompt = args.model.truncate(
|
||||
&prompt,
|
||||
max_tokens,
|
||||
crate::models::TruncationDirection::End,
|
||||
)?;
|
||||
}
|
||||
|
||||
let token_count = args.model.count_tokens(&prompt)?;
|
||||
|
||||
anyhow::Ok((prompt, token_count))
|
||||
}
|
||||
}
|
||||
5
crates/ai/src/prompts/mod.rs
Normal file
@@ -0,0 +1,5 @@
|
||||
pub mod base;
|
||||
pub mod file_context;
|
||||
pub mod generate;
|
||||
pub mod preamble;
|
||||
pub mod repository_context;
|
||||
52
crates/ai/src/prompts/preamble.rs
Normal file
@@ -0,0 +1,52 @@
|
||||
use crate::prompts::base::{PromptArguments, PromptFileType, PromptTemplate};
|
||||
use std::fmt::Write;
|
||||
|
||||
pub struct EngineerPreamble {}
|
||||
|
||||
impl PromptTemplate for EngineerPreamble {
|
||||
fn generate(
|
||||
&self,
|
||||
args: &PromptArguments,
|
||||
max_token_length: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize)> {
|
||||
let mut prompts = Vec::new();
|
||||
|
||||
match args.get_file_type() {
|
||||
PromptFileType::Code => {
|
||||
prompts.push(format!(
|
||||
"You are an expert {}engineer.",
|
||||
args.language_name.clone().unwrap_or("".to_string()) + " "
|
||||
));
|
||||
}
|
||||
PromptFileType::Text => {
|
||||
prompts.push("You are an expert engineer.".to_string());
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(project_name) = args.project_name.clone() {
|
||||
prompts.push(format!(
|
||||
"You are currently working inside the '{project_name}' project in code editor Zed."
|
||||
));
|
||||
}
|
||||
|
||||
if let Some(mut remaining_tokens) = max_token_length {
|
||||
let mut prompt = String::new();
|
||||
let mut total_count = 0;
|
||||
for prompt_piece in prompts {
|
||||
let prompt_token_count =
|
||||
args.model.count_tokens(&prompt_piece)? + args.model.count_tokens("\n")?;
|
||||
if remaining_tokens > prompt_token_count {
|
||||
writeln!(prompt, "{prompt_piece}").unwrap();
|
||||
remaining_tokens -= prompt_token_count;
|
||||
total_count += prompt_token_count;
|
||||
}
|
||||
}
|
||||
|
||||
anyhow::Ok((prompt, total_count))
|
||||
} else {
|
||||
let prompt = prompts.join("\n");
|
||||
let token_count = args.model.count_tokens(&prompt)?;
|
||||
anyhow::Ok((prompt, token_count))
|
||||
}
|
||||
}
|
||||
}
|
||||
94
crates/ai/src/prompts/repository_context.rs
Normal file
@@ -0,0 +1,94 @@
|
||||
use crate::prompts::base::{PromptArguments, PromptTemplate};
|
||||
use std::fmt::Write;
|
||||
use std::{ops::Range, path::PathBuf};
|
||||
|
||||
use gpui::{AsyncAppContext, ModelHandle};
|
||||
use language::{Anchor, Buffer};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct PromptCodeSnippet {
|
||||
path: Option<PathBuf>,
|
||||
language_name: Option<String>,
|
||||
content: String,
|
||||
}
|
||||
|
||||
impl PromptCodeSnippet {
|
||||
pub fn new(buffer: ModelHandle<Buffer>, range: Range<Anchor>, cx: &AsyncAppContext) -> Self {
|
||||
let (content, language_name, file_path) = buffer.read_with(cx, |buffer, _| {
|
||||
let snapshot = buffer.snapshot();
|
||||
let content = snapshot.text_for_range(range.clone()).collect::<String>();
|
||||
|
||||
let language_name = buffer
|
||||
.language()
|
||||
.and_then(|language| Some(language.name().to_string().to_lowercase()));
|
||||
|
||||
let file_path = buffer
|
||||
.file()
|
||||
.and_then(|file| Some(file.path().to_path_buf()));
|
||||
|
||||
(content, language_name, file_path)
|
||||
});
|
||||
|
||||
PromptCodeSnippet {
|
||||
path: file_path,
|
||||
language_name,
|
||||
content,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToString for PromptCodeSnippet {
|
||||
fn to_string(&self) -> String {
|
||||
let path = self
|
||||
.path
|
||||
.as_ref()
|
||||
.and_then(|path| Some(path.to_string_lossy().to_string()))
|
||||
.unwrap_or("".to_string());
|
||||
let language_name = self.language_name.clone().unwrap_or("".to_string());
|
||||
let content = self.content.clone();
|
||||
|
||||
format!("The below code snippet may be relevant from file: {path}\n```{language_name}\n{content}\n```")
|
||||
}
|
||||
}
|
||||
|
||||
pub struct RepositoryContext {}
|
||||
|
||||
impl PromptTemplate for RepositoryContext {
|
||||
fn generate(
|
||||
&self,
|
||||
args: &PromptArguments,
|
||||
max_token_length: Option<usize>,
|
||||
) -> anyhow::Result<(String, usize)> {
|
||||
const MAXIMUM_SNIPPET_TOKEN_COUNT: usize = 500;
|
||||
let template = "You are working inside a large repository, here are a few code snippets that may be useful.";
|
||||
let mut prompt = String::new();
|
||||
|
||||
let mut remaining_tokens = max_token_length.clone();
|
||||
let seperator_token_length = args.model.count_tokens("\n")?;
|
||||
for snippet in &args.snippets {
|
||||
let mut snippet_prompt = template.to_string();
|
||||
let content = snippet.to_string();
|
||||
writeln!(snippet_prompt, "{content}").unwrap();
|
||||
|
||||
let token_count = args.model.count_tokens(&snippet_prompt)?;
|
||||
if token_count <= MAXIMUM_SNIPPET_TOKEN_COUNT {
|
||||
if let Some(tokens_left) = remaining_tokens {
|
||||
if tokens_left >= token_count {
|
||||
writeln!(prompt, "{snippet_prompt}").unwrap();
|
||||
remaining_tokens = if tokens_left >= (token_count + seperator_token_length)
|
||||
{
|
||||
Some(tokens_left - token_count - seperator_token_length)
|
||||
} else {
|
||||
Some(0)
|
||||
};
|
||||
}
|
||||
} else {
|
||||
writeln!(prompt, "{snippet_prompt}").unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let total_token_count = args.model.count_tokens(&prompt)?;
|
||||
anyhow::Ok((prompt, total_token_count))
|
||||
}
|
||||
}
|
||||
1
crates/ai/src/providers/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod open_ai;
|
||||
298
crates/ai/src/providers/open_ai/completion.rs
Normal file
@@ -0,0 +1,298 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use futures::{
|
||||
future::BoxFuture, io::BufReader, stream::BoxStream, AsyncBufReadExt, AsyncReadExt, FutureExt,
|
||||
Stream, StreamExt,
|
||||
};
|
||||
use gpui::{executor::Background, AppContext};
|
||||
use isahc::{http::StatusCode, Request, RequestExt};
|
||||
use parking_lot::RwLock;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{
|
||||
env,
|
||||
fmt::{self, Display},
|
||||
io,
|
||||
sync::Arc,
|
||||
};
|
||||
use util::ResultExt;
|
||||
|
||||
use crate::{
|
||||
auth::{CredentialProvider, ProviderCredential},
|
||||
completion::{CompletionProvider, CompletionRequest},
|
||||
models::LanguageModel,
|
||||
};
|
||||
|
||||
use crate::providers::open_ai::{OpenAILanguageModel, OPENAI_API_URL};
|
||||
|
||||
#[derive(Clone, Copy, Serialize, Deserialize, Debug, Eq, PartialEq)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum Role {
|
||||
User,
|
||||
Assistant,
|
||||
System,
|
||||
}
|
||||
|
||||
impl Role {
|
||||
pub fn cycle(&mut self) {
|
||||
*self = match self {
|
||||
Role::User => Role::Assistant,
|
||||
Role::Assistant => Role::System,
|
||||
Role::System => Role::User,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Role {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Role::User => write!(f, "User"),
|
||||
Role::Assistant => write!(f, "Assistant"),
|
||||
Role::System => write!(f, "System"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
|
||||
pub struct RequestMessage {
|
||||
pub role: Role,
|
||||
pub content: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Serialize)]
|
||||
pub struct OpenAIRequest {
|
||||
pub model: String,
|
||||
pub messages: Vec<RequestMessage>,
|
||||
pub stream: bool,
|
||||
pub stop: Vec<String>,
|
||||
pub temperature: f32,
|
||||
}
|
||||
|
||||
impl CompletionRequest for OpenAIRequest {
|
||||
fn data(&self) -> serde_json::Result<String> {
|
||||
serde_json::to_string(self)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
|
||||
pub struct ResponseMessage {
|
||||
pub role: Option<Role>,
|
||||
pub content: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct OpenAIUsage {
|
||||
pub prompt_tokens: u32,
|
||||
pub completion_tokens: u32,
|
||||
pub total_tokens: u32,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct ChatChoiceDelta {
|
||||
pub index: u32,
|
||||
pub delta: ResponseMessage,
|
||||
pub finish_reason: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct OpenAIResponseStreamEvent {
|
||||
pub id: Option<String>,
|
||||
pub object: String,
|
||||
pub created: u32,
|
||||
pub model: String,
|
||||
pub choices: Vec<ChatChoiceDelta>,
|
||||
pub usage: Option<OpenAIUsage>,
|
||||
}
|
||||
|
||||
pub async fn stream_completion(
|
||||
credential: ProviderCredential,
|
||||
executor: Arc<Background>,
|
||||
request: Box<dyn CompletionRequest>,
|
||||
) -> Result<impl Stream<Item = Result<OpenAIResponseStreamEvent>>> {
|
||||
let api_key = match credential {
|
||||
ProviderCredential::Credentials { api_key } => api_key,
|
||||
_ => {
|
||||
return Err(anyhow!("no credentials provider for completion"));
|
||||
}
|
||||
};
|
||||
|
||||
let (tx, rx) = futures::channel::mpsc::unbounded::<Result<OpenAIResponseStreamEvent>>();
|
||||
|
||||
let json_data = request.data()?;
|
||||
let mut response = Request::post(format!("{OPENAI_API_URL}/chat/completions"))
|
||||
.header("Content-Type", "application/json")
|
||||
.header("Authorization", format!("Bearer {}", api_key))
|
||||
.body(json_data)?
|
||||
.send_async()
|
||||
.await?;
|
||||
|
||||
let status = response.status();
|
||||
if status == StatusCode::OK {
|
||||
executor
|
||||
.spawn(async move {
|
||||
let mut lines = BufReader::new(response.body_mut()).lines();
|
||||
|
||||
fn parse_line(
|
||||
line: Result<String, io::Error>,
|
||||
) -> Result<Option<OpenAIResponseStreamEvent>> {
|
||||
if let Some(data) = line?.strip_prefix("data: ") {
|
||||
let event = serde_json::from_str(&data)?;
|
||||
Ok(Some(event))
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
while let Some(line) = lines.next().await {
|
||||
if let Some(event) = parse_line(line).transpose() {
|
||||
let done = event.as_ref().map_or(false, |event| {
|
||||
event
|
||||
.choices
|
||||
.last()
|
||||
.map_or(false, |choice| choice.finish_reason.is_some())
|
||||
});
|
||||
if tx.unbounded_send(event).is_err() {
|
||||
break;
|
||||
}
|
||||
|
||||
if done {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
anyhow::Ok(())
|
||||
})
|
||||
.detach();
|
||||
|
||||
Ok(rx)
|
||||
} else {
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIResponse {
|
||||
error: OpenAIError,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIError {
|
||||
message: String,
|
||||
}
|
||||
|
||||
match serde_json::from_str::<OpenAIResponse>(&body) {
|
||||
Ok(response) if !response.error.message.is_empty() => Err(anyhow!(
|
||||
"Failed to connect to OpenAI API: {}",
|
||||
response.error.message,
|
||||
)),
|
||||
|
||||
_ => Err(anyhow!(
|
||||
"Failed to connect to OpenAI API: {} {}",
|
||||
response.status(),
|
||||
body,
|
||||
)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct OpenAICompletionProvider {
|
||||
model: OpenAILanguageModel,
|
||||
credential: Arc<RwLock<ProviderCredential>>,
|
||||
executor: Arc<Background>,
|
||||
}
|
||||
|
||||
impl OpenAICompletionProvider {
|
||||
pub fn new(model_name: &str, executor: Arc<Background>) -> Self {
|
||||
let model = OpenAILanguageModel::load(model_name);
|
||||
let credential = Arc::new(RwLock::new(ProviderCredential::NoCredentials));
|
||||
Self {
|
||||
model,
|
||||
credential,
|
||||
executor,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CredentialProvider for OpenAICompletionProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
match *self.credential.read() {
|
||||
ProviderCredential::Credentials { .. } => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
fn retrieve_credentials(&self, cx: &AppContext) -> ProviderCredential {
|
||||
let mut credential = self.credential.write();
|
||||
match *credential {
|
||||
ProviderCredential::Credentials { .. } => {
|
||||
return credential.clone();
|
||||
}
|
||||
_ => {
|
||||
if let Ok(api_key) = env::var("OPENAI_API_KEY") {
|
||||
*credential = ProviderCredential::Credentials { api_key };
|
||||
} else if let Some((_, api_key)) = cx
|
||||
.platform()
|
||||
.read_credentials(OPENAI_API_URL)
|
||||
.log_err()
|
||||
.flatten()
|
||||
{
|
||||
if let Some(api_key) = String::from_utf8(api_key).log_err() {
|
||||
*credential = ProviderCredential::Credentials { api_key };
|
||||
}
|
||||
} else {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
credential.clone()
|
||||
}
|
||||
|
||||
fn save_credentials(&self, cx: &AppContext, credential: ProviderCredential) {
|
||||
match credential.clone() {
|
||||
ProviderCredential::Credentials { api_key } => {
|
||||
cx.platform()
|
||||
.write_credentials(OPENAI_API_URL, "Bearer", api_key.as_bytes())
|
||||
.log_err();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
*self.credential.write() = credential;
|
||||
}
|
||||
fn delete_credentials(&self, cx: &AppContext) {
|
||||
cx.platform().delete_credentials(OPENAI_API_URL).log_err();
|
||||
*self.credential.write() = ProviderCredential::NoCredentials;
|
||||
}
|
||||
}
|
||||
|
||||
impl CompletionProvider for OpenAICompletionProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel> {
|
||||
let model: Box<dyn LanguageModel> = Box::new(self.model.clone());
|
||||
model
|
||||
}
|
||||
fn complete(
|
||||
&self,
|
||||
prompt: Box<dyn CompletionRequest>,
|
||||
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>> {
|
||||
// Currently the CompletionRequest for OpenAI, includes a 'model' parameter
|
||||
// This means that the model is determined by the CompletionRequest and not the CompletionProvider,
|
||||
// which is currently model based, due to the langauge model.
|
||||
// At some point in the future we should rectify this.
|
||||
let credential = self.credential.read().clone();
|
||||
let request = stream_completion(credential, self.executor.clone(), prompt);
|
||||
async move {
|
||||
let response = request.await?;
|
||||
let stream = response
|
||||
.filter_map(|response| async move {
|
||||
match response {
|
||||
Ok(mut response) => Some(Ok(response.choices.pop()?.delta.content?)),
|
||||
Err(error) => Some(Err(error)),
|
||||
}
|
||||
})
|
||||
.boxed();
|
||||
Ok(stream)
|
||||
}
|
||||
.boxed()
|
||||
}
|
||||
fn box_clone(&self) -> Box<dyn CompletionProvider> {
|
||||
Box::new((*self).clone())
|
||||
}
|
||||
}
|
||||
306
crates/ai/src/providers/open_ai/embedding.rs
Normal file
@@ -0,0 +1,306 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use async_trait::async_trait;
|
||||
use futures::AsyncReadExt;
|
||||
use gpui::executor::Background;
|
||||
use gpui::{serde_json, AppContext};
|
||||
use isahc::http::StatusCode;
|
||||
use isahc::prelude::Configurable;
|
||||
use isahc::{AsyncBody, Response};
|
||||
use lazy_static::lazy_static;
|
||||
use parking_lot::{Mutex, RwLock};
|
||||
use parse_duration::parse;
|
||||
use postage::watch;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::env;
|
||||
use std::ops::Add;
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, Instant};
|
||||
use tiktoken_rs::{cl100k_base, CoreBPE};
|
||||
use util::http::{HttpClient, Request};
|
||||
use util::ResultExt;
|
||||
|
||||
use crate::auth::{CredentialProvider, ProviderCredential};
|
||||
use crate::embedding::{Embedding, EmbeddingProvider};
|
||||
use crate::models::LanguageModel;
|
||||
use crate::providers::open_ai::OpenAILanguageModel;
|
||||
|
||||
use crate::providers::open_ai::OPENAI_API_URL;
|
||||
|
||||
lazy_static! {
|
||||
static ref OPENAI_BPE_TOKENIZER: CoreBPE = cl100k_base().unwrap();
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct OpenAIEmbeddingProvider {
|
||||
model: OpenAILanguageModel,
|
||||
credential: Arc<RwLock<ProviderCredential>>,
|
||||
pub client: Arc<dyn HttpClient>,
|
||||
pub executor: Arc<Background>,
|
||||
rate_limit_count_rx: watch::Receiver<Option<Instant>>,
|
||||
rate_limit_count_tx: Arc<Mutex<watch::Sender<Option<Instant>>>>,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct OpenAIEmbeddingRequest<'a> {
|
||||
model: &'static str,
|
||||
input: Vec<&'a str>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIEmbeddingResponse {
|
||||
data: Vec<OpenAIEmbedding>,
|
||||
usage: OpenAIEmbeddingUsage,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct OpenAIEmbedding {
|
||||
embedding: Vec<f32>,
|
||||
index: usize,
|
||||
object: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct OpenAIEmbeddingUsage {
|
||||
prompt_tokens: usize,
|
||||
total_tokens: usize,
|
||||
}
|
||||
|
||||
impl OpenAIEmbeddingProvider {
|
||||
pub fn new(client: Arc<dyn HttpClient>, executor: Arc<Background>) -> Self {
|
||||
let (rate_limit_count_tx, rate_limit_count_rx) = watch::channel_with(None);
|
||||
let rate_limit_count_tx = Arc::new(Mutex::new(rate_limit_count_tx));
|
||||
|
||||
let model = OpenAILanguageModel::load("text-embedding-ada-002");
|
||||
let credential = Arc::new(RwLock::new(ProviderCredential::NoCredentials));
|
||||
|
||||
OpenAIEmbeddingProvider {
|
||||
model,
|
||||
credential,
|
||||
client,
|
||||
executor,
|
||||
rate_limit_count_rx,
|
||||
rate_limit_count_tx,
|
||||
}
|
||||
}
|
||||
|
||||
fn get_api_key(&self) -> Result<String> {
|
||||
match self.credential.read().clone() {
|
||||
ProviderCredential::Credentials { api_key } => Ok(api_key),
|
||||
_ => Err(anyhow!("api credentials not provided")),
|
||||
}
|
||||
}
|
||||
|
||||
fn resolve_rate_limit(&self) {
|
||||
let reset_time = *self.rate_limit_count_tx.lock().borrow();
|
||||
|
||||
if let Some(reset_time) = reset_time {
|
||||
if Instant::now() >= reset_time {
|
||||
*self.rate_limit_count_tx.lock().borrow_mut() = None
|
||||
}
|
||||
}
|
||||
|
||||
log::trace!(
|
||||
"resolving reset time: {:?}",
|
||||
*self.rate_limit_count_tx.lock().borrow()
|
||||
);
|
||||
}
|
||||
|
||||
fn update_reset_time(&self, reset_time: Instant) {
|
||||
let original_time = *self.rate_limit_count_tx.lock().borrow();
|
||||
|
||||
let updated_time = if let Some(original_time) = original_time {
|
||||
if reset_time < original_time {
|
||||
Some(reset_time)
|
||||
} else {
|
||||
Some(original_time)
|
||||
}
|
||||
} else {
|
||||
Some(reset_time)
|
||||
};
|
||||
|
||||
log::trace!("updating rate limit time: {:?}", updated_time);
|
||||
|
||||
*self.rate_limit_count_tx.lock().borrow_mut() = updated_time;
|
||||
}
|
||||
async fn send_request(
|
||||
&self,
|
||||
api_key: &str,
|
||||
spans: Vec<&str>,
|
||||
request_timeout: u64,
|
||||
) -> Result<Response<AsyncBody>> {
|
||||
let request = Request::post("https://api.openai.com/v1/embeddings")
|
||||
.redirect_policy(isahc::config::RedirectPolicy::Follow)
|
||||
.timeout(Duration::from_secs(request_timeout))
|
||||
.header("Content-Type", "application/json")
|
||||
.header("Authorization", format!("Bearer {}", api_key))
|
||||
.body(
|
||||
serde_json::to_string(&OpenAIEmbeddingRequest {
|
||||
input: spans.clone(),
|
||||
model: "text-embedding-ada-002",
|
||||
})
|
||||
.unwrap()
|
||||
.into(),
|
||||
)?;
|
||||
|
||||
Ok(self.client.send(request).await?)
|
||||
}
|
||||
}
|
||||
|
||||
impl CredentialProvider for OpenAIEmbeddingProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
match *self.credential.read() {
|
||||
ProviderCredential::Credentials { .. } => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
fn retrieve_credentials(&self, cx: &AppContext) -> ProviderCredential {
|
||||
let mut credential = self.credential.write();
|
||||
match *credential {
|
||||
ProviderCredential::Credentials { .. } => {
|
||||
return credential.clone();
|
||||
}
|
||||
_ => {
|
||||
if let Ok(api_key) = env::var("OPENAI_API_KEY") {
|
||||
*credential = ProviderCredential::Credentials { api_key };
|
||||
} else if let Some((_, api_key)) = cx
|
||||
.platform()
|
||||
.read_credentials(OPENAI_API_URL)
|
||||
.log_err()
|
||||
.flatten()
|
||||
{
|
||||
if let Some(api_key) = String::from_utf8(api_key).log_err() {
|
||||
*credential = ProviderCredential::Credentials { api_key };
|
||||
}
|
||||
} else {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
credential.clone()
|
||||
}
|
||||
|
||||
fn save_credentials(&self, cx: &AppContext, credential: ProviderCredential) {
|
||||
match credential.clone() {
|
||||
ProviderCredential::Credentials { api_key } => {
|
||||
cx.platform()
|
||||
.write_credentials(OPENAI_API_URL, "Bearer", api_key.as_bytes())
|
||||
.log_err();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
*self.credential.write() = credential;
|
||||
}
|
||||
fn delete_credentials(&self, cx: &AppContext) {
|
||||
cx.platform().delete_credentials(OPENAI_API_URL).log_err();
|
||||
*self.credential.write() = ProviderCredential::NoCredentials;
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl EmbeddingProvider for OpenAIEmbeddingProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel> {
|
||||
let model: Box<dyn LanguageModel> = Box::new(self.model.clone());
|
||||
model
|
||||
}
|
||||
|
||||
fn max_tokens_per_batch(&self) -> usize {
|
||||
50000
|
||||
}
|
||||
|
||||
fn rate_limit_expiration(&self) -> Option<Instant> {
|
||||
*self.rate_limit_count_rx.borrow()
|
||||
}
|
||||
|
||||
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>> {
|
||||
const BACKOFF_SECONDS: [usize; 4] = [3, 5, 15, 45];
|
||||
const MAX_RETRIES: usize = 4;
|
||||
|
||||
let api_key = self.get_api_key()?;
|
||||
|
||||
let mut request_number = 0;
|
||||
let mut rate_limiting = false;
|
||||
let mut request_timeout: u64 = 15;
|
||||
let mut response: Response<AsyncBody>;
|
||||
while request_number < MAX_RETRIES {
|
||||
response = self
|
||||
.send_request(
|
||||
&api_key,
|
||||
spans.iter().map(|x| &**x).collect(),
|
||||
request_timeout,
|
||||
)
|
||||
.await?;
|
||||
|
||||
request_number += 1;
|
||||
|
||||
match response.status() {
|
||||
StatusCode::REQUEST_TIMEOUT => {
|
||||
request_timeout += 5;
|
||||
}
|
||||
StatusCode::OK => {
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
let response: OpenAIEmbeddingResponse = serde_json::from_str(&body)?;
|
||||
|
||||
log::trace!(
|
||||
"openai embedding completed. tokens: {:?}",
|
||||
response.usage.total_tokens
|
||||
);
|
||||
|
||||
// If we complete a request successfully that was previously rate_limited
|
||||
// resolve the rate limit
|
||||
if rate_limiting {
|
||||
self.resolve_rate_limit()
|
||||
}
|
||||
|
||||
return Ok(response
|
||||
.data
|
||||
.into_iter()
|
||||
.map(|embedding| Embedding::from(embedding.embedding))
|
||||
.collect());
|
||||
}
|
||||
StatusCode::TOO_MANY_REQUESTS => {
|
||||
rate_limiting = true;
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
|
||||
let delay_duration = {
|
||||
let delay = Duration::from_secs(BACKOFF_SECONDS[request_number - 1] as u64);
|
||||
if let Some(time_to_reset) =
|
||||
response.headers().get("x-ratelimit-reset-tokens")
|
||||
{
|
||||
if let Ok(time_str) = time_to_reset.to_str() {
|
||||
parse(time_str).unwrap_or(delay)
|
||||
} else {
|
||||
delay
|
||||
}
|
||||
} else {
|
||||
delay
|
||||
}
|
||||
};
|
||||
|
||||
// If we've previously rate limited, increment the duration but not the count
|
||||
let reset_time = Instant::now().add(delay_duration);
|
||||
self.update_reset_time(reset_time);
|
||||
|
||||
log::trace!(
|
||||
"openai rate limiting: waiting {:?} until lifted",
|
||||
&delay_duration
|
||||
);
|
||||
|
||||
self.executor.timer(delay_duration).await;
|
||||
}
|
||||
_ => {
|
||||
let mut body = String::new();
|
||||
response.body_mut().read_to_string(&mut body).await?;
|
||||
return Err(anyhow!(
|
||||
"open ai bad request: {:?} {:?}",
|
||||
&response.status(),
|
||||
body
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(anyhow!("openai max retries"))
|
||||
}
|
||||
}
|
||||
9
crates/ai/src/providers/open_ai/mod.rs
Normal file
@@ -0,0 +1,9 @@
|
||||
pub mod completion;
|
||||
pub mod embedding;
|
||||
pub mod model;
|
||||
|
||||
pub use completion::*;
|
||||
pub use embedding::*;
|
||||
pub use model::OpenAILanguageModel;
|
||||
|
||||
pub const OPENAI_API_URL: &'static str = "https://api.openai.com/v1";
|
||||
57
crates/ai/src/providers/open_ai/model.rs
Normal file
@@ -0,0 +1,57 @@
|
||||
use anyhow::anyhow;
|
||||
use tiktoken_rs::CoreBPE;
|
||||
use util::ResultExt;
|
||||
|
||||
use crate::models::{LanguageModel, TruncationDirection};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct OpenAILanguageModel {
|
||||
name: String,
|
||||
bpe: Option<CoreBPE>,
|
||||
}
|
||||
|
||||
impl OpenAILanguageModel {
|
||||
pub fn load(model_name: &str) -> Self {
|
||||
let bpe = tiktoken_rs::get_bpe_from_model(model_name).log_err();
|
||||
OpenAILanguageModel {
|
||||
name: model_name.to_string(),
|
||||
bpe,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl LanguageModel for OpenAILanguageModel {
|
||||
fn name(&self) -> String {
|
||||
self.name.clone()
|
||||
}
|
||||
fn count_tokens(&self, content: &str) -> anyhow::Result<usize> {
|
||||
if let Some(bpe) = &self.bpe {
|
||||
anyhow::Ok(bpe.encode_with_special_tokens(content).len())
|
||||
} else {
|
||||
Err(anyhow!("bpe for open ai model was not retrieved"))
|
||||
}
|
||||
}
|
||||
fn truncate(
|
||||
&self,
|
||||
content: &str,
|
||||
length: usize,
|
||||
direction: TruncationDirection,
|
||||
) -> anyhow::Result<String> {
|
||||
if let Some(bpe) = &self.bpe {
|
||||
let tokens = bpe.encode_with_special_tokens(content);
|
||||
if tokens.len() > length {
|
||||
match direction {
|
||||
TruncationDirection::End => bpe.decode(tokens[..length].to_vec()),
|
||||
TruncationDirection::Start => bpe.decode(tokens[length..].to_vec()),
|
||||
}
|
||||
} else {
|
||||
bpe.decode(tokens)
|
||||
}
|
||||
} else {
|
||||
Err(anyhow!("bpe for open ai model was not retrieved"))
|
||||
}
|
||||
}
|
||||
fn capacity(&self) -> anyhow::Result<usize> {
|
||||
anyhow::Ok(tiktoken_rs::model::get_context_size(&self.name))
|
||||
}
|
||||
}
|
||||
11
crates/ai/src/providers/open_ai/new.rs
Normal file
@@ -0,0 +1,11 @@
|
||||
pub trait LanguageModel {
|
||||
fn name(&self) -> String;
|
||||
fn count_tokens(&self, content: &str) -> anyhow::Result<usize>;
|
||||
fn truncate(
|
||||
&self,
|
||||
content: &str,
|
||||
length: usize,
|
||||
direction: TruncationDirection,
|
||||
) -> anyhow::Result<String>;
|
||||
fn capacity(&self) -> anyhow::Result<usize>;
|
||||
}
|
||||
200
crates/ai/src/test.rs
Normal file
@@ -0,0 +1,200 @@
|
||||
use std::{
|
||||
sync::atomic::{self, AtomicUsize, Ordering},
|
||||
time::Instant,
|
||||
};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use futures::{channel::mpsc, future::BoxFuture, stream::BoxStream, FutureExt, StreamExt};
|
||||
use gpui::AppContext;
|
||||
use parking_lot::Mutex;
|
||||
|
||||
use crate::{
|
||||
auth::{CredentialProvider, ProviderCredential},
|
||||
completion::{CompletionProvider, CompletionRequest},
|
||||
embedding::{Embedding, EmbeddingProvider},
|
||||
models::{LanguageModel, TruncationDirection},
|
||||
};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct FakeLanguageModel {
|
||||
pub capacity: usize,
|
||||
}
|
||||
|
||||
impl LanguageModel for FakeLanguageModel {
|
||||
fn name(&self) -> String {
|
||||
"dummy".to_string()
|
||||
}
|
||||
fn count_tokens(&self, content: &str) -> anyhow::Result<usize> {
|
||||
anyhow::Ok(content.chars().collect::<Vec<char>>().len())
|
||||
}
|
||||
fn truncate(
|
||||
&self,
|
||||
content: &str,
|
||||
length: usize,
|
||||
direction: TruncationDirection,
|
||||
) -> anyhow::Result<String> {
|
||||
println!("TRYING TO TRUNCATE: {:?}", length.clone());
|
||||
|
||||
if length > self.count_tokens(content)? {
|
||||
println!("NOT TRUNCATING");
|
||||
return anyhow::Ok(content.to_string());
|
||||
}
|
||||
|
||||
anyhow::Ok(match direction {
|
||||
TruncationDirection::End => content.chars().collect::<Vec<char>>()[..length]
|
||||
.into_iter()
|
||||
.collect::<String>(),
|
||||
TruncationDirection::Start => content.chars().collect::<Vec<char>>()[length..]
|
||||
.into_iter()
|
||||
.collect::<String>(),
|
||||
})
|
||||
}
|
||||
fn capacity(&self) -> anyhow::Result<usize> {
|
||||
anyhow::Ok(self.capacity)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct FakeEmbeddingProvider {
|
||||
pub embedding_count: AtomicUsize,
|
||||
}
|
||||
|
||||
impl Clone for FakeEmbeddingProvider {
|
||||
fn clone(&self) -> Self {
|
||||
FakeEmbeddingProvider {
|
||||
embedding_count: AtomicUsize::new(self.embedding_count.load(Ordering::SeqCst)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for FakeEmbeddingProvider {
|
||||
fn default() -> Self {
|
||||
FakeEmbeddingProvider {
|
||||
embedding_count: AtomicUsize::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FakeEmbeddingProvider {
|
||||
pub fn embedding_count(&self) -> usize {
|
||||
self.embedding_count.load(atomic::Ordering::SeqCst)
|
||||
}
|
||||
|
||||
pub fn embed_sync(&self, span: &str) -> Embedding {
|
||||
let mut result = vec![1.0; 26];
|
||||
for letter in span.chars() {
|
||||
let letter = letter.to_ascii_lowercase();
|
||||
if letter as u32 >= 'a' as u32 {
|
||||
let ix = (letter as u32) - ('a' as u32);
|
||||
if ix < 26 {
|
||||
result[ix as usize] += 1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let norm = result.iter().map(|x| x * x).sum::<f32>().sqrt();
|
||||
for x in &mut result {
|
||||
*x /= norm;
|
||||
}
|
||||
|
||||
result.into()
|
||||
}
|
||||
}
|
||||
|
||||
impl CredentialProvider for FakeEmbeddingProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
true
|
||||
}
|
||||
fn retrieve_credentials(&self, _cx: &AppContext) -> ProviderCredential {
|
||||
ProviderCredential::NotNeeded
|
||||
}
|
||||
fn save_credentials(&self, _cx: &AppContext, _credential: ProviderCredential) {}
|
||||
fn delete_credentials(&self, _cx: &AppContext) {}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl EmbeddingProvider for FakeEmbeddingProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel> {
|
||||
Box::new(FakeLanguageModel { capacity: 1000 })
|
||||
}
|
||||
fn max_tokens_per_batch(&self) -> usize {
|
||||
1000
|
||||
}
|
||||
|
||||
fn rate_limit_expiration(&self) -> Option<Instant> {
|
||||
None
|
||||
}
|
||||
|
||||
async fn embed_batch(&self, spans: Vec<String>) -> anyhow::Result<Vec<Embedding>> {
|
||||
self.embedding_count
|
||||
.fetch_add(spans.len(), atomic::Ordering::SeqCst);
|
||||
|
||||
anyhow::Ok(spans.iter().map(|span| self.embed_sync(span)).collect())
|
||||
}
|
||||
}
|
||||
|
||||
pub struct FakeCompletionProvider {
|
||||
last_completion_tx: Mutex<Option<mpsc::Sender<String>>>,
|
||||
}
|
||||
|
||||
impl Clone for FakeCompletionProvider {
|
||||
fn clone(&self) -> Self {
|
||||
Self {
|
||||
last_completion_tx: Mutex::new(None),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FakeCompletionProvider {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
last_completion_tx: Mutex::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn send_completion(&self, completion: impl Into<String>) {
|
||||
let mut tx = self.last_completion_tx.lock();
|
||||
|
||||
println!("COMPLETION TX: {:?}", &tx);
|
||||
|
||||
let a = tx.as_mut().unwrap();
|
||||
a.try_send(completion.into()).unwrap();
|
||||
|
||||
// tx.as_mut().unwrap().try_send(completion.into()).unwrap();
|
||||
}
|
||||
|
||||
pub fn finish_completion(&self) {
|
||||
println!("FINISHING COMPLETION");
|
||||
self.last_completion_tx.lock().take().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
impl CredentialProvider for FakeCompletionProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
true
|
||||
}
|
||||
fn retrieve_credentials(&self, _cx: &AppContext) -> ProviderCredential {
|
||||
ProviderCredential::NotNeeded
|
||||
}
|
||||
fn save_credentials(&self, _cx: &AppContext, _credential: ProviderCredential) {}
|
||||
fn delete_credentials(&self, _cx: &AppContext) {}
|
||||
}
|
||||
|
||||
impl CompletionProvider for FakeCompletionProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel> {
|
||||
let model: Box<dyn LanguageModel> = Box::new(FakeLanguageModel { capacity: 8190 });
|
||||
model
|
||||
}
|
||||
fn complete(
|
||||
&self,
|
||||
_prompt: Box<dyn CompletionRequest>,
|
||||
) -> BoxFuture<'static, anyhow::Result<BoxStream<'static, anyhow::Result<String>>>> {
|
||||
println!("COMPLETING");
|
||||
let (tx, rx) = mpsc::channel(1);
|
||||
*self.last_completion_tx.lock() = Some(tx);
|
||||
println!("TX: {:?}", *self.last_completion_tx.lock());
|
||||
async move { Ok(rx.map(|rx| Ok(rx)).boxed()) }.boxed()
|
||||
}
|
||||
fn box_clone(&self) -> Box<dyn CompletionProvider> {
|
||||
Box::new((*self).clone())
|
||||
}
|
||||
}
|
||||
38
crates/ai2/Cargo.toml
Normal file
@@ -0,0 +1,38 @@
|
||||
[package]
|
||||
name = "ai2"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
publish = false
|
||||
|
||||
[lib]
|
||||
path = "src/ai2.rs"
|
||||
doctest = false
|
||||
|
||||
[features]
|
||||
test-support = []
|
||||
|
||||
[dependencies]
|
||||
gpui = { package = "gpui2", path = "../gpui2" }
|
||||
util = { path = "../util" }
|
||||
language = { package = "language2", path = "../language2" }
|
||||
async-trait.workspace = true
|
||||
anyhow.workspace = true
|
||||
futures.workspace = true
|
||||
lazy_static.workspace = true
|
||||
ordered-float.workspace = true
|
||||
parking_lot.workspace = true
|
||||
isahc.workspace = true
|
||||
regex.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
postage.workspace = true
|
||||
rand.workspace = true
|
||||
log.workspace = true
|
||||
parse_duration = "2.1.1"
|
||||
tiktoken-rs.workspace = true
|
||||
matrixmultiply = "0.3.7"
|
||||
rusqlite = { version = "0.29.0", features = ["blob", "array", "modern_sqlite"] }
|
||||
bincode = "1.3.3"
|
||||
|
||||
[dev-dependencies]
|
||||
gpui = { package = "gpui2", path = "../gpui2", features = ["test-support"] }
|
||||
8
crates/ai2/src/ai2.rs
Normal file
@@ -0,0 +1,8 @@
|
||||
pub mod auth;
|
||||
pub mod completion;
|
||||
pub mod embedding;
|
||||
pub mod models;
|
||||
pub mod prompts;
|
||||
pub mod providers;
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
pub mod test;
|
||||
15
crates/ai2/src/auth.rs
Normal file
@@ -0,0 +1,15 @@
|
||||
use gpui::AppContext;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub enum ProviderCredential {
|
||||
Credentials { api_key: String },
|
||||
NoCredentials,
|
||||
NotNeeded,
|
||||
}
|
||||
|
||||
pub trait CredentialProvider {
|
||||
fn has_credentials(&self) -> bool;
|
||||
fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential;
|
||||
fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential);
|
||||
fn delete_credentials(&self, cx: &mut AppContext);
|
||||
}
|
||||
23
crates/ai2/src/completion.rs
Normal file
@@ -0,0 +1,23 @@
|
||||
use anyhow::Result;
|
||||
use futures::{future::BoxFuture, stream::BoxStream};
|
||||
|
||||
use crate::{auth::CredentialProvider, models::LanguageModel};
|
||||
|
||||
pub trait CompletionRequest: Send + Sync {
|
||||
fn data(&self) -> serde_json::Result<String>;
|
||||
}
|
||||
|
||||
pub trait CompletionProvider: CredentialProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel>;
|
||||
fn complete(
|
||||
&self,
|
||||
prompt: Box<dyn CompletionRequest>,
|
||||
) -> BoxFuture<'static, Result<BoxStream<'static, Result<String>>>>;
|
||||
fn box_clone(&self) -> Box<dyn CompletionProvider>;
|
||||
}
|
||||
|
||||
impl Clone for Box<dyn CompletionProvider> {
|
||||
fn clone(&self) -> Box<dyn CompletionProvider> {
|
||||
self.box_clone()
|
||||
}
|
||||
}
|
||||
123
crates/ai2/src/embedding.rs
Normal file
@@ -0,0 +1,123 @@
|
||||
use std::time::Instant;
|
||||
|
||||
use anyhow::Result;
|
||||
use async_trait::async_trait;
|
||||
use ordered_float::OrderedFloat;
|
||||
use rusqlite::types::{FromSql, FromSqlResult, ToSqlOutput, ValueRef};
|
||||
use rusqlite::ToSql;
|
||||
|
||||
use crate::auth::CredentialProvider;
|
||||
use crate::models::LanguageModel;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub struct Embedding(pub Vec<f32>);
|
||||
|
||||
// This is needed for semantic index functionality
|
||||
// Unfortunately it has to live wherever the "Embedding" struct is created.
|
||||
// Keeping this in here though, introduces a 'rusqlite' dependency into AI
|
||||
// which is less than ideal
|
||||
impl FromSql for Embedding {
|
||||
fn column_result(value: ValueRef) -> FromSqlResult<Self> {
|
||||
let bytes = value.as_blob()?;
|
||||
let embedding: Result<Vec<f32>, Box<bincode::ErrorKind>> = bincode::deserialize(bytes);
|
||||
if embedding.is_err() {
|
||||
return Err(rusqlite::types::FromSqlError::Other(embedding.unwrap_err()));
|
||||
}
|
||||
Ok(Embedding(embedding.unwrap()))
|
||||
}
|
||||
}
|
||||
|
||||
impl ToSql for Embedding {
|
||||
fn to_sql(&self) -> rusqlite::Result<ToSqlOutput> {
|
||||
let bytes = bincode::serialize(&self.0)
|
||||
.map_err(|err| rusqlite::Error::ToSqlConversionFailure(Box::new(err)))?;
|
||||
Ok(ToSqlOutput::Owned(rusqlite::types::Value::Blob(bytes)))
|
||||
}
|
||||
}
|
||||
impl From<Vec<f32>> for Embedding {
|
||||
fn from(value: Vec<f32>) -> Self {
|
||||
Embedding(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl Embedding {
|
||||
pub fn similarity(&self, other: &Self) -> OrderedFloat<f32> {
|
||||
let len = self.0.len();
|
||||
assert_eq!(len, other.0.len());
|
||||
|
||||
let mut result = 0.0;
|
||||
unsafe {
|
||||
matrixmultiply::sgemm(
|
||||
1,
|
||||
len,
|
||||
1,
|
||||
1.0,
|
||||
self.0.as_ptr(),
|
||||
len as isize,
|
||||
1,
|
||||
other.0.as_ptr(),
|
||||
1,
|
||||
len as isize,
|
||||
0.0,
|
||||
&mut result as *mut f32,
|
||||
1,
|
||||
1,
|
||||
);
|
||||
}
|
||||
OrderedFloat(result)
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait EmbeddingProvider: CredentialProvider {
|
||||
fn base_model(&self) -> Box<dyn LanguageModel>;
|
||||
async fn embed_batch(&self, spans: Vec<String>) -> Result<Vec<Embedding>>;
|
||||
fn max_tokens_per_batch(&self) -> usize;
|
||||
fn rate_limit_expiration(&self) -> Option<Instant>;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use rand::prelude::*;
|
||||
|
||||
#[gpui::test]
|
||||
fn test_similarity(mut rng: StdRng) {
|
||||
assert_eq!(
|
||||
Embedding::from(vec![1., 0., 0., 0., 0.])
|
||||
.similarity(&Embedding::from(vec![0., 1., 0., 0., 0.])),
|
||||
0.
|
||||
);
|
||||
assert_eq!(
|
||||
Embedding::from(vec![2., 0., 0., 0., 0.])
|
||||
.similarity(&Embedding::from(vec![3., 1., 0., 0., 0.])),
|
||||
6.
|
||||
);
|
||||
|
||||
for _ in 0..100 {
|
||||
let size = 1536;
|
||||
let mut a = vec![0.; size];
|
||||
let mut b = vec![0.; size];
|
||||
for (a, b) in a.iter_mut().zip(b.iter_mut()) {
|
||||
*a = rng.gen();
|
||||
*b = rng.gen();
|
||||
}
|
||||
let a = Embedding::from(a);
|
||||
let b = Embedding::from(b);
|
||||
|
||||
assert_eq!(
|
||||
round_to_decimals(a.similarity(&b), 1),
|
||||
round_to_decimals(reference_dot(&a.0, &b.0), 1)
|
||||
);
|
||||
}
|
||||
|
||||
fn round_to_decimals(n: OrderedFloat<f32>, decimal_places: i32) -> f32 {
|
||||
let factor = (10.0 as f32).powi(decimal_places);
|
||||
(n * factor).round() / factor
|
||||
}
|
||||
|
||||
fn reference_dot(a: &[f32], b: &[f32]) -> OrderedFloat<f32> {
|
||||
OrderedFloat(a.iter().zip(b.iter()).map(|(a, b)| a * b).sum())
|
||||
}
|
||||
}
|
||||
}
|
||||