mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-04-19 14:51:13 -03:00
Compare commits
5048 Commits
1.20.1
...
Integratio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
216a45edee | ||
|
|
7828f2303a | ||
|
|
245be2c2e4 | ||
|
|
14b953e414 | ||
|
|
ade6ebf522 | ||
|
|
768277a312 | ||
|
|
c53951b9b3 | ||
|
|
46b819a265 | ||
|
|
4d1e77fcae | ||
|
|
4efd0dfd65 | ||
|
|
c1e15ef084 | ||
|
|
8ec81393a3 | ||
|
|
49838c768d | ||
|
|
862e0127f6 | ||
|
|
1cd4731c2d | ||
|
|
05a432da32 | ||
|
|
404ab5e9ab | ||
|
|
901652d5c3 | ||
|
|
4bb805b5fe | ||
|
|
52731c480c | ||
|
|
f44ef3ad3f | ||
|
|
54319435f4 | ||
|
|
8e19c82e09 | ||
|
|
09bb713989 | ||
|
|
6466ffe82d | ||
|
|
ce41e3468e | ||
|
|
75064ed786 | ||
|
|
5f4a77a324 | ||
|
|
8a940a2ee7 | ||
|
|
d5797c5439 | ||
|
|
d0fdc80725 | ||
|
|
375bef4443 | ||
|
|
0e7ab7a7d0 | ||
|
|
413ac86da2 | ||
|
|
0f888ad4e6 | ||
|
|
43535cf5a5 | ||
|
|
bf0e91cc97 | ||
|
|
fc78e70d08 | ||
|
|
aefcf544ca | ||
|
|
0fd3f5c0dd | ||
|
|
e7599fd18c | ||
|
|
8d3eae0d76 | ||
|
|
d7fd0427f3 | ||
|
|
baee807837 | ||
|
|
c2e9cda7b3 | ||
|
|
4aa8fc753f | ||
|
|
635a1e9dd2 | ||
|
|
574851f092 | ||
|
|
2d5eaed745 | ||
|
|
6adc35c636 | ||
|
|
6c5f923a47 | ||
|
|
d7c690b416 | ||
|
|
8eb9dac4bc | ||
|
|
2ff3a36675 | ||
|
|
e395a0eb69 | ||
|
|
36691df6fe | ||
|
|
790c7f80c7 | ||
|
|
155befe90e | ||
|
|
9347630d1e | ||
|
|
784b438d4a | ||
|
|
d2ae00ca44 | ||
|
|
8477126ae4 | ||
|
|
9c75546724 | ||
|
|
e1e1e558ce | ||
|
|
c37c93fcf6 | ||
|
|
35e282928a | ||
|
|
02f18cae0a | ||
|
|
4ff8e6e781 | ||
|
|
8e8b5a6481 | ||
|
|
200a10e78d | ||
|
|
9e93ddc097 | ||
|
|
3435e94994 | ||
|
|
fd1b7ba529 | ||
|
|
a4642f141f | ||
|
|
8f33b55ccc | ||
|
|
484c1484c9 | ||
|
|
cb6d5d76c8 | ||
|
|
47f1a92cc4 | ||
|
|
0953590cca | ||
|
|
411d573ba9 | ||
|
|
9dd6873e58 | ||
|
|
3f1fc332e7 | ||
|
|
bbf0007c46 | ||
|
|
6fa09e6a70 | ||
|
|
4f5d42858c | ||
|
|
83233ccc5a | ||
|
|
6888c3d604 | ||
|
|
35cee1e39c | ||
|
|
7e014174b8 | ||
|
|
aacdaee6a9 | ||
|
|
0e18e2ba78 | ||
|
|
a148b755a6 | ||
|
|
dfb23c4fce | ||
|
|
d30f8fffc8 | ||
|
|
19dd28e400 | ||
|
|
daf94e14d4 | ||
|
|
2eb518f59c | ||
|
|
0eb3fd6b3f | ||
|
|
6663c73eb0 | ||
|
|
bb5608e920 | ||
|
|
6495bd470d | ||
|
|
7accadc33f | ||
|
|
ad97a122c9 | ||
|
|
516695ff21 | ||
|
|
9d2b53450a | ||
|
|
de1258e09b | ||
|
|
2a4a539d86 | ||
|
|
a81bd697a8 | ||
|
|
2e0205a746 | ||
|
|
168a156e58 | ||
|
|
879ee61a30 | ||
|
|
c2f1df1d4a | ||
|
|
fb0921249f | ||
|
|
1828def866 | ||
|
|
dedc7f6f03 | ||
|
|
de0349399c | ||
|
|
b1b2698a84 | ||
|
|
9f0417b587 | ||
|
|
03460a3928 | ||
|
|
19c13c72f6 | ||
|
|
f20e8420a8 | ||
|
|
a7012648fe | ||
|
|
46b9f263ac | ||
|
|
540bdfcb02 | ||
|
|
6288f89bf9 | ||
|
|
6a16bdb808 | ||
|
|
5e09411340 | ||
|
|
f4c14b69a2 | ||
|
|
b4b52b8234 | ||
|
|
ed4b78918a | ||
|
|
6bee85fefa | ||
|
|
a37d4d809e | ||
|
|
3044697baa | ||
|
|
1e7c3fe709 | ||
|
|
333415f42a | ||
|
|
e3968ba872 | ||
|
|
58d56f91f3 | ||
|
|
0e8a8a7c80 | ||
|
|
fbd53f2da1 | ||
|
|
65aeaab054 | ||
|
|
94c12d84e2 | ||
|
|
a5f5e6c1ef | ||
|
|
61fd8b9861 | ||
|
|
f2246dfb34 | ||
|
|
b41b962336 | ||
|
|
5446841069 | ||
|
|
60bd3c809a | ||
|
|
fb5a8a089e | ||
|
|
9151ec7092 | ||
|
|
3633c51ad8 | ||
|
|
e3970f9cbb | ||
|
|
077757a30b | ||
|
|
211d626152 | ||
|
|
e8aab9183e | ||
|
|
10f3ea0008 | ||
|
|
88a785e321 | ||
|
|
d628fe0dea | ||
|
|
cbd3fa6b01 | ||
|
|
584cca59bf | ||
|
|
6cb48c6380 | ||
|
|
99be3ee96f | ||
|
|
c1c35e0f21 | ||
|
|
d8a497434f | ||
|
|
211829c586 | ||
|
|
2bb7c587f4 | ||
|
|
2187c0a84b | ||
|
|
c359d28b21 | ||
|
|
c1b384e5d3 | ||
|
|
8b67a1b26f | ||
|
|
c79ade9627 | ||
|
|
d61e95e4f9 | ||
|
|
68807f274e | ||
|
|
a805d401b8 | ||
|
|
2f52f073da | ||
|
|
c4cc9f9b8d | ||
|
|
6c401bc587 | ||
|
|
35160db268 | ||
|
|
5b0996fd80 | ||
|
|
585c03db72 | ||
|
|
613739ba07 | ||
|
|
947f659f96 | ||
|
|
8703c5bc00 | ||
|
|
43e1c0a2bf | ||
|
|
99e18d9cef | ||
|
|
718d9baead | ||
|
|
e2f4584220 | ||
|
|
4138073a2f | ||
|
|
1907323afc | ||
|
|
c39b94949b | ||
|
|
31bc88d16f | ||
|
|
5dbf40ca75 | ||
|
|
2d68b25025 | ||
|
|
1767681f9a | ||
|
|
0395c33982 | ||
|
|
83d3c9fc04 | ||
|
|
c184c1a81a | ||
|
|
31a617408f | ||
|
|
a6565bbea8 | ||
|
|
81cdceddd3 | ||
|
|
5b506499c1 | ||
|
|
62b76b26b4 | ||
|
|
b72837a0f4 | ||
|
|
c4f702b7c4 | ||
|
|
00cd01c89e | ||
|
|
eb0d18add4 | ||
|
|
585bdf45c8 | ||
|
|
89206d8654 | ||
|
|
a00e26b109 | ||
|
|
de17bdb130 | ||
|
|
3345f5d0d0 | ||
|
|
28837a8b30 | ||
|
|
96e688ea91 | ||
|
|
52f8707c3e | ||
|
|
b6e058985b | ||
|
|
bc9e3c7546 | ||
|
|
57fcbecb41 | ||
|
|
c4d0612e5c | ||
|
|
992dfcc4ce | ||
|
|
1e6492ef93 | ||
|
|
4c5aa8860a | ||
|
|
adc3b0e122 | ||
|
|
29d06760bc | ||
|
|
218843b9e4 | ||
|
|
25ad8866c9 | ||
|
|
2646d51a0b | ||
|
|
e88bfbc440 | ||
|
|
4e465ee04c | ||
|
|
1d446b74ff | ||
|
|
dae0f63e5b | ||
|
|
0779c89a65 | ||
|
|
b908d0b89b | ||
|
|
cadb5d51ea | ||
|
|
fcdc6a48c0 | ||
|
|
16aa0b93e9 | ||
|
|
158ea98189 | ||
|
|
962f9914c6 | ||
|
|
df8c4ce835 | ||
|
|
1b8face1a3 | ||
|
|
b4a44deb7b | ||
|
|
60a477a303 | ||
|
|
f8da754884 | ||
|
|
1688b2384f | ||
|
|
0c94c2b9e8 | ||
|
|
d3f6c8a694 | ||
|
|
e086e27f98 | ||
|
|
2f5d750393 | ||
|
|
b88e31b3f1 | ||
|
|
7c4f553acc | ||
|
|
4eb6aaf36f | ||
|
|
08edfaeae8 | ||
|
|
8081e9f189 | ||
|
|
0dac245b58 | ||
|
|
c7ba446c23 | ||
|
|
4b2495f28f | ||
|
|
11785c2bf4 | ||
|
|
4b9fece9f4 | ||
|
|
766176443d | ||
|
|
3552d073f6 | ||
|
|
49d3042bd3 | ||
|
|
701d141109 | ||
|
|
870593e345 | ||
|
|
5cf0e918b0 | ||
|
|
d7f38a0802 | ||
|
|
a77ce393ba | ||
|
|
f8ed1d182e | ||
|
|
68fcb790b0 | ||
|
|
8db1a5fae7 | ||
|
|
6bf70c86d2 | ||
|
|
b7d98fa873 | ||
|
|
daafe4ef37 | ||
|
|
ed1919b266 | ||
|
|
fdb2559425 | ||
|
|
ac545940de | ||
|
|
7a8cbcda06 | ||
|
|
8e79da3b2d | ||
|
|
1dac0041d5 | ||
|
|
43728fe7a0 | ||
|
|
e1f988b987 | ||
|
|
03fe30a774 | ||
|
|
c56df11128 | ||
|
|
6027eae1a1 | ||
|
|
bd482898d4 | ||
|
|
4417a6ee34 | ||
|
|
2a4f21cc92 | ||
|
|
8cc213ed4f | ||
|
|
4f519297dd | ||
|
|
4c4020babe | ||
|
|
ef31aa94f8 | ||
|
|
bc3260402a | ||
|
|
c5ed4e5cdf | ||
|
|
92d0d98a24 | ||
|
|
23fabf81d7 | ||
|
|
19112980ee | ||
|
|
8eca775977 | ||
|
|
c3971957ac | ||
|
|
9a7b2b190b | ||
|
|
6f2f0cfce2 | ||
|
|
3a249bb549 | ||
|
|
1a12071a48 | ||
|
|
b7fb11cb7f | ||
|
|
95c30f7a23 | ||
|
|
d5fe5c02a8 | ||
|
|
759b45ad79 | ||
|
|
1363c7468d | ||
|
|
834ebef53c | ||
|
|
bb932a0a0a | ||
|
|
f23c2beb61 | ||
|
|
994aba075d | ||
|
|
979b94e274 | ||
|
|
076ebf8cee | ||
|
|
6eea3992b3 | ||
|
|
6969cfab3d | ||
|
|
1a3bcf63bc | ||
|
|
814cb51eb5 | ||
|
|
d6d3977f3d | ||
|
|
c9ddad94a9 | ||
|
|
172f1e1b5f | ||
|
|
b257e79a07 | ||
|
|
f029e04047 | ||
|
|
6aa2cbe807 | ||
|
|
ad72421b2c | ||
|
|
594b460ba2 | ||
|
|
0a6f62358b | ||
|
|
8c707a4e2f | ||
|
|
7188d94c1b | ||
|
|
836b6bea73 | ||
|
|
8a6f26ff9b | ||
|
|
7143512198 | ||
|
|
5306fce16e | ||
|
|
fb1a7d9d73 | ||
|
|
482cfca84f | ||
|
|
e29d200ba5 | ||
|
|
43c7ababf9 | ||
|
|
baa6971a46 | ||
|
|
aefe084124 | ||
|
|
c68f8f3418 | ||
|
|
aa5291c6bd | ||
|
|
f045d9b143 | ||
|
|
666dcd78ba | ||
|
|
70ee7650f3 | ||
|
|
aa974b58bc | ||
|
|
6c8518dd10 | ||
|
|
346d918555 | ||
|
|
8104854d5d | ||
|
|
b4b5c2188f | ||
|
|
a0eef2663a | ||
|
|
f5dfebb6a3 | ||
|
|
2b7ffca414 | ||
|
|
96b3e1ce1b | ||
|
|
ce719a700c | ||
|
|
4280df3aa2 | ||
|
|
b73bf53bd3 | ||
|
|
d90169e79b | ||
|
|
fea798011b | ||
|
|
f17a71de74 | ||
|
|
0212314479 | ||
|
|
16c34b387f | ||
|
|
d65c63322e | ||
|
|
6943536ef3 | ||
|
|
7322c9c591 | ||
|
|
dfaefb97ff | ||
|
|
0a0acc8a2e | ||
|
|
a8837f537f | ||
|
|
ef67fc7ba0 | ||
|
|
83c0f43b33 | ||
|
|
17672b08c6 | ||
|
|
dc1f2fbb4c | ||
|
|
2d90859cab | ||
|
|
d325b4bf39 | ||
|
|
1d64c480c4 | ||
|
|
9f7334deef | ||
|
|
3dbefd08ad | ||
|
|
1a5d0fc47f | ||
|
|
17b6936f53 | ||
|
|
c5bcc4567e | ||
|
|
ce360bcfe3 | ||
|
|
789657456a | ||
|
|
7b3d93f4a1 | ||
|
|
3868203c76 | ||
|
|
e5bfdcd9a4 | ||
|
|
b7f13b4685 | ||
|
|
c2c4fbf206 | ||
|
|
bf86a92596 | ||
|
|
53fc9a4002 | ||
|
|
a8a9ac0dae | ||
|
|
3b53abecd0 | ||
|
|
3f12f75853 | ||
|
|
917c727619 | ||
|
|
6336288da1 | ||
|
|
3e0ff6db2a | ||
|
|
5db811253e | ||
|
|
e31a93040e | ||
|
|
8e55f7154b | ||
|
|
71d3357b71 | ||
|
|
3eafb3520f | ||
|
|
e50d104399 | ||
|
|
45dfa2d864 | ||
|
|
c2024a6a94 | ||
|
|
32d54e37f7 | ||
|
|
2bbad22248 | ||
|
|
22493c9df8 | ||
|
|
8d97a85834 | ||
|
|
e7d18b96f9 | ||
|
|
1854ef9823 | ||
|
|
c9577394eb | ||
|
|
0918ad6cee | ||
|
|
d3bcee9e2e | ||
|
|
1055864438 | ||
|
|
be0d9d093c | ||
|
|
bb491742ea | ||
|
|
46fbfaaa83 | ||
|
|
09bd938e25 | ||
|
|
d5f3a09ce9 | ||
|
|
036a29acf5 | ||
|
|
3e7dfd7f5e | ||
|
|
f21d826850 | ||
|
|
8e3e286577 | ||
|
|
f4b4e5b41f | ||
|
|
4a05d56337 | ||
|
|
73708061fc | ||
|
|
55abe105ea | ||
|
|
0006d23df8 | ||
|
|
df3da55602 | ||
|
|
13479fbc2a | ||
|
|
226cdc6a28 | ||
|
|
b13f0701a4 | ||
|
|
4c2cc384d2 | ||
|
|
2971887bbd | ||
|
|
b776327b9d | ||
|
|
b7e991c4b7 | ||
|
|
9788566ba4 | ||
|
|
233c443694 | ||
|
|
35bbc1d7b7 | ||
|
|
4e5e04bfda | ||
|
|
c0e8ad6f1f | ||
|
|
3472a39d07 | ||
|
|
9865a8c807 | ||
|
|
35e769d494 | ||
|
|
6e3ea5b2ea | ||
|
|
54f215294f | ||
|
|
f6f982226a | ||
|
|
98b33d7b6b | ||
|
|
86471ac21f | ||
|
|
57e22e87c2 | ||
|
|
0b3406bdc0 | ||
|
|
74cd977566 | ||
|
|
d9d2f61ba6 | ||
|
|
434eabb787 | ||
|
|
e8605cb3ef | ||
|
|
1bdf06836a | ||
|
|
0a99772572 | ||
|
|
2ffb47eba2 | ||
|
|
b208d752e2 | ||
|
|
ec74479d44 | ||
|
|
e75108fc4c | ||
|
|
176e34cf73 | ||
|
|
65415cb761 | ||
|
|
45bf843b03 | ||
|
|
610a5926a8 | ||
|
|
3b0f9911e2 | ||
|
|
55a2945449 | ||
|
|
16061d06a9 | ||
|
|
aeaacedf75 | ||
|
|
bec6d5c174 | ||
|
|
d98b6f2434 | ||
|
|
3ffbf9a7ea | ||
|
|
c481137b40 | ||
|
|
9f0b077295 | ||
|
|
5f2feee680 | ||
|
|
9ecd73d956 | ||
|
|
b9b39f7c31 | ||
|
|
37f4cbe3d7 | ||
|
|
126c8c14b8 | ||
|
|
3992315505 | ||
|
|
eb4e4fa7ad | ||
|
|
71e38dec11 | ||
|
|
11376ae25b | ||
|
|
dd245f62f0 | ||
|
|
aa37b40d93 | ||
|
|
8eccf8a6f7 | ||
|
|
7376639789 | ||
|
|
2334374fd6 | ||
|
|
f086bc9564 | ||
|
|
c30de8add4 | ||
|
|
de3cb6b374 | ||
|
|
4c8fdf6e90 | ||
|
|
1a41f908d3 | ||
|
|
95908aa2bc | ||
|
|
a19f4dd4c8 | ||
|
|
eadd4d9b71 | ||
|
|
4f3ff3d77f | ||
|
|
5bb81461f6 | ||
|
|
871a2088db | ||
|
|
abeaac6632 | ||
|
|
d591cebf44 | ||
|
|
8abb19aaca | ||
|
|
bcc937e4e0 | ||
|
|
915d92019c | ||
|
|
f24d5cb5f0 | ||
|
|
79c22c76bf | ||
|
|
20e96df85d | ||
|
|
be51fe944d | ||
|
|
54d1d98e39 | ||
|
|
6f92781992 | ||
|
|
c1bd3b5824 | ||
|
|
fb615843b3 | ||
|
|
c6d808a0d8 | ||
|
|
4f12821ca8 | ||
|
|
4fcda28d9b | ||
|
|
1883e051ba | ||
|
|
4825afbf58 | ||
|
|
ad8c7b9d0b | ||
|
|
7eb88ed7dc | ||
|
|
6afd0d8add | ||
|
|
bfe142fef0 | ||
|
|
54e626f665 | ||
|
|
f296471726 | ||
|
|
b2e8967e94 | ||
|
|
d83ef07ca7 | ||
|
|
e70ed961ea | ||
|
|
7216e36cb1 | ||
|
|
10a60b6ec2 | ||
|
|
054fb22854 | ||
|
|
b34127e346 | ||
|
|
be70ea7d49 | ||
|
|
1ef178c5e6 | ||
|
|
56399b9aa3 | ||
|
|
a79c7495c8 | ||
|
|
b13ee9da2a | ||
|
|
f86ee20579 | ||
|
|
f7e8f8031d | ||
|
|
18a116394d | ||
|
|
094948db51 | ||
|
|
18c7e97ecc | ||
|
|
c8ac48ff9a | ||
|
|
fa4ec55c96 | ||
|
|
a02d4dc27c | ||
|
|
31c75e747c | ||
|
|
8a1a446f45 | ||
|
|
7fe8a63f53 | ||
|
|
48874294d6 | ||
|
|
f5093f1625 | ||
|
|
4bc8cf1a1a | ||
|
|
527c932e93 | ||
|
|
cba3db6205 | ||
|
|
3b798b1733 | ||
|
|
f898d82536 | ||
|
|
3b5aab6edb | ||
|
|
11c8a47d22 | ||
|
|
b2323ca203 | ||
|
|
2c648c80c8 | ||
|
|
b8d9ba993d | ||
|
|
3810ef47f7 | ||
|
|
bbbadbcb78 | ||
|
|
c0acc98faa | ||
|
|
9828d787fa | ||
|
|
53456b5fc3 | ||
|
|
73a5e2bc6b | ||
|
|
9a2ac5fcb6 | ||
|
|
025b45b91e | ||
|
|
31d1e04301 | ||
|
|
a828f90d38 | ||
|
|
00556734bc | ||
|
|
b231ab7238 | ||
|
|
2587bbc4a7 | ||
|
|
40df11b162 | ||
|
|
a66d44054c | ||
|
|
e9fcbb334e | ||
|
|
babc6f0f9c | ||
|
|
bffeb664cc | ||
|
|
b85a8bbbfe | ||
|
|
925f451773 | ||
|
|
8bf1e694fe | ||
|
|
c5bc221b27 | ||
|
|
7f28acc5ed | ||
|
|
f36d2ff55f | ||
|
|
396e01a0e0 | ||
|
|
787c1304c6 | ||
|
|
d92c08c9bb | ||
|
|
bd3b4e03e9 | ||
|
|
cb5511c8db | ||
|
|
54b6a1c08e | ||
|
|
8cc154bc48 | ||
|
|
ab6d9ad521 | ||
|
|
5e1c71b059 | ||
|
|
f3695b95fc | ||
|
|
32a3e15309 | ||
|
|
0661553484 | ||
|
|
5f080fcfc9 | ||
|
|
a21e44c155 | ||
|
|
60089f9750 | ||
|
|
5043b9d06e | ||
|
|
a17b9fdaba | ||
|
|
2f3123e175 | ||
|
|
17c756971a | ||
|
|
f71e877f18 | ||
|
|
d6c97a6a13 | ||
|
|
e0e732523e | ||
|
|
47b9993469 | ||
|
|
7bfad18ec7 | ||
|
|
b0504f7739 | ||
|
|
67ed58b0ba | ||
|
|
a815e6ca14 | ||
|
|
b59904632d | ||
|
|
c1b9b27f86 | ||
|
|
2b87705a46 | ||
|
|
34faf7638e | ||
|
|
5e555fc1cf | ||
|
|
cb5d36d89f | ||
|
|
e2f16ec20e | ||
|
|
b615534d8d | ||
|
|
93d57bd73a | ||
|
|
60798798ef | ||
|
|
81696c16d2 | ||
|
|
89c504daf6 | ||
|
|
5a2287c52f | ||
|
|
a65a288eca | ||
|
|
cf80baa2d8 | ||
|
|
871a822379 | ||
|
|
b9b6b6108e | ||
|
|
3a2ba60b70 | ||
|
|
aa76f64a94 | ||
|
|
e34a8da5d7 | ||
|
|
6157a9a858 | ||
|
|
6b92c4867d | ||
|
|
3bd6eab88f | ||
|
|
3a3a9f5cc1 | ||
|
|
f87268e2ac | ||
|
|
5238ed309f | ||
|
|
6347988e0a | ||
|
|
b92acd3cf2 | ||
|
|
fd96bafbc8 | ||
|
|
b7e16cb0dd | ||
|
|
459df23931 | ||
|
|
e7b22a7ed2 | ||
|
|
bcbe91461e | ||
|
|
b68410d619 | ||
|
|
602e9cebd9 | ||
|
|
d2049edcab | ||
|
|
83322f63c6 | ||
|
|
f0a2f24701 | ||
|
|
97f1a8fe91 | ||
|
|
0ac9f159d6 | ||
|
|
a3f8e27bf8 | ||
|
|
b55c13f275 | ||
|
|
761651d410 | ||
|
|
70548f7cc7 | ||
|
|
f6ab0b4d07 | ||
|
|
bc8a34f8df | ||
|
|
8f0cd5508d | ||
|
|
a151c3f892 | ||
|
|
5b9135a698 | ||
|
|
db5c02fbfc | ||
|
|
938da3039d | ||
|
|
cfeae48b83 | ||
|
|
50f18ddaad | ||
|
|
2874650802 | ||
|
|
1271de321e | ||
|
|
a265ee6f6f | ||
|
|
e196203320 | ||
|
|
33d062cb60 | ||
|
|
53bcd4b1ab | ||
|
|
385f961b29 | ||
|
|
eada714a0a | ||
|
|
66f11e9bd3 | ||
|
|
158d3cc743 | ||
|
|
07c109fad8 | ||
|
|
618a4b42ad | ||
|
|
e2c81e54e2 | ||
|
|
e56f0628d5 | ||
|
|
546ba888ae | ||
|
|
9b2a17eb1e | ||
|
|
a7ecc0db1f | ||
|
|
bc7eb39781 | ||
|
|
299a383d98 | ||
|
|
75515af537 | ||
|
|
b1ed15a07a | ||
|
|
9dc6ef6771 | ||
|
|
a6a16808e3 | ||
|
|
aee71b594b | ||
|
|
6e3231a9d7 | ||
|
|
85dad6913e | ||
|
|
deacec07bf | ||
|
|
958880d972 | ||
|
|
78af59f40c | ||
|
|
c59f5e9f01 | ||
|
|
c9349f2ef6 | ||
|
|
4ebaa7b6bd | ||
|
|
618896c043 | ||
|
|
0dbd83ffaf | ||
|
|
3929e9de0e | ||
|
|
f4d1657c22 | ||
|
|
caab298f72 | ||
|
|
0d0b2ce9b3 | ||
|
|
16ad5d3a2e | ||
|
|
92e9297a15 | ||
|
|
ac72db8ef0 | ||
|
|
9b4e365517 | ||
|
|
c0cefde5d1 | ||
|
|
1786a7cdc4 | ||
|
|
a91e8887cd | ||
|
|
d3a0372e89 | ||
|
|
793e1afa08 | ||
|
|
78162a2a13 | ||
|
|
30ea4fc416 | ||
|
|
d1d36cc9af | ||
|
|
b2a97e4245 | ||
|
|
b32f770a69 | ||
|
|
78d4f22ce4 | ||
|
|
3925929979 | ||
|
|
60fdd71f74 | ||
|
|
b4f53143b0 | ||
|
|
9c2fdc6da5 | ||
|
|
821e8ec59a | ||
|
|
4401abb166 | ||
|
|
27be004c64 | ||
|
|
6c668868e9 | ||
|
|
6add8a7df9 | ||
|
|
7fa69ef8be | ||
|
|
f77f71c17e | ||
|
|
749b9182ab | ||
|
|
3b0805f4d7 | ||
|
|
0c1485c325 | ||
|
|
86554d66d0 | ||
|
|
6475d763d0 | ||
|
|
7add4d5782 | ||
|
|
f70b1ffbbf | ||
|
|
8a9b7dc63a | ||
|
|
3f30096727 | ||
|
|
52ff997bf0 | ||
|
|
08911e2dcc | ||
|
|
dd4639e5db | ||
|
|
2109af0987 | ||
|
|
68bbe13d23 | ||
|
|
b1a0498ff9 | ||
|
|
882f4714ac | ||
|
|
e7273e1d81 | ||
|
|
f359ded336 | ||
|
|
ff4b1104a2 | ||
|
|
a550695cba | ||
|
|
9438d33358 | ||
|
|
e35a2450d9 | ||
|
|
616d848fac | ||
|
|
a4b17b162c | ||
|
|
9fd6b5e1e2 | ||
|
|
466806fb11 | ||
|
|
97edc96afd | ||
|
|
8b14f1050d | ||
|
|
9cf2bb18c2 | ||
|
|
4b8febd44e | ||
|
|
d49f6e1b29 | ||
|
|
1e32f9431d | ||
|
|
4a3cda1495 | ||
|
|
05daedf7c6 | ||
|
|
f07d59c55d | ||
|
|
b057efdb37 | ||
|
|
7954b95f5d | ||
|
|
ebf91d59c7 | ||
|
|
0effcf6df1 | ||
|
|
e752ac3035 | ||
|
|
a5fabc6875 | ||
|
|
506720003d | ||
|
|
8ca21767fe | ||
|
|
e60db8075c | ||
|
|
0f3306870b | ||
|
|
a1b86749cf | ||
|
|
25d19f7d63 | ||
|
|
ae58809c9f | ||
|
|
322a611872 | ||
|
|
976ce1e8fd | ||
|
|
6ec58a20c0 | ||
|
|
ecb2da3142 | ||
|
|
ad237136e7 | ||
|
|
a4d6a104a6 | ||
|
|
a150ae76ac | ||
|
|
4621e763b6 | ||
|
|
8db162e048 | ||
|
|
7d94b7fd1b | ||
|
|
d79a72d722 | ||
|
|
d018ef39e1 | ||
|
|
781bbe217a | ||
|
|
4115a2f2d1 | ||
|
|
064ad7b981 | ||
|
|
767742c7e7 | ||
|
|
6fbb3c9976 | ||
|
|
7b34aaa432 | ||
|
|
5c6143d8e9 | ||
|
|
0ddd0ed4fb | ||
|
|
2d1331e104 | ||
|
|
9223b643b6 | ||
|
|
ea407476d0 | ||
|
|
f3560b8e62 | ||
|
|
18d7465592 | ||
|
|
b6b6de3304 | ||
|
|
79a6961793 | ||
|
|
ec7dd1ece8 | ||
|
|
cdfb425ac4 | ||
|
|
cb984cf761 | ||
|
|
7efbcc039d | ||
|
|
6c53862ff1 | ||
|
|
d31eceddaf | ||
|
|
3a190bbe49 | ||
|
|
5c4acc8ee1 | ||
|
|
92a9ba478b | ||
|
|
71a5db6961 | ||
|
|
013d91d4ee | ||
|
|
8e0c1c70ce | ||
|
|
bfbeca8b6c | ||
|
|
c0cf25cf0b | ||
|
|
edf6a951ee | ||
|
|
412a42246f | ||
|
|
781b61d074 | ||
|
|
1c99ef5b6e | ||
|
|
2008415106 | ||
|
|
386d6a77f2 | ||
|
|
a83323705d | ||
|
|
29d22e4e8b | ||
|
|
286c60bc9d | ||
|
|
c26d317da5 | ||
|
|
534fd1a59e | ||
|
|
49b49d7ed4 | ||
|
|
14bf2ee5cb | ||
|
|
cec1dc2095 | ||
|
|
9b5026f7e5 | ||
|
|
96dfd27725 | ||
|
|
905d8b2aa5 | ||
|
|
3ca518255e | ||
|
|
c59119e0b7 | ||
|
|
0748a4d8b6 | ||
|
|
3722f91e38 | ||
|
|
ba721d6cbf | ||
|
|
5532e5aa8a | ||
|
|
9cae8bf8a6 | ||
|
|
cb92a1d12f | ||
|
|
1242e63b6a | ||
|
|
f30872a7b5 | ||
|
|
9c3a9a1e73 | ||
|
|
c91f70523c | ||
|
|
3d9c24196d | ||
|
|
6f438f65de | ||
|
|
879d03d0fe | ||
|
|
7a1fc028e3 | ||
|
|
c3ef23b10f | ||
|
|
722fedc8fd | ||
|
|
32936b0eb9 | ||
|
|
3559f20c8f | ||
|
|
9dc53f7c1b | ||
|
|
9c007d1c94 | ||
|
|
6faac2d2c8 | ||
|
|
665314b240 | ||
|
|
cb1e3c501d | ||
|
|
9e8e5af064 | ||
|
|
fd731fb74f | ||
|
|
d1a56139e1 | ||
|
|
3408b2759e | ||
|
|
fbe28fd5d8 | ||
|
|
97aa1c033b | ||
|
|
34296dd440 | ||
|
|
87428672d8 | ||
|
|
84899fb2f8 | ||
|
|
73f344f41b | ||
|
|
9f8cec7f9e | ||
|
|
318daaffb2 | ||
|
|
cad1dc5293 | ||
|
|
900a8a1408 | ||
|
|
384cb2d735 | ||
|
|
ad61c3f0d6 | ||
|
|
c10aab77da | ||
|
|
e17f6fb2dc | ||
|
|
e896acffd7 | ||
|
|
20a6b65b25 | ||
|
|
01026c137f | ||
|
|
7aac3db55c | ||
|
|
0ecf294d34 | ||
|
|
89da09636e | ||
|
|
f8299a1274 | ||
|
|
94e9d6a5ef | ||
|
|
733108e33b | ||
|
|
48d353610f | ||
|
|
bff68f3bfc | ||
|
|
b9bd0166b6 | ||
|
|
1116929d2f | ||
|
|
22103e4849 | ||
|
|
e421c12cc4 | ||
|
|
5a9b1b1b57 | ||
|
|
d99ed89aa3 | ||
|
|
b9dd057a04 | ||
|
|
369a09e57e | ||
|
|
468648ff51 | ||
|
|
8c41a053fe | ||
|
|
a1b3358cb8 | ||
|
|
16e65c849c | ||
|
|
33c0d93b20 | ||
|
|
3d163eb910 | ||
|
|
3e32715693 | ||
|
|
388a8d09d8 | ||
|
|
b4aa2b7c2c | ||
|
|
dd595dd110 | ||
|
|
95687a03fb | ||
|
|
b3aa187867 | ||
|
|
b5d9e366ad | ||
|
|
d7ba6e4a1d | ||
|
|
981a71555f | ||
|
|
597dda5a4b | ||
|
|
66acd17bc0 | ||
|
|
793784c087 | ||
|
|
df6f1e8f62 | ||
|
|
facfe33218 | ||
|
|
78dfc57b1e | ||
|
|
d17ba69f9e | ||
|
|
5c16b5598b | ||
|
|
028d9e8e3b | ||
|
|
53a4814d8b | ||
|
|
1ff9aba6b1 | ||
|
|
39748870b6 | ||
|
|
b0cbad84f4 | ||
|
|
f920be5ea3 | ||
|
|
f9384fe323 | ||
|
|
789a54222d | ||
|
|
68efa5233c | ||
|
|
dce487380c | ||
|
|
75a76c596c | ||
|
|
7164769d33 | ||
|
|
9e3f912747 | ||
|
|
e529b78365 | ||
|
|
9374494d2b | ||
|
|
2018b9b217 | ||
|
|
3c0902b7e4 | ||
|
|
b31305b9bd | ||
|
|
d4eded2376 | ||
|
|
20974edc14 | ||
|
|
6e2132e01f | ||
|
|
34db67680d | ||
|
|
7864d0d416 | ||
|
|
d1feb9bcbf | ||
|
|
906d235601 | ||
|
|
e045eabad6 | ||
|
|
218bd7a687 | ||
|
|
70a99e494d | ||
|
|
e340baf6cc | ||
|
|
182faca2e5 | ||
|
|
14834ff076 | ||
|
|
a0127a0c7a | ||
|
|
390fe05a87 | ||
|
|
b9ff17f33c | ||
|
|
5f2ea007a5 | ||
|
|
e5a2343879 | ||
|
|
8d50b2509d | ||
|
|
a76afd6dae | ||
|
|
77a7dd82a9 | ||
|
|
04651105a8 | ||
|
|
d300bd4b62 | ||
|
|
a21db45cee | ||
|
|
2e948d9d6d | ||
|
|
6fa9a18a2b | ||
|
|
da2e2c2e99 | ||
|
|
8ba0ab2172 | ||
|
|
96589920d5 | ||
|
|
8c17d48c83 | ||
|
|
d458a8a03d | ||
|
|
39fe9fcfcd | ||
|
|
bf80b0db19 | ||
|
|
ebfaa8cc95 | ||
|
|
46cd89c2db | ||
|
|
8124b5073f | ||
|
|
a4e81d3978 | ||
|
|
147078f43d | ||
|
|
90629caa61 | ||
|
|
9cec0ad02c | ||
|
|
11bece80a8 | ||
|
|
a10f729ef9 | ||
|
|
b9db555343 | ||
|
|
9b43e6fa8b | ||
|
|
1edb7d3aa5 | ||
|
|
14fde56d32 | ||
|
|
a8059c5962 | ||
|
|
381404c4f4 | ||
|
|
68029095b5 | ||
|
|
9a34df604d | ||
|
|
2f96d2b19a | ||
|
|
bfd1951023 | ||
|
|
019c0fed23 | ||
|
|
bb01e5f81a | ||
|
|
8526a82947 | ||
|
|
94a3203c74 | ||
|
|
184110c2e7 | ||
|
|
3b3fde1c5e | ||
|
|
60a2e0a2ad | ||
|
|
c78e56c509 | ||
|
|
190cac07a3 | ||
|
|
efc3846fcf | ||
|
|
83df5ea660 | ||
|
|
e13d423b68 | ||
|
|
eafd577629 | ||
|
|
196a7c9d18 | ||
|
|
daa856ed47 | ||
|
|
04dc0aca50 | ||
|
|
918d5595bd | ||
|
|
0abdf9eeff | ||
|
|
8e8549ef7a | ||
|
|
cfc2d7fb3f | ||
|
|
c77f8e73c8 | ||
|
|
dda6be2592 | ||
|
|
93eea8de66 | ||
|
|
2ddd839f52 | ||
|
|
7555772432 | ||
|
|
33f9e071a4 | ||
|
|
9aaf93f364 | ||
|
|
14fa48864a | ||
|
|
206ea15b68 | ||
|
|
a7bab7b18b | ||
|
|
a6a41d159c | ||
|
|
59da180b8f | ||
|
|
51e446bc5f | ||
|
|
f68f91b399 | ||
|
|
0ea80a319e | ||
|
|
38caa0d988 | ||
|
|
7c2a420e88 | ||
|
|
d944add782 | ||
|
|
338a1311f5 | ||
|
|
00e0ed64bc | ||
|
|
f2447c537e | ||
|
|
220a15b8f6 | ||
|
|
330e996c30 | ||
|
|
32c0afe5a9 | ||
|
|
e83441395e | ||
|
|
43d23ee56e | ||
|
|
58a0f7f091 | ||
|
|
09bac97bb4 | ||
|
|
701a37fd00 | ||
|
|
9d7fbd2cc0 | ||
|
|
32010d1d93 | ||
|
|
75860db511 | ||
|
|
4d588a24e9 | ||
|
|
9382dc32df | ||
|
|
6db82c162c | ||
|
|
c31ad3ed07 | ||
|
|
c33a3862cc | ||
|
|
6cc64fc9e3 | ||
|
|
aafff91ac8 | ||
|
|
4b6639f697 | ||
|
|
fa588db148 | ||
|
|
851f0bcfb3 | ||
|
|
d9d9fa512d | ||
|
|
84372ba79d | ||
|
|
7ac593273e | ||
|
|
a529fc9d83 | ||
|
|
173a6a71c0 | ||
|
|
a177eb8c16 | ||
|
|
16459099af | ||
|
|
fa854d7a01 | ||
|
|
b3b83449cf | ||
|
|
d62694a9ce | ||
|
|
6044ac7e5e | ||
|
|
ec5f3d0cc8 | ||
|
|
f03d90e9de | ||
|
|
a31b44f9b2 | ||
|
|
a580d04dbc | ||
|
|
c84cdcd00c | ||
|
|
5638764bad | ||
|
|
ab7af98ded | ||
|
|
b0e09303a6 | ||
|
|
a242a64833 | ||
|
|
315ff1e712 | ||
|
|
21a751d153 | ||
|
|
090f027de1 | ||
|
|
cfa41686d2 | ||
|
|
3fe1069219 | ||
|
|
98091faeaf | ||
|
|
15e095233b | ||
|
|
a64c372a28 | ||
|
|
1f91a2a6f5 | ||
|
|
4aa38db56f | ||
|
|
9e32b330aa | ||
|
|
049bd227ed | ||
|
|
ff7108877b | ||
|
|
1927ebbc5d | ||
|
|
5db9548f40 | ||
|
|
cab115c8b9 | ||
|
|
4568359e27 | ||
|
|
07e4170418 | ||
|
|
0372cdbe7e | ||
|
|
5d1ddc9c58 | ||
|
|
c0b8e81b02 | ||
|
|
c3bacc78c7 | ||
|
|
4140e678f4 | ||
|
|
cc0fcdc18d | ||
|
|
fbade198b9 | ||
|
|
d982f2a575 | ||
|
|
becdc8b4fc | ||
|
|
76c6985f82 | ||
|
|
ac8c5910eb | ||
|
|
cc7f1755aa | ||
|
|
7493c9a040 | ||
|
|
9fc8729b96 | ||
|
|
80859b8483 | ||
|
|
71c55e1a4a | ||
|
|
d2f23e1df4 | ||
|
|
c70769c656 | ||
|
|
a13e067b85 | ||
|
|
8e8e63144b | ||
|
|
14724401ff | ||
|
|
72f5ab3186 | ||
|
|
3f0210dc96 | ||
|
|
3c8b344a41 | ||
|
|
46241e383f | ||
|
|
ea79f6b03f | ||
|
|
649c3f262d | ||
|
|
f85ec782a0 | ||
|
|
9df0bcea99 | ||
|
|
7764a1a6f8 | ||
|
|
980bf6e2f4 | ||
|
|
501c3d5518 | ||
|
|
6a0931aeae | ||
|
|
d7b3821c0a | ||
|
|
1665f84d60 | ||
|
|
fabee7e246 | ||
|
|
0ffa434926 | ||
|
|
a7727765dc | ||
|
|
33a76e1f8e | ||
|
|
cfc06203e7 | ||
|
|
6d7a7b00d7 | ||
|
|
3f11d90744 | ||
|
|
ae7b6156ac | ||
|
|
4ba95ad1c3 | ||
|
|
bae2b2cc47 | ||
|
|
47c357a354 | ||
|
|
b592da41f6 | ||
|
|
646d9ab431 | ||
|
|
43e451d4d8 | ||
|
|
1be5e68e99 | ||
|
|
ab5b22982f | ||
|
|
5157ac30fa | ||
|
|
3616dd5889 | ||
|
|
489fb7ec3f | ||
|
|
51527612d3 | ||
|
|
c181de1d7f | ||
|
|
d67800bbce | ||
|
|
27dd37ebb4 | ||
|
|
a186f04f15 | ||
|
|
15ca3b426f | ||
|
|
1c9aec4899 | ||
|
|
f0d8d90ed1 | ||
|
|
6ece8523b1 | ||
|
|
84af3dcd18 | ||
|
|
26051ea198 | ||
|
|
b00cbae4b5 | ||
|
|
4f4734fc9b | ||
|
|
3ac28f2b01 | ||
|
|
2f71c15b93 | ||
|
|
7cad0069e8 | ||
|
|
a0e5cdd178 | ||
|
|
ba11a0eb9b | ||
|
|
b511550917 | ||
|
|
7935b86cb2 | ||
|
|
fb8eb22e56 | ||
|
|
6925cd5d88 | ||
|
|
35595dbffd | ||
|
|
cd4fa518b8 | ||
|
|
316d7004a3 | ||
|
|
1096b1acd5 | ||
|
|
5766c7c53a | ||
|
|
bbce0909fe | ||
|
|
73158d6255 | ||
|
|
0986b6d991 | ||
|
|
c4a453fb22 | ||
|
|
1563501868 | ||
|
|
5f82f721d2 | ||
|
|
8d03baa4e0 | ||
|
|
a9b7e4582f | ||
|
|
2726712e01 | ||
|
|
8d3d51a020 | ||
|
|
5afd42c097 | ||
|
|
5b33e60752 | ||
|
|
80078491bd | ||
|
|
0a3f220572 | ||
|
|
5eee7d17f6 | ||
|
|
4718636ae2 | ||
|
|
2cd7f1443c | ||
|
|
7a9e2d733a | ||
|
|
4ed4b265a5 | ||
|
|
e689a38663 | ||
|
|
e5aa06991e | ||
|
|
cb40507b7b | ||
|
|
7d7a636f24 | ||
|
|
2450d00693 | ||
|
|
a4059d3e60 | ||
|
|
fe9cf673a2 | ||
|
|
b480c8ce79 | ||
|
|
94e535507c | ||
|
|
a027566295 | ||
|
|
e1f623f548 | ||
|
|
4573a4d69c | ||
|
|
a012aedb31 | ||
|
|
a9c8b75599 | ||
|
|
c64f38f0bf | ||
|
|
8f8c4cdd17 | ||
|
|
f889ad0fda | ||
|
|
166a2f91bd | ||
|
|
a069aec11d | ||
|
|
8a3cf144f2 | ||
|
|
a381ac2691 | ||
|
|
e2be71cbe4 | ||
|
|
b8181f9eb8 | ||
|
|
555ff00a30 | ||
|
|
6083c6fc72 | ||
|
|
940f264ee6 | ||
|
|
761be8ab7f | ||
|
|
51c2005ea2 | ||
|
|
510ff6a689 | ||
|
|
7229d7a326 | ||
|
|
1a7b33e8fb | ||
|
|
2d3f7babe3 | ||
|
|
0a32d96b27 | ||
|
|
174f5ba99a | ||
|
|
708e21f929 | ||
|
|
eb40baacfc | ||
|
|
133ba6e01b | ||
|
|
7f4908b0db | ||
|
|
9bfb4f1e11 | ||
|
|
ea435d35ad | ||
|
|
5b709eb5df | ||
|
|
5c25be51ea | ||
|
|
f6da9d4d5d | ||
|
|
f22864b813 | ||
|
|
22fd8e65ad | ||
|
|
190712d4b0 | ||
|
|
efb1467e4e | ||
|
|
6b75a4593b | ||
|
|
a04d5fd065 | ||
|
|
8643a5e266 | ||
|
|
47f97bbdd5 | ||
|
|
2e034e767f | ||
|
|
aed92b9a2c | ||
|
|
482e615fe0 | ||
|
|
cb46ed3701 | ||
|
|
9c78295a9a | ||
|
|
15cf06438e | ||
|
|
93b296d899 | ||
|
|
6e133c90e8 | ||
|
|
f1bd2b823d | ||
|
|
ac92f54ca6 | ||
|
|
1b4c85eb69 | ||
|
|
fb792c60cd | ||
|
|
38e153f568 | ||
|
|
6821f5ef4a | ||
|
|
ab433cfe65 | ||
|
|
6a57a50968 | ||
|
|
cb9ef98bed | ||
|
|
89f0b9abc3 | ||
|
|
0e5ddfd9f5 | ||
|
|
0a249c84ce | ||
|
|
fd70ae0b61 | ||
|
|
76aeae5db6 | ||
|
|
1facdd30fb | ||
|
|
4b7dc525b8 | ||
|
|
4acea72700 | ||
|
|
cf688f6ba2 | ||
|
|
5f3b0d9f1e | ||
|
|
05848038db | ||
|
|
664e2e5686 | ||
|
|
adbcecb456 | ||
|
|
3df9e20ca7 | ||
|
|
3f005c928a | ||
|
|
b3e28ac41a | ||
|
|
c39fe3433b | ||
|
|
668fa66d78 | ||
|
|
98ebb21489 | ||
|
|
137abd0cfa | ||
|
|
d7308fecbe | ||
|
|
73fb9915fd | ||
|
|
855a119654 | ||
|
|
cf7a6a6a65 | ||
|
|
509d152e54 | ||
|
|
35e6fb3788 | ||
|
|
9b79931265 | ||
|
|
14a7118499 | ||
|
|
afdabd97ff | ||
|
|
07f8fc7697 | ||
|
|
def7666609 | ||
|
|
c900f23662 | ||
|
|
7b093ee4b3 | ||
|
|
9f75cef5e5 | ||
|
|
a410c31bf8 | ||
|
|
1cd50ba572 | ||
|
|
1052eeee8c | ||
|
|
e22f0dda32 | ||
|
|
766a6b8309 | ||
|
|
d282bc4625 | ||
|
|
677cee44ad | ||
|
|
60e7726832 | ||
|
|
385b00a468 | ||
|
|
1c4223889b | ||
|
|
90a4fd34d2 | ||
|
|
2820c7a9cd | ||
|
|
edd4f3d5ad | ||
|
|
aa7fe3b132 | ||
|
|
1d9886d0f7 | ||
|
|
6068e85ef2 | ||
|
|
ced471d4ce | ||
|
|
2445ac4a53 | ||
|
|
1d0279eac5 | ||
|
|
f8b21fe199 | ||
|
|
0f330d7226 | ||
|
|
cb29350954 | ||
|
|
7fce9e2411 | ||
|
|
cc52a59e1a | ||
|
|
24ac7d2698 | ||
|
|
130619d6b0 | ||
|
|
71ab40e536 | ||
|
|
7638a7d531 | ||
|
|
b92a09d5e7 | ||
|
|
3d29cc8636 | ||
|
|
d6c5a1e0c4 | ||
|
|
9bcd4a6811 | ||
|
|
e90b1651e4 | ||
|
|
66ccae4bfe | ||
|
|
02a07164f3 | ||
|
|
9419191aa6 | ||
|
|
f71b10df8c | ||
|
|
0b7735d279 | ||
|
|
1f3a93a3af | ||
|
|
f9f773cc28 | ||
|
|
d9bf53c6e5 | ||
|
|
f549ada16c | ||
|
|
d8b955294a | ||
|
|
8aad53556d | ||
|
|
61ce9db4ba | ||
|
|
2da435712a | ||
|
|
9079ec459c | ||
|
|
aaddccfdb1 | ||
|
|
033373f078 | ||
|
|
d63db59ade | ||
|
|
20899f2df9 | ||
|
|
b9948ca297 | ||
|
|
f33e6a053e | ||
|
|
9f725bee1f | ||
|
|
3e2d68a059 | ||
|
|
2974025010 | ||
|
|
9a90e041f3 | ||
|
|
b0be15d4f7 | ||
|
|
a24998abac | ||
|
|
cc49042294 | ||
|
|
3981b644d6 | ||
|
|
4651919bd8 | ||
|
|
fed4bb5c07 | ||
|
|
ec903ce625 | ||
|
|
3ea956a0b4 | ||
|
|
d0c85471b4 | ||
|
|
3cc62c1fd2 | ||
|
|
079e369e91 | ||
|
|
06400b83b1 | ||
|
|
fe68d30be9 | ||
|
|
a3a11c2e0c | ||
|
|
3f526698ab | ||
|
|
78e2b7cc08 | ||
|
|
6ce74febc7 | ||
|
|
ede3d422a0 | ||
|
|
629a39b45b | ||
|
|
397249a8d5 | ||
|
|
b44b624ca5 | ||
|
|
6513c7eab8 | ||
|
|
276d90a45d | ||
|
|
c94b15a951 | ||
|
|
e4d6eaf17a | ||
|
|
60b9f8db18 | ||
|
|
cff928e2dc | ||
|
|
6aa701b3ee | ||
|
|
cb480dddf6 | ||
|
|
33c714ca03 | ||
|
|
bcda3f1baa | ||
|
|
4ae2753025 | ||
|
|
b5cd21c337 | ||
|
|
8844f0c142 | ||
|
|
4cb4fc3ef8 | ||
|
|
6cabd42ed2 | ||
|
|
0daee33ad6 | ||
|
|
b97a94ccc8 | ||
|
|
5cc3dcdbd8 | ||
|
|
7e3382340e | ||
|
|
87abcecca6 | ||
|
|
8ca88f14f7 | ||
|
|
b4a4a7c611 | ||
|
|
556680cf5e | ||
|
|
f4077bd41f | ||
|
|
cb5c560688 | ||
|
|
8ac0fdfea7 | ||
|
|
6dfd71670a | ||
|
|
4d4cc34aff | ||
|
|
c070a2aa3e | ||
|
|
af14cf8f8b | ||
|
|
35ba97cbdf | ||
|
|
9f59cf1468 | ||
|
|
6c80a3461c | ||
|
|
5591afff6e | ||
|
|
8144725739 | ||
|
|
52ae5f885e | ||
|
|
b6658c5497 | ||
|
|
aad5163b49 | ||
|
|
6d18bf5cd4 | ||
|
|
adabc2d7a0 | ||
|
|
d07ea3b66a | ||
|
|
2bb08a4ca0 | ||
|
|
30ae473d85 | ||
|
|
e9f870e25a | ||
|
|
317660c2fe | ||
|
|
5e60efefbf | ||
|
|
f6a89d13c2 | ||
|
|
3e01dd955f | ||
|
|
27fa0ea9d7 | ||
|
|
2de914d8c3 | ||
|
|
616fa85458 | ||
|
|
20ad496c00 | ||
|
|
fa88c42cf1 | ||
|
|
e84a762171 | ||
|
|
16e50c258a | ||
|
|
cce4265cef | ||
|
|
973dd6ffbd | ||
|
|
72e8489d50 | ||
|
|
cfa13ed84c | ||
|
|
29b3b6b31e | ||
|
|
533496e43a | ||
|
|
6f7a7459c1 | ||
|
|
6b062b07b4 | ||
|
|
bfd3a47380 | ||
|
|
0933e5cab4 | ||
|
|
cc565fc16c | ||
|
|
62d86b3d18 | ||
|
|
4bbbd2dde6 | ||
|
|
b884117a9e | ||
|
|
7def139020 | ||
|
|
b667eee351 | ||
|
|
891f55b2b3 | ||
|
|
7b12fd26f3 | ||
|
|
387ec5c06a | ||
|
|
dcc043df3b | ||
|
|
2457997cd9 | ||
|
|
d9bed68fe9 | ||
|
|
2eb65b3625 | ||
|
|
76fdfe6890 | ||
|
|
495adee269 | ||
|
|
383aaa236e | ||
|
|
8c89e6bce5 | ||
|
|
98297e5234 | ||
|
|
3915faf382 | ||
|
|
d5fa4b2ccb | ||
|
|
3ff104ba30 | ||
|
|
706286c289 | ||
|
|
18c1b12741 | ||
|
|
5cda1e55e0 | ||
|
|
195cd130f8 | ||
|
|
b19f45e15d | ||
|
|
3acd0dfe48 | ||
|
|
74cedbf1c5 | ||
|
|
7d47ec4c46 | ||
|
|
14cdd24f78 | ||
|
|
1cfd055f82 | ||
|
|
ed5e585684 | ||
|
|
32948b8dc6 | ||
|
|
ad5ad3d1ad | ||
|
|
3bc2dda00d | ||
|
|
ee8e9c0291 | ||
|
|
f4bc1ef4a2 | ||
|
|
3513ce3ac0 | ||
|
|
6277a2e4a4 | ||
|
|
84faa60c4e | ||
|
|
735195e8ea | ||
|
|
0f15ab8d05 | ||
|
|
17c2d76c5e | ||
|
|
11c1562512 | ||
|
|
ef646f0f78 | ||
|
|
7b3132d39d | ||
|
|
8345fc2b9e | ||
|
|
58f4182880 | ||
|
|
ecf56606dc | ||
|
|
be3e64e5ea | ||
|
|
741342ba1d | ||
|
|
d97e31b4ab | ||
|
|
ce4081af93 | ||
|
|
32f5edc9c5 | ||
|
|
b481128a93 | ||
|
|
ab62001b74 | ||
|
|
2dfd57bb8c | ||
|
|
20d7a142c5 | ||
|
|
9ae06c541f | ||
|
|
655293ece9 | ||
|
|
a983318501 | ||
|
|
8769c06350 | ||
|
|
5066710e60 | ||
|
|
451c97f35a | ||
|
|
8a577a9d4d | ||
|
|
950150469a | ||
|
|
3cbace98a7 | ||
|
|
e214df8980 | ||
|
|
e3cccdf571 | ||
|
|
a0bf841be2 | ||
|
|
73cbb0c65f | ||
|
|
2f89ddbead | ||
|
|
a526693915 | ||
|
|
31f2a3a7d7 | ||
|
|
147403f958 | ||
|
|
38c52cf9b5 | ||
|
|
64c1c75c42 | ||
|
|
2b11d1060c | ||
|
|
a73b903df9 | ||
|
|
30cfb3e795 | ||
|
|
a0e6d4375a | ||
|
|
c7aca5cc35 | ||
|
|
3225d7e169 | ||
|
|
6596d91c82 | ||
|
|
d554b7da08 | ||
|
|
cd7f1a15f8 | ||
|
|
fa68c2619f | ||
|
|
e97bec10ea | ||
|
|
7763718b60 | ||
|
|
7f2c4cbf8a | ||
|
|
91ebe12fc2 | ||
|
|
13e1e7e1e9 | ||
|
|
8a263952ad | ||
|
|
f27232bd0a | ||
|
|
16534ec644 | ||
|
|
7e44bcfd8a | ||
|
|
8cbd66b0f9 | ||
|
|
47a81c2b39 | ||
|
|
56bf209f84 | ||
|
|
333fb1bf97 | ||
|
|
cbef88a593 | ||
|
|
b13179d4f4 | ||
|
|
cf89d9bfb0 | ||
|
|
f49848c8a4 | ||
|
|
0101b39f6c | ||
|
|
4285baa6e1 | ||
|
|
e530af1ff7 | ||
|
|
60e94a4ec8 | ||
|
|
c66a574fa0 | ||
|
|
ef3259035d | ||
|
|
4226f4412b | ||
|
|
368983d8da | ||
|
|
16b982958b | ||
|
|
0c4819131c | ||
|
|
186b0f62eb | ||
|
|
77bc4c5725 | ||
|
|
dd47da92f5 | ||
|
|
f8e35de18d | ||
|
|
a7facfb760 | ||
|
|
f5e62f28bc | ||
|
|
60c8012e9e | ||
|
|
08d6e515c7 | ||
|
|
fac2f27dd3 | ||
|
|
ed37427f9e | ||
|
|
7a5a277c29 | ||
|
|
38da76804e | ||
|
|
a949f0b0c3 | ||
|
|
ffc23046a2 | ||
|
|
07944cfd20 | ||
|
|
91aadab3dd | ||
|
|
c3425bc55f | ||
|
|
55bc4168bf | ||
|
|
ba1b5e34a7 | ||
|
|
753c42a3d5 | ||
|
|
97c2ec8dcf | ||
|
|
4948508277 | ||
|
|
fb89c762fc | ||
|
|
58ebdd4a7e | ||
|
|
d7f22a0c27 | ||
|
|
3b4794ae94 | ||
|
|
c0989dce2d | ||
|
|
8412c867a5 | ||
|
|
10642a34f1 | ||
|
|
6a94b51cba | ||
|
|
36ef521c0e | ||
|
|
bf14668b2a | ||
|
|
a475dd15e6 | ||
|
|
bb0b82a110 | ||
|
|
2bbb59964f | ||
|
|
4fd32eb48e | ||
|
|
2872a98b2b | ||
|
|
023af5585f | ||
|
|
3d85000f13 | ||
|
|
3d1a204c83 | ||
|
|
1ce30deec3 | ||
|
|
8ed08872b9 | ||
|
|
7a75e7341b | ||
|
|
ec6dee8bd1 | ||
|
|
f2a507c4a7 | ||
|
|
17ab7bde44 | ||
|
|
fcc363333c | ||
|
|
7ef9e4d8e7 | ||
|
|
3180910fd1 | ||
|
|
b01d09d704 | ||
|
|
2f6551b3b1 | ||
|
|
50ae14cf7b | ||
|
|
79b7cd69bb | ||
|
|
cf237a0e4f | ||
|
|
c0d147c5c4 | ||
|
|
bd707b4a96 | ||
|
|
daaed863da | ||
|
|
2bdfac2036 | ||
|
|
d74a23e583 | ||
|
|
44b35f7735 | ||
|
|
0d3169ef70 | ||
|
|
fe3b439e31 | ||
|
|
6c987d6708 | ||
|
|
28fd1a4c5d | ||
|
|
bd895aa76c | ||
|
|
1177daecde | ||
|
|
42813eeb84 | ||
|
|
d4fafeb6d6 | ||
|
|
1270384ede | ||
|
|
aa1b065dd1 | ||
|
|
7248b2213d | ||
|
|
74b28f0a86 | ||
|
|
005edf71a8 | ||
|
|
c1f64ba017 | ||
|
|
42166be22e | ||
|
|
62b3ed17ba | ||
|
|
31bf50b2d4 | ||
|
|
0325c1ba65 | ||
|
|
f2a437bd3b | ||
|
|
7a7fb423b3 | ||
|
|
d533c1b1c8 | ||
|
|
2db013a5fa | ||
|
|
9fece3fdf1 | ||
|
|
b520a03c57 | ||
|
|
a4cafaad2e | ||
|
|
0d64bbed46 | ||
|
|
9718e70260 | ||
|
|
a67dd9fbdd | ||
|
|
aabed8279e | ||
|
|
06eb271bda | ||
|
|
12025e3050 | ||
|
|
ad6367018b | ||
|
|
c71b168402 | ||
|
|
4deb46290d | ||
|
|
e5ef45e4c0 | ||
|
|
e780637cf4 | ||
|
|
d659e55646 | ||
|
|
1c58b6d83e | ||
|
|
1305c02579 | ||
|
|
2c19ca0dbf | ||
|
|
3cfdc6d126 | ||
|
|
8ec73b2dd4 | ||
|
|
5f11854286 | ||
|
|
14f4e0e271 | ||
|
|
5c54ef7b0d | ||
|
|
73c2846d64 | ||
|
|
acd2038407 | ||
|
|
2442ae60db | ||
|
|
6c096191ba | ||
|
|
20f9dd9a6b | ||
|
|
44e94b8cfa | ||
|
|
8c21cf7761 | ||
|
|
d2851cf5c5 | ||
|
|
b0716253a2 | ||
|
|
eaf023b4d8 | ||
|
|
e47ad09130 | ||
|
|
689d0082d8 | ||
|
|
390a49072d | ||
|
|
7dc0b6f40b | ||
|
|
79d14521db | ||
|
|
8d6b0c8d76 | ||
|
|
1486774249 | ||
|
|
1fa9167f25 | ||
|
|
cc12225142 | ||
|
|
6b3a37c597 | ||
|
|
b187125b63 | ||
|
|
d232a0f951 | ||
|
|
84ea96f383 | ||
|
|
be33d3f2a4 | ||
|
|
0e991c596f | ||
|
|
858b6aa257 | ||
|
|
74135c0600 | ||
|
|
18dd6f58e3 | ||
|
|
ddcd2b0810 | ||
|
|
6d749789ce | ||
|
|
3224062b32 | ||
|
|
688ea28bed | ||
|
|
5e7c01c251 | ||
|
|
de2eea05b4 | ||
|
|
1de819e3de | ||
|
|
bc43409624 | ||
|
|
a57077aba3 | ||
|
|
8eaabacf44 | ||
|
|
adf5b036d6 | ||
|
|
3ab954644f | ||
|
|
64953e26fc | ||
|
|
2e1024d275 | ||
|
|
2253c57628 | ||
|
|
9c7d1dbb6f | ||
|
|
ef9f2ab31f | ||
|
|
64ca6c066c | ||
|
|
d1cf5ab286 | ||
|
|
b1545c5ce2 | ||
|
|
de8bae3f0f | ||
|
|
1fbf633817 | ||
|
|
f733dc5eae | ||
|
|
503bbd85b5 | ||
|
|
29ddb68da4 | ||
|
|
dd49399e45 | ||
|
|
3678f134d9 | ||
|
|
bbd784a2e8 | ||
|
|
77dbaf3aef | ||
|
|
9b9ee338c1 | ||
|
|
5ea7f52df2 | ||
|
|
414530c9c2 | ||
|
|
e632d39b1f | ||
|
|
09054a09fa | ||
|
|
01ec55366d | ||
|
|
e2388344b2 | ||
|
|
fd10844c2b | ||
|
|
35f2302352 | ||
|
|
e908b731ab | ||
|
|
b475325b5e | ||
|
|
7e769252e7 | ||
|
|
699d78bcfe | ||
|
|
7d345018af | ||
|
|
bac3b39227 | ||
|
|
c168e6f870 | ||
|
|
27b6fe682d | ||
|
|
a1b43b7a09 | ||
|
|
bfc78186f5 | ||
|
|
20130d89dc | ||
|
|
8490aac025 | ||
|
|
8fbffe250a | ||
|
|
60808a4820 | ||
|
|
d5cb16aa1f | ||
|
|
afd6ca314c | ||
|
|
441522f97b | ||
|
|
369229ea71 | ||
|
|
15a63805d9 | ||
|
|
7d8766980b | ||
|
|
5be3606236 | ||
|
|
ce4c145f1c | ||
|
|
b9372944f5 | ||
|
|
f58dff62c7 | ||
|
|
6d13b8bbc0 | ||
|
|
2139334c36 | ||
|
|
67bb12e569 | ||
|
|
2d43517914 | ||
|
|
df60c00d16 | ||
|
|
0fbddb0df1 | ||
|
|
4c5c1fc9ef | ||
|
|
4ffd2380c3 | ||
|
|
5849cd3a2e | ||
|
|
0a1960865e | ||
|
|
830ab99e6e | ||
|
|
2e4b7b3d19 | ||
|
|
8cb051d44d | ||
|
|
535445a555 | ||
|
|
f6afddd94b | ||
|
|
844b01cb6b | ||
|
|
0f2ee308de | ||
|
|
7d3f808e4c | ||
|
|
45465e0c45 | ||
|
|
4a9be7bf11 | ||
|
|
c8e0d18d18 | ||
|
|
ee9a4082b6 | ||
|
|
e6c70bf392 | ||
|
|
9edf9ad2ac | ||
|
|
f714d80c93 | ||
|
|
605c306bef | ||
|
|
5e2cda183a | ||
|
|
f284f00935 | ||
|
|
777e4fe49e | ||
|
|
8daf0223dc | ||
|
|
f77fb0b948 | ||
|
|
71992158bf | ||
|
|
fd8ab78372 | ||
|
|
1514ab8ec5 | ||
|
|
3591900070 | ||
|
|
44c6fa68cf | ||
|
|
7df4a966ea | ||
|
|
998ce1fe89 | ||
|
|
1279888567 | ||
|
|
d9d65577f4 | ||
|
|
f2f6055109 | ||
|
|
db0506c1df | ||
|
|
114f803a88 | ||
|
|
69778efb6b | ||
|
|
e7df20f69b | ||
|
|
1157d330a6 | ||
|
|
cd64a777c3 | ||
|
|
808bc42f2a | ||
|
|
3728fc7dba | ||
|
|
9920047b34 | ||
|
|
b758c0c335 | ||
|
|
32054b6f32 | ||
|
|
c6e5201e15 | ||
|
|
88eae68987 | ||
|
|
8b89bd7a1f | ||
|
|
fc68b9d7cd | ||
|
|
64b1b5ca38 | ||
|
|
8e77aca854 | ||
|
|
0627ae82fb | ||
|
|
0cd125b55c | ||
|
|
444cb894be | ||
|
|
8138b2080b | ||
|
|
d0c3cc6016 | ||
|
|
737b204b2c | ||
|
|
bd313b0b3d | ||
|
|
568de7e818 | ||
|
|
3106cffb65 | ||
|
|
21e9615243 | ||
|
|
9e27ba5109 | ||
|
|
7874cdf52a | ||
|
|
213e907044 | ||
|
|
c8d5131a42 | ||
|
|
fc21bb6eda | ||
|
|
3a9173858b | ||
|
|
dede320630 | ||
|
|
c25e2e611d | ||
|
|
54689f6087 | ||
|
|
370b47d23f | ||
|
|
53814983ff | ||
|
|
5953170f14 | ||
|
|
40897cd7da | ||
|
|
e2fe873049 | ||
|
|
9f3a16a4ae | ||
|
|
9da3d890e4 | ||
|
|
9684cbf850 | ||
|
|
295c8f48a6 | ||
|
|
7be8147b80 | ||
|
|
c22d94bba6 | ||
|
|
b0e94c15e6 | ||
|
|
874d3aca45 | ||
|
|
4a20febe96 | ||
|
|
28c7094f5b | ||
|
|
ff5e2746da | ||
|
|
dc8014562b | ||
|
|
b9394b9599 | ||
|
|
899dafb33f | ||
|
|
104cf87b89 | ||
|
|
290aae80e1 | ||
|
|
212eeaa77c | ||
|
|
eb28c710ba | ||
|
|
129d2f803a | ||
|
|
71f6986dd6 | ||
|
|
6fc1d7dc77 | ||
|
|
d9056081e7 | ||
|
|
95f87cdd56 | ||
|
|
746cc4c10b | ||
|
|
51c18e3f9a | ||
|
|
25b25e3e49 | ||
|
|
096f850433 | ||
|
|
ec469782c8 | ||
|
|
40e223c12d | ||
|
|
b2c78dbd57 | ||
|
|
89069fdaa4 | ||
|
|
75b02e1d27 | ||
|
|
1130e4782d | ||
|
|
2927514e68 | ||
|
|
0e9d159bc2 | ||
|
|
d69f408b14 | ||
|
|
e8d6c96c1e | ||
|
|
041120aab4 | ||
|
|
d20f45b949 | ||
|
|
02bd933c58 | ||
|
|
b34721b3f4 | ||
|
|
cb6be2a50d | ||
|
|
45852f0497 | ||
|
|
8160c85e44 | ||
|
|
426f58aa61 | ||
|
|
e0bfa1e422 | ||
|
|
bf75731bbe | ||
|
|
c8eec109b2 | ||
|
|
b8079953d8 | ||
|
|
993148552e | ||
|
|
1863be7be4 | ||
|
|
358145c4bd | ||
|
|
fb882f0b69 | ||
|
|
27cba56761 | ||
|
|
e2da73bf4f | ||
|
|
4402f73bf7 | ||
|
|
dc90cd6bc4 | ||
|
|
7356a0f6c8 | ||
|
|
f408bc4808 | ||
|
|
a302f37447 | ||
|
|
f501e30353 | ||
|
|
2587649ca2 | ||
|
|
d1faac58dd | ||
|
|
1efb120248 | ||
|
|
8078d29fda | ||
|
|
a9787b769f | ||
|
|
a42711e31c | ||
|
|
c632307eaa | ||
|
|
0f9de11a67 | ||
|
|
541db5fbbe | ||
|
|
715823a666 | ||
|
|
6ce4b344e4 | ||
|
|
a6ca809a4e | ||
|
|
c1a13ae8bc | ||
|
|
6536ffe178 | ||
|
|
562946d055 | ||
|
|
924b8cbe24 | ||
|
|
93f7c14ea6 | ||
|
|
5b1a532652 | ||
|
|
a3a918e900 | ||
|
|
b6af3e51ab | ||
|
|
3707dcbf33 | ||
|
|
ebc8bd6ff5 | ||
|
|
ed70195c7e | ||
|
|
e38217683c | ||
|
|
739e529416 | ||
|
|
12be83562d | ||
|
|
8bcb5e4ed7 | ||
|
|
5c96bca1ca | ||
|
|
384987cd5b | ||
|
|
af21dfd294 | ||
|
|
3e9153d955 | ||
|
|
0e421ea31d | ||
|
|
471f7f06f7 | ||
|
|
ddb37a47da | ||
|
|
5b24aac266 | ||
|
|
d61adfbc53 | ||
|
|
602f040940 | ||
|
|
5cf59de676 | ||
|
|
e25d49b80b | ||
|
|
d5d9b9284a | ||
|
|
0ec97c5d1e | ||
|
|
9bbda857c3 | ||
|
|
383b6aabf5 | ||
|
|
7a3f5afee7 | ||
|
|
5769fa6aed | ||
|
|
925fe65dd8 | ||
|
|
67b1f14a6f | ||
|
|
dd0cc5ed9f | ||
|
|
a23441109d | ||
|
|
ef4465efdb | ||
|
|
646180518a | ||
|
|
659541f4a5 | ||
|
|
0e7acaa3c4 | ||
|
|
f0946baeaa | ||
|
|
76ecf897ce | ||
|
|
7db755dd68 | ||
|
|
2efc0bad1c | ||
|
|
3978de2cde | ||
|
|
263f919beb | ||
|
|
4aaa9e7d9f | ||
|
|
e1608362d0 | ||
|
|
9f986d8a86 | ||
|
|
e0b78f7f2a | ||
|
|
1eb09f3eb2 | ||
|
|
0e7790df8c | ||
|
|
591abd340b | ||
|
|
44d13869ad | ||
|
|
9862eb930d | ||
|
|
0c4dab54f1 | ||
|
|
84483b4aac | ||
|
|
9f5547327e | ||
|
|
b04fc5a39e | ||
|
|
5121417725 | ||
|
|
2c39d5b6c0 | ||
|
|
8d1667e9e8 | ||
|
|
5b3397359f | ||
|
|
ded64758d5 | ||
|
|
2813dcc6cc | ||
|
|
0a54558ee2 | ||
|
|
168d25e780 | ||
|
|
63a15e232b | ||
|
|
cb86b8f8fc | ||
|
|
f2211ff3ad | ||
|
|
312977d5a6 | ||
|
|
3eac5f9ab7 | ||
|
|
fcb3f36065 | ||
|
|
ac7a461070 | ||
|
|
2a1fd421bd | ||
|
|
920adb8296 | ||
|
|
8ceb4b83a4 | ||
|
|
34540babdb | ||
|
|
9f6223311e | ||
|
|
90b78326d3 | ||
|
|
8fc26c1e58 | ||
|
|
6eb7530f75 | ||
|
|
76ab22f74c | ||
|
|
cfbb511d26 | ||
|
|
14b6d32fe6 | ||
|
|
0de26732bf | ||
|
|
0f02997bcc | ||
|
|
2271526d2f | ||
|
|
ea2e1f016f | ||
|
|
c4aa223698 | ||
|
|
63233655f4 | ||
|
|
63d93a2f9a | ||
|
|
ba2fcd9dae | ||
|
|
c0ad54fe02 | ||
|
|
fe3bca3a88 | ||
|
|
8621399d78 | ||
|
|
5d84e86d89 | ||
|
|
6640167410 | ||
|
|
6d542b8bb0 | ||
|
|
e86d31e7a5 | ||
|
|
c5c59d4acb | ||
|
|
4dc40b83e4 | ||
|
|
f186812f18 | ||
|
|
4a6592597a | ||
|
|
afb9401fc7 | ||
|
|
3c65cd41a5 | ||
|
|
8376a44f65 | ||
|
|
9a36435016 | ||
|
|
edc4614e63 | ||
|
|
964c7e6f3b | ||
|
|
9e424ed921 | ||
|
|
cf766b55cc | ||
|
|
03c65d7a96 | ||
|
|
e05743d0ba | ||
|
|
e204ced1ae | ||
|
|
be55d2c57f | ||
|
|
119dd06ea8 | ||
|
|
aed26f8c1e | ||
|
|
6482fd52fb | ||
|
|
44b091a7c6 | ||
|
|
8279a0d477 | ||
|
|
7709af7a62 | ||
|
|
59dd6678c3 | ||
|
|
137463dc6d | ||
|
|
b652920500 | ||
|
|
80a48be324 | ||
|
|
bc9e2266be | ||
|
|
fd25a6425c | ||
|
|
ff4d0ce1e1 | ||
|
|
5d8c776250 | ||
|
|
3d2315d596 | ||
|
|
892cc7da31 | ||
|
|
eb9e712f91 | ||
|
|
2a6eb83fb4 | ||
|
|
ef99a11001 | ||
|
|
2520019fb8 | ||
|
|
877a14c0b8 | ||
|
|
0ad6e6f459 | ||
|
|
885c23b453 | ||
|
|
7cb8f6e9fc | ||
|
|
04f518082c | ||
|
|
26926551cf | ||
|
|
2069094f55 | ||
|
|
976a0a6264 | ||
|
|
8edcf25ba3 | ||
|
|
e4029d00b6 | ||
|
|
044ff5e055 | ||
|
|
0de8c28cf4 | ||
|
|
a1bca962a7 | ||
|
|
f1a13c4ee5 | ||
|
|
5f6ec391e3 | ||
|
|
bf656577d9 | ||
|
|
171bcb1ccf | ||
|
|
5e53c1cde8 | ||
|
|
72431456ff | ||
|
|
b8deb49007 | ||
|
|
6b34f19396 | ||
|
|
c018bfdb4d | ||
|
|
f4f36e356f | ||
|
|
6de9a92582 | ||
|
|
630b0515ad | ||
|
|
b06e798373 | ||
|
|
3b25795ee5 | ||
|
|
ef18d6f70c | ||
|
|
838e784c5f | ||
|
|
1feec5a96c | ||
|
|
7d95768a92 | ||
|
|
9cb95274a6 | ||
|
|
3c5d5b344e | ||
|
|
4980959fce | ||
|
|
22d22f6aa8 | ||
|
|
e8ba3c2f4d | ||
|
|
ce857b0770 | ||
|
|
ce7c681462 | ||
|
|
41e562ebc2 | ||
|
|
ddf98661e4 | ||
|
|
1349d129c5 | ||
|
|
cbd8a27a6d | ||
|
|
b60db79866 | ||
|
|
ddec870d25 | ||
|
|
77e358a001 | ||
|
|
5490f54d00 | ||
|
|
58447c147f | ||
|
|
97e731e05c | ||
|
|
e763345f25 | ||
|
|
7b86b2e05a | ||
|
|
a51bd03a5c | ||
|
|
54d7c29221 | ||
|
|
997e3e16dd | ||
|
|
c6eef16664 | ||
|
|
4f718e83b3 | ||
|
|
20ccda69f4 | ||
|
|
14741518a7 | ||
|
|
dd91779442 | ||
|
|
553eb6ed40 | ||
|
|
8edb53e902 | ||
|
|
460bfc6853 | ||
|
|
3e5b8f1e97 | ||
|
|
fab7299d49 | ||
|
|
09ff1e7af0 | ||
|
|
ad5ae9ba3b | ||
|
|
3788f462b4 | ||
|
|
238bbfcbbb | ||
|
|
0efa211a05 | ||
|
|
00a890c8c7 | ||
|
|
6990871efd | ||
|
|
a62ebc9a69 | ||
|
|
6c82e7acda | ||
|
|
084e435883 | ||
|
|
2f33e5919d | ||
|
|
cbe615224d | ||
|
|
6c70ed79ae | ||
|
|
488652c23a | ||
|
|
bb3a00d1eb | ||
|
|
bf3cf2580f | ||
|
|
843944f558 | ||
|
|
991c900fc6 | ||
|
|
0d2af9e742 | ||
|
|
1c8c9a10b5 | ||
|
|
4aa9f76d06 | ||
|
|
fc7c489ab6 | ||
|
|
4856567a2a | ||
|
|
7d0722bc18 | ||
|
|
1235e60a29 | ||
|
|
4340368277 | ||
|
|
735af50ce9 | ||
|
|
7ce5f34d6f | ||
|
|
f76a16a727 | ||
|
|
f2a5237802 | ||
|
|
4ea92a97ea | ||
|
|
a7ed3658e3 | ||
|
|
061b872498 | ||
|
|
97ea61a407 | ||
|
|
44bd405ed3 | ||
|
|
73f1030bde | ||
|
|
fdef82f89c | ||
|
|
3d68d1bbe2 | ||
|
|
c2dcfc9176 | ||
|
|
df300e042b | ||
|
|
3996f178e5 | ||
|
|
7935b1613a | ||
|
|
8df81f93c8 | ||
|
|
95d5e55df2 | ||
|
|
daf3469ce4 | ||
|
|
1565f9d9c3 | ||
|
|
b56542a9f1 | ||
|
|
5b5b53872c | ||
|
|
1442a2abe8 | ||
|
|
e031fa7207 | ||
|
|
1b521d0822 | ||
|
|
e529f4d75f | ||
|
|
307a4ae9e8 | ||
|
|
46452e7634 | ||
|
|
ee3b355c34 | ||
|
|
61c5b631f3 | ||
|
|
b993dce12f | ||
|
|
cd1c2f74d3 | ||
|
|
a1020b3e61 | ||
|
|
1b1aa07414 | ||
|
|
5023ade7ac | ||
|
|
9921e9e79f | ||
|
|
5ef13d9011 | ||
|
|
3816abb9de | ||
|
|
7561075af8 | ||
|
|
fe10f98038 | ||
|
|
6709d1067d | ||
|
|
74e27a0a82 | ||
|
|
04c0ac9ee8 | ||
|
|
8159f55243 | ||
|
|
cca60adc35 | ||
|
|
16ba544edd | ||
|
|
f230da12c5 | ||
|
|
03aae47424 | ||
|
|
df0aaa1ebe | ||
|
|
68f9342060 | ||
|
|
c38a40d193 | ||
|
|
23ba7b5bff | ||
|
|
173fd4fd23 | ||
|
|
3a893ff17f | ||
|
|
da89591a53 | ||
|
|
097e2030b4 | ||
|
|
24f1da7f30 | ||
|
|
85ce80d72e | ||
|
|
ec1037fcbc | ||
|
|
7a1bedcab6 | ||
|
|
06b4964dd8 | ||
|
|
d2ffdc8986 | ||
|
|
7e1a3148fb | ||
|
|
5559962f6f | ||
|
|
1d67d8ff23 | ||
|
|
9f46881c16 | ||
|
|
dead45fa67 | ||
|
|
a8af974895 | ||
|
|
8605cc685d | ||
|
|
9a49b2c9fb | ||
|
|
b6f495d107 | ||
|
|
05233aa6f4 | ||
|
|
7541fac245 | ||
|
|
7b6780f712 | ||
|
|
d6791a836b | ||
|
|
69c6b007aa | ||
|
|
ee113a5632 | ||
|
|
4899086b3c | ||
|
|
f4f2847662 | ||
|
|
fb89e1a26f | ||
|
|
e849beabba | ||
|
|
2979d3bf16 | ||
|
|
88efc73797 | ||
|
|
77b13d02f0 | ||
|
|
588c520c4a | ||
|
|
d371af0504 | ||
|
|
3e115b7a85 | ||
|
|
ca8e4c08a7 | ||
|
|
6ec4591f02 | ||
|
|
679ef95257 | ||
|
|
5818289c2d | ||
|
|
d407d680ea | ||
|
|
feb36e7342 | ||
|
|
8ab81e6d4b | ||
|
|
4fc2ee1bd4 | ||
|
|
07c48590c0 | ||
|
|
4388b73077 | ||
|
|
d7c6855918 | ||
|
|
e5e7da1482 | ||
|
|
64921fe08a | ||
|
|
79d5ff0350 | ||
|
|
ada3ab4213 | ||
|
|
a00b979bb6 | ||
|
|
b1d8492c3f | ||
|
|
75fe438f21 | ||
|
|
8cdcfc2a91 | ||
|
|
2a06c72113 | ||
|
|
05563ab11e | ||
|
|
625a1cb0b5 | ||
|
|
e58b73179f | ||
|
|
8e07e55c1f | ||
|
|
6a6593335d | ||
|
|
876b9d49b4 | ||
|
|
ed8ff85d2a | ||
|
|
b482cab7be | ||
|
|
0bf5316249 | ||
|
|
969928e500 | ||
|
|
f30a5fe288 | ||
|
|
6f3d7209c2 | ||
|
|
82b589e390 | ||
|
|
b280cc5e75 | ||
|
|
1964b04ea9 | ||
|
|
c4bc216815 | ||
|
|
3af40efdb1 | ||
|
|
27d84ef8be | ||
|
|
680ac41bb1 | ||
|
|
b133137a1f | ||
|
|
be77b9201e | ||
|
|
0479f0ad63 | ||
|
|
aa8b3cb6d6 | ||
|
|
c62d9c37d2 | ||
|
|
70fbb4623f | ||
|
|
6aebeca1d0 | ||
|
|
e3ea953ff4 | ||
|
|
9dc91925e7 | ||
|
|
8dd9602f06 | ||
|
|
92d2e681d6 | ||
|
|
c82dbaca8b | ||
|
|
6faeb71770 | ||
|
|
d534b0ba81 | ||
|
|
87a0363ba7 | ||
|
|
0005702399 | ||
|
|
8642a1e68e | ||
|
|
ec1d2e86c8 | ||
|
|
2a46b984cd | ||
|
|
5a7b85adc7 | ||
|
|
914f83cb10 | ||
|
|
db969dc85a | ||
|
|
5b39d1819f | ||
|
|
3fe1adfc6d | ||
|
|
0af49d0533 | ||
|
|
d5c1bf98d7 | ||
|
|
5753fa2106 | ||
|
|
31b01f8de3 | ||
|
|
4f8d4f378c | ||
|
|
222e36ee3e | ||
|
|
3e3eefc2dc | ||
|
|
77b6b0a9b2 | ||
|
|
551d2dfebd | ||
|
|
f9c2a77c67 | ||
|
|
92099c7af2 | ||
|
|
58ad04b61c | ||
|
|
97bea94550 | ||
|
|
51ae9b3ed4 | ||
|
|
4726221d18 | ||
|
|
7353c6f94d | ||
|
|
91a04c7638 | ||
|
|
1511de68ed | ||
|
|
d6c9d3ce94 | ||
|
|
c64a86efae | ||
|
|
c522c0833a | ||
|
|
28fdfec7cb | ||
|
|
d3bb2a718a | ||
|
|
cabebd9f51 | ||
|
|
886c4320d6 | ||
|
|
93f27666db | ||
|
|
379cf3d249 | ||
|
|
0fe44f0e2a | ||
|
|
66d5436789 | ||
|
|
70b83a3bbb | ||
|
|
eba5b0e4c5 | ||
|
|
66af0c1a53 | ||
|
|
70c6ca76cb | ||
|
|
d840643cb3 | ||
|
|
07b7a65b86 | ||
|
|
7e7b50cd74 | ||
|
|
0b8f7d4fe7 | ||
|
|
93278dc7e3 | ||
|
|
b771e97ac6 | ||
|
|
a3c87fb30b | ||
|
|
228fa38240 | ||
|
|
a142c5e1ec | ||
|
|
4702283280 | ||
|
|
918df393e6 | ||
|
|
1e415a9943 | ||
|
|
c955379971 | ||
|
|
1debe4f055 | ||
|
|
9b9ce31550 | ||
|
|
bdd8ef5a52 | ||
|
|
292908c00a | ||
|
|
e027492e11 | ||
|
|
640118e781 | ||
|
|
c6ec2645dc | ||
|
|
2ffc2a288c | ||
|
|
5d75ee7721 | ||
|
|
4ca46b7883 | ||
|
|
827a9d640c | ||
|
|
70208eb33a | ||
|
|
e2a506e54a | ||
|
|
048f08080d | ||
|
|
0a02e0db4b | ||
|
|
825a7311ea | ||
|
|
09b0213738 | ||
|
|
f3e5262dc0 | ||
|
|
99494afd08 | ||
|
|
8214ae9b15 | ||
|
|
e63ef84ac1 | ||
|
|
697c44a293 | ||
|
|
18e34902a5 | ||
|
|
4b0c3ffc2f | ||
|
|
b4d33a58b1 | ||
|
|
c177965da5 | ||
|
|
220e1e8fb5 | ||
|
|
464187491f | ||
|
|
fd15d30987 | ||
|
|
03e36bda72 | ||
|
|
a259c37415 | ||
|
|
54c21f5974 | ||
|
|
08f378c359 | ||
|
|
58818e9738 | ||
|
|
599556d7d1 | ||
|
|
9e4d7b41e0 | ||
|
|
b35a2d568a | ||
|
|
9ca12e9f9d | ||
|
|
d54346b205 | ||
|
|
54f683fc6b | ||
|
|
908b07527e | ||
|
|
ee7339b661 | ||
|
|
35610da204 | ||
|
|
c06b1694a2 | ||
|
|
c238bdd861 | ||
|
|
d378904b98 | ||
|
|
3a4a2a6dac | ||
|
|
cfe815135e | ||
|
|
2eb97edf02 | ||
|
|
cdfb5c2bd8 | ||
|
|
8f9ba2cd09 | ||
|
|
ee95a7309a | ||
|
|
f32dfe2da6 | ||
|
|
9f0775c873 | ||
|
|
9169a673d5 | ||
|
|
37123ee053 | ||
|
|
c2616e385c | ||
|
|
5297d46017 | ||
|
|
2ef9126744 | ||
|
|
1d2cd99e96 | ||
|
|
994e9fe9de | ||
|
|
e63a2a2152 | ||
|
|
2997ce2e3c | ||
|
|
b8028c1b1d | ||
|
|
568de8157a | ||
|
|
924b646b79 | ||
|
|
f8786c25be | ||
|
|
92b2c28532 | ||
|
|
cc0c44f36b | ||
|
|
ce279e9c2d | ||
|
|
84978b7132 | ||
|
|
e4e9f6f221 | ||
|
|
77ec902ca7 | ||
|
|
7d9b0a00e4 | ||
|
|
f3c1ca3564 | ||
|
|
f109fa227d | ||
|
|
8befc474c1 | ||
|
|
622efba247 | ||
|
|
ce0c52d353 | ||
|
|
b03515276e | ||
|
|
30af350be0 | ||
|
|
1287b9d823 | ||
|
|
91aab03b90 | ||
|
|
e921dc50e0 | ||
|
|
dd6bb04ba7 | ||
|
|
c80bd104d2 | ||
|
|
22d1aaa27d | ||
|
|
2f5016262a | ||
|
|
47583877f1 | ||
|
|
1dbff80691 | ||
|
|
7abf6c71ad | ||
|
|
2da81b0ae7 | ||
|
|
d4c881791f | ||
|
|
516be01366 | ||
|
|
2b99190a1b | ||
|
|
3087f57453 | ||
|
|
4a4f8ec523 | ||
|
|
0c004147c0 | ||
|
|
451eb13e0e | ||
|
|
4e84cf1d38 | ||
|
|
72b7e64ad8 | ||
|
|
c3690b0878 | ||
|
|
b3f248fd19 | ||
|
|
d4686e6a59 | ||
|
|
14af6ba2af | ||
|
|
c3ee3af201 | ||
|
|
6496adf101 | ||
|
|
79f8d5c51e | ||
|
|
74ef1bc8ff | ||
|
|
26eeb9f37a | ||
|
|
ab385cd609 | ||
|
|
0f12f2b6b1 | ||
|
|
32c1d50887 | ||
|
|
956c94f30a | ||
|
|
3e69e5b082 | ||
|
|
330faab6cd | ||
|
|
fe6699f0bf | ||
|
|
807c5f2ef2 | ||
|
|
f7708955b6 | ||
|
|
be9024767e | ||
|
|
a1a83f8880 | ||
|
|
eb3a1f6739 | ||
|
|
03c1f2ef5b | ||
|
|
d215e86662 | ||
|
|
10962d7175 | ||
|
|
6889232b41 | ||
|
|
c54097af20 | ||
|
|
7c6695354e | ||
|
|
2d7fbf2476 | ||
|
|
1ef8206db1 | ||
|
|
b65f8d81fc | ||
|
|
e285d2939b | ||
|
|
6b602a4589 | ||
|
|
084542b943 | ||
|
|
ef8ea97044 | ||
|
|
dd6d0e774c | ||
|
|
f934310337 | ||
|
|
afe293c20a | ||
|
|
7f0a68f8d6 | ||
|
|
2517832718 | ||
|
|
bcf3accb74 | ||
|
|
1c5556334d | ||
|
|
299d803396 | ||
|
|
d513ace39d | ||
|
|
d5a9a4463c | ||
|
|
cf0baada2c | ||
|
|
49589e2da0 | ||
|
|
0e24676144 | ||
|
|
b0132821ac | ||
|
|
24afe544a3 | ||
|
|
3d7ff9f758 | ||
|
|
a81e70350b | ||
|
|
7f6f0ca103 | ||
|
|
c89bc73740 | ||
|
|
3100669b79 | ||
|
|
22c670c3d3 | ||
|
|
c37c7cee05 | ||
|
|
46579f3799 | ||
|
|
6de30028a8 | ||
|
|
c78c1427be | ||
|
|
953e7fd717 | ||
|
|
1ae08cfedf | ||
|
|
3c116cd077 | ||
|
|
bcab703e31 | ||
|
|
73046ec838 | ||
|
|
e1734468f5 | ||
|
|
aa78292c2a | ||
|
|
8bbd8ab073 | ||
|
|
b936be8e34 | ||
|
|
b8f34cdd35 | ||
|
|
993c028579 | ||
|
|
9285ade8a8 | ||
|
|
83e9f0dd91 | ||
|
|
c641f5cbdc | ||
|
|
c6302e3b3f | ||
|
|
94acb6ed5d | ||
|
|
42497d9932 | ||
|
|
3f172d13b2 | ||
|
|
437b4397b9 | ||
|
|
3a7ab3f030 | ||
|
|
fccf38a4d6 | ||
|
|
46edc49ede | ||
|
|
c05281492d | ||
|
|
5cebd3abf7 | ||
|
|
5ed5d637b8 | ||
|
|
516e18900c | ||
|
|
0970487cca | ||
|
|
d38f1380e9 | ||
|
|
2626b83b08 | ||
|
|
db0659aab4 | ||
|
|
e23a60a6bb | ||
|
|
3ea8d83d3f | ||
|
|
d9445f04b1 | ||
|
|
1543d02f96 | ||
|
|
11a444e914 | ||
|
|
2a6412481e | ||
|
|
b4447bfa4d | ||
|
|
72b5988e56 | ||
|
|
3a2c3c2288 | ||
|
|
9762a8ca1e | ||
|
|
e02e5e503d | ||
|
|
e4329f3ae7 | ||
|
|
f7082ee034 | ||
|
|
3ac9621f87 | ||
|
|
46e92e998e | ||
|
|
77dfd7b783 | ||
|
|
7d480ff579 | ||
|
|
37140d5e10 | ||
|
|
b04e874e43 | ||
|
|
d146f578a4 | ||
|
|
40c0c5a298 | ||
|
|
3a475a99fc | ||
|
|
9394583f96 | ||
|
|
3b4f4c5f59 | ||
|
|
34f2f77067 | ||
|
|
6b94708508 | ||
|
|
1d93e89eed | ||
|
|
e0e0bcdc1e | ||
|
|
1ed8af2ee8 | ||
|
|
3830c0adc4 | ||
|
|
5dbda6cd95 | ||
|
|
d8dbdc83c0 | ||
|
|
359a7cebde | ||
|
|
490ead52eb | ||
|
|
a5a7a32447 | ||
|
|
7e9652787b | ||
|
|
3b00d06a62 | ||
|
|
234fb7c2fe | ||
|
|
2c7e0ef577 | ||
|
|
2cbcc82968 | ||
|
|
b48e504522 | ||
|
|
4cce303c89 | ||
|
|
6a97b45ad1 | ||
|
|
1afdbb848e | ||
|
|
4d19bb17a9 | ||
|
|
b2012467b3 | ||
|
|
daf5ef1bbd | ||
|
|
85a5319c4b | ||
|
|
6ca11044a4 | ||
|
|
42be7733fe | ||
|
|
1d75c232ff | ||
|
|
97c9c9c9d1 | ||
|
|
ab52469fbb | ||
|
|
fba984272a | ||
|
|
fb3a41d3ad | ||
|
|
be7d02ebdd | ||
|
|
b989978dd3 | ||
|
|
d9c9760aac | ||
|
|
6ff88a44f0 | ||
|
|
cbcc439e03 | ||
|
|
bf282e9bd7 | ||
|
|
4c3d3af73e | ||
|
|
10648cac5b | ||
|
|
3bfcd5e105 | ||
|
|
87aca05e7f | ||
|
|
94b1d58cc2 | ||
|
|
c55cbd3f2f | ||
|
|
d89fcdcc5f | ||
|
|
76f715c486 | ||
|
|
bbab6b2fdc | ||
|
|
a8e92639af | ||
|
|
d99c2cb9a7 | ||
|
|
9f8fe3d5e3 | ||
|
|
3c8c8a7559 | ||
|
|
a61e2caadb | ||
|
|
f109d535b1 | ||
|
|
12095c721c | ||
|
|
7b873179ad | ||
|
|
f1d923714a | ||
|
|
b9ba227733 | ||
|
|
f7754a2927 | ||
|
|
125d12798d | ||
|
|
d3bec4e686 | ||
|
|
1b0e4a0067 | ||
|
|
286bef5eb7 | ||
|
|
c9b4163e23 | ||
|
|
fbedf020bc | ||
|
|
d3e9183303 | ||
|
|
aaa0c25ff7 | ||
|
|
2f43584727 | ||
|
|
e7c1cb7185 | ||
|
|
911c37e63e | ||
|
|
8b40f09e17 | ||
|
|
93dfb6f7d6 | ||
|
|
547b0a9850 | ||
|
|
4416753df0 | ||
|
|
dc54ec5b2b | ||
|
|
b682c4102e | ||
|
|
6d522e6ed6 | ||
|
|
635c87d629 | ||
|
|
a355cf24f1 | ||
|
|
bc7ad955a3 | ||
|
|
05125341f1 | ||
|
|
12332328c1 | ||
|
|
8d95d0834d | ||
|
|
db5eebd372 | ||
|
|
b119b4f1da | ||
|
|
694ab455cd | ||
|
|
46edc07ae4 | ||
|
|
2a7fc9c3a5 | ||
|
|
be23c0755e | ||
|
|
db55176212 | ||
|
|
66a445f043 | ||
|
|
6527a48897 | ||
|
|
3f9706a7f3 | ||
|
|
41fc3bcb74 | ||
|
|
d46859b9e8 | ||
|
|
51a955c75c | ||
|
|
9a89da3b33 | ||
|
|
e8da9999f6 | ||
|
|
3f5c02bf92 | ||
|
|
e918851902 | ||
|
|
e411bac592 | ||
|
|
ded81ec186 | ||
|
|
cd276030c1 | ||
|
|
818533f9f0 | ||
|
|
ff7cbab991 | ||
|
|
ad8d68dd43 | ||
|
|
0db1b6ce44 | ||
|
|
843d5a5977 | ||
|
|
406d7f1a47 | ||
|
|
7df89566f3 | ||
|
|
32b2c9fc9e | ||
|
|
3f8baeba20 | ||
|
|
1879dc4b59 | ||
|
|
ea8c6bc15e | ||
|
|
4683ce2771 | ||
|
|
798537d47b | ||
|
|
0257b02a8c | ||
|
|
27e71c5f37 | ||
|
|
cddf7e0986 | ||
|
|
2b35b3f06e | ||
|
|
92b2376c23 | ||
|
|
412902e4ae | ||
|
|
29fda9cb6c | ||
|
|
e7b3f5745c | ||
|
|
268d64d244 | ||
|
|
8f045b9ec5 | ||
|
|
2ea1c2be92 | ||
|
|
5e9ca72731 | ||
|
|
debfc0f712 | ||
|
|
1e65e7c996 | ||
|
|
d12b1650aa | ||
|
|
70a75dc88a | ||
|
|
fa090f2c9f | ||
|
|
b6bd6e399d | ||
|
|
a3b497b271 | ||
|
|
55b3cf4627 | ||
|
|
eb1c00c56b | ||
|
|
c58278758c | ||
|
|
3d0d9a250b | ||
|
|
274f018494 | ||
|
|
970d05df39 | ||
|
|
abae08a9fb | ||
|
|
a0edee51fa | ||
|
|
887474d607 | ||
|
|
3bf3c11b0b | ||
|
|
6d61919941 | ||
|
|
e07de09460 | ||
|
|
98a17f4046 | ||
|
|
f850c021b7 | ||
|
|
8600243683 | ||
|
|
c6e5987480 | ||
|
|
e0c858478a | ||
|
|
a3b15b995e | ||
|
|
57ef5289fe | ||
|
|
a63c0311bb | ||
|
|
9808829ece | ||
|
|
00b6431ad9 | ||
|
|
e020ad0c06 | ||
|
|
df0c1eb32c | ||
|
|
9057801c4b | ||
|
|
0f443ef37b | ||
|
|
a20e0b9e2e | ||
|
|
4b6bd7cae5 | ||
|
|
6f35792c74 | ||
|
|
f1b375b042 | ||
|
|
4e672427bc | ||
|
|
165068c81d | ||
|
|
89993e9cbf | ||
|
|
78ab7e7ba1 | ||
|
|
424bb589a2 | ||
|
|
664fee5c6e | ||
|
|
146a353085 | ||
|
|
214ef3dd0b | ||
|
|
406c8a6d1e | ||
|
|
6416cb45fb | ||
|
|
1db7c6233b | ||
|
|
640beafa8c | ||
|
|
44f70d2b52 | ||
|
|
acbb6fb8e2 | ||
|
|
1163961927 | ||
|
|
e1190eb1f3 | ||
|
|
dc37a8079e | ||
|
|
373cca0bf6 | ||
|
|
b32fcc7a8e | ||
|
|
e9c226b8be | ||
|
|
af9d611847 | ||
|
|
9d6c4fa678 | ||
|
|
b66233de78 | ||
|
|
ff49792f44 | ||
|
|
b2abd963f0 | ||
|
|
0ab9cf8054 | ||
|
|
c70e92e98d | ||
|
|
bf10d6c03b | ||
|
|
de084b4a0d | ||
|
|
e46cbea251 | ||
|
|
7f6e63aba5 | ||
|
|
25081f60c4 | ||
|
|
91bf41cfce | ||
|
|
552d8f394e | ||
|
|
f8e01628b2 | ||
|
|
3d1ad89963 | ||
|
|
2188bb9b88 | ||
|
|
f0000ea7d2 | ||
|
|
5b173dafae | ||
|
|
c939f2ee45 | ||
|
|
309dfeb6a8 | ||
|
|
bf3e4126b2 | ||
|
|
8a357e1866 | ||
|
|
b8135574c3 | ||
|
|
85fdf587c0 | ||
|
|
8d4a701f86 | ||
|
|
1c83144773 | ||
|
|
edb973fadc | ||
|
|
77f1b1f0fe | ||
|
|
a79d3c680c | ||
|
|
ac023f7588 | ||
|
|
f3c8f535a4 | ||
|
|
b02f6cf3bc | ||
|
|
b7c4a4fc3b | ||
|
|
9f33050a32 | ||
|
|
f73caeb6a3 | ||
|
|
15da4aaec7 | ||
|
|
9ee7b0a501 | ||
|
|
3c116f6ab3 | ||
|
|
431ef224e0 | ||
|
|
600aeb6ccc | ||
|
|
a4c646f75c | ||
|
|
7f35f98d7d | ||
|
|
8b10b0a614 | ||
|
|
a9ada13a23 | ||
|
|
1ae0e5d7cb | ||
|
|
808fac9b14 | ||
|
|
737972be2f | ||
|
|
4cb70e8e2a | ||
|
|
abf3ee6563 | ||
|
|
1a0a3d85ca | ||
|
|
1bbac9e5ce | ||
|
|
705793eae6 | ||
|
|
efa6e38741 | ||
|
|
183aea5c96 | ||
|
|
97ddf9a4f3 | ||
|
|
489366290a | ||
|
|
fb8f16373f | ||
|
|
fed352653d | ||
|
|
a697b2b60e | ||
|
|
efe9c82bc6 | ||
|
|
2bdb199169 | ||
|
|
d0dabb0ff6 | ||
|
|
27e4ece24f | ||
|
|
fc898eff65 | ||
|
|
dd317709f8 | ||
|
|
fde9842a8e | ||
|
|
3bf88110aa | ||
|
|
cc5c411039 | ||
|
|
37bdb20092 | ||
|
|
e31431140a | ||
|
|
8a66ba6c35 | ||
|
|
8a446f43ff | ||
|
|
d6b5558cf2 | ||
|
|
50c04752f5 | ||
|
|
2a91a7640c | ||
|
|
6b35250099 | ||
|
|
2ba92f92b7 | ||
|
|
0b1e371880 | ||
|
|
ce15abd577 | ||
|
|
30392bf66a | ||
|
|
71233ee894 | ||
|
|
af3059ab2a | ||
|
|
1f0ae8b06d | ||
|
|
d5af389d2e | ||
|
|
644607c29f | ||
|
|
aa477195d4 | ||
|
|
b0a9a5a756 | ||
|
|
882a62ad52 | ||
|
|
f9697c8e36 | ||
|
|
0479060858 | ||
|
|
c2e5403408 | ||
|
|
3d2b12e72a | ||
|
|
09b1eee5d0 | ||
|
|
28264423a4 | ||
|
|
87baa4d3d2 | ||
|
|
c5031c2b39 | ||
|
|
82223d3bad | ||
|
|
56dd25667d | ||
|
|
d4a171a791 | ||
|
|
978066a6de | ||
|
|
2628da4a59 | ||
|
|
ccb157c7a3 | ||
|
|
d43c803bfe | ||
|
|
eec6db0a23 | ||
|
|
983bc5cecc | ||
|
|
60435f99b9 | ||
|
|
332cda6b16 | ||
|
|
8d73f2af34 | ||
|
|
6a8219a02e | ||
|
|
c8f7d33a9a | ||
|
|
40ec2303ff | ||
|
|
19eddddcff | ||
|
|
b1e86d6fea | ||
|
|
b9283d48b5 | ||
|
|
33fc5c99ea | ||
|
|
a4581cb233 | ||
|
|
36dfc9f1bf | ||
|
|
4a55fff3b9 | ||
|
|
02f16e90b6 | ||
|
|
984a498063 | ||
|
|
c1b51c6530 | ||
|
|
224de547b3 | ||
|
|
43d2e15bb7 | ||
|
|
ac70772070 | ||
|
|
1feea366ca | ||
|
|
f599239fd4 | ||
|
|
a122d2eb50 | ||
|
|
17e7860700 | ||
|
|
34fab879cb | ||
|
|
b02ed0bbe6 | ||
|
|
165ba535f0 | ||
|
|
8253df7c3d | ||
|
|
4788da204b | ||
|
|
cf11d1e4e6 | ||
|
|
e557327860 | ||
|
|
e152cfac34 | ||
|
|
464f1f44aa | ||
|
|
bf27cb1f5e | ||
|
|
654010f639 | ||
|
|
918f84438f | ||
|
|
93e2415924 | ||
|
|
4837a2d0df | ||
|
|
be80e1a863 | ||
|
|
e53e00c4f9 | ||
|
|
90495f3ac5 | ||
|
|
6fc9e6f21e | ||
|
|
7117c4a5ee | ||
|
|
a3a7c48799 | ||
|
|
f545fb2491 | ||
|
|
e73be48d96 | ||
|
|
04b1b83039 | ||
|
|
e9d216bc84 | ||
|
|
87510ac77d | ||
|
|
44ce3e6731 | ||
|
|
26678682ca | ||
|
|
7d63900fb8 | ||
|
|
e47d56a84f | ||
|
|
9b52269a5b | ||
|
|
9992b8eb0e | ||
|
|
bab69f2672 | ||
|
|
2e33633698 | ||
|
|
eb7601d116 | ||
|
|
5827bfd9a2 | ||
|
|
dc8cc39bc8 | ||
|
|
47df1ae40a | ||
|
|
c9c2fc5ee3 | ||
|
|
b79854ad1a | ||
|
|
8229b17f0d | ||
|
|
4a5d02aab4 | ||
|
|
ed4e6cd3a5 | ||
|
|
7d45e6f12f | ||
|
|
0302162d8e | ||
|
|
1dfa404210 | ||
|
|
bd4551e2ef | ||
|
|
d6a56428d1 | ||
|
|
a10fa3a20b | ||
|
|
be5fde9e54 | ||
|
|
abfc7e16a1 | ||
|
|
d76f880faf | ||
|
|
21e83a881e | ||
|
|
5ba1261285 | ||
|
|
7bb844a778 | ||
|
|
8c24d49c73 | ||
|
|
5e371e8fe7 | ||
|
|
e46324ced9 | ||
|
|
5ea486b20a | ||
|
|
425afa63ce | ||
|
|
7c09a767b6 | ||
|
|
768f92303e | ||
|
|
34054fa1fb | ||
|
|
4a37d6d1f9 | ||
|
|
8dfc8625a7 | ||
|
|
e878947cb2 | ||
|
|
f56f84c6ac | ||
|
|
239d43dac4 | ||
|
|
8a63326411 | ||
|
|
01608cf062 | ||
|
|
e06d6ce4a2 | ||
|
|
58a0c6f9d3 | ||
|
|
f310f1e96c | ||
|
|
c7bf1aa222 | ||
|
|
be3fff9282 | ||
|
|
e52cf09bc1 | ||
|
|
57de1388e8 | ||
|
|
7ee0ce745e | ||
|
|
469743cd23 | ||
|
|
91e1d59869 | ||
|
|
5fb97f05a3 | ||
|
|
618b42980d | ||
|
|
211b9ea8b9 | ||
|
|
833abc27cc | ||
|
|
3d5a3f03fa | ||
|
|
51de26960c | ||
|
|
b67526aae8 | ||
|
|
14bf057c62 | ||
|
|
8eb53ea7ca | ||
|
|
9b60af4d52 | ||
|
|
956f99365a | ||
|
|
9904415144 | ||
|
|
83febbdc7d | ||
|
|
6b026e399c | ||
|
|
a661c03743 | ||
|
|
ffc03735e8 | ||
|
|
c7e24488eb | ||
|
|
fe7d2c57e3 | ||
|
|
4fc80b5057 | ||
|
|
12f3f5dcbb | ||
|
|
16f2ffc29d | ||
|
|
86a978d9ee | ||
|
|
f6fe3df59b | ||
|
|
e0764bb25e | ||
|
|
1ba0bfd10c | ||
|
|
593ab75a76 | ||
|
|
3589554028 | ||
|
|
1a59346b51 | ||
|
|
ff124465fd | ||
|
|
de5223db66 | ||
|
|
cc1395797e | ||
|
|
122791646e | ||
|
|
a3c4de52d6 | ||
|
|
95de6cf5a7 | ||
|
|
d788c84440 | ||
|
|
96046ffd30 | ||
|
|
b5e92a831b | ||
|
|
a2788129ff | ||
|
|
5bbf220077 | ||
|
|
f5d4e3f94c | ||
|
|
04ea680e9a | ||
|
|
3a940781d9 | ||
|
|
00fcd63b88 | ||
|
|
f3093649de | ||
|
|
670e33ab27 | ||
|
|
3606664cf7 | ||
|
|
81f45208b0 | ||
|
|
9145d05397 | ||
|
|
ef566836c4 | ||
|
|
10dfca1a75 | ||
|
|
b3e3f041fe | ||
|
|
e3ec361552 | ||
|
|
bfccc7133d | ||
|
|
f41a699f5d | ||
|
|
7d029778e6 | ||
|
|
26857fabdc | ||
|
|
a9b119833a | ||
|
|
c5ffe8a974 | ||
|
|
df1b4e1f21 | ||
|
|
61686aff34 | ||
|
|
ad6645c48d | ||
|
|
1e328c3546 | ||
|
|
0e2a625815 | ||
|
|
6eb66770a4 | ||
|
|
84729c4dfa | ||
|
|
8de8877c7c | ||
|
|
fdc6c3722a | ||
|
|
deca475972 | ||
|
|
ba070e21e4 | ||
|
|
35e9fd1bb0 | ||
|
|
4906609dd9 | ||
|
|
682353f9cc | ||
|
|
25c6671a87 | ||
|
|
c67702a498 | ||
|
|
5880cd88c8 | ||
|
|
54ceb4211e | ||
|
|
7a46227141 | ||
|
|
b904aa78e8 | ||
|
|
8185bee4b8 | ||
|
|
2e1b3325c6 | ||
|
|
1b8f1650dc | ||
|
|
1070b34996 | ||
|
|
13b1b73c15 | ||
|
|
e1de72d0ac | ||
|
|
dc837eb8a3 | ||
|
|
f6b76e6ecb | ||
|
|
e7cbcc83a4 | ||
|
|
390700ca71 | ||
|
|
b604321169 | ||
|
|
62c49f13ce | ||
|
|
eba75dbc2e | ||
|
|
32d2d0f0d0 | ||
|
|
81e0342bf6 | ||
|
|
56599621cc | ||
|
|
261bf12c91 | ||
|
|
b08fb86637 | ||
|
|
b290fd33b9 | ||
|
|
966bbd476f | ||
|
|
cf9bfe9e66 | ||
|
|
bb4a05032b | ||
|
|
7039e01136 | ||
|
|
e9f43f1097 | ||
|
|
150789690f | ||
|
|
e284233013 | ||
|
|
d06d6c6964 | ||
|
|
977a4477f6 | ||
|
|
33c6410809 | ||
|
|
7e321afd2a | ||
|
|
548ea1e54a | ||
|
|
4755c5f8c8 | ||
|
|
ea1bfd715e | ||
|
|
b1281c3fb9 | ||
|
|
257e9b04fe | ||
|
|
8643870822 | ||
|
|
6819696222 | ||
|
|
193bbd4e00 | ||
|
|
1bf168348e | ||
|
|
f8b4c1b389 | ||
|
|
830fba64b1 | ||
|
|
1cd61952b0 | ||
|
|
4ee1cc3b37 | ||
|
|
11dd904b6d | ||
|
|
0c03b6ddc7 | ||
|
|
176a3913aa | ||
|
|
6f0b00f983 | ||
|
|
69ace201f8 | ||
|
|
a04f31c5c0 | ||
|
|
1d9f47d1e5 | ||
|
|
36a91fc6ff | ||
|
|
cd3ed71137 | ||
|
|
73e56527bf | ||
|
|
24059924b1 | ||
|
|
bb100a2511 | ||
|
|
0c8c32cd03 | ||
|
|
a38d6e74f5 | ||
|
|
05d8dacb27 | ||
|
|
d6a0859eab | ||
|
|
4912967eab | ||
|
|
76e1cda495 | ||
|
|
c1a23bf450 | ||
|
|
b25b5bf5f6 | ||
|
|
079f17761c | ||
|
|
e1b8c425da | ||
|
|
5f05756e65 | ||
|
|
c0e996acf8 | ||
|
|
41ec58a524 | ||
|
|
0a5e7be129 | ||
|
|
b23d65b014 | ||
|
|
60ef7903e2 | ||
|
|
ee8fd21d28 | ||
|
|
232ed91ec7 | ||
|
|
7fccad156e | ||
|
|
11e56456a0 | ||
|
|
d07e78c59a | ||
|
|
c45479a6e5 | ||
|
|
345a528625 | ||
|
|
01d8490255 | ||
|
|
ea4b37d5c5 | ||
|
|
a1319cb8aa | ||
|
|
35c49d62d7 | ||
|
|
0576a11a6f | ||
|
|
c8f86d94c9 | ||
|
|
2b24eab26a | ||
|
|
7bbc7a61ce | ||
|
|
fe26284376 | ||
|
|
ab62fe6496 | ||
|
|
bc9bae0f7f | ||
|
|
e5939d1a18 | ||
|
|
5fadb7f200 | ||
|
|
a02aa7a316 | ||
|
|
3ab26a5d40 | ||
|
|
a8bae31939 | ||
|
|
faea588fb8 | ||
|
|
792e246262 | ||
|
|
85f19f9b8c | ||
|
|
40e4f49dbe | ||
|
|
05c721bebb | ||
|
|
e995cc9329 | ||
|
|
9457c115be | ||
|
|
1eddc79a90 | ||
|
|
ccfc909eb2 | ||
|
|
1a93cbba1e | ||
|
|
529d410bec | ||
|
|
4d1c0eaa52 | ||
|
|
adfd3c1098 | ||
|
|
f7d0c4b065 | ||
|
|
5fb32f1e2d | ||
|
|
f69489a4fc | ||
|
|
d34ce26c4e | ||
|
|
3f7fe94009 | ||
|
|
ae593decfc | ||
|
|
eea62125a1 | ||
|
|
96f36a63dc | ||
|
|
19e183f02f | ||
|
|
57f3df3cab | ||
|
|
08e78e63cf | ||
|
|
9228dffe5e | ||
|
|
93dc7d4cc1 | ||
|
|
1bead8adf7 | ||
|
|
6681f3bfec | ||
|
|
71f8960ef1 | ||
|
|
01780f19b1 | ||
|
|
1fa0c4d4d3 | ||
|
|
eebe126842 | ||
|
|
ebfa285122 | ||
|
|
27212719dc | ||
|
|
17567028da | ||
|
|
34fd8e0e00 | ||
|
|
6cf42075fc | ||
|
|
afd8d2f9ba | ||
|
|
1d54bff385 | ||
|
|
6dd0013a5d | ||
|
|
f2b5292bcb | ||
|
|
3a94f6e8b3 | ||
|
|
f2846a0b78 | ||
|
|
dbde7033d8 | ||
|
|
18f04adccb | ||
|
|
1ed65b6bd7 | ||
|
|
9b781c4c06 | ||
|
|
25f9105a97 | ||
|
|
602109bd8d | ||
|
|
631d27f7a8 | ||
|
|
aad27a7a68 | ||
|
|
4ac01154d9 | ||
|
|
4e2c7c57d7 | ||
|
|
6e65cfcc9a | ||
|
|
96a4b7eaa7 | ||
|
|
64afada7f0 | ||
|
|
9f563f4873 | ||
|
|
ca61d0ee8b | ||
|
|
e96dabadf1 | ||
|
|
b6601338c2 | ||
|
|
8167e1e07e | ||
|
|
23ce927301 | ||
|
|
c7941fc7b0 | ||
|
|
1078ad9ae9 | ||
|
|
c0085cbc61 | ||
|
|
a49d245b92 | ||
|
|
0ce6829e4c | ||
|
|
4e3acdcbdc | ||
|
|
85f808130d | ||
|
|
b187538339 | ||
|
|
93f6aabe12 | ||
|
|
10aa107380 | ||
|
|
53cba2a2e6 | ||
|
|
d871095d0b | ||
|
|
9bf8a5e877 | ||
|
|
3836bfe5a1 | ||
|
|
7698553c3a | ||
|
|
be1d216b34 | ||
|
|
85cbb943b5 | ||
|
|
ec34f2527a | ||
|
|
b877181e17 | ||
|
|
69446be1ee | ||
|
|
cc90f9cf80 | ||
|
|
457e6a5f46 | ||
|
|
e7db18bae2 | ||
|
|
f8e3e853aa | ||
|
|
b7ba252965 | ||
|
|
ae12e1b537 | ||
|
|
9255f625fa | ||
|
|
377d93d1cf | ||
|
|
19d14c7c3a | ||
|
|
6e3a823b7b | ||
|
|
51f9ff5389 | ||
|
|
4986e6e3f9 | ||
|
|
9d8ae184c9 | ||
|
|
4afdcf56fc | ||
|
|
0fe43eb880 | ||
|
|
4edfd6d9d6 | ||
|
|
8351ec0afd | ||
|
|
92ce84c26a | ||
|
|
9d31e52b2a | ||
|
|
dcd7d6769d | ||
|
|
87c0e0e971 | ||
|
|
6f9a523151 | ||
|
|
673faf7152 | ||
|
|
18ace555b0 | ||
|
|
d09c9fba02 | ||
|
|
f1d22b6300 | ||
|
|
da6295c428 | ||
|
|
86645b32e1 | ||
|
|
977c585f8b | ||
|
|
4c1ddab560 | ||
|
|
f5442bdd4a | ||
|
|
129525af21 | ||
|
|
c15975113a | ||
|
|
2d3d6e1c17 | ||
|
|
b0f4ff2879 | ||
|
|
070b10689c | ||
|
|
39863ce4d7 | ||
|
|
7cae1ae415 | ||
|
|
eca2100312 | ||
|
|
175249b455 | ||
|
|
294fbc8309 | ||
|
|
9bcc7df96f | ||
|
|
4bd63020ca | ||
|
|
4885842ae8 | ||
|
|
4df6b599b8 | ||
|
|
0c79bb6e7c | ||
|
|
1a264ab7c2 | ||
|
|
99b51ce6ea | ||
|
|
e0baab2722 | ||
|
|
71a8d39372 | ||
|
|
90826e4031 | ||
|
|
0e4f2cca01 | ||
|
|
ac3dce38f0 | ||
|
|
3be07cc645 | ||
|
|
07f5319472 | ||
|
|
47019e315a | ||
|
|
fe7fa46d57 | ||
|
|
007c5bc9f0 | ||
|
|
8c423b56df | ||
|
|
a868abb55a | ||
|
|
ecab34c787 | ||
|
|
307ea6dce2 | ||
|
|
d456b4f68e | ||
|
|
17e815348b | ||
|
|
953ab4b3cf | ||
|
|
9204780c1b | ||
|
|
fb2ed355ec | ||
|
|
675106cfa5 | ||
|
|
3aeadd9fb7 | ||
|
|
0e3eb38f11 | ||
|
|
dc23af6b32 | ||
|
|
b1bfa71338 | ||
|
|
71bff26607 | ||
|
|
3c190374b4 | ||
|
|
d8428463d8 | ||
|
|
725982cc5b | ||
|
|
f977dfcfe7 | ||
|
|
15079fa3bd | ||
|
|
79a92120ef | ||
|
|
a34565ca0f | ||
|
|
49ece586d5 | ||
|
|
2ec0778d78 | ||
|
|
cccd1cefbe | ||
|
|
8f145fa7fa | ||
|
|
ceb32f63e7 | ||
|
|
576c12b184 | ||
|
|
e2c3ca9950 | ||
|
|
8585e0e9b8 | ||
|
|
7394374a15 | ||
|
|
37defa739b | ||
|
|
51ed3fbc4b | ||
|
|
ab78075d06 | ||
|
|
52070ea577 | ||
|
|
f930303d3e | ||
|
|
268fb37517 | ||
|
|
ff17101316 | ||
|
|
ab536e5199 | ||
|
|
c10b3017d6 | ||
|
|
0f63e1f988 | ||
|
|
3bb537c183 | ||
|
|
ff23bf6f0c | ||
|
|
00d3e18780 | ||
|
|
a62f300753 | ||
|
|
0bc644abf0 | ||
|
|
31b7d076b7 | ||
|
|
a11687fc5c | ||
|
|
fa346cec3b | ||
|
|
0bdf7a598a | ||
|
|
0c9a1a56c2 | ||
|
|
c0655b6b08 | ||
|
|
dca9b83ec0 | ||
|
|
7ded90ae6a | ||
|
|
a6ab66080e | ||
|
|
89e1cad470 | ||
|
|
e55bc92d1f | ||
|
|
d6a59b538f | ||
|
|
1a87f44325 | ||
|
|
c8bc535f22 | ||
|
|
1889db3263 | ||
|
|
73b88f2304 | ||
|
|
21b8e5a5c6 | ||
|
|
b1ff14162f | ||
|
|
c6c55823ac | ||
|
|
8b8a970098 | ||
|
|
ebfcee6e67 | ||
|
|
63b330439e | ||
|
|
52d8fb301c | ||
|
|
dfe159e719 | ||
|
|
4e7e45a431 | ||
|
|
d81bd296fc | ||
|
|
6d3f257439 | ||
|
|
f92b24221a | ||
|
|
afd78f3f0b | ||
|
|
44f3f51e0d | ||
|
|
14a35e7c21 | ||
|
|
d173bb6e0a | ||
|
|
ce859c9e92 | ||
|
|
8ed20f3c28 | ||
|
|
0ced7d8e56 | ||
|
|
143ead8d00 | ||
|
|
6788c2710f | ||
|
|
ed7c10f366 | ||
|
|
68b93c624f | ||
|
|
36fe1e4a46 | ||
|
|
9ee4e4e05c | ||
|
|
ea65a0c519 | ||
|
|
f35d2629d4 | ||
|
|
0e5578204e | ||
|
|
063a465227 | ||
|
|
230fb921ec | ||
|
|
82a93d8406 | ||
|
|
2dda8634e9 | ||
|
|
2f313b799a | ||
|
|
d371256913 | ||
|
|
a7ec93b287 | ||
|
|
2c5001a5b3 | ||
|
|
191221eec5 | ||
|
|
27f374a38b | ||
|
|
baa813c46f | ||
|
|
79a22b1f8d | ||
|
|
087940ec9e | ||
|
|
8a46931e34 | ||
|
|
a9313fc0c3 | ||
|
|
dfba35aee8 | ||
|
|
5ae77b4317 | ||
|
|
a0bb2cdc6e | ||
|
|
0a5680c3e8 | ||
|
|
00764406d7 | ||
|
|
3ead99b088 | ||
|
|
8c0803e3c5 | ||
|
|
2da8df6202 | ||
|
|
17a75a5aa5 | ||
|
|
8b26d0104c | ||
|
|
36622c3578 | ||
|
|
fd4df6f9bb | ||
|
|
5d18d60e3b | ||
|
|
e4d98597c7 | ||
|
|
72da14e414 | ||
|
|
8ada404c5f | ||
|
|
ebba30d671 | ||
|
|
909d24cde6 | ||
|
|
4e912ef83d | ||
|
|
b17dfff3fd | ||
|
|
52dc415d0b | ||
|
|
392232246e | ||
|
|
cf54ad8242 | ||
|
|
fdfa5c0602 | ||
|
|
50ee5d28cd | ||
|
|
f74a82776f | ||
|
|
3553e65089 | ||
|
|
ad7c5886bc | ||
|
|
b30090f946 | ||
|
|
8f637975a4 | ||
|
|
94a764d6ea | ||
|
|
38e40862fe | ||
|
|
5ea78f55f2 | ||
|
|
a515db4aea | ||
|
|
90e979d0d9 | ||
|
|
8232857d07 | ||
|
|
2ae56564ef | ||
|
|
f24a0170be | ||
|
|
fd56465931 | ||
|
|
376e199ebb | ||
|
|
a837a27b34 | ||
|
|
62bd43f17f | ||
|
|
917b4ff8bc | ||
|
|
5fe7c065dc | ||
|
|
e074ad4807 | ||
|
|
5f3fe4acff | ||
|
|
4ccc197451 | ||
|
|
237cf19a77 | ||
|
|
2206e221bd | ||
|
|
d9bb9b73ad | ||
|
|
d5c382bb1a | ||
|
|
52daf6cf41 | ||
|
|
74a7303c23 | ||
|
|
d8a9991738 | ||
|
|
ca1c8243c8 | ||
|
|
14b3a5be56 | ||
|
|
ed89df7e9d | ||
|
|
1bedc16544 | ||
|
|
ac0b97a571 | ||
|
|
7b3d670e23 | ||
|
|
c9f4e91df8 | ||
|
|
c0ed169fdc | ||
|
|
412894bfc8 | ||
|
|
aad6e5648b | ||
|
|
8f1423946f | ||
|
|
51da4856e2 | ||
|
|
3b56c58f00 | ||
|
|
4fd2531302 | ||
|
|
fdef238a83 | ||
|
|
9787901ddb | ||
|
|
6e58c9f7c8 | ||
|
|
a08450bcb6 | ||
|
|
a92d9d442b | ||
|
|
e2ff77b4ec | ||
|
|
caf7a93382 | ||
|
|
afcda2f724 | ||
|
|
fcea723aa7 | ||
|
|
faf80588ab | ||
|
|
fc589611e2 | ||
|
|
5ecd350311 | ||
|
|
4b6c6c59b5 | ||
|
|
0f8ffa6226 | ||
|
|
6def61dfe9 | ||
|
|
b39bebee06 | ||
|
|
dce189fc6d | ||
|
|
0a4c72e78b | ||
|
|
d66700a0e4 | ||
|
|
b59a22bef0 | ||
|
|
9b1930588f | ||
|
|
18bb64cd43 | ||
|
|
d975187433 | ||
|
|
910863e9ea | ||
|
|
a38490429b | ||
|
|
80e8f6a0d1 | ||
|
|
e5ff5f7484 | ||
|
|
646240fc54 | ||
|
|
19cd7a248d | ||
|
|
f1b1d1ca75 | ||
|
|
e5bba2294d | ||
|
|
19cfd9b5d6 | ||
|
|
7e1b15a0cc | ||
|
|
19858c574d | ||
|
|
f891ea5713 | ||
|
|
d3311c81e5 | ||
|
|
b6bc4381fb | ||
|
|
b3d0561c09 | ||
|
|
1bbe901bcd | ||
|
|
4f8b4379f5 | ||
|
|
bc8a288386 | ||
|
|
3dc56de0ae | ||
|
|
b2e5809180 | ||
|
|
7e52523541 | ||
|
|
8bc83c5967 | ||
|
|
029c8c06c2 | ||
|
|
063fc0c48b | ||
|
|
191eeab589 | ||
|
|
3f8621e566 | ||
|
|
5f686ebb47 | ||
|
|
6a31457c6d | ||
|
|
e6f7912a25 | ||
|
|
8a2737566c | ||
|
|
006523ac59 | ||
|
|
c0e783eb6e | ||
|
|
399c78fbf7 | ||
|
|
a0a43046b3 | ||
|
|
e8af86017a | ||
|
|
382ffe9b6a | ||
|
|
e5b34d5cd5 | ||
|
|
0dba7b3313 | ||
|
|
27f2859258 | ||
|
|
eeed45da0f | ||
|
|
067dff8489 | ||
|
|
7d3151191d | ||
|
|
98fa1325f5 | ||
|
|
bd45b79ed8 | ||
|
|
0a616a9dbb | ||
|
|
a534c397f5 | ||
|
|
737589ec01 | ||
|
|
a7f8ee90c0 | ||
|
|
b14683200a | ||
|
|
c82410bfda | ||
|
|
00ad837eb4 | ||
|
|
9ab54030b9 | ||
|
|
5ad6849d4e | ||
|
|
7fcf25a78f | ||
|
|
5c205c43d1 | ||
|
|
f20f49d872 | ||
|
|
fb63c3908c | ||
|
|
623eb42a6a | ||
|
|
6afc06b97e | ||
|
|
cdd5b1ed26 | ||
|
|
884b4026dd | ||
|
|
62f49c55ce | ||
|
|
0b4b6c498d | ||
|
|
409f70c7f3 | ||
|
|
bb19fe703a | ||
|
|
eef1e3e77e | ||
|
|
562ba1291e | ||
|
|
3adf6d25f6 | ||
|
|
beece6a828 | ||
|
|
207ab2aa5b | ||
|
|
4ccc2550d0 | ||
|
|
0c9e398bef | ||
|
|
af2d348543 | ||
|
|
23bc10dfe6 | ||
|
|
13f72decf4 | ||
|
|
3ad7de0fcb | ||
|
|
48408b0a0b | ||
|
|
cd7d1f2bfe | ||
|
|
ed66a46113 | ||
|
|
8e4e30d266 | ||
|
|
f988dcd6f9 | ||
|
|
143091edad | ||
|
|
79e0405f6a | ||
|
|
316f81119f | ||
|
|
8d016040ab | ||
|
|
4da6986a68 | ||
|
|
3b8a4e56b0 | ||
|
|
966cd6a8ca | ||
|
|
f243cd86c9 | ||
|
|
1a5d866a91 | ||
|
|
a1d8ed83dd | ||
|
|
7f284c404f | ||
|
|
d1b3b6a0ed | ||
|
|
9b37bc667f | ||
|
|
4eea68b5a4 | ||
|
|
87429bc03c | ||
|
|
6c28448e84 | ||
|
|
843ba4ac2c | ||
|
|
d6545588a3 | ||
|
|
26b375a0de | ||
|
|
2f1cac604d | ||
|
|
8e56763c98 | ||
|
|
e94e1cc72f | ||
|
|
8ae00697c9 | ||
|
|
b0c6d891e9 | ||
|
|
548164cd5e | ||
|
|
4dfe36feb1 | ||
|
|
0d1c2a3b2a | ||
|
|
378fd60756 | ||
|
|
fa569b32fb | ||
|
|
78f8317de8 | ||
|
|
6e8637fbc9 | ||
|
|
8403aae928 | ||
|
|
b43c8da66b | ||
|
|
da85bdc401 | ||
|
|
7e486e3b5c | ||
|
|
062e423125 | ||
|
|
3d8face1f9 | ||
|
|
0c99fc5b4d | ||
|
|
51d7d5d0da | ||
|
|
c959584831 | ||
|
|
fa796d668f | ||
|
|
e4ee4ec3d1 | ||
|
|
0073a93079 | ||
|
|
7e124cf95e | ||
|
|
c647bed9d5 | ||
|
|
6f330f961b | ||
|
|
140ead65b6 | ||
|
|
f12fd3707e | ||
|
|
55091d9deb | ||
|
|
1b3427acd9 | ||
|
|
60d1ac4fec | ||
|
|
9b133a978d | ||
|
|
203c749e6c | ||
|
|
f3e2d2f68f | ||
|
|
a359f45df2 | ||
|
|
e8b6d48ad0 | ||
|
|
8ba79d6ab9 | ||
|
|
57c9eeeecb | ||
|
|
f78c4fa751 | ||
|
|
3ba6e9db5d | ||
|
|
610246c48f | ||
|
|
d0e18e3d20 | ||
|
|
72cfdbbb4e | ||
|
|
15296dedd5 | ||
|
|
943cc68f54 | ||
|
|
3bb4d0b276 | ||
|
|
9cc2217a26 | ||
|
|
ee687ee433 | ||
|
|
9b56b67c0e | ||
|
|
48655e882e | ||
|
|
7f49d37a51 | ||
|
|
9f8a1168e6 | ||
|
|
c18d177b8c | ||
|
|
7bde2b5cbf | ||
|
|
7b3377e78c | ||
|
|
feed900f3d | ||
|
|
7530057c6e | ||
|
|
a6b3f6b5d4 | ||
|
|
76f870a30a | ||
|
|
02092f315e | ||
|
|
9ef9284a34 | ||
|
|
820acb981b | ||
|
|
2516fd90eb | ||
|
|
de23368d03 | ||
|
|
4df57fda09 | ||
|
|
6f45832aed | ||
|
|
fec0415d4e | ||
|
|
04c7d87261 | ||
|
|
6abf3db13e | ||
|
|
99000e68b7 | ||
|
|
bef046a51a | ||
|
|
78322a6321 | ||
|
|
46fa2dd2f0 | ||
|
|
451399b344 | ||
|
|
22a8e57a57 | ||
|
|
9cd279e0e9 | ||
|
|
b67eaa3abd | ||
|
|
046c9b56f5 | ||
|
|
6ad80247ce | ||
|
|
0b744edfa4 | ||
|
|
0d8bb78f66 | ||
|
|
28ecc68841 | ||
|
|
7c7aba1202 | ||
|
|
74a1d70b8a | ||
|
|
165a5aaa83 | ||
|
|
8b407a32ff | ||
|
|
04856aded0 | ||
|
|
a9c238a1fc | ||
|
|
8d2f107d61 | ||
|
|
3f16ace678 | ||
|
|
344b9bdba3 | ||
|
|
834ea94eb9 | ||
|
|
a060cc5893 | ||
|
|
7ef0b3b821 | ||
|
|
39a2fd1717 | ||
|
|
c66ec4df3d | ||
|
|
c25c48f763 | ||
|
|
5105d8d87e | ||
|
|
35af336ff6 | ||
|
|
157ca12d4b | ||
|
|
e9d1a54983 | ||
|
|
c8981c048f | ||
|
|
1ae44c6b3c | ||
|
|
b2887477e3 | ||
|
|
8e2db29c9a | ||
|
|
d38de7365a | ||
|
|
cde6067cae | ||
|
|
2583638f4b | ||
|
|
11360b018f | ||
|
|
bdfc62184d | ||
|
|
74f06d550a | ||
|
|
46986ad4c2 | ||
|
|
6a5d6471c5 | ||
|
|
cf0850edfd | ||
|
|
fd4ac87382 | ||
|
|
164144f126 | ||
|
|
f2ad4a2e8e | ||
|
|
df23913bb8 | ||
|
|
4ccf26fbcc | ||
|
|
081e277fe4 | ||
|
|
dcecab384a | ||
|
|
4f9b07e979 | ||
|
|
9b97c55546 | ||
|
|
364d3dbbf8 | ||
|
|
9f3a4d1640 | ||
|
|
5fca92994f | ||
|
|
fefd17fe5e | ||
|
|
6b243fbcd3 | ||
|
|
82f8c3834e | ||
|
|
e0ba91db31 | ||
|
|
fa148bf59f | ||
|
|
1b0ce33669 | ||
|
|
0cf2a1eb33 | ||
|
|
8a46a8ecb2 | ||
|
|
4f0221bc4f | ||
|
|
ce08bb2ad2 | ||
|
|
93f797326e | ||
|
|
ceba377ab8 | ||
|
|
b9b6e867df | ||
|
|
f47caefdb9 | ||
|
|
41ae7bccc2 | ||
|
|
1e27024d75 | ||
|
|
6654fff377 | ||
|
|
89d999df72 | ||
|
|
a941d82be3 | ||
|
|
694cdf5ae1 | ||
|
|
2bfe4afea2 | ||
|
|
d559c3fe2e | ||
|
|
27df727ca1 | ||
|
|
8910226d2f | ||
|
|
04f58b1a31 | ||
|
|
1b9dd0c75f | ||
|
|
a7af415b6a | ||
|
|
f8a5a59513 | ||
|
|
ac3dfb3f96 | ||
|
|
d957d23d8f | ||
|
|
d049947801 | ||
|
|
21a10c3c74 | ||
|
|
04951f8b34 | ||
|
|
c08bae6aeb | ||
|
|
3aa107c4ae | ||
|
|
e196091714 | ||
|
|
d35d65cc40 | ||
|
|
7f7b30959b | ||
|
|
70322077d2 | ||
|
|
f529b2e057 | ||
|
|
c6372a1b3f | ||
|
|
41b8db063c | ||
|
|
1b16758d7e | ||
|
|
51b5adc306 | ||
|
|
56f8993b8c | ||
|
|
8c4d1ca587 | ||
|
|
ec8b3593f3 | ||
|
|
5c9b42e260 | ||
|
|
7914c92824 | ||
|
|
208be0f4d4 | ||
|
|
7cfac5bb59 | ||
|
|
1bd09bfd40 | ||
|
|
517751f2a3 | ||
|
|
006952c571 | ||
|
|
7a8b7201a1 | ||
|
|
1157e4d7b2 | ||
|
|
6b8e7b16f6 | ||
|
|
1eb089d722 | ||
|
|
e50d0c18b0 | ||
|
|
810d5f9548 | ||
|
|
e0c317dfd4 | ||
|
|
d5320fb9f9 | ||
|
|
14c84ffbcb | ||
|
|
f71c6f3f0e | ||
|
|
6dbb9e070d | ||
|
|
47ae2a05ce | ||
|
|
810262118a | ||
|
|
f5be301a2f | ||
|
|
b1357d11b2 | ||
|
|
5fc42fcaff | ||
|
|
c1cf6a4071 | ||
|
|
972f3e121e | ||
|
|
0dd8ae4843 | ||
|
|
8a93b6f26d | ||
|
|
07717a3570 | ||
|
|
79784d3e18 | ||
|
|
c08c313c0a | ||
|
|
dfd70057b3 | ||
|
|
07dec5c3ed | ||
|
|
1ed5decf2c | ||
|
|
9b95dda6bf | ||
|
|
41015691db | ||
|
|
7e1ac2d806 | ||
|
|
35258bf1fb | ||
|
|
72025a6a38 | ||
|
|
05341b055b | ||
|
|
9d7224d756 | ||
|
|
33ec8b45a0 | ||
|
|
1dc49a4062 | ||
|
|
1123467991 | ||
|
|
4f54da3795 | ||
|
|
c8de3d24c8 | ||
|
|
31439ffb52 | ||
|
|
9111b85437 | ||
|
|
c6427c5a47 | ||
|
|
36c3bd4e8d | ||
|
|
dad549afd1 | ||
|
|
e73c2be216 | ||
|
|
b0d324f1a7 | ||
|
|
d7396ac59f | ||
|
|
3f439e9cd3 | ||
|
|
0b722864c0 | ||
|
|
75e26f0f94 | ||
|
|
8cacb33347 | ||
|
|
bf7d62fd91 | ||
|
|
4ac31e637d | ||
|
|
0ad64ad2e4 | ||
|
|
523096e5d8 | ||
|
|
0de629e009 | ||
|
|
1f6fa1208e | ||
|
|
b86856b454 | ||
|
|
6598320534 | ||
|
|
0a66dc4a31 | ||
|
|
88a2b622df | ||
|
|
e10f75483f | ||
|
|
1a66fc4c5d | ||
|
|
905b792de7 | ||
|
|
804f5ab334 | ||
|
|
f974c7c416 | ||
|
|
f3b6b74568 | ||
|
|
ab94a397c3 | ||
|
|
537ab32dd9 | ||
|
|
a2660cfb76 | ||
|
|
3743a5758b | ||
|
|
e510d10c77 | ||
|
|
f5540ff958 | ||
|
|
c2b28063e1 | ||
|
|
8d2564291d | ||
|
|
87db9517e9 | ||
|
|
ab3502fc8b | ||
|
|
22472ea980 | ||
|
|
ef705be6a5 | ||
|
|
d50fac7fe5 | ||
|
|
39c16a7770 | ||
|
|
2aad9d5a95 | ||
|
|
52aaf60510 | ||
|
|
3a2f7d0edf | ||
|
|
605fffa9d2 | ||
|
|
2229fad410 | ||
|
|
8e9384e2e8 | ||
|
|
394776c56b | ||
|
|
e3d3a1062d | ||
|
|
b4042b18c6 | ||
|
|
5379200b9e | ||
|
|
9c38ed8238 | ||
|
|
cb59da7a6f | ||
|
|
bdec900aca | ||
|
|
564d19e3bd | ||
|
|
063c4d7e67 | ||
|
|
30cfa2a445 | ||
|
|
71c2cde390 | ||
|
|
da4a4bcc18 | ||
|
|
286ce1d6a4 | ||
|
|
5064cec16d | ||
|
|
f5f5e63ddf | ||
|
|
ae878ed6ea | ||
|
|
2c5151bb78 | ||
|
|
f506f1f495 | ||
|
|
374fc09af0 | ||
|
|
54b1986986 | ||
|
|
6e9489f4f5 | ||
|
|
a52bd219b9 | ||
|
|
bdd1b6b4b2 | ||
|
|
6dfdb3ba6e | ||
|
|
48d5637178 | ||
|
|
d724b160ea | ||
|
|
7a4dc6f700 | ||
|
|
c9f43fb02d | ||
|
|
da02905250 | ||
|
|
80060229f8 | ||
|
|
10b9b06ef7 | ||
|
|
e9aba6a878 | ||
|
|
5fee5a2890 | ||
|
|
3f3fe634c8 | ||
|
|
a5156c54cb | ||
|
|
74cd64ba21 | ||
|
|
348e991d7c | ||
|
|
a1af86cb6b | ||
|
|
baa6a40d6f | ||
|
|
5082054bcb | ||
|
|
2160777d2f | ||
|
|
a97faaf664 | ||
|
|
0c1b40e3b3 | ||
|
|
e54ce9a147 | ||
|
|
36e08dc49e | ||
|
|
dd02e96712 | ||
|
|
4163040e56 | ||
|
|
0bea4c46e3 | ||
|
|
0f6fe652a4 | ||
|
|
afa0ed124f | ||
|
|
8904ab47aa | ||
|
|
25305c6b24 | ||
|
|
89c27c6d9d | ||
|
|
175dd75a3d | ||
|
|
9b74687384 | ||
|
|
fcd474afe8 | ||
|
|
3ca3b6209d | ||
|
|
9299515f3e | ||
|
|
188f0454b7 | ||
|
|
e55739296d | ||
|
|
68857220ac | ||
|
|
713c84d821 | ||
|
|
d34d05ca8b | ||
|
|
dac2129048 | ||
|
|
8cd8c3002e | ||
|
|
4b85eb32d7 | ||
|
|
5870ee7723 | ||
|
|
feec9579c2 | ||
|
|
dde3838f2d | ||
|
|
97b77d1b3a | ||
|
|
addb5a698d | ||
|
|
db0a982570 | ||
|
|
3a73b60956 | ||
|
|
f4f10a8226 | ||
|
|
d6c7e25bea | ||
|
|
f28e83d3e9 | ||
|
|
0e716763d8 | ||
|
|
50f5941a82 | ||
|
|
093cb71f91 | ||
|
|
df4fdf33c4 | ||
|
|
5694d3f027 | ||
|
|
cf8e746d0c | ||
|
|
af9c2067e1 | ||
|
|
d44dd73682 | ||
|
|
5938a93018 | ||
|
|
79ac330afb | ||
|
|
e6764f3130 | ||
|
|
710a01c945 | ||
|
|
0b7b20f013 | ||
|
|
819c20e1d8 | ||
|
|
61ebc12dd4 | ||
|
|
449a75756d | ||
|
|
5e2e9e2b9b | ||
|
|
737935ebe4 | ||
|
|
0679a6351f | ||
|
|
657e3f8147 | ||
|
|
e6b9955fc1 | ||
|
|
e1afe17671 | ||
|
|
16e2c4805a | ||
|
|
5ecd0e22bf | ||
|
|
1420744669 | ||
|
|
048f903a9d | ||
|
|
dab7e6c7b9 | ||
|
|
06de2602cb | ||
|
|
65d223e672 | ||
|
|
c0aac8996d | ||
|
|
3692074e7e | ||
|
|
954c99a5ad | ||
|
|
8c4770a26c | ||
|
|
624878d35f | ||
|
|
2375578310 | ||
|
|
084c0c5f80 | ||
|
|
d2d397d9eb | ||
|
|
607e970659 | ||
|
|
3b39b1fa03 | ||
|
|
64933d31a6 | ||
|
|
c780f1a8c9 | ||
|
|
76bb8e79b2 | ||
|
|
370aeec44d | ||
|
|
b0ae3dc9cc | ||
|
|
a900d16540 | ||
|
|
3fc1ba0f0e | ||
|
|
38ed4c0f9b | ||
|
|
5a61ae3e0d | ||
|
|
c9fe154c01 | ||
|
|
2a3b01a7a0 | ||
|
|
c2c4b24174 | ||
|
|
74a270ea32 | ||
|
|
2994378e1a | ||
|
|
baeca81305 | ||
|
|
151943f89e | ||
|
|
ad02bb9b48 | ||
|
|
e464b4270c | ||
|
|
e076f2c239 | ||
|
|
3cb24e0681 | ||
|
|
27baa6e62b | ||
|
|
fa9d00a81a | ||
|
|
04948702e0 | ||
|
|
20526687b2 | ||
|
|
0a0870180d | ||
|
|
972edef341 | ||
|
|
8ed521c817 | ||
|
|
88199d6b51 | ||
|
|
782a739736 | ||
|
|
cd19320ab2 | ||
|
|
58fd6b895a | ||
|
|
df55e89bbb | ||
|
|
91de143003 | ||
|
|
748d726ddf | ||
|
|
2caaa7526d | ||
|
|
778aa1c304 | ||
|
|
c40eb8a716 | ||
|
|
1c6236831c | ||
|
|
c1b4fa847f | ||
|
|
a6644631d9 | ||
|
|
e4f5bc69e2 | ||
|
|
03f322c715 | ||
|
|
a72d877752 | ||
|
|
d0585befb3 | ||
|
|
784c5d9fa3 | ||
|
|
52e7a7ec1c | ||
|
|
c00e1fcf26 | ||
|
|
5425970706 | ||
|
|
419b3166c8 | ||
|
|
e2714b05eb | ||
|
|
2c02b59703 | ||
|
|
ee94424b0f | ||
|
|
2b7535bb51 | ||
|
|
c5805cfd47 | ||
|
|
7ca76ef743 | ||
|
|
2c743173d3 | ||
|
|
003dfb99da | ||
|
|
dd48de068d | ||
|
|
cb179c448b | ||
|
|
c323fc226f | ||
|
|
176c1a487b | ||
|
|
2872df66d7 | ||
|
|
45412f2b1f | ||
|
|
e9790db64a | ||
|
|
8ab1d0254c | ||
|
|
4c858a10c9 | ||
|
|
b4ccce2dc3 | ||
|
|
06688fb9ea | ||
|
|
4d5c50cbb3 | ||
|
|
91d1dee06b | ||
|
|
3e030bc6c6 | ||
|
|
b9009eba96 | ||
|
|
90c5cea43d | ||
|
|
52f9560b4f | ||
|
|
91ca8610ee | ||
|
|
2efb88a30a | ||
|
|
87223c68f4 | ||
|
|
5c9570eb56 | ||
|
|
778b6a31ad | ||
|
|
4d6751c274 | ||
|
|
a03a4d1ba3 | ||
|
|
5a670e2a96 | ||
|
|
edf896f7cd | ||
|
|
e128fa1a8e | ||
|
|
e8ba091161 | ||
|
|
65d99117aa | ||
|
|
94a483d46b | ||
|
|
e750f1a3c2 | ||
|
|
3f4b47b4af | ||
|
|
f6b3fcb4f5 | ||
|
|
8fe90e4327 | ||
|
|
a17019e439 | ||
|
|
b5baac8291 | ||
|
|
f36508837b | ||
|
|
3969c1b453 | ||
|
|
1e524fbc7a | ||
|
|
3e1b0e587e | ||
|
|
2aea1d5a84 | ||
|
|
6616543991 | ||
|
|
83a3706099 | ||
|
|
7c96cb2ff8 | ||
|
|
a3c5718eb9 | ||
|
|
9b10fa4762 | ||
|
|
0f51d5ec18 | ||
|
|
73a67c2a43 | ||
|
|
6859e012d9 | ||
|
|
680cf17570 | ||
|
|
854c4aee9a | ||
|
|
104ec963c2 | ||
|
|
08eb92707a | ||
|
|
e50f43416b | ||
|
|
58755fc579 | ||
|
|
31ca1218d4 | ||
|
|
44e8a12b66 | ||
|
|
fe21577a8e | ||
|
|
a4ac924512 | ||
|
|
e936629dc3 | ||
|
|
dfabf7f206 | ||
|
|
7118269e4b | ||
|
|
100355c3c1 | ||
|
|
4b1fced1f8 | ||
|
|
abff4e5b41 | ||
|
|
25082b6528 | ||
|
|
766482d90e | ||
|
|
15e0a44fc7 | ||
|
|
3b653cd26a | ||
|
|
ba6661e9df | ||
|
|
55af8e4966 | ||
|
|
dcad2ef17b | ||
|
|
418192b312 | ||
|
|
76d9051605 | ||
|
|
ca2b2103d3 | ||
|
|
14e6bdb139 | ||
|
|
20d42378de | ||
|
|
41c9f89fcf | ||
|
|
7953863b38 | ||
|
|
3fff030ee2 | ||
|
|
da9f7227f5 | ||
|
|
ba932b6590 | ||
|
|
c02e2b1320 | ||
|
|
37a95a3096 | ||
|
|
bbd229b206 | ||
|
|
6a60377e02 | ||
|
|
fc87b3c4b4 | ||
|
|
fcbdb6f2a7 | ||
|
|
a537b01814 | ||
|
|
bd5a16d213 | ||
|
|
be0bd50bad | ||
|
|
cab5c63402 | ||
|
|
d480d892c9 | ||
|
|
f2ccbe7374 | ||
|
|
85241817f8 | ||
|
|
8cf46bdb5c | ||
|
|
5e6d1efb56 | ||
|
|
bc1f9b6f1c | ||
|
|
85d069c106 | ||
|
|
cfecb58bb6 | ||
|
|
11c2ec91d4 | ||
|
|
cc6f133368 | ||
|
|
350b637a1a | ||
|
|
f917dccf6f | ||
|
|
62d380a1ee | ||
|
|
65ef6cf217 | ||
|
|
2bba0f7b8f | ||
|
|
565970b8ca | ||
|
|
6ea3dd7dfe | ||
|
|
8176a1253b | ||
|
|
4f67c38777 | ||
|
|
86beb7b109 | ||
|
|
98a6c491b1 | ||
|
|
66c045c439 | ||
|
|
a1ec38f53b | ||
|
|
64f1024eb5 | ||
|
|
b3500bfbdc | ||
|
|
f8c45324b6 | ||
|
|
bf5d4f6b07 | ||
|
|
1300e68fa5 | ||
|
|
1a76f2ecb9 | ||
|
|
9c5fb0392d | ||
|
|
f4c5eaf05b | ||
|
|
dd90b4ece4 | ||
|
|
4930db35e2 | ||
|
|
e6409a88d5 | ||
|
|
77a48dc252 | ||
|
|
029be823e2 | ||
|
|
421aff7d67 | ||
|
|
9e7094adfc | ||
|
|
19e8d60179 | ||
|
|
9d9869e515 | ||
|
|
54e19b1efb | ||
|
|
f603b6ef68 | ||
|
|
81e0fcbc13 | ||
|
|
b999bd9c8c | ||
|
|
9c9a8f9d0f | ||
|
|
461ef2a508 | ||
|
|
7492b6cdb3 | ||
|
|
34e27ff4c2 | ||
|
|
47588c8e75 | ||
|
|
00c6fcfe98 | ||
|
|
c90f7c3203 | ||
|
|
6467ead9ad | ||
|
|
cb7caf2afc | ||
|
|
c6ebb23f38 | ||
|
|
5753d63958 | ||
|
|
e56d9765d7 | ||
|
|
a5b7ec2624 | ||
|
|
b2fa41307c | ||
|
|
fce74c73c7 | ||
|
|
e110b29c2f | ||
|
|
a3aba0269d | ||
|
|
e1f4aa5fcd | ||
|
|
e19ee86b0d | ||
|
|
6e71b5a59c | ||
|
|
b70092e281 | ||
|
|
602eac89c4 | ||
|
|
d8b5cc6717 | ||
|
|
76fedccf13 | ||
|
|
41206e70b4 | ||
|
|
bc2c37c739 | ||
|
|
4a2a47666f | ||
|
|
94fbbb7669 | ||
|
|
63010c26ad | ||
|
|
f398b2eafa | ||
|
|
1214067d03 | ||
|
|
0469d05447 | ||
|
|
2fcec27e23 | ||
|
|
42d0283489 | ||
|
|
3fbd8036f4 | ||
|
|
3b4bacb5ba | ||
|
|
7e350dab66 | ||
|
|
9c23d50e92 | ||
|
|
2ec7428e32 | ||
|
|
594f81ec8c | ||
|
|
9767b76881 | ||
|
|
0ace93c2a4 | ||
|
|
c73d165165 | ||
|
|
c1945f8275 | ||
|
|
4d368dc06c | ||
|
|
9ff0e9cf72 | ||
|
|
a971d91a70 | ||
|
|
52b74f9f34 | ||
|
|
b932a9a084 | ||
|
|
997f2dffbf | ||
|
|
1289e03134 | ||
|
|
9a8e5e64ed | ||
|
|
774c050f92 | ||
|
|
478a319442 | ||
|
|
24fea5dd7b | ||
|
|
2b05bdfa94 | ||
|
|
6c8a559023 | ||
|
|
ca8c337c94 | ||
|
|
8ccad65504 | ||
|
|
fd11f294bc | ||
|
|
b3fa76c1be | ||
|
|
d3dd9400e3 | ||
|
|
234034d302 | ||
|
|
edc20a7505 | ||
|
|
3a29028f60 | ||
|
|
f4af7603da | ||
|
|
63a28eb46f | ||
|
|
b85d9ee737 | ||
|
|
58042b0e9f | ||
|
|
23759e6eca | ||
|
|
1d3465698f | ||
|
|
b156f083be | ||
|
|
f83b754cd4 | ||
|
|
df4a0d65bd | ||
|
|
77b5532ce9 | ||
|
|
d9ec65da4d | ||
|
|
4b9dcf1cf2 | ||
|
|
1fbac89a38 | ||
|
|
ceacfb83a8 | ||
|
|
d736c8cca6 | ||
|
|
60769903a5 | ||
|
|
8b73bac580 | ||
|
|
c8162c2900 | ||
|
|
de181c91d5 | ||
|
|
687ba1c9ef | ||
|
|
02802b509d | ||
|
|
7f18dd6a4a | ||
|
|
2f7a472230 | ||
|
|
b8f2f46945 | ||
|
|
2570eb1ab8 | ||
|
|
d3062f9a97 | ||
|
|
8619d17f43 | ||
|
|
8062eb3511 | ||
|
|
e0322bf0e0 | ||
|
|
ddc617f80a | ||
|
|
f64364cced | ||
|
|
32502bfac8 | ||
|
|
1f6a98ecb8 | ||
|
|
6ad0f141be | ||
|
|
0b6366aacb | ||
|
|
deed3a63a3 | ||
|
|
cab80b452b | ||
|
|
338d32a7c6 | ||
|
|
88f15a6804 | ||
|
|
20b3f3b9a1 | ||
|
|
1145a5d483 | ||
|
|
125ca9ff73 | ||
|
|
bc1efb1556 | ||
|
|
7b5649097f | ||
|
|
c2e1d76400 | ||
|
|
f7435559a7 | ||
|
|
47afca1fdb | ||
|
|
372c811763 | ||
|
|
dd061b1dda | ||
|
|
eb3c99c54e | ||
|
|
5d864e3f69 | ||
|
|
1b71f91a01 | ||
|
|
b30886228c | ||
|
|
f91de04269 | ||
|
|
a3531db645 | ||
|
|
1e8fe508f0 | ||
|
|
54244fd33d | ||
|
|
4c1d1bb218 | ||
|
|
903326ddf5 | ||
|
|
0105ec284d | ||
|
|
55b253152c | ||
|
|
6573d2b451 | ||
|
|
cfa9ecbfd2 | ||
|
|
b139201a33 | ||
|
|
946b5d1528 | ||
|
|
3b2670532a | ||
|
|
d00bc973fe | ||
|
|
4768b37531 | ||
|
|
ab162c6c25 | ||
|
|
5ed912bebc | ||
|
|
ec43090c16 | ||
|
|
80759ee03f | ||
|
|
816f473ac9 | ||
|
|
d59d3b4463 | ||
|
|
8784b78d84 | ||
|
|
5005c67d76 | ||
|
|
63732a99e9 | ||
|
|
04b7da336d | ||
|
|
5f69f2bb0c | ||
|
|
fb62a35921 | ||
|
|
08787c7674 | ||
|
|
79de45eed5 | ||
|
|
9bc9e1c08d | ||
|
|
3acdeb87a4 | ||
|
|
9959e53985 | ||
|
|
4edb71325f | ||
|
|
310768e8d2 | ||
|
|
dc90e460fe | ||
|
|
d20c14b4bb | ||
|
|
981f5782d8 | ||
|
|
c2021b6225 | ||
|
|
9de4dbdd03 | ||
|
|
1a84a44cc2 | ||
|
|
80a9fc2fce | ||
|
|
8aac7e82c0 | ||
|
|
49e300d0ca | ||
|
|
136e99de62 | ||
|
|
c41986a63f | ||
|
|
bedf8ea55e | ||
|
|
d8f1c0abcd | ||
|
|
13a85ee3f1 | ||
|
|
fab18bae80 | ||
|
|
6e24b26e2c | ||
|
|
7fb44d4d5f | ||
|
|
44f85d04f9 | ||
|
|
bd71f0a096 | ||
|
|
f7b656017f | ||
|
|
7a8ca73376 | ||
|
|
9eb1826961 | ||
|
|
728a60bd67 | ||
|
|
0099c3c420 | ||
|
|
885d16fcd6 | ||
|
|
c4a8f4c890 | ||
|
|
c098cb5c87 | ||
|
|
63643ff17f | ||
|
|
f83575f084 | ||
|
|
a6c00ca0d2 | ||
|
|
c5eaefc8b5 | ||
|
|
f16bb285be | ||
|
|
09c348bef2 | ||
|
|
561ec7d5f5 | ||
|
|
e98a604a21 | ||
|
|
3341fc888c | ||
|
|
1faf7df371 | ||
|
|
3a128e1484 | ||
|
|
cdc52f7bde | ||
|
|
e0899addcb | ||
|
|
c627509e59 | ||
|
|
4502fc74c3 | ||
|
|
3b0ed061cd | ||
|
|
dfa73c7cc1 | ||
|
|
12be24ef47 | ||
|
|
c684b7c7c7 | ||
|
|
4f22082a5c | ||
|
|
e3c1363831 | ||
|
|
6d413c8dc3 | ||
|
|
32a49e45c8 | ||
|
|
b37d49a708 | ||
|
|
86b7023536 | ||
|
|
287ab597ca | ||
|
|
c313f21066 | ||
|
|
e2dca4273a | ||
|
|
5a7a8003a0 | ||
|
|
b83a7cb659 | ||
|
|
da81328d75 | ||
|
|
5ae4306418 | ||
|
|
ed36f30eae | ||
|
|
7b8ebdadd6 | ||
|
|
bb4e166b37 | ||
|
|
9dc1a7d5e9 | ||
|
|
79f59e2a2d | ||
|
|
8285242ff6 | ||
|
|
c0a54955e7 | ||
|
|
b2d4e85f17 | ||
|
|
a5868d67f5 | ||
|
|
45f1263112 | ||
|
|
4683f4c989 | ||
|
|
ae16397e1c | ||
|
|
2d05b1c1b4 | ||
|
|
ea998b03f2 | ||
|
|
52b2525b0e | ||
|
|
ff96668151 | ||
|
|
d7576a409a | ||
|
|
f6815629fc | ||
|
|
8b3bcd2c4c | ||
|
|
c7bc31fe50 | ||
|
|
bab168f1d1 | ||
|
|
2ab04f4043 | ||
|
|
b32bbb24b9 | ||
|
|
f86f80fcd6 | ||
|
|
d563e428e8 | ||
|
|
5473711a20 | ||
|
|
91009ac9aa | ||
|
|
49bff53370 | ||
|
|
afcab9f1b3 | ||
|
|
841fdf3a04 | ||
|
|
92446bda80 | ||
|
|
a620a1e5ed | ||
|
|
5a8df6cc85 | ||
|
|
b70b966f90 | ||
|
|
97f7c2093b | ||
|
|
8ece4f3ddc | ||
|
|
17a13a8eb7 | ||
|
|
afaf156a42 | ||
|
|
c4f3b5e9ef | ||
|
|
f5916358e5 | ||
|
|
e3e1b34fec | ||
|
|
18bb4ca826 | ||
|
|
007e4662e3 | ||
|
|
e11677ef66 | ||
|
|
194167da32 | ||
|
|
dafeac5c40 | ||
|
|
effea85984 | ||
|
|
0b34836c79 | ||
|
|
f85ce201ee | ||
|
|
80ac4ddc2b | ||
|
|
9a0f712e29 | ||
|
|
286e110fb1 | ||
|
|
988a7fddf3 | ||
|
|
a321505351 | ||
|
|
a074cd62bc | ||
|
|
7a8b468165 | ||
|
|
770fa771b6 | ||
|
|
414fa591b8 | ||
|
|
941b472b37 | ||
|
|
179f575593 | ||
|
|
6400b60bdd | ||
|
|
0e03e872be | ||
|
|
e51322ac81 | ||
|
|
1e739166b3 | ||
|
|
560e53fd5f | ||
|
|
184d58cd36 | ||
|
|
bcf3024cf0 | ||
|
|
9611a3b205 | ||
|
|
8ace1739f5 | ||
|
|
302516a747 | ||
|
|
ad5a6e0552 | ||
|
|
873fd83307 | ||
|
|
d1078f8582 | ||
|
|
0ea668b260 | ||
|
|
91c745e4b5 | ||
|
|
7d73349889 | ||
|
|
53a2c017fe | ||
|
|
80ff583400 | ||
|
|
0c7f74c78d | ||
|
|
13b1ea3f50 | ||
|
|
44ff9956b9 | ||
|
|
add1fa9208 | ||
|
|
8b2059c628 | ||
|
|
15724d0798 | ||
|
|
2839f5e567 | ||
|
|
67c820cee8 | ||
|
|
bce4c78d49 | ||
|
|
421ebcc2d7 | ||
|
|
92df4a6d91 | ||
|
|
22fe8e6a17 | ||
|
|
d0f1870735 | ||
|
|
b71f5d09b0 | ||
|
|
eb00ad77fb | ||
|
|
be886bc6df | ||
|
|
7a5823fd60 | ||
|
|
81d61c467b | ||
|
|
e91e3b6593 | ||
|
|
1db67a5105 | ||
|
|
810faacd72 | ||
|
|
6be3807cae | ||
|
|
4399503f4e | ||
|
|
06b5fdc6e8 | ||
|
|
4037219dc0 | ||
|
|
1612ec50fb | ||
|
|
3bb0163598 | ||
|
|
4d19aa7698 | ||
|
|
f72de8e141 | ||
|
|
02eb856e44 | ||
|
|
c550f4eb21 | ||
|
|
00c25436d7 | ||
|
|
6107d63995 | ||
|
|
eafa0a7169 | ||
|
|
45d2b89780 | ||
|
|
72d73b7fdd | ||
|
|
227a5da02c | ||
|
|
e356bdaa8e | ||
|
|
697d524687 | ||
|
|
73f0d0bb48 | ||
|
|
200ebe43dc | ||
|
|
ff2d354ef8 | ||
|
|
3bef568955 | ||
|
|
9a7be6db08 | ||
|
|
40e2025327 | ||
|
|
a819c863eb | ||
|
|
827c88e4a1 | ||
|
|
e2b7a078f4 | ||
|
|
6de0c4103b | ||
|
|
b6e8171f01 | ||
|
|
b1439075c6 | ||
|
|
7df536023b | ||
|
|
f5f15f9de2 | ||
|
|
0e0a61119f | ||
|
|
6f058c687d | ||
|
|
53ea5d60b7 | ||
|
|
9525f429c6 | ||
|
|
548e379d6a | ||
|
|
202d29de88 | ||
|
|
23152ae8a6 | ||
|
|
7310596dab | ||
|
|
4afe49d7c6 | ||
|
|
d7c3d2acbf | ||
|
|
f771fce892 | ||
|
|
6522000bf0 | ||
|
|
285abcc9bc | ||
|
|
b15e8123ca | ||
|
|
1c86395ed8 | ||
|
|
3c8d2a1126 | ||
|
|
ed8cd08984 | ||
|
|
69537430ea | ||
|
|
0a603a56c6 | ||
|
|
046dd82995 | ||
|
|
97c3e231f4 | ||
|
|
76b782d576 | ||
|
|
ed5c1db392 | ||
|
|
37f5db2bf9 | ||
|
|
8a97bffd02 | ||
|
|
2fd48bce11 | ||
|
|
d1a3e6abf5 | ||
|
|
1a29979bbd | ||
|
|
69814e5066 | ||
|
|
4dbac8f941 | ||
|
|
303473f20c | ||
|
|
480a29594e | ||
|
|
dfe3dc1429 | ||
|
|
2ea00ce444 | ||
|
|
ac13bdeaa7 | ||
|
|
22cb7dd2d7 | ||
|
|
20698cc813 | ||
|
|
1ebf571da5 | ||
|
|
7c822cbf30 | ||
|
|
90302d9232 | ||
|
|
bee6805ff9 | ||
|
|
65035c4dc7 | ||
|
|
2b0d64184a | ||
|
|
51d7159ba7 | ||
|
|
0a4819be27 | ||
|
|
72ad4e0d3b | ||
|
|
21de293a44 | ||
|
|
8b395d05ef | ||
|
|
8392902cec | ||
|
|
a5abdd2792 | ||
|
|
e784683b8a | ||
|
|
7fadf6c083 | ||
|
|
7ff76476ed | ||
|
|
cd9102214b | ||
|
|
8da54a1955 | ||
|
|
6899e4e734 | ||
|
|
486e0dbe84 | ||
|
|
441c109afb | ||
|
|
4b0810d7e9 | ||
|
|
51d58a6a7c | ||
|
|
7a884e11a6 | ||
|
|
c4acfdd87c | ||
|
|
41f8007a03 | ||
|
|
8207030b21 | ||
|
|
a2c70f495e | ||
|
|
b11f366bb0 | ||
|
|
0e1a3c7c4a | ||
|
|
d3a75a354a | ||
|
|
afc49dded2 | ||
|
|
49b232df84 | ||
|
|
248d11c462 | ||
|
|
6b1570b745 | ||
|
|
dc3634dc94 | ||
|
|
696b4df1c6 | ||
|
|
65f4d6e866 | ||
|
|
8833e8f4ea | ||
|
|
f29026b767 | ||
|
|
7ecf7c1fac | ||
|
|
4a2fa5ea34 | ||
|
|
03f6656af6 | ||
|
|
8e6dbe245c | ||
|
|
daf171aa86 | ||
|
|
d1bbb89389 | ||
|
|
bd0c1573df | ||
|
|
2700a9b697 | ||
|
|
474f6e90ff | ||
|
|
7cbc11f1c3 | ||
|
|
09f9d43be3 | ||
|
|
109e7455a8 | ||
|
|
9b95332aa9 | ||
|
|
cccd13db92 | ||
|
|
2c8a2c9f61 | ||
|
|
f05e1f6e48 | ||
|
|
f439c4a484 | ||
|
|
2fba53b113 | ||
|
|
8a2846ed44 | ||
|
|
91b63e4989 | ||
|
|
89d876d0f7 | ||
|
|
e79fdcb194 | ||
|
|
60f0533821 | ||
|
|
0768cf7e53 | ||
|
|
bdd83d338c | ||
|
|
db369a9ad7 | ||
|
|
aa895c6740 | ||
|
|
8e06805f2d | ||
|
|
00360d8fbc | ||
|
|
3b365d9f8d | ||
|
|
3835000e9d | ||
|
|
9bbe19bfb8 | ||
|
|
787e99d901 | ||
|
|
713748c782 | ||
|
|
c9eb74fa4b | ||
|
|
b2d940c25a | ||
|
|
2a7bc8c04b | ||
|
|
013d3dbb89 | ||
|
|
0aff94dd4c | ||
|
|
431850b4ec | ||
|
|
e280d10033 | ||
|
|
8c4708b51e | ||
|
|
4ba9ac28bb | ||
|
|
4664d65af7 | ||
|
|
1b7157a03f | ||
|
|
e1dd17a7dd | ||
|
|
5c8d9bd13c | ||
|
|
1c9a173b3d | ||
|
|
a0c40fcf8d | ||
|
|
f36811b7be | ||
|
|
40ed01f6f2 | ||
|
|
b2e2743195 | ||
|
|
1dc033f71c | ||
|
|
ba4166d17d | ||
|
|
46c6f7880b | ||
|
|
bef7fff383 | ||
|
|
0811613fe9 | ||
|
|
a09abea737 | ||
|
|
fd4e5e6777 | ||
|
|
57b3965518 | ||
|
|
3e843f8219 | ||
|
|
2343ce5a0c | ||
|
|
0122e35cb6 | ||
|
|
c96382152c | ||
|
|
af0bd61fb5 | ||
|
|
4a87c9895d | ||
|
|
036cc4e0fa | ||
|
|
9e304fa734 | ||
|
|
6d9631d0d0 | ||
|
|
bb04df2ac9 | ||
|
|
746a602515 | ||
|
|
a41fd8f759 | ||
|
|
ba9fbc67da | ||
|
|
ac40a3bcd0 | ||
|
|
942dcd7d54 | ||
|
|
9830bf985a | ||
|
|
7bb070d817 | ||
|
|
d56ab1d365 | ||
|
|
38175cdd30 | ||
|
|
436b1e10c6 | ||
|
|
e59cb1da5d | ||
|
|
e42198b7c8 | ||
|
|
2076944268 | ||
|
|
407c96e943 | ||
|
|
bf333f2a84 | ||
|
|
3ddd5e5981 | ||
|
|
b016438c08 | ||
|
|
7268a4a4e0 | ||
|
|
51c6c5ea49 | ||
|
|
5688035680 | ||
|
|
43b6b703ff | ||
|
|
e007a5c203 | ||
|
|
f836bd41c0 | ||
|
|
c9e98c2eef | ||
|
|
e94803152c | ||
|
|
07ff8a6c03 | ||
|
|
9f10dd377e | ||
|
|
6e0e7e0996 | ||
|
|
907b2f8462 | ||
|
|
d2869d5140 | ||
|
|
587e91d0c1 | ||
|
|
aad3249b79 | ||
|
|
081ab955af | ||
|
|
9a9d84c58a | ||
|
|
94d1322fc1 | ||
|
|
eed8b61a9e | ||
|
|
40558c2eb9 | ||
|
|
d677b468db | ||
|
|
4e38d3bc8c | ||
|
|
36ae253a29 | ||
|
|
f673b06dd2 | ||
|
|
e9e0643817 | ||
|
|
358f412abb | ||
|
|
a983798295 | ||
|
|
52a0149e4f | ||
|
|
8fdc46a105 | ||
|
|
63b02e308d | ||
|
|
7c97095bca | ||
|
|
b62beaf47d | ||
|
|
b2b1ec27d8 | ||
|
|
6aa682755d | ||
|
|
2bc49b3291 | ||
|
|
cea3dfd0cb | ||
|
|
d7d2c82a82 | ||
|
|
58aa1e75c1 | ||
|
|
0361423469 | ||
|
|
9aee2b7c9c | ||
|
|
2c95e087b2 | ||
|
|
5d5ee87a59 | ||
|
|
c60b62de73 | ||
|
|
2e5821c17d | ||
|
|
f46145a6b3 | ||
|
|
c61f6ceea6 | ||
|
|
d32751df13 | ||
|
|
038dcca143 | ||
|
|
d79e8c7f62 | ||
|
|
af8cb6fe87 | ||
|
|
5855f78010 | ||
|
|
f7118e769f | ||
|
|
93ae00e8e5 | ||
|
|
d7eb084b9d | ||
|
|
6e1548b821 | ||
|
|
5381c6cf93 | ||
|
|
20e5d298a0 | ||
|
|
39e9974e71 | ||
|
|
d2bd3e4919 | ||
|
|
04b142208d | ||
|
|
cf35a8e3a5 | ||
|
|
e7e3e8ee74 | ||
|
|
6fd69bdda8 | ||
|
|
a85f4cc1c4 | ||
|
|
07af5f4832 | ||
|
|
446272eee6 | ||
|
|
48ca253097 | ||
|
|
da2a757dff | ||
|
|
6fada015b6 | ||
|
|
a1a2773cbf | ||
|
|
67f216fa55 | ||
|
|
8986e05b94 | ||
|
|
7c016c56e3 | ||
|
|
0602044723 | ||
|
|
4ffd2afccd | ||
|
|
ec58ffa641 | ||
|
|
2c44ecb4a3 | ||
|
|
2eebb6e7ed | ||
|
|
1a3ab8a189 | ||
|
|
4722ddc373 | ||
|
|
25365dbc54 | ||
|
|
6a5f11879b | ||
|
|
b028e41f7f | ||
|
|
86593cd6a2 | ||
|
|
6cae5c8b0a | ||
|
|
29cd62ab6e | ||
|
|
4c7e06e752 | ||
|
|
433169dca4 | ||
|
|
d46dade284 | ||
|
|
79b466441b | ||
|
|
9f14d50974 | ||
|
|
990803009e | ||
|
|
6dfd629fc5 | ||
|
|
d97f8f3fde | ||
|
|
95ca3d1c69 | ||
|
|
c8b04f70cf | ||
|
|
bffff77d17 | ||
|
|
6bdb0cde8b | ||
|
|
42a260f1e6 | ||
|
|
148cb68700 | ||
|
|
18c185c256 | ||
|
|
b5b49e7a4d | ||
|
|
28ea5ce732 | ||
|
|
eccba7626d | ||
|
|
79d3207d51 | ||
|
|
d6bf879675 | ||
|
|
051f557e8f | ||
|
|
17171c3277 | ||
|
|
18a59291ed | ||
|
|
29e86254d0 | ||
|
|
b746a803a9 | ||
|
|
07e14ed7a8 | ||
|
|
df5cc6f858 | ||
|
|
409a407ca0 | ||
|
|
1c2cbb00bc | ||
|
|
bbf2a3836f | ||
|
|
1aa1ab540e | ||
|
|
27c9eb8758 | ||
|
|
e6b1035ddc | ||
|
|
9f6aba38d6 | ||
|
|
b52fe0feb6 | ||
|
|
db459f869a | ||
|
|
763a6b8351 | ||
|
|
4a06821d99 | ||
|
|
22f3dcfd35 | ||
|
|
dbb66e1895 | ||
|
|
5a7a264b96 | ||
|
|
3d601bd751 | ||
|
|
c9deea2237 | ||
|
|
32e54fd719 | ||
|
|
9ebdc16be6 | ||
|
|
92ecc01baa | ||
|
|
ff1c5e058f | ||
|
|
3d192a8e93 | ||
|
|
f5c6306bde | ||
|
|
524e0aa174 | ||
|
|
94abb30f94 | ||
|
|
af8e053896 | ||
|
|
633e2f498f | ||
|
|
4932538c74 | ||
|
|
786144ba86 | ||
|
|
e3dd94f272 | ||
|
|
b110a0ae21 | ||
|
|
48d9c38d1e | ||
|
|
51f8272ebd | ||
|
|
77f35c1b41 | ||
|
|
06668bfacb | ||
|
|
df59b8498f | ||
|
|
92fde30c0c | ||
|
|
d690a15b29 | ||
|
|
445f6539cf | ||
|
|
13a7269378 | ||
|
|
fd2644ce49 | ||
|
|
508de57459 | ||
|
|
de2405b35a | ||
|
|
a7f977836a | ||
|
|
f59e4a88c6 | ||
|
|
c755bd0358 | ||
|
|
536523ffd7 | ||
|
|
ca82fc2f03 | ||
|
|
d1411c42d6 | ||
|
|
9d770af5f4 | ||
|
|
d1ff6a323a | ||
|
|
112ea1759a | ||
|
|
76bafbef2a | ||
|
|
1947ec88f1 | ||
|
|
d0956f1e43 | ||
|
|
6996c7718e | ||
|
|
45d56d8e05 | ||
|
|
53295d38b7 | ||
|
|
bd9c843fd1 | ||
|
|
f812b9b26c | ||
|
|
52851a3ba4 | ||
|
|
b1bf115fa2 | ||
|
|
0f25ef365d | ||
|
|
55ea4b6fc0 | ||
|
|
5ef8cccf21 | ||
|
|
5613d96001 | ||
|
|
5d9ba8c1a2 | ||
|
|
0de232bf54 | ||
|
|
db5b887824 | ||
|
|
634bdb8b3b | ||
|
|
9c579a37bb | ||
|
|
1502acd83e | ||
|
|
ef3430f669 | ||
|
|
01af64cf1f | ||
|
|
349f52a1a5 | ||
|
|
850aa1963f | ||
|
|
185d0c3c1c | ||
|
|
3656443b1f | ||
|
|
6748b9699f | ||
|
|
dc91d7aec4 | ||
|
|
13a51ba4c2 | ||
|
|
749dad1309 | ||
|
|
7a07d7c188 | ||
|
|
53c95abfb2 | ||
|
|
7fd2ae4ffd | ||
|
|
717ac3f7fe | ||
|
|
50fa7234ea | ||
|
|
80b4055eab | ||
|
|
94b7c8d5e6 | ||
|
|
580ec26885 | ||
|
|
6ba5d80a20 | ||
|
|
d58b9de63b | ||
|
|
99a93b5add | ||
|
|
de50539c02 | ||
|
|
04cf08b93b | ||
|
|
2c5b52eb6c | ||
|
|
dd8150d98d | ||
|
|
99662d7711 | ||
|
|
5f3ad87a98 | ||
|
|
83d05f9170 | ||
|
|
0d56818664 | ||
|
|
5b0cd5a911 | ||
|
|
102b99a17b | ||
|
|
6222d00ffc | ||
|
|
73370f5f39 | ||
|
|
883ce6e440 | ||
|
|
f320f5f710 | ||
|
|
32b531667a | ||
|
|
c47dae77a4 | ||
|
|
53160d134e | ||
|
|
619defd748 | ||
|
|
40db2b3c2a | ||
|
|
b05ccee0f0 | ||
|
|
d722fa59ca | ||
|
|
60065614bd | ||
|
|
05b39a9bdb | ||
|
|
91ab644173 | ||
|
|
083fcd6491 | ||
|
|
7e9e7d77d1 | ||
|
|
66ee644130 | ||
|
|
c20b8982bc | ||
|
|
15bb8f712d | ||
|
|
d48e9ef8b1 | ||
|
|
acd28b5dc4 | ||
|
|
1fe4863039 | ||
|
|
d347da963b | ||
|
|
930bb9c6d1 | ||
|
|
676c3ed505 | ||
|
|
2d3588fa51 | ||
|
|
4835945c09 | ||
|
|
82bff9f407 | ||
|
|
3b6d8756ea | ||
|
|
d1bb30afae | ||
|
|
7a1d64637d | ||
|
|
5f85d27671 | ||
|
|
5d828b5fcf | ||
|
|
c2f6c6c1d2 | ||
|
|
7726cffdab | ||
|
|
3570013496 | ||
|
|
2401a163fe | ||
|
|
e8d802c5e1 | ||
|
|
dca4167de6 | ||
|
|
6d0b6e5de5 | ||
|
|
fd6bf06f15 | ||
|
|
d2e11ea61d | ||
|
|
dad2b93d1e | ||
|
|
1075ca69b0 | ||
|
|
e29f5c5474 | ||
|
|
22bfa6638a | ||
|
|
1a48941f6b | ||
|
|
68e0c94dbb | ||
|
|
ca04fc745d | ||
|
|
3afead1827 | ||
|
|
0ea69dab7b | ||
|
|
a4a025b786 | ||
|
|
328c3a39a1 | ||
|
|
5aa019a0b5 | ||
|
|
92aa99104a | ||
|
|
6b544bc3c2 | ||
|
|
ea0005e16d | ||
|
|
6901ad361d | ||
|
|
b21cccf5f0 | ||
|
|
7740035d14 | ||
|
|
7dc3934997 | ||
|
|
845e15876c | ||
|
|
c4e7a7992f | ||
|
|
43ab84397b | ||
|
|
0840c9248f | ||
|
|
dd79d75504 | ||
|
|
7073f0b58b | ||
|
|
15916bfbdc | ||
|
|
228fdbef5a | ||
|
|
7f7f8fb156 | ||
|
|
2ae9735858 | ||
|
|
8ac1688c89 | ||
|
|
9cd2dbc9e7 | ||
|
|
a74055bc33 | ||
|
|
e1d0b9370e | ||
|
|
5dfa28059e | ||
|
|
7ead45d899 | ||
|
|
5c9ac72c19 | ||
|
|
343cafef34 | ||
|
|
95a01f3c8f | ||
|
|
cfa367f14c | ||
|
|
94cae410f3 | ||
|
|
cc69afc4fe | ||
|
|
777a559e12 | ||
|
|
0427ccbb55 | ||
|
|
f9a4699147 | ||
|
|
e6e287ae1f | ||
|
|
143602e5f6 | ||
|
|
1c2d3583e7 | ||
|
|
e58110da2c | ||
|
|
0d1683edc8 | ||
|
|
c94b9e504d | ||
|
|
8be3bf3e5d | ||
|
|
3e165297ce | ||
|
|
7ac922def6 | ||
|
|
f12127c775 | ||
|
|
73d84fe136 | ||
|
|
c595448f9c | ||
|
|
5a2aeb1511 | ||
|
|
5fb9d9aa38 | ||
|
|
8258961c29 | ||
|
|
0dab94a54c | ||
|
|
3097f71abd | ||
|
|
ea5e1b70db | ||
|
|
6b393d35a9 | ||
|
|
a5dde6021c | ||
|
|
a015472739 | ||
|
|
6affa4452b | ||
|
|
7ebfa380dd | ||
|
|
370336e7c7 | ||
|
|
bad4269dc9 | ||
|
|
effe6f47a3 | ||
|
|
7eb3a5a17d | ||
|
|
b6cd723eb7 | ||
|
|
a2cd8c8a8d | ||
|
|
3b03bd6a10 | ||
|
|
6caff2d85d | ||
|
|
eeaa241be8 | ||
|
|
8fdb4d2a17 | ||
|
|
7c7f744b4c | ||
|
|
5718ea41df | ||
|
|
20c83ba605 | ||
|
|
e9e32f980b | ||
|
|
4b2cc49aaa | ||
|
|
28f65c07b0 | ||
|
|
18279c3867 | ||
|
|
d1c9bca2e9 | ||
|
|
49973b85da | ||
|
|
47373c4f68 | ||
|
|
cbf1dbaa2e | ||
|
|
fdaa79416a | ||
|
|
7c3700c190 | ||
|
|
a0e1f9113e | ||
|
|
133b682793 | ||
|
|
824f4ee566 | ||
|
|
1cb9b65744 | ||
|
|
35dde5de15 | ||
|
|
4d9bb19467 | ||
|
|
2555353161 | ||
|
|
73a9c8bcb8 | ||
|
|
47b652c76e | ||
|
|
0b044b785a | ||
|
|
ddff3561e3 | ||
|
|
c4dfdfa849 | ||
|
|
08251dcc98 | ||
|
|
57d53c70e3 | ||
|
|
4e77ee4516 | ||
|
|
6291be256b | ||
|
|
e756f7d619 | ||
|
|
cf3d30d4e4 | ||
|
|
585191310b | ||
|
|
530bbfc9ac | ||
|
|
a521fa4165 | ||
|
|
0f76f77173 | ||
|
|
c743ebf211 | ||
|
|
04ce9ecf16 | ||
|
|
bde5921258 | ||
|
|
89ae02976f | ||
|
|
d8382acc74 | ||
|
|
749c44fe27 | ||
|
|
88ec924323 | ||
|
|
7ff069a2e1 | ||
|
|
8e05c8bee8 | ||
|
|
0fa3c15114 | ||
|
|
58667673d9 | ||
|
|
a53a9aa293 | ||
|
|
09402223e8 | ||
|
|
4f947015d2 | ||
|
|
9f3a7543aa | ||
|
|
7ae6805698 | ||
|
|
1401c44a79 | ||
|
|
40ea5987b2 | ||
|
|
6920f039eb | ||
|
|
ff00354305 | ||
|
|
f9c63a142b | ||
|
|
3733fe3997 | ||
|
|
7e3128f097 | ||
|
|
727472d5bd | ||
|
|
3616a23bdd | ||
|
|
f13262d87e | ||
|
|
f71cd494de | ||
|
|
264c065006 | ||
|
|
07c89c71d8 | ||
|
|
19c67db731 | ||
|
|
294da72d11 | ||
|
|
847b6daa34 | ||
|
|
807a0b8dbd | ||
|
|
c3a1473419 | ||
|
|
29707e66e6 | ||
|
|
a97b652046 | ||
|
|
91b46b305d | ||
|
|
fbe66f54aa | ||
|
|
ff03fe7e41 | ||
|
|
06fd1aa9f8 | ||
|
|
5942a6d6c1 | ||
|
|
a781736fb7 | ||
|
|
feabc032f6 | ||
|
|
9f9f7bf95a | ||
|
|
02f638ad2b | ||
|
|
e95effb043 | ||
|
|
7a1a5a6f01 | ||
|
|
bfefe7f262 | ||
|
|
44e8dcd331 | ||
|
|
3580811f8e | ||
|
|
35cf20640f | ||
|
|
eff36003db | ||
|
|
0eab394c24 | ||
|
|
028e1f36a1 | ||
|
|
f59e9baab9 | ||
|
|
1c6f685522 | ||
|
|
c8a36c9889 | ||
|
|
521d09b6d0 | ||
|
|
3efb0bf5cf | ||
|
|
003c4d776f | ||
|
|
00dea8a082 | ||
|
|
7f195b2f23 | ||
|
|
ecc2fbca98 | ||
|
|
631acd529d | ||
|
|
369f1709be | ||
|
|
1505cc3d81 | ||
|
|
78ae6d3bea | ||
|
|
ea81321ccb | ||
|
|
1977d3beb3 | ||
|
|
285984196d | ||
|
|
5f8e6c85e4 | ||
|
|
e01ccb14af | ||
|
|
86b7ae6d21 |
8
.clang-format
Normal file
8
.clang-format
Normal file
@@ -0,0 +1,8 @@
|
||||
# Use the Google style with these modifications:
|
||||
#
|
||||
# 1) lines can be up to 100 chars long rather than 80, and
|
||||
# 2) use a four space indent rather than two spaces.
|
||||
#
|
||||
BasedOnStyle: Google
|
||||
ColumnLimit: 100
|
||||
IndentWidth: 4
|
||||
25
.gitattributes
vendored
Normal file
25
.gitattributes
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
.travis.yml export-ignore
|
||||
fish.spec.in export-ignore
|
||||
/build_tools/make_svn_completions.fish export-ignore
|
||||
/build_tools/description-pak export-ignore
|
||||
/build_tools/make_hg_completions.fish export-ignore
|
||||
/build_tools/make_vcs_completions.fish export-ignore
|
||||
/build_tools/make_vcs_completions_generic.fish export-ignore
|
||||
/build_tools/osx_package_resources export-ignore
|
||||
/build_tools/osx_package_resources/terminal_logo.png export-ignore
|
||||
/build_tools/osx_package_resources/welcome.rtf export-ignore
|
||||
/build_tools/make_csv_completions.fish export-ignore
|
||||
/build_tools/osx_distribution.xml export-ignore
|
||||
/build_tools/make_tarball.sh export-ignore
|
||||
/build_tools/make_deb.sh export-ignore
|
||||
/build_tools/osx_package_scripts export-ignore
|
||||
/build_tools/osx_package_scripts/add-shell export-ignore
|
||||
/build_tools/osx_package_scripts/postinstall export-ignore
|
||||
/build_tools/make_pkg.sh export-ignore
|
||||
/build_tools/make_darcs_completions.fish export-ignore
|
||||
/debian export-ignore
|
||||
/debian/* export-ignore
|
||||
/.github export-ignore
|
||||
/.github/* export-ignore
|
||||
40
.github/ISSUE_TEMPLATE.md
vendored
Normal file
40
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
<!--
|
||||
Thanks for helping to make fish better!
|
||||
|
||||
If you are asking for help with fish, or you've found a bug:
|
||||
- Make sure it's not a known or solved issue, by searching https://github.com/fish-shell/fish-shell/issues
|
||||
- Fill in the following information carefully:
|
||||
|
||||
-->
|
||||
|
||||
[Please include a short description of the problem here]
|
||||
|
||||
### Reproduction Steps:
|
||||
|
||||
1. [First Step]
|
||||
2. [Second Step]
|
||||
3. [Other Steps...]
|
||||
|
||||
### Expected behavior:
|
||||
|
||||
[Describe expected behavior here]
|
||||
|
||||
### Observed behavior:
|
||||
|
||||
[Describe observed behavior here]
|
||||
|
||||
### Additional information:
|
||||
|
||||
[ Other useful information, such as:
|
||||
When did this problem start?
|
||||
Does this happen all the time?
|
||||
Has anything changed on your system recently?
|
||||
]
|
||||
|
||||
|
||||
---
|
||||
Fish version: [from the output of fish --version]
|
||||
|
||||
Operating system: [your operating system and how you installed fish e.g. Homebrew, Ubuntu PPA, distribution package]
|
||||
|
||||
Terminal or terminal emulator: [e.g. PuTTy, iTerm2, GNOME Terminal, VT220]
|
||||
43
.gitignore
vendored
Normal file
43
.gitignore
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
*.o
|
||||
*~
|
||||
*.exe
|
||||
*.xccheckout
|
||||
|
||||
.DS_Store
|
||||
Makefile
|
||||
autom4te.cache/
|
||||
build/
|
||||
command_list.txt
|
||||
command_list_toc.txt
|
||||
confdefs.h
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
doc/
|
||||
doc.h
|
||||
doc_src/commands.hdr
|
||||
doc_src/index.hdr
|
||||
po/*.gmo
|
||||
fish
|
||||
fish_indent
|
||||
fish_tests
|
||||
fish.pc
|
||||
seq
|
||||
set_color
|
||||
share/__fish_build_paths.fish
|
||||
share/man/
|
||||
toc.txt
|
||||
user_doc/
|
||||
xcuserdata
|
||||
test/
|
||||
FISH-BUILD-VERSION-FILE
|
||||
version
|
||||
messages.pot
|
||||
lexicon.txt
|
||||
lexicon_filter
|
||||
lexicon.log
|
||||
DerivedData/
|
||||
compile_commands.json
|
||||
xcodebuild.log
|
||||
8
.oclint
Normal file
8
.oclint
Normal file
@@ -0,0 +1,8 @@
|
||||
rules:
|
||||
rule-configurations:
|
||||
# This is the default value (as of the time I wrote this) but I'm making
|
||||
# it explicit since it needs to agree with the value used by clang-format.
|
||||
# Thus, if we ever change the fish style to allow longer lines this should
|
||||
# be changed (as well as the corresponding clang-format config).
|
||||
- key: LONG_LINE
|
||||
value: 100
|
||||
63
.travis.yml
Normal file
63
.travis.yml
Normal file
@@ -0,0 +1,63 @@
|
||||
language: cpp
|
||||
sudo: false
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- bc
|
||||
- expect
|
||||
- gettext
|
||||
- libncurses5-dev
|
||||
|
||||
- os: linux
|
||||
compiler: clang
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-precise-3.8
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- clang-3.8
|
||||
- llvm-3.8 # for llvm-symbolizer
|
||||
- bc
|
||||
- expect
|
||||
- gettext
|
||||
- libncurses5-dev
|
||||
env:
|
||||
- CXXFLAGS="-g -fno-omit-frame-pointer -fsanitize=address"
|
||||
- ASAN_OPTIONS=check_initialization_order=1:detect_stack_use_after_return=1:detect_leaks=1
|
||||
before_install: export CXX=clang++-3.8
|
||||
|
||||
- os: osx
|
||||
before_install:
|
||||
- brew update
|
||||
- brew install pcre2 # use system PCRE2
|
||||
|
||||
fast_finish: true
|
||||
|
||||
script:
|
||||
- autoreconf
|
||||
- ./configure --prefix=$HOME/prefix || cat config.log
|
||||
- make -j2
|
||||
- make install
|
||||
- make test DESTDIR=$HOME/prefix/ SHOW_INTERACTIVE_LOG=1
|
||||
|
||||
notifications:
|
||||
# Some items are encrypted so that notifications from other repositories
|
||||
# don't flood the official repositories.
|
||||
irc:
|
||||
channels:
|
||||
#- "irc.oftc.net#fish"
|
||||
secure: "eRk9KGZ5+mrlD2SoI8yg2Sp8OYrh7YPyGe3WCDQUwTnNgNDII34rbM9a6UOA/l7AeWSNY8joLq5xVLCU4wpFgUcJ11SYIpMnLosZK29OW4ubDOHmdBDvJ971rLgAVG9cXngZtIxEVVxN/jnS1Qr8GKZx4DjkaTMgz1pemb4WxCc="
|
||||
template:
|
||||
- "%{repository}#%{build_number} (%{commit} on %{branch} by %{author}): %{message} Details at %{build_url}"
|
||||
use_notice: true
|
||||
skip_join: true
|
||||
webhooks:
|
||||
urls:
|
||||
#- https://webhooks.gitter.im/e/61821cec3015bf0f8bb1
|
||||
secure: fPfOmxnC3MCsfR1oocVFeWLawGcRZkn+8fNHlSOeZ+SqqoZfcCHgQTvQ22TqmVl1yvkXbNlaXjo6dbVzTOAh7r7H0bRMEKBVh3dQS7wqjB1sKivpXd8PAS3BTj5MQpGeJzdHnDuwVlwDktGtfHfhGeq1Go/4IosOq8u+6RTe28g=
|
||||
401
CHANGELOG.md
Normal file
401
CHANGELOG.md
Normal file
@@ -0,0 +1,401 @@
|
||||
# fish 2.3.0 (released May 20, 2016)
|
||||
|
||||
There are no significant changes between 2.3.0 and 2.3b2.
|
||||
|
||||
## Other notable fixes and improvements
|
||||
|
||||
- `abbr` now allows non-letter keys (#2996).
|
||||
- Define a few extra colours on first start (#2987).
|
||||
- Multiple documentation updates.
|
||||
- Added completions for rmmod (#3007).
|
||||
- Improved completions for git (#2998).
|
||||
|
||||
## Known issues
|
||||
|
||||
- Interactive commands started from fish configuration files or from the `-c` option may, under certain circumstances, be started with incorrect terminal modes and fail to behave as expected. A fix is planned but requires further testing (#2619).
|
||||
|
||||
---
|
||||
|
||||
# fish 2.3b2 (released May 5, 2016)
|
||||
|
||||
## Significant changes
|
||||
|
||||
- A new `fish_realpath` builtin and associated function to allow the use of `realpath` even on those platforms that don't ship an appropriate command (#2932).
|
||||
- Alt-# toggles the current command line between commented and uncommented states, making it easy to save a command in history without executing it.
|
||||
- The `fish_vi_mode` function is now deprecated in favour of `fish_vi_key_bindings`.
|
||||
|
||||
## Other notable fixes and improvements
|
||||
|
||||
- Fix the build on Cygwin (#2952) and RedHat Enterprise Linux/CentOS 5 (#2955).
|
||||
- Avoid confusing the terminal line driver with non-printing characters in `fish_title` (#2453).
|
||||
- Improved completions for busctl, git (#2585, #2879, #2984), and netctl.
|
||||
|
||||
---
|
||||
|
||||
# fish 2.3b1 (released April 19, 2016)
|
||||
|
||||
## Significant Changes
|
||||
|
||||
- A new `string` builtin to handle... strings! This builtin will measure, split, search and replace text strings, including using regular expressions. It can also be used to turn lists into plain strings using `join`. `string` can be used in place of `sed`, `grep`, `tr`, `cut`, and `awk` in many situations. (#2296)
|
||||
- Allow using escape as the Meta modifier key, by waiting after seeing an escape character wait up to 300ms for an additional character. This is consistent with readline (e.g. bash) and can be configured via the `fish_escape_delay_ms variable`. This allows using escape as the Meta modifier. (#1356)
|
||||
- Add new directories for vendor functions and configuration snippets (#2500)
|
||||
- A new `fish_realpath` builtin and associated `realpath` function should allow scripts to resolve path names via `realpath` regardless of whether there is an external command of that name; albeit with some limitations. See the associated documentation.
|
||||
|
||||
## Backward-incompatible changes
|
||||
|
||||
- Unmatched globs will now cause an error, except when used with `for`, `set` or `count` (#2719)
|
||||
- `and` and `or` will now bind to the closest `if` or `while`, allowing compound conditions without `begin` and `end` (#1428)
|
||||
- `set -ql` now searches up to function scope for variables (#2502)
|
||||
- `status -f` will now behave the same when run as the main script or using `source` (#2643)
|
||||
- `source` no longer puts the file name in `$argv` if no arguments are given (#139)
|
||||
- History files are stored under the `XDG_DATA_HOME` hierarchy (by default, in `~/.local/share`), and existing history will be moved on first use (#744)
|
||||
|
||||
## Other notable fixes and improvements
|
||||
|
||||
- Fish no longer silences errors in config.fish (#2702)
|
||||
- Directory autosuggestions will now descend as far as possible if there is only one child directory (#2531)
|
||||
- Add support for bright colors (#1464)
|
||||
- Allow Ctrl-J (\cj) to be bound separately from Ctrl-M (\cm) (#217)
|
||||
- psub now has a "-s"/"–suffix" option to name the temporary file with that suffix
|
||||
- Enable 24-bit colors on select terminals (#2495)
|
||||
- Support for SVN status in the prompt (#2582)
|
||||
- Mercurial and SVN support have been added to the Classic + Git (now Classic + VCS) prompt (via the new \__fish_vcs_prompt function) (#2592)
|
||||
- export now handles variables with a "=" in the value (#2403)
|
||||
- New completions for:
|
||||
- alsactl
|
||||
- Archlinux's asp, makepkg
|
||||
- Atom's apm (#2390)
|
||||
- entr - the "Event Notify Test Runner" (#2265)
|
||||
- Fedora's dnf (#2638)
|
||||
- OSX diskutil (#2738)
|
||||
- pkgng (#2395)
|
||||
- pulseaudio's pacmd and pactl
|
||||
- rust's rustc and cargo (#2409)
|
||||
- sysctl (#2214)
|
||||
- systemd's machinectl (#2158), busctl (#2144), systemd-nspawn, systemd-analyze, localectl, timedatectl
|
||||
- and more
|
||||
- Fish no longer has a function called sgrep, freeing it for user customization (#2245)
|
||||
- A rewrite of the completions for cd, fixing a few bugs (#2299, #2300, #562)
|
||||
- Linux VTs now run in a simplified mode to avoid issues (#2311)
|
||||
- The vi-bindings now inherit from the emacs bindings
|
||||
- Fish will also execute `fish_user_key_bindings` when in vi-mode
|
||||
- `funced` will now also check $VISUAL (#2268)
|
||||
- A new `suspend` function (#2269)
|
||||
- Subcommand completion now works better with split /usr (#2141)
|
||||
- The command-not-found-handler can now be overridden by defining a function called `__fish_command_not_found_handler` in config.fish (#2332)
|
||||
- A few fixes to the Sorin theme
|
||||
- PWD shortening in the prompt can now be configured via the `fish_prompt_pwd_dir_length` variable, set to the length per path component (#2473)
|
||||
- fish no longer requires `/etc/fish/config.fish` to correctly start, and now ships a skeleton file that only contains some documentation (#2799)
|
||||
|
||||
---
|
||||
|
||||
# fish 2.2.0 (released July 12, 2015)
|
||||
|
||||
### Significant changes ###
|
||||
|
||||
* Abbreviations: the new `abbr` command allows for interactively-expanded abbreviations, allowing quick access to frequently-used commands (#731).
|
||||
* Vi mode: run `fish_vi_mode` to switch fish into the key bindings and prompt familiar to users of the Vi editor (#65).
|
||||
* New inline and interactive pager, which will be familiar to users of zsh (#291).
|
||||
* Underlying architectural changes: the `fishd` universal variable server has been removed as it was a source of many bugs and security problems. Notably, old fish sessions will not be able to communicate universal variable changes with new fish sessions. For best results, restart all running instances of `fish`.
|
||||
* The web-based configuration tool has been redesigned, featuring a prompt theme chooser and other improvements.
|
||||
* New German, Brazilian Portuguese, and Chinese translations.
|
||||
|
||||
### Backward-incompatible changes ###
|
||||
|
||||
These are kept to a minimum, but either change undocumented features or are too hard to use in their existing forms. These changes may break existing scripts.
|
||||
|
||||
* `commandline` no longer interprets functions "in reverse", instead behaving as expected (#1567).
|
||||
* The previously-undocumented `CMD_DURATION` variable is now set for all commands and contains the execution time of the last command in milliseconds (#1585). It is no longer exported to other commands (#1896).
|
||||
* `if` / `else` conditional statements now return values consistent with the Single Unix Specification, like other shells (#1443).
|
||||
* A new "top-level" local scope has been added, allowing local variables declared on the commandline to be visible to subsequent commands. (#1908)
|
||||
|
||||
### Other notable fixes and improvements ###
|
||||
|
||||
* New documentation design (#1662), which requires a Doxygen version 1.8.7 or newer to build.
|
||||
* Fish now defines a default directory for other packages to provide completions. By default this is `/usr/share/fish/vendor-completions.d`; on systems with `pkgconfig` installed this path is discoverable with `pkg-config --variable completionsdir fish`.
|
||||
* A new parser removes many bugs; all existing syntax should keep working.
|
||||
* New `fish_preexec` and `fish_postexec` events are fired before and after job execution respectively (#1549).
|
||||
* Unmatched wildcards no longer prevent a job from running. Wildcards used interactively will still print an error, but the job will proceed and the wildcard will expand to zero arguments (#1482).
|
||||
* The `.` command is deprecated and the `source` command is preferred (#310).
|
||||
* `bind` supports "bind modes", which allows bindings to be set for a particular named mode, to support the implementation of Vi mode.
|
||||
* A new `export` alias, which behaves like other shells (#1833).
|
||||
* `command` has a new `--search` option to print the name of the disk file that would be executed, like other shells' `command -v` (#1540).
|
||||
* `commandline` has a new `--paging-mode` option to support the new pager.
|
||||
* `complete` has a new `--wraps` option, which allows a command to (recursively) inherit the completions of a wrapped command (#393), and `complete -e` now correctly erases completions (#380).
|
||||
* Completions are now generated from manual pages by default on the first run of fish (#997).
|
||||
* `fish_indent` can now produce colorized (`--ansi`) and HTML (`--html`) output (#1827).
|
||||
* `functions --erase` now prevents autoloaded functions from being reloaded in the current session.
|
||||
* `history` has a new `--merge` option, to incorporate history from other sessions into the current session (#825).
|
||||
* `jobs` returns 1 if there are no active jobs (#1484).
|
||||
* `read` has several new options:
|
||||
* `--array` to break input into an array (#1540)
|
||||
* `--null` to break lines on NUL characters rather than newlines (#1694)
|
||||
* `--nchars` to read a specific number of characters (#1616)
|
||||
* `--right-prompt` to display a right-hand-side prompt during interactive read (#1698).
|
||||
* `type` has a new `-q` option to suppress output (#1540 and, like other shells, `type -a` now prints all matches for a command (#261).
|
||||
* Pressing F1 now shows the manual page for the current command (#1063).
|
||||
* `fish_title` functions have access to the arguments of the currently running argument as `$argv[1]` (#1542).
|
||||
* The OS command-not-found handler is used on Arch Linux (#1925), nixOS (#1852), openSUSE and Fedora (#1280).
|
||||
* `Alt`+`.` searches backwards in the token history, mapping to the same behavior as inserting the last argument of the previous command, like other shells (#89).
|
||||
* The `SHLVL` environment variable is incremented correctly (#1634 & #1693).
|
||||
* Added completions for `adb` (#1165 & #1211), `apt` (#2018), `aura` (#1292), `composer` (#1607), `cygport` (#1841), `dropbox` (#1533), `elixir` (#1167), `fossil`, `heroku` (#1790), `iex` (#1167), `kitchen` (#2000), `nix` (#1167), `node`/`npm` (#1566), `opam` (#1615), `setfacl` (#1752), `tmuxinator` (#1863), and `yast2` (#1739).
|
||||
* Improved completions for `brew` (#1090 & #1810), `bundler` (#1779), `cd` (#1135), `emerge` (#1840),`git` (#1680, #1834 & #1951), `man` (#960), `modprobe` (#1124), `pacman` (#1292), `rpm` (#1236), `rsync` (#1872), `scp` (#1145), `ssh` (#1234), `sshfs` (#1268), `systemctl` (#1462, #1950 & #1972), `tmux` (#1853), `vagrant` (#1748), `yum` (#1269), and `zypper` (#1787).
|
||||
|
||||
---
|
||||
|
||||
# fish 2.1.2 (released Feb 24, 2015)
|
||||
|
||||
fish 2.1.2 contains a workaround for a filesystem bug in Mac OS X Yosemite. #1859
|
||||
|
||||
Specifically, after installing fish 2.1.1 and then rebooting, "Verify Disk" in Disk Utility will report "Invalid number of hard links." We don't have any reports of data loss or other adverse consequences. fish 2.1.2 avoids triggering the bug, but does not repair an already affected filesystem. To repair the filesystem, you can boot into Recovery Mode and use Repair Disk from Disk Utility. Linux and versions of OS X prior to Yosemite are believed to be unaffected.
|
||||
|
||||
There are no other changes in this release.
|
||||
|
||||
---
|
||||
|
||||
# fish 2.1.1 (released September 26, 2014)
|
||||
|
||||
__Important:__ if you are upgrading, stop all running instances of `fishd` as soon as possible after installing this release; it will be restarted automatically. On most systems, there will be no further action required. Note that some environments (where `XDG_RUNTIME_DIR` is set), such as Fedora 20, will require a restart of all running fish processes before universal variables work as intended.
|
||||
|
||||
Distributors are highly encouraged to call `killall fishd`, `pkill fishd` or similar in installation scripts, or to warn their users to do so.
|
||||
|
||||
### Security fixes
|
||||
* The fish_config web interface now uses an authentication token to protect requests and only responds to requests from the local machine with this token, preventing a remote code execution attack. (closing CVE-2014-2914). #1438
|
||||
* `psub` and `funced` are no longer vulnerable to attacks which allow local privilege escalation and data tampering (closing CVE-2014-2906 and CVE-2014-3856). #1437
|
||||
* `fishd` uses a secure path for its socket, preventing a local privilege escalation attack (closing CVE-2014-2905). #1436
|
||||
* `__fish_print_packages` is no longer vulnerable to attacks which would allow local privilege escalation and data tampering (closing CVE-2014-3219). #1440
|
||||
|
||||
### Other fixes
|
||||
* `fishd` now ignores SIGPIPE, fixing crashes using tools like GNU Parallel and which occurred more often as a result of the other `fishd` changes. #1084 & #1690
|
||||
|
||||
---
|
||||
|
||||
# fish 2.1.0
|
||||
|
||||
Significant Changes
|
||||
-------------------
|
||||
|
||||
* **Tab completions will fuzzy-match files.** #568
|
||||
|
||||
When tab-completing a file, fish will first attempt prefix matches (`foo` matches `foobar`), then substring matches (`ooba` matches `foobar`), and lastly subsequence matches (`fbr` matches `foobar`). For example, in a directory with files foo1.txt, foo2.txt, foo3.txt…, you can type only the numeric part and hit tab to fill in the rest.
|
||||
|
||||
This feature is implemented for files and executables. It is not yet implemented for options (like `--foobar`), and not yet implemented across path components (like `/u/l/b` to match `/usr/local/bin`).
|
||||
|
||||
* **Redirections now work better across pipelines.** #110, #877
|
||||
|
||||
In particular, you can pipe stderr and stdout together, for example, with `cmd ^&1 | tee log.txt`, or the more familiar `cmd 2>&1 | tee log.txt`.
|
||||
|
||||
* **A single `%` now expands to the last job backgrounded.** #1008
|
||||
|
||||
Previously, a single `%` would pid-expand to either all backgrounded jobs, or all jobs owned by your user. Now it expands to the last job backgrounded. If no job is in the background, it will fail to expand. In particular, `fg %` can be used to put the most recent background job in the foreground.
|
||||
|
||||
Other Notable Fixes
|
||||
-------------------
|
||||
|
||||
* alt-U and alt+C now uppercase and capitalize words, respectively. #995
|
||||
|
||||
* VTE based terminals should now know the working directory. #906
|
||||
|
||||
* The autotools build now works on Mavericks. #968
|
||||
|
||||
* The end-of-line binding (ctrl+E) now accepts autosuggestions. #932
|
||||
|
||||
* Directories in `/etc/paths` (used on OS X) are now prepended instead of appended, similar to other shells. #927
|
||||
|
||||
* Option-right-arrow (used for partial autosuggestion completion) now works on iTerm2. #920
|
||||
|
||||
* Tab completions now work properly within nested subcommands. #913
|
||||
|
||||
* `printf` supports \e, the escape character. #910
|
||||
|
||||
* `fish_config history` no longer shows duplicate items. #900
|
||||
|
||||
* `$fish_user_paths` is now prepended to $PATH instead of appended. #888
|
||||
|
||||
* Jobs complete when all processes complete. #876
|
||||
|
||||
|
||||
For example, in previous versions of fish, `sleep 10 | echo Done` returns control immediately, because echo does not read from stdin. Now it does not complete until sleep exits (presumably after 10 seconds).
|
||||
|
||||
* Better error reporting for square brackets. #875
|
||||
|
||||
* fish no longer tries to add `/bin` to `$PATH` unless PATH is totally empty. #852
|
||||
|
||||
* History token substitution (alt-up) now works correctly inside subshells. #833
|
||||
|
||||
* Flow control is now disabled, freeing up ctrl-S and ctrl-Q for other uses. #814
|
||||
|
||||
* sh-style variable setting like `foo=bar` now produces better error messages. #809
|
||||
|
||||
* Commands with wildcards no longer produce autosuggestions. #785
|
||||
|
||||
* funced no longer freaks out when supplied with no arguments. #780
|
||||
|
||||
* fish.app now works correctly in a directory containing spaces. #774
|
||||
|
||||
* Tab completion cycling no longer occasionally fails to repaint. #765
|
||||
|
||||
* Comments now work in eval'd strings. #684
|
||||
|
||||
* History search (up-arrow) now shows the item matching the autosuggestion, if that autosuggestion was truncated. #650
|
||||
|
||||
* Ctrl-T now transposes characters, as in other shells. #128
|
||||
|
||||
---
|
||||
|
||||
# fish 2.0.0
|
||||
|
||||
Significant Changes
|
||||
-------------------
|
||||
|
||||
* **Command substitutions now modify `$status` #547.**
|
||||
Previously the exit status of command substitutions (like `(pwd)`) was ignored; however now it modifies $status. Furthermore, the `set` command now only sets $status on failure; it is untouched on success. This allows for the following pattern:
|
||||
|
||||
```sh
|
||||
if set python_path (which python)
|
||||
...
|
||||
end
|
||||
```
|
||||
Because set does not modify $status on success, the if branch effectively tests whether `which` succeeded, and if so, whether the `set` also succeeded.
|
||||
* **Improvements to $PATH handling.**
|
||||
* There is a new variable, `$fish_user_paths`, which can be set universally, and whose contents are appended to $PATH #527
|
||||
* /etc/paths and /etc/paths.d are now respected on OS X
|
||||
* fish no longer modifies $PATH to find its own binaries
|
||||
* **Long lines no longer use ellipsis for line breaks**, and copy and paste
|
||||
should no longer include a newline even if the line was broken #300
|
||||
* **New syntax for index ranges** (sometimes known as "slices") #212
|
||||
* **fish now supports an `else if` statement** #134
|
||||
* **Process and pid completion now works on OS X** #129
|
||||
* **fish is now relocatable**, and no longer depends on compiled-in paths #125
|
||||
* **fish now supports a right prompt (RPROMPT)** through the fish_right_prompt function #80
|
||||
* **fish now uses posix_spawn instead of fork when possible**, which is much faster on BSD and OS X #11
|
||||
|
||||
Other Notable Fixes
|
||||
-------------------
|
||||
|
||||
* Updated VCS completions (darcs, cvs, svn, etc.)
|
||||
* Avoid calling getcwd on the main thread, as it can hang #696
|
||||
* Control-D (forward delete) no longer stops at a period #667
|
||||
* Completions for many new commands
|
||||
* fish now respects rxvt's unique keybindings #657
|
||||
* xsel is no longer built as part of fish. It will still be invoked if installed separately #633
|
||||
* __fish_filter_mime no longer spews #628
|
||||
* The --no-execute option to fish no longer falls over when reaching the end of a block #624
|
||||
* fish_config knows how to find fish even if it's not in the $PATH #621
|
||||
* A leading space now prevents writing to history, as is done in bash and zsh #615
|
||||
* Hitting enter after a backslash only goes to a new line if it is followed by whitespace or the end of the line #613
|
||||
* printf is now a builtin #611
|
||||
* Event handlers should no longer fire if signals are blocked #608
|
||||
* set_color is now a builtin #578
|
||||
* man page completions are now located in a new generated_completions directory, instead of your completions directory #576
|
||||
* tab now clears autosuggestions #561
|
||||
* tab completion from within a pair of quotes now attempts to "appropriate" the closing quote #552
|
||||
* $EDITOR can now be a list: for example, `set EDITOR gvim -f`) #541
|
||||
* `case` bodies are now indented #530
|
||||
* The profile switch `-p` no longer crashes #517
|
||||
* You can now control-C out of `read` #516
|
||||
* `umask` is now functional on OS X #515
|
||||
* Avoid calling getpwnam on the main thread, as it can hang #512
|
||||
* Alt-F or Alt-right-arrow (Option-F or option-right-arrow) now accepts one word of an autosuggestion #435
|
||||
* Setting fish as your login shell no longer kills OpenSUSE #367
|
||||
* Backslashes now join lines, instead of creating multiple commands #347
|
||||
* echo now implements the -e flag to interpret escapes #337
|
||||
* When the last token in the user's input contains capital letters, use its case in preference to that of the autosuggestion #335
|
||||
* Descriptions now have their own muted color #279
|
||||
* Wildcards beginning with a . (for example, `ls .*`) no longer match . and .. #270
|
||||
* Recursive wildcards now handle symlink loops #268
|
||||
* You can now delete history items from the fish_config web interface #250
|
||||
* The OS X build now weak links `wcsdup` and `wcscasecmp` #240
|
||||
* fish now saves and restores the process group, which prevents certain processes from being erroneously reported as stopped #197
|
||||
* funced now takes an editor option #187
|
||||
* Alternating row colors are available in fish pager through `fish_pager_color_secondary` #186
|
||||
* Universal variable values are now stored based on your MAC address, not your hostname #183
|
||||
* The caret ^ now only does a stderr redirection if it is the first character of a token, making git users happy #168
|
||||
* Autosuggestions will no longer cause line wrapping #167
|
||||
* Better handling of Unicode combining characters #155
|
||||
* fish SIGHUPs processes more often #138
|
||||
* fish no longer causes `sudo` to ask for a password every time
|
||||
* fish behaves better under Midnight Commander #121
|
||||
* `set -e` no longer crashes #100
|
||||
* fish now will automatically import history from bash, if there is no fish history #66
|
||||
* Backslashed-newlines inside quoted strings now behave more intuitively #52
|
||||
* Tab titles should be shown correctly in iTerm2 #47
|
||||
* scp remote path completion now sometimes works #42
|
||||
* The `read` builtin no longer shows autosuggestions #29
|
||||
* Custom key bindings can now be set via the `fish_user_key_bindings` function #21
|
||||
* All Python scripts now run correctly under both Python 2 and Python 3 #14
|
||||
* The "accept autosuggestion" key can now be configured #19
|
||||
* Autosuggestions will no longer suggest invalid commands #6
|
||||
|
||||
---
|
||||
|
||||
# fishfish Beta r2
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
* **Implicit cd** is back, for paths that start with one or two dots, a slash, or a tilde.
|
||||
* **Overrides of default functions should be fixed.** The "internalized scripts" feature is disabled for now.
|
||||
* **Disabled delayed suspend.** This is a strange job-control feature of BSD systems, including OS X. Disabling it frees up Control Y for other purposes; in particular, for yank, which now works on OS X.
|
||||
* **fish_indent is fixed.** In particular, the `funced` and `funcsave` functions work again.
|
||||
* A SIGTERM now ends the whole execution stack again (resolving #13).
|
||||
* Bumped the __fish_config_interactive version number so the default fish_color_autosuggestion kicks in.
|
||||
* fish_config better handles combined term256 and classic colors like "555 yellow".
|
||||
|
||||
New Features
|
||||
------------
|
||||
|
||||
* **A history builtin**, and associated interactive function that enables deleting history items. Example usage:
|
||||
* Print all history items beginning with echo: `history --prefix echo`
|
||||
* Print all history items containing foo: `history --contains foo`
|
||||
* Interactively delete some items containing foo: `history --delete --contains foo`
|
||||
|
||||
Credit to @siteshwar for implementation. Thanks @siteshwar!
|
||||
|
||||
---
|
||||
|
||||
# fishfish Beta r1
|
||||
|
||||
## Scripting
|
||||
* No changes! All existing fish scripts, config files, completions, etc. from trunk should continue to work.
|
||||
|
||||
## New Features
|
||||
* **Autosuggestions**. Think URL fields in browsers. When you type a command, fish will suggest the rest of the command after the cursor, in a muted gray when possible. You can accept the suggestion with the right arrow key or Ctrl-F. Suggestions come from command history, completions, and some custom code for cd; there's a lot of potential for improvement here. The suggestions are computed on a background pthread, so they never slow down your typing. The autosuggestion feature is incredible. I miss it dearly every time I use anything else.
|
||||
|
||||
* **term256 support** where available, specifically modern xterms and OS X Lion. You can specify colors the old way ('set_color cyan') or by specifying RGB hex values ('set_color FF3333'); fish will pick the closest supported color. Some xterms do not advertise term256 support either in the $TERM or terminfo max_colors field, but nevertheless support it. For that reason, fish will default into using it on any xterm (but it can be disabled with an environment variable).
|
||||
|
||||
* **Web-based configuration** page. There is a new function 'fish_config'. This spins up a simple Python web server and opens a browser window to it. From this web page, you can set your shell colors and view your functions, variables, and history; all changes apply immediately to all running shells. Eventually all configuration ought to be supported via this mechanism (but in addition to, not instead of, command line mechanisms).
|
||||
|
||||
* **Man page completions**. There is a new function 'fish_update_completions'. This function reads all the man1 files from your manpath, removes the roff formatting, parses them to find the commands and options, and outputs fish completions into ~/.config/fish/completions. It won't overwrite existing completion files (except ones that it generated itself).
|
||||
|
||||
## Programmatic Changes
|
||||
* fish is now entirely in C++. I have no particular love for C++, but it provides a ready memory-model to replace halloc. We've made an effort to keep it to a sane and portable subset (no C++11, no boost, no going crazy with templates or smart pointers), but we do use the STL and a little tr1.
|
||||
* halloc is entirely gone, replaced by normal C++ ownership semantics. If you don't know what halloc is, well, now you have two reasons to be happy.
|
||||
* All the crufty C data structures are entirely gone. array_list_t, priority_queue_t, hash_table_t, string_buffer_t have been removed and replaced by STL equivalents like std::vector, std::map, and std::wstring. A lot of the string handling now uses std::wstring instead of wchar_t *
|
||||
* fish now spawns pthreads for tasks like syntax highlighting that require blocking I/O.
|
||||
* History has been completely rewritten. History files now use an extensible YAML-style syntax. History "merging" (multiple shells writing to the same history file) now works better. There is now a maximum history length of about 250k items (256 * 1024).
|
||||
* The parser has been "instanced," so you can now create more than one.
|
||||
* Total #LoC has shrunk slightly even with the new features.
|
||||
|
||||
## Performance
|
||||
* fish now runs syntax highlighting in a background thread, so typing commands is always responsive even on slow filesystems.
|
||||
* echo, test, and pwd are now builtins, which eliminates many forks.
|
||||
* The files in share/functions and share/completions now get 'internalized' into C strings that get compiled in with fish. This substantially reduces the number of files touched at startup. A consequence is that you cannot change these functions without recompiling, but often other functions depend on these "standard" functions, so changing them is perhaps not a good idea anyways.
|
||||
|
||||
Here are some system call counts for launching and then exiting fish with the default configuration, on OS X. The first column is fish trunk, the next column is with our changes, and the last column is bash for comparison. This data was collected via dtrace.
|
||||
|
||||
<table>
|
||||
<tr> <th> <th> before <th> after <th> bash
|
||||
<tr> <th> open <td> 9 <td> 4 <td> 5
|
||||
<tr> <th> fork <td> 28 <td> 14 <td> 0
|
||||
<tr> <th> stat <td> 131 <td> 85 <td> 11
|
||||
<tr> <th> lstat <td> 670 <td> 0 <td> 0
|
||||
<tr> <th> read <td> 332 <td> 80 <td> 4
|
||||
<tr> <th> write <td> 172 <td> 149 <td> 0
|
||||
</table>
|
||||
|
||||
The large number of forks relative to bash are due to fish's insanely expensive default prompt, which is unchanged in my version. If we switch to a prompt comparable to bash's (lame) default, the forks drop to 16 with trunk, 4 after our changes.
|
||||
|
||||
The large reduction in lstat() numbers is due to fish no longer needing to call ttyname() on OS X.
|
||||
|
||||
We've got some work to do to be as lean as bash, but we're on the right track.
|
||||
153
CONTRIBUTING.md
Normal file
153
CONTRIBUTING.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# Guidelines For Developers
|
||||
|
||||
This document provides guidelines for making changes to the fish-shell project. This includes rules for how to format the code, naming conventions, etc. It also includes recommended best practices such as creating a Travis-CI account so you can verify your changes pass all the tests before making a pull-request.
|
||||
|
||||
See the bottom of this document for help on installing the linting and style reformatting tools discussed in the following sections.
|
||||
|
||||
## Lint Free Code
|
||||
|
||||
Automated analysis tools like cppcheck and oclint can point out potential bugs. They also help ensure the code has a consistent style and that it avoids patterns that tend to confuse people.
|
||||
|
||||
Ultimately we want lint free code. However, at the moment a lot of cleanup is required to reach that goal. For now simply try to avoid introducing new lint.
|
||||
|
||||
To make linting the code easy there are two make targets: `lint` and `lint-all`. The latter does just what the name implies. The former will lint any modified but not committed `*.cpp` files. If there is no uncommitted work it will lint the files in the most recent commit.
|
||||
|
||||
### Dealing With Lint Warnings
|
||||
|
||||
You are strongly encouraged to address a lint warning by refactoring the code, changing variable names, or whatever action is implied by the warning.
|
||||
|
||||
### Suppressing Lint Warnings
|
||||
|
||||
Once in a while the lint tools emit a false positive warning. For example, cppcheck might suggest a memory leak is present when that is not the case. To suppress that cppcheck warning you should insert a line like the following immediately prior to the line cppcheck warned about:
|
||||
|
||||
```
|
||||
// cppcheck-suppress memleak // addr not really leaked
|
||||
```
|
||||
|
||||
The explanatory portion of the suppression comment is optional. For other types of warnings replace "memleak" with the value inside the parenthesis (e.g., "nullPointerRedundantCheck") from a warning like the following:
|
||||
|
||||
```
|
||||
[src/complete.cpp:1727]: warning (nullPointerRedundantCheck): Either the condition 'cmd_node' is redundant or there is possible null pointer dereference: cmd_node.
|
||||
```
|
||||
|
||||
Suppressing oclint warnings is more complicated to describe so I'll refer you to the [OCLint HowTo](http://docs.oclint.org/en/latest/howto/suppress.html#annotations) on the topic.
|
||||
|
||||
## Ensuring Your Changes Conform to the Style Guides
|
||||
|
||||
The following sections discuss the specific rules for the style that should be used when writing fish code. To ensure your changes conform to the style rules you simply need to run
|
||||
|
||||
```
|
||||
make style
|
||||
```
|
||||
|
||||
before commiting your change. If you've already committed your changes that's okay since it will then check the files in the most recent commit. This can be useful after you've merged someone elses change and want to check that it's style is acceptable.
|
||||
|
||||
If you want to check the style of the entire code base run
|
||||
|
||||
```
|
||||
make style-all
|
||||
```
|
||||
|
||||
### Suppressing Reformatting of the Code
|
||||
|
||||
If you have a good reason for doing so you can tell `clang-format` to not reformat a block of code by enclosing it in comments like this:
|
||||
|
||||
```
|
||||
// clang-format off
|
||||
code to ignore
|
||||
// clang-format on
|
||||
```
|
||||
|
||||
## Fish Script Style Guide
|
||||
|
||||
Fish scripts such as those in the *share/functions* and *tests* directories should be formatted using the `fish_indent` command.
|
||||
|
||||
Function names should be all lowercase with undescores separating words. Private functions should begin with an underscore. The first word should be `fish` if the function is unique to fish.
|
||||
|
||||
The first word of global variable names should generally be `fish` for public vars or `_fish` for private vars to minimize the possibility of name clashes with user defined vars.
|
||||
|
||||
## C++ Style Guide
|
||||
|
||||
1. The [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) forms the basis of the fish C++ style guide. There are two major deviations for the fish project. First, a four, rather than two, space indent. Second, line lengths up to 100, rather than 80, characters.
|
||||
|
||||
1. The `clang-format` command is authoritative with respect to indentation, whitespace around operators, etc. **Note**: this rule should be ignored at this time. After the code is cleaned up this rule will become mandatory.
|
||||
|
||||
1. All names in code should be `small_snake_case`. No Hungarian notation is used. Classes and structs names should be followed by `_t`.
|
||||
|
||||
1. Always attach braces to the surrounding context.
|
||||
|
||||
1. Indent with spaces, not tabs and use four spaces per indent.
|
||||
|
||||
1. Comments should always use the C++ style; i.e., each line of the comment should begin with a `//` and should be limited to 100 characters. Comments that do not begin a line should be separated from the previous text by two spaces.
|
||||
|
||||
## Testing
|
||||
|
||||
The source code for fish includes a large collection of tests. If you are making any changes to fish, running these tests is highly recommended to make sure the behaviour remains consistent.
|
||||
|
||||
You are also strongly encouraged to add tests when changing the functionality of fish. Especially if you are fixing a bug to help ensure there are no regressions in the future (i.e., we don't reintroduce the bug).
|
||||
|
||||
### Local testing
|
||||
|
||||
The tests can be run on your local computer on all operating systems.
|
||||
|
||||
Running the tests is only supported from the autotools build and not xcodebuild. On OS X, you will need to install autoconf — we suggest using [Homebrew](http://brew.sh/) to install these tools.
|
||||
|
||||
autoconf
|
||||
./configure
|
||||
make test [gmake on BSD]
|
||||
|
||||
### Travis CI Build and Test
|
||||
|
||||
The Travis Continuous Integration services can be used to test your changes using multiple configurations. This is the same service that the fish shell project uses to ensure new changes haven't broken anything. Thus it is a really good idea that you leverage Travis CI before making a pull-request to avoid embarrasment at breaking the build.
|
||||
|
||||
You will need to [fork the fish-shell repository on GitHub](https://help.github.com/articles/fork-a-repo/). Then setup Travis to test your changes before you make a pull-request:
|
||||
|
||||
1. [Sign in to Travis CI](https://travis-ci.org/auth) with your GitHub account, accepting the GitHub access permissions confirmation.
|
||||
1. Once you're signed in, and your repositories are synchronised, go to your [profile page](https://travis-ci.org/profile) and enable the fish-shell repository.
|
||||
1. Push your changes to GitHub.
|
||||
|
||||
You'll receive an email when the tests are complete telling you whether or not any tests failed.
|
||||
|
||||
You'll find the configuration used to control Travis in the `.travis.yml` file.
|
||||
|
||||
## Installing the Required Tools
|
||||
|
||||
### Installing the Linting Tools
|
||||
|
||||
To install the lint checkers on Mac OS X using HomeBrew:
|
||||
|
||||
```
|
||||
brew tap oclint/formulae
|
||||
brew install oclint
|
||||
brew install cppcheck
|
||||
```
|
||||
|
||||
To install the lint checkers on Linux distros that use Apt:
|
||||
|
||||
```
|
||||
sudo apt-get install clang
|
||||
sudo apt-get install oclint
|
||||
sudo apt-get install cppcheck
|
||||
```
|
||||
|
||||
### Installing the Reformatting Tools
|
||||
|
||||
To install the reformatting tool on Mac OS X using HomeBrew:
|
||||
|
||||
```
|
||||
brew install clang-format
|
||||
```
|
||||
|
||||
To install the reformatting tool on Linux distros that use Apt:
|
||||
|
||||
```
|
||||
apt-cache search clang-format
|
||||
```
|
||||
|
||||
That will list the versions available. Pick the newest one available (3.6 for Ubuntu 14.04 as I write this) and install it:
|
||||
|
||||
```
|
||||
sudo apt-get install clang-format-3.6
|
||||
sudo ln -s /usr/bin/clang-format-3.6 /usr/bin/clang-format
|
||||
|
||||
```
|
||||
19
COPYING
Normal file
19
COPYING
Normal file
@@ -0,0 +1,19 @@
|
||||
Fish is a smart and user-friendly command line shell.
|
||||
|
||||
Copyright (C) 2005-2009 Axel Liljencrantz
|
||||
|
||||
fish is free software.
|
||||
|
||||
Most of fish is licensed under the GNU General Public License version 2, and
|
||||
you can redistribute it and/or modify it under the terms of the GNU GPL as
|
||||
published by the Free Software Foundation.
|
||||
|
||||
fish also includes software licensed under the GNU Lesser General Public
|
||||
License version 2, the OpenBSD license and the ISC license.
|
||||
|
||||
Full licensing information is contained in doc_src/license.hdr.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
19
Dockerfile
Normal file
19
Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
||||
FROM centos:latest
|
||||
|
||||
# Build dependency
|
||||
RUN yum update -y &&\
|
||||
yum install -y autoconf automake bc clang gcc-c++ make ncurses-devel &&\
|
||||
yum clean all
|
||||
|
||||
# Test dependency
|
||||
RUN yum install -y expect vim-common
|
||||
|
||||
ADD . /src
|
||||
WORKDIR /src
|
||||
|
||||
# Build fish
|
||||
RUN autoreconf &&\
|
||||
./configure &&\
|
||||
make &&\
|
||||
make install
|
||||
|
||||
2357
Doxyfile.help
Normal file
2357
Doxyfile.help
Normal file
File diff suppressed because it is too large
Load Diff
2390
Doxyfile.user
2390
Doxyfile.user
File diff suppressed because it is too large
Load Diff
68
INSTALL
68
INSTALL
@@ -1,68 +0,0 @@
|
||||
|
||||
Known issues
|
||||
============
|
||||
|
||||
Older versions of Doxygen has bugs in the man-page generation which
|
||||
cause the builtin help to render incorrectly. Version 1.2.14 is known
|
||||
to have this problem.
|
||||
|
||||
In version 1.9.2, the installation prefix for fish rpms and debs has
|
||||
changed from /usr/local to /usr. The package should automatically
|
||||
change any instances of /usr/local/bin/fish in /etc/passwd to
|
||||
/usr/bin/fish, but some programs, like screen, may need to be
|
||||
restarted to notice the changes. You may also run into problems when
|
||||
switching between using a package and personal builds.
|
||||
|
||||
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
Fish requires the following packages to build:
|
||||
|
||||
- Doxygen
|
||||
- Curses or Ncurses
|
||||
|
||||
fish also relies on standard unix tools such as cat, cut, grep, sed,
|
||||
whoami and echo. Fish does not support cross-compilation, separate
|
||||
build directories or any other fancy configure options. Use a recent
|
||||
version of Doxygen, since older versions have bugs that make the
|
||||
builtin help pages render incorrectly. Version 1.2.14 is known to be
|
||||
broken.
|
||||
|
||||
|
||||
Simple install procedure
|
||||
========================
|
||||
|
||||
If you have downloaded the darcs repository of fish, you need to run
|
||||
autoconf.
|
||||
|
||||
% ./configure
|
||||
% make # Compile fish
|
||||
% make install # Install fish
|
||||
% echo /usr/local/bin/fish >>/etc/shells # Add fish to list of shells
|
||||
|
||||
If you wish to use fish as your default shell, use the following
|
||||
command:
|
||||
|
||||
% chsh -s /usr/local/bin/fish
|
||||
|
||||
chsh will prompt you for your password, and change your default shell.
|
||||
|
||||
|
||||
Local install procedure
|
||||
=======================
|
||||
|
||||
If you have downloaded the darcs repository of fish, you need to run
|
||||
autoconf first.
|
||||
|
||||
To install fish in your own home directory (typically as non-root),
|
||||
type:
|
||||
|
||||
% ./configure --prefix=$HOME
|
||||
% make # Compile fish
|
||||
% make install # Install fish
|
||||
|
||||
You will not be able to use fish as the default shell unless you also
|
||||
add the corresponding line to /etc/shells, which mostly defeats the
|
||||
point of a local install. As a workaround, you can add fish as the
|
||||
last command of the init files for your regular shell.
|
||||
1335
Makefile.in
1335
Makefile.in
File diff suppressed because it is too large
Load Diff
15
README
15
README
@@ -1,15 +0,0 @@
|
||||
How to find documentation for fish
|
||||
==================================
|
||||
|
||||
The fish documentation is distributed in an intermediate format. To
|
||||
view it, you have to type:
|
||||
|
||||
% make user_doc
|
||||
|
||||
Which will create the directory user_doc, containing html
|
||||
documentation for fish. If you build and install fish, the
|
||||
documentation will be available through the 'help' builtin.
|
||||
|
||||
After installation, you can start fish by typing fish in the
|
||||
terminal. After fish has started, try using the help command for more
|
||||
information.
|
||||
101
README.md
Normal file
101
README.md
Normal file
@@ -0,0 +1,101 @@
|
||||
[fish](http://fishshell.com/) - the friendly interactive shell [](https://travis-ci.org/fish-shell/fish-shell)
|
||||
================================================
|
||||
|
||||
fish is a smart and user-friendly command line shell for OS X, Linux, and the rest of the family. fish includes features like syntax highlighting, autosuggest-as-you-type, and fancy tab completions that just work, with no configuration required.
|
||||
|
||||
For more on fish's design philosophy, see the [design document](http://fishshell.com/docs/current/design.html).
|
||||
|
||||
## Quick Start
|
||||
|
||||
fish generally works like other shells, like bash or zsh. A few important differences can be found at <http://fishshell.com/docs/current/tutorial.html> by searching for the magic phrase "unlike other shells".
|
||||
|
||||
Detailed user documentation is available by running `help` within fish, and also at <http://fishshell.com/docs/current/index.html>
|
||||
|
||||
## Building
|
||||
|
||||
fish is written in a sane subset of C++98, with a few components from C++TR1. It builds successfully with g++ 4.2 or later, and with clang. It also will build as C++11.
|
||||
|
||||
fish can be built using autotools or Xcode. autoconf 2.60 or later is required to build from git versions, but is not required for releases.
|
||||
|
||||
fish depends on a curses implementation, such as ncurses. The headers and libraries are required for building.
|
||||
|
||||
fish requires PCRE2 due to the regular expression support contained in the `string` builtin. A copy is included with the source code, and will be used automatically if it does not already exist on your system.
|
||||
|
||||
fish requires gettext for translation support.
|
||||
|
||||
Building the documentation requires Doxygen 1.8.7 or newer.
|
||||
|
||||
### Autotools Build
|
||||
|
||||
autoconf [if building from Git]
|
||||
./configure
|
||||
make [gmake on BSD]
|
||||
sudo make install
|
||||
|
||||
### Xcode Development Build
|
||||
|
||||
* Build the `base` target in Xcode
|
||||
* Run the fish executable, for example, in `DerivedData/fish/Build/Products/Debug/base/bin/fish`
|
||||
|
||||
### Xcode Build and Install
|
||||
|
||||
xcodebuild install
|
||||
sudo ditto /tmp/fish.dst /
|
||||
|
||||
## Help, it didn't build!
|
||||
|
||||
If fish reports that it could not find curses, try installing a curses development package and build again.
|
||||
|
||||
On Debian or Ubuntu you want:
|
||||
|
||||
sudo apt-get install build-essential ncurses-dev libncurses5-dev gettext autoconf
|
||||
|
||||
On RedHat, CentOS, or Amazon EC2:
|
||||
|
||||
sudo yum install ncurses-devel
|
||||
|
||||
## Runtime Dependencies
|
||||
|
||||
fish requires a curses implementation, such as ncurses, to run.
|
||||
|
||||
fish requires PCRE2 due to the regular expression support contained in the `string` builtin. A bundled version will be compiled in automatically at build time if required.
|
||||
|
||||
fish requires a number of utilities to operate, which should be present on any Unix, GNU/Linux or OS X system. These include (but are not limited to) hostname, grep, awk, sed, which, and getopt. fish also requires the bc program.
|
||||
|
||||
Translation support requires the gettext program.
|
||||
|
||||
Some optional features of fish, such as the manual page completion parser and the web configuration tool, require Python.
|
||||
|
||||
In order to generate completions from man pages compressed with either lzma or xz, you may need to install an extra Python package. Python versions prior to 2.6 are not supported. For Python versions 2.6 to 3.2 you need to install the module `backports.lzma`. How to install it depends on your system and how you installed Python. Most Linux distributions should include it as a package named `backports-lzma` (or similar). From version 3.3 onwards, Python already includes the required module.
|
||||
|
||||
## Packages for Linux
|
||||
|
||||
Instructions on how to find builds for several Linux distros are at <https://github.com/fish-shell/fish-shell/wiki/Nightly-builds>
|
||||
|
||||
## Switching to fish
|
||||
|
||||
If you wish to use fish as your default shell, use the following command:
|
||||
|
||||
chsh -s /usr/local/bin/fish
|
||||
|
||||
chsh will prompt you for your password, and change your default shell. Substitute "/usr/local/bin/fish" with whatever path to fish is in your /etc/shells file.
|
||||
|
||||
Use the following command if you didn't already add your fish path to /etc/shells.
|
||||
|
||||
echo /usr/local/bin/fish | sudo tee -a /etc/shells
|
||||
|
||||
To switch your default shell back, you can run:
|
||||
|
||||
chsh -s /bin/bash
|
||||
|
||||
Substitute /bin/bash with /bin/tcsh or /bin/zsh as appropriate.
|
||||
|
||||
## Contributing Changes to the Code
|
||||
|
||||
See the [Guide for Developers](CONTRIBUTING.md).
|
||||
|
||||
## Contact Us
|
||||
|
||||
Questions, comments, rants and raves can be posted to the official fish mailing list at <https://lists.sourceforge.net/lists/listinfo/fish-users> or join us on our [gitter.im channel](https://gitter.im/fish-shell/fish-shell) or IRC channel [#fish at irc.oftc.net](https://webchat.oftc.net/?channels=fish). Or use the [fish tag on Stackoverflow](https://stackoverflow.com/questions/tagged/fish).
|
||||
|
||||
Found a bug? Have an awesome idea? Please open an issue on this github page.
|
||||
144
build_tools/build_documentation.sh
Executable file
144
build_tools/build_documentation.sh
Executable file
@@ -0,0 +1,144 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This script is run as part of the build process
|
||||
|
||||
if test $# -eq 0
|
||||
then
|
||||
# Use fish's defaults
|
||||
DOXYFILE=Doxyfile.help
|
||||
INPUTDIR=doc_src
|
||||
OUTPUTDIR=share
|
||||
echo "Using defaults: $0 ${DOXYFILE} ${INPUTDIR} ${OUTPUTDIR}"
|
||||
elif test $# -eq 3
|
||||
then
|
||||
DOXYFILE="$1"
|
||||
INPUTDIR="$2"
|
||||
OUTPUTDIR="$3"
|
||||
else
|
||||
echo "Usage: $0 doxygen_file input_directory output_directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Determine which man pages we don't want to generate.
|
||||
# on OS X, don't make a man page for open, since we defeat fish's open function on OS X.
|
||||
CONDEMNED_PAGES=
|
||||
if test `uname` = 'Darwin'; then
|
||||
CONDEMNED_PAGES="$CONDEMNED_PAGES open.1"
|
||||
fi
|
||||
|
||||
# Helper function to turn a relative path into an absolute path
|
||||
resolve_path()
|
||||
{
|
||||
D=`command dirname "$1"`
|
||||
B=`command basename "$1"`
|
||||
echo "`cd \"$D\" 2>/dev/null && pwd || echo \"$D\"`/$B"
|
||||
}
|
||||
|
||||
# Expand relative paths
|
||||
DOXYFILE=`resolve_path "$DOXYFILE"`
|
||||
INPUTDIR=`resolve_path "$INPUTDIR"`
|
||||
INPUTFILTER=`resolve_path "$INPUT_FILTER"`
|
||||
OUTPUTDIR=`resolve_path "$OUTPUTDIR"`
|
||||
|
||||
echo " doxygen file: $DOXYFILE"
|
||||
echo " input directory: $INPUTDIR"
|
||||
echo " input filter: $INPUTFILTER"
|
||||
echo " output directory: $OUTPUTDIR"
|
||||
echo " skipping: $CONDEMNED_PAGES"
|
||||
|
||||
# Make sure INPUTDIR is found
|
||||
if test ! -d "$INPUTDIR"; then
|
||||
echo >&2 "Could not find input directory '${INPUTDIR}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure doxygen is found
|
||||
DOXYGENPATH=`command -v doxygen`
|
||||
if test -z "$DOXYGENPATH" ; then
|
||||
for i in /usr/local/bin/doxygen /opt/bin/doxygen /Applications/Doxygen.app/Contents/Resources/doxygen ~/Applications/Doxygen.app/Contents/Resources/doxygen ; do
|
||||
if test -f "$i"; then
|
||||
DOXYGENPATH="$i"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if test -z "$DOXYGENPATH"; then
|
||||
echo >&2 "doxygen is not installed, so documentation will not be built."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check we have the lexicon filter
|
||||
if test -z "$INPUT_FILTER"; then
|
||||
echo >&2 "Lexicon filter is not available. Continuing without."
|
||||
INPUTFILTER=''
|
||||
fi
|
||||
|
||||
# Determine where our output should go
|
||||
if ! mkdir -p "${OUTPUTDIR}" ; then
|
||||
echo "Could not create output directory '${OUTPUTDIR}'"
|
||||
fi
|
||||
|
||||
# Make a temporary directory
|
||||
TMPLOC=`mktemp -d -t fish_doc_build_XXXXXX` || { echo >&2 "Could not build documentation because mktemp failed"; exit 1; }
|
||||
|
||||
# Copy stuff to the temp directory
|
||||
for i in "$INPUTDIR"/*.txt; do
|
||||
INPUTFILE=$TMPLOC/`basename $i .txt`.doxygen
|
||||
echo "/** \page" `basename $i .txt` > $INPUTFILE
|
||||
cat $i >>$INPUTFILE
|
||||
echo "*/" >>$INPUTFILE
|
||||
done
|
||||
|
||||
# Make some extra stuff to pass to doxygen
|
||||
# Input is kept as . because we cd to the input directory beforehand
|
||||
# This prevents doxygen from generating "documentation" for intermediate directories
|
||||
DOXYPARAMS=$(cat <<EOF
|
||||
PROJECT_NUMBER=$PROJECT_NUMBER
|
||||
INPUT_FILTER=$INPUTFILTER
|
||||
INPUT=.
|
||||
OUTPUT_DIRECTORY=$OUTPUTDIR
|
||||
QUIET=YES
|
||||
EOF
|
||||
);
|
||||
|
||||
# echo "$DOXYPARAMS"
|
||||
|
||||
# Clear out the output directory first
|
||||
find "${OUTPUTDIR}" -name "*.1" -delete
|
||||
|
||||
# Run doxygen
|
||||
cd "$TMPLOC"
|
||||
(cat "${DOXYFILE}" ; echo "$DOXYPARAMS";) | "$DOXYGENPATH" -
|
||||
|
||||
# Remember errors
|
||||
RESULT=$?
|
||||
|
||||
cd "${OUTPUTDIR}/man/man1/"
|
||||
if test "$RESULT" = 0 ; then
|
||||
|
||||
# Postprocess the files
|
||||
for i in "$INPUTDIR"/*.txt; do
|
||||
# It would be nice to use -i here for edit in place, but that is not portable
|
||||
CMD_NAME=`basename "$i" .txt`;
|
||||
sed < ${CMD_NAME}.1 > ${CMD_NAME}.1.tmp \
|
||||
-e "/.SH \"$CMD_NAME/d" \
|
||||
-e "s/^$CMD_NAME * \\\- \([^ ]*\) /\\\fB\1\\\fP -/"
|
||||
mv "${CMD_NAME}.1.tmp" "${CMD_NAME}.1"
|
||||
done
|
||||
|
||||
# Erase condemned pages
|
||||
rm -f $CONDEMNED_PAGES
|
||||
fi
|
||||
|
||||
# Destroy TMPLOC
|
||||
echo "Cleaning up '$TMPLOC'"
|
||||
rm -Rf "$TMPLOC"
|
||||
|
||||
if test "$RESULT" = 0; then
|
||||
# Tell the user what we did
|
||||
echo "Output man pages into '${OUTPUTDIR}'"
|
||||
else
|
||||
echo "Doxygen failed. See the output log for details."
|
||||
fi
|
||||
exit $RESULT
|
||||
3
build_tools/cppcheck.sh
Executable file
3
build_tools/cppcheck.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/usr/local/bin/fish
|
||||
|
||||
cppcheck --enable=all --std=posix --quiet .
|
||||
3
build_tools/description-pak
Normal file
3
build_tools/description-pak
Normal file
@@ -0,0 +1,3 @@
|
||||
This is the_ridiculous'fish s delightful fork of, fish friendly interactive shell. For more information, visit http://ridiculousfish.com/shell/ .
|
||||
|
||||
This installer will install fish, but will not modify your /etc/shells file or your default shell. I trust you know how to do that yourself if you care to!
|
||||
28
build_tools/git_version_gen.sh
Executable file
28
build_tools/git_version_gen.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
# Originally from the git sources (GIT-VERSION-GEN)
|
||||
# Presumably (C) Junio C Hamano <junkio@cox.net>
|
||||
# Reused under GPL v2.0
|
||||
# Modified for fish by David Adam <zanchey@ucc.gu.uwa.edu.au>
|
||||
|
||||
FBVF=FISH-BUILD-VERSION-FILE
|
||||
DEF_VER=unknown
|
||||
|
||||
# First see if there is a version file (included in release tarballs),
|
||||
# then try git-describe, then default.
|
||||
if test -f version
|
||||
then
|
||||
VN=$(cat version) || VN="$DEF_VER"
|
||||
elif ! VN=$(git describe --always --dirty 2>/dev/null); then
|
||||
VN="$DEF_VER"
|
||||
fi
|
||||
|
||||
if test -r $FBVF
|
||||
then
|
||||
VC=$(sed -e 's/^FISH_BUILD_VERSION = //' <$FBVF)
|
||||
else
|
||||
VC=unset
|
||||
fi
|
||||
test "$VN" = "$VC" || {
|
||||
echo >&2 "FISH_BUILD_VERSION = $VN"
|
||||
echo "FISH_BUILD_VERSION = $VN" >$FBVF
|
||||
}
|
||||
4
build_tools/iwyu.sh
Executable file
4
build_tools/iwyu.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
# Reminder of how to run Include What You Use
|
||||
|
||||
make iwyu
|
||||
100
build_tools/lint.fish
Executable file
100
build_tools/lint.fish
Executable file
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This is meant to be run by "make lint" or "make lint-all". It is not meant to
|
||||
# be run directly from a shell prompt.
|
||||
#
|
||||
set cppchecks warning,performance,portability,information,missingInclude
|
||||
set cppcheck_args
|
||||
set c_files
|
||||
set all no
|
||||
|
||||
set -gx CXX $argv[1]
|
||||
set -e argv[1]
|
||||
|
||||
if test "$argv[1]" = "--all"
|
||||
set all yes
|
||||
set cppchecks "$cppchecks,unusedFunction"
|
||||
set -e argv[1]
|
||||
end
|
||||
|
||||
# We only want -D and -I options to be passed thru to cppcheck.
|
||||
for arg in $argv
|
||||
if string match -q -- '-D*' $arg
|
||||
set cppcheck_args $cppcheck_args $arg
|
||||
else if string match -q -- '-I*' $arg
|
||||
set cppcheck_args $cppcheck_args $arg
|
||||
end
|
||||
end
|
||||
if test (uname -m) = "x86_64"
|
||||
set cppcheck_args -D__x86_64__ -D__LP64__ $cppcheck_args
|
||||
end
|
||||
|
||||
if test $all = yes
|
||||
set c_files src/*.cpp
|
||||
else
|
||||
# We haven't been asked to lint all the source. If there are uncommitted
|
||||
# changes lint those, else lint the files in the most recent commit.
|
||||
set pending (git status --porcelain --short --untracked-files=all | sed -e 's/^ *//')
|
||||
if set -q pending[1]
|
||||
# There are pending changes so lint those files.
|
||||
for arg in $pending
|
||||
set files $files (string split -m 1 ' ' $arg)[2]
|
||||
end
|
||||
else
|
||||
# No pending changes so lint the files in the most recent commit.
|
||||
set files (git show --word-diff=porcelain --name-only --pretty=oneline head)[2..-1]
|
||||
end
|
||||
|
||||
# Extract just the C/C++ files.
|
||||
set c_files (string match -r '.*\.c(?:pp)?$' -- $files)
|
||||
end
|
||||
|
||||
# We now have a list of files to check so run the linters.
|
||||
if set -q c_files[1]
|
||||
if type -q cppcheck
|
||||
echo
|
||||
echo ========================================
|
||||
echo Running cppcheck
|
||||
echo ========================================
|
||||
# The stderr to stdout redirection is because cppcheck, incorrectly
|
||||
# IMHO, writes its diagnostic messages to stderr. Anyone running
|
||||
# this who wants to capture its output will expect those messages to be
|
||||
# written to stdout.
|
||||
cppcheck -q --verbose --std=posix --std=c11 --language=c++ --template "[{file}:{line}]: {severity} ({id}): {message}" --suppress=missingIncludeSystem --inline-suppr --enable=$cppchecks $cppcheck_args $c_files 2>& 1
|
||||
end
|
||||
|
||||
if type -q oclint
|
||||
echo
|
||||
echo ========================================
|
||||
echo Running oclint
|
||||
echo ========================================
|
||||
# The stderr to stdout redirection is because oclint, incorrectly
|
||||
# writes its final summary counts of the errors detected to stderr.
|
||||
# Anyone running this who wants to capture its output will expect those
|
||||
# messages to be written to stdout.
|
||||
if test (uname -s) = "Darwin"
|
||||
if not test -f compile_commands.json
|
||||
xcodebuild > xcodebuild.log
|
||||
oclint-xcodebuild xcodebuild.log > /dev/null
|
||||
end
|
||||
if test $all = yes
|
||||
oclint-json-compilation-database -e '/pcre2-10.21/' -- -enable-global-analysis 2>& 1
|
||||
else
|
||||
set i_files
|
||||
for f in $c_files
|
||||
set i_files $i_files -i $f
|
||||
end
|
||||
echo oclint-json-compilation-database -e '/pcre2-10.21/' $i_files
|
||||
oclint-json-compilation-database -e '/pcre2-10.21/' $i_files 2>& 1
|
||||
end
|
||||
else
|
||||
# Presumably we're on Linux or other platform not requiring special
|
||||
# handling for oclint to work.
|
||||
oclint $c_files -- $argv 2>& 1
|
||||
end
|
||||
end
|
||||
else
|
||||
echo
|
||||
echo 'WARNING: No C/C++ files to check'
|
||||
echo
|
||||
end
|
||||
8
build_tools/make_csv_completions.fish
Executable file
8
build_tools/make_csv_completions.fish
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This file produces command specific completions for csv. Meant to be executed
|
||||
# from the root directory (so the completions get put in the right place).
|
||||
|
||||
. build_tools/make_vcs_completions_generic.fish
|
||||
|
||||
write_completions csv >share/completions/csv.fish
|
||||
12
build_tools/make_darcs_completions.fish
Executable file
12
build_tools/make_darcs_completions.fish
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This file produces command specific completions for darcs. Meant to be
|
||||
# executed from the root directory (so the completions get put in the right
|
||||
# place).
|
||||
|
||||
. build_tools/make_vcs_completions_generic.fish
|
||||
|
||||
set darcs_comp 'complete -c darcs -n "not __fish_use_subcommand" -a "(test -f _darcs/prefs/repos; and cat _darcs/prefs/repos)" --description "Darcs repo"'
|
||||
set darcs_comp $darcs_comp 'complete -c darcs -a "test predist boringfile binariesfile" -n "contains setpref (commandline -poc)" --description "Set the specified option" -x'
|
||||
|
||||
write_completions darcs $darcs_comp >share/completions/darcs.fish
|
||||
18
build_tools/make_deb.sh
Executable file
18
build_tools/make_deb.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Terminate on error
|
||||
set -e
|
||||
|
||||
sudo rm -Rf /tmp/fishfish
|
||||
mkdir /tmp/fishfish
|
||||
git archive --format=tar fish_fish | tar -x -C /tmp/fishfish
|
||||
mkdir /tmp/fishfish/doc-pak
|
||||
cp README INSTALL CHANGELOG release_notes.html /tmp/fishfish/doc-pak/
|
||||
cp build_tools/description-pak /tmp/fishfish/
|
||||
cd /tmp/fishfish
|
||||
autoconf
|
||||
./configure
|
||||
make -j 3
|
||||
sudo checkinstall --default --pakdir ~/fish_built/ --pkgversion 0.9 make install
|
||||
mv ~/fish_built/fishfish_0.9-1_i386.deb ~/fish_built/fishfish_0.9_i386.deb
|
||||
|
||||
8
build_tools/make_hg_completions.fish
Executable file
8
build_tools/make_hg_completions.fish
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This file produces command specific completions for hg. Meant to be executed
|
||||
# from the root directory (so the completions get put in the right place).
|
||||
|
||||
. build_tools/make_vcs_completions_generic.fish
|
||||
|
||||
write_completions hg >share/completions/hg.fish
|
||||
30
build_tools/make_pkg.sh
Executable file
30
build_tools/make_pkg.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
VERSION=`sed -E -n 's/^.*PACKAGE_VERSION "([0-9.]+)"/\1/p' osx/config.h`
|
||||
if test -z "$VERSION" ; then
|
||||
echo "Could not get version from osx/config.h"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Version is $VERSION"
|
||||
|
||||
set -x
|
||||
|
||||
make distclean
|
||||
rm -Rf /tmp/fish_pkg
|
||||
|
||||
#Exit on error
|
||||
set -e
|
||||
|
||||
mkdir -p /tmp/fish_pkg/root /tmp/fish_pkg/intermediates /tmp/fish_pkg/dst
|
||||
xcodebuild install -scheme install_tree -configuration Release DSTROOT=/tmp/fish_pkg/root/
|
||||
pkgbuild --scripts build_tools/osx_package_scripts --root /tmp/fish_pkg/root/ --identifier 'com.ridiculousfish.fish-shell-pkg' --version "$VERSION" /tmp/fish_pkg/intermediates/fish.pkg
|
||||
|
||||
productbuild --package-path /tmp/fish_pkg/intermediates --distribution build_tools/osx_distribution.xml --resources build_tools/osx_package_resources/ ~/fish_built/fish.pkg
|
||||
|
||||
|
||||
# Make the app
|
||||
xcodebuild -scheme fish.app -configuration Release DSTROOT=/tmp/fish_app/
|
||||
rm -f ~/fish_built/fish.app.zip
|
||||
cd DerivedData/fish/Build/Products/Release/
|
||||
zip -r ~/fish_built/fish.app.zip fish.app
|
||||
8
build_tools/make_svn_completions.fish
Executable file
8
build_tools/make_svn_completions.fish
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This file produces command specific completions for svn. Meant to be executed
|
||||
# from the root directory (so the completions get put in the right place).
|
||||
|
||||
. build_tools/make_vcs_completions_generic.fish
|
||||
|
||||
write_completions svn >share/completions/svn.fish
|
||||
58
build_tools/make_tarball.sh
Executable file
58
build_tools/make_tarball.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Script to generate a tarball
|
||||
# We use git to output a tree. But we also want to build the user documentation
|
||||
# and put that in the tarball, so that nobody needs to have doxygen installed
|
||||
# to build it.
|
||||
|
||||
# Exit on error
|
||||
set -e
|
||||
|
||||
# We wil generate a tarball with a prefix "fish"
|
||||
# git can do that automatically for us via git-archive
|
||||
# but to get the documentation in, we need to make a symlink called "fish"
|
||||
# and tar from that, so that the documentation gets the right prefix
|
||||
|
||||
# Get the current directory, which we'll use for symlinks
|
||||
wd="$PWD"
|
||||
|
||||
# The name of the prefix, which is the directory that you get when you untar
|
||||
prefix="fish"
|
||||
|
||||
# Get the version from git-describe
|
||||
VERSION=`git describe --dirty 2>/dev/null`
|
||||
prefix="$prefix-$VERSION"
|
||||
|
||||
# The path where we will output the tar file
|
||||
path=~/fish_built/$prefix.tar
|
||||
|
||||
# Clean up stuff we've written before
|
||||
rm -f "$path" "$path".gz
|
||||
|
||||
# git starts the archive
|
||||
git archive --format=tar --prefix="$prefix"/ HEAD > "$path"
|
||||
|
||||
# tarball out the documentation, generate a configure script and version file
|
||||
# Don't use autoreconf since it invokes commands that may not be installed, like aclocal
|
||||
# Don't run autoheader since configure.ac runs it. autoconf is enough.
|
||||
autoconf
|
||||
./configure --with-doxygen
|
||||
make doc share/man
|
||||
echo $VERSION > version
|
||||
cd /tmp
|
||||
rm -f "$prefix"
|
||||
ln -s "$wd" "$prefix"
|
||||
TAR_APPEND="gnutar --append --file=$path --mtime=now --owner=0 --group=0 --mode=g+w,a+rX"
|
||||
$TAR_APPEND --no-recursion "$prefix"/user_doc
|
||||
$TAR_APPEND "$prefix"/user_doc/html "$prefix"/share/man
|
||||
$TAR_APPEND "$prefix"/version
|
||||
$TAR_APPEND "$prefix"/configure "$prefix"/config.h.in
|
||||
rm -f "$prefix"/version
|
||||
rm -f "$prefix"
|
||||
|
||||
# gzip it
|
||||
gzip "$path"
|
||||
|
||||
# Output what we did, and the sha1 hash
|
||||
echo "Tarball written to $path".gz
|
||||
openssl sha1 "$path".gz
|
||||
9
build_tools/make_vcs_completions.fish
Executable file
9
build_tools/make_vcs_completions.fish
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This file produces command specific completions for hg, darcs and a
|
||||
# few other vcs systems.
|
||||
|
||||
build_tools/make_darcs_completions.fish
|
||||
build_tools/make_hg_completions.fish
|
||||
build_tools/make_svn_completions.fish
|
||||
build_tools/make_csv_completions.fish
|
||||
229
build_tools/make_vcs_completions_generic.fish
Executable file
229
build_tools/make_vcs_completions_generic.fish
Executable file
@@ -0,0 +1,229 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This file provides generic functions for generating specific completions for
|
||||
# hg, darcs and a few other vcs systems. It uses the fact that all these
|
||||
# systems have a somewhat uniform command line help mechanism.
|
||||
#
|
||||
|
||||
function cap
|
||||
set res (echo $argv |cut -c 1|tr a-z A-Z)(echo $argv |cut -c 2-)
|
||||
echo $res
|
||||
end
|
||||
|
||||
#
|
||||
# Escapes the single quote (') character and removes trailing whitespace from $argv
|
||||
#
|
||||
|
||||
function esc
|
||||
echo $argv | sed -e "s/\(['\\\]\)/\\\\\1/g" | sed -e 's/ *$//' | sed -e 's/ .*//'
|
||||
end
|
||||
|
||||
|
||||
#
|
||||
# This function formats a list of completion information into a set of fish completions
|
||||
#
|
||||
# The first argument is the condition string, which will be copied to
|
||||
# the resulting commandline verbatim
|
||||
#
|
||||
# Remaining arguments are tab separated lists of completion
|
||||
# information. Each list contains four elements, the short switch, the
|
||||
# long switch, the argument and the description.
|
||||
#
|
||||
|
||||
function complete_from_list
|
||||
|
||||
set condition $argv[1]
|
||||
set -e argv[1]
|
||||
|
||||
for j in $argv
|
||||
set exploded (echo $j|tr \t \n)
|
||||
set short $exploded[1]
|
||||
set long $exploded[2]
|
||||
set arg $exploded[3]
|
||||
set desc (cap (esc $exploded[4]))
|
||||
|
||||
set str
|
||||
|
||||
switch $short
|
||||
case '-?'
|
||||
set str $str -s (printf "%s\n" $short|cut -c 2)
|
||||
end
|
||||
|
||||
switch $long
|
||||
case '--?*'
|
||||
set str $str -l (printf "%s\n" $long|cut -c 3-)
|
||||
end
|
||||
|
||||
switch $arg
|
||||
case '=DIRECTORY' ' dir'
|
||||
set str $str -x -a "'(__fish_complete_directories (commandline -ct))'"
|
||||
|
||||
case '=COMMAND'
|
||||
set str $str -x -a "'(__fish_complete_command)'"
|
||||
|
||||
case '=USERNAME' ' <user>'
|
||||
set str $str -x -a "'(__fish_complete_users)'"
|
||||
|
||||
case '=FILENAME' '=FILE' ' <file>'
|
||||
set str $str -r
|
||||
|
||||
case ' arg'
|
||||
set str $str -x
|
||||
|
||||
case ' (*):'
|
||||
set str $str -x -a \'(echo $arg| sed -e "s/ (\(.*\)):/\1/" |tr '/' ' ')\'
|
||||
|
||||
case '?*'
|
||||
set str $str -x
|
||||
if not set -q unknown
|
||||
set -g unknown
|
||||
end
|
||||
if not contains $arg $unknown
|
||||
echo "Don't know how to handle arguments of type '$arg'" >&2
|
||||
set unknown $unknown $arg
|
||||
end
|
||||
end
|
||||
|
||||
switch $desc
|
||||
case '?*'
|
||||
set str $str --description \'$desc\'
|
||||
end
|
||||
|
||||
echo complete -c $cmd $condition $str
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
function write_completions
|
||||
|
||||
set -g cmd $argv[1]; or return 1
|
||||
|
||||
echo "Making completions for $cmd" >&2
|
||||
|
||||
|
||||
echo '
|
||||
#
|
||||
# Completions for the '$cmd' command
|
||||
# This file was autogenerated by the file make_vcs_completions.fish
|
||||
# which is shipped with the fish source code.
|
||||
#
|
||||
|
||||
#
|
||||
# Completions from commandline
|
||||
#
|
||||
'
|
||||
set -e argv[1]
|
||||
|
||||
while count $argv >/dev/null
|
||||
echo $argv[1]
|
||||
set -e argv[1]
|
||||
end
|
||||
|
||||
|
||||
eval "function cmd; $cmd \$argv; end"
|
||||
|
||||
set -l cmd_str
|
||||
|
||||
switch $cmd
|
||||
case svn
|
||||
|
||||
function list_subcommand
|
||||
set cmd1 '\([^ ]*\)'
|
||||
set cmd2 '\([^,)]*\)'
|
||||
set cmdn '\(, \([^,)]*\)\|\)'
|
||||
set svn_re '^ *'$cmd1'\( ('$cmd2$cmdn$cmdn')\|\).*$'
|
||||
cmd help|sed -ne 's/'$svn_re'/\1\n\3\n\5\n\7/p'| grep .
|
||||
end
|
||||
|
||||
function list_subcommand_help
|
||||
set short_exp '\(-.\|\)'
|
||||
set long_exp '\(--[^ =,]*\)'
|
||||
set arg_exp '\(\|[= ][^ ][^ ]*\)'
|
||||
set desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*[^.]\)'
|
||||
set re "^ *$short_exp *$long_exp$arg_exp *$desc_exp\(\|\\.\)\$"
|
||||
cmd help $argv | sed -n -e 's/'$re'/\1\t\2\t\3\t\5/p'
|
||||
end
|
||||
|
||||
for i in (list_subcommand)
|
||||
|
||||
set desc (cmd help $i|head -n 3| sed -e 's/usage:.*//'| tr \n \ | sed -e 's/[^:]*: *\(.*[^.]\)\(\|\\.\)$/\1/')
|
||||
set desc (esc $desc)
|
||||
set cmd_str $cmd_str "-a $i --description '$desc'"
|
||||
end
|
||||
|
||||
case cvs
|
||||
|
||||
function list_subcommand
|
||||
cmd --help-commands 2>| sed -n -e 's/^ *\([^ ][^ ]*\) .*$/\1/p'
|
||||
end
|
||||
|
||||
set short_exp '\(-.\)'
|
||||
set arg_exp '\(\| [^ \t][^ \t]*\)'
|
||||
set desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*\)'
|
||||
set -g re '^[ \t]*'$short_exp$arg_exp'[ \t]*'$desc_exp'$'
|
||||
|
||||
function list_subcommand_help
|
||||
#'s/^[ \t]*\(-.\)[ \t]\([^- \t][^ \t]*\)*[ \t]*\([^-].*\)$/\1\t\2\t\3/p'
|
||||
|
||||
cmd -H $argv 2>| sed -n -e 's/'$re'/\1\t\t\2\t\4/p'
|
||||
end
|
||||
|
||||
echo '
|
||||
#
|
||||
# Global switches
|
||||
#
|
||||
'
|
||||
|
||||
complete_from_list "-n '__fish_use_subcommand'" (cmd --help-options 2>| sed -n -e 's/'$re'/\1\t\t\2\t\4/p')
|
||||
|
||||
set cmd_str_internal (cmd --help-commands 2>| sed -n -e 's/^ *\([^ ][^ ]*\)[\t ]*\([^ ].*\)$/\1\t\2/p')
|
||||
for i in $cmd_str_internal
|
||||
set exploded (echo $i|tr \t \n)
|
||||
set cmd_str $cmd_str "-a $exploded[1] --description '"(esc $exploded[2])"'"
|
||||
end
|
||||
|
||||
case '*'
|
||||
|
||||
function list_subcommand
|
||||
cmd help | sed -n -e 's/^ *\([^ ][^ ]*\) .*$/\1/p'
|
||||
end
|
||||
|
||||
function list_subcommand_help
|
||||
set -l short_exp '\(-.\|\)\( [^ -][^ ]*\|\)'
|
||||
set -l long_exp '\(--[^ =,]*\)'
|
||||
set -l arg_exp '\(\|[= ][^ ][^ ]*\)'
|
||||
set -l desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*[^.]\)'
|
||||
set -l re "^ *$short_exp *$long_exp$arg_exp *$desc_exp\(\|\\.\)\$"
|
||||
|
||||
cmd help $argv | sed -n -e 's/'$re'/\1\t\3\t\4\t\6/p'
|
||||
end
|
||||
|
||||
set cmd_str (cmd help | sed -n -e 's/^ *\([^ ][^ ]*\)[\t ]*\([^ ].*[^.]\)\(\|\\.\)$/-a \1 --description \'\2\'/p')
|
||||
|
||||
end
|
||||
|
||||
echo '
|
||||
#
|
||||
# subcommands
|
||||
#
|
||||
'
|
||||
|
||||
printf "complete -c $cmd -n '__fish_use_subcommand' -x %s\n" $cmd_str
|
||||
|
||||
for i in (list_subcommand)
|
||||
|
||||
echo '
|
||||
|
||||
#
|
||||
# Completions for the \''$i'\' subcommand
|
||||
#
|
||||
'
|
||||
|
||||
complete_from_list "-n 'contains \\'$i\\' (commandline -poc)'" (list_subcommand_help $i)
|
||||
end
|
||||
|
||||
echo \n\n
|
||||
|
||||
end
|
||||
18
build_tools/osx_distribution.xml
Normal file
18
build_tools/osx_distribution.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<installer-gui-script minSpecVersion="1">
|
||||
<title>fish shell</title>
|
||||
<welcome file="welcome.rtf"/>
|
||||
<background file="terminal_logo.png" scaling="proportional" alignment="bottomleft"/>
|
||||
<pkg-ref id="com.ridiculousfish.fish-shell-pkg"/>
|
||||
<options customize="never" require-scripts="false"/>
|
||||
<choices-outline>
|
||||
<line choice="default">
|
||||
<line choice="com.ridiculousfish.fish-shell-pkg"/>
|
||||
</line>
|
||||
</choices-outline>
|
||||
<choice id="default"/>
|
||||
<choice id="com.ridiculousfish.fish-shell-pkg" visible="false">
|
||||
<pkg-ref id="com.ridiculousfish.fish-shell-pkg"/>
|
||||
</choice>
|
||||
<pkg-ref id="com.ridiculousfish.fish-shell-pkg" version="0" onConclusion="none">fish.pkg</pkg-ref>
|
||||
</installer-gui-script>
|
||||
BIN
build_tools/osx_package_resources/terminal_logo.png
Normal file
BIN
build_tools/osx_package_resources/terminal_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 51 KiB |
25
build_tools/osx_package_resources/welcome.rtf
Normal file
25
build_tools/osx_package_resources/welcome.rtf
Normal file
@@ -0,0 +1,25 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Monaco;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\info
|
||||
{\author dlkfjslfjsfdlkfk}}\margl1440\margr1440\vieww10800\viewh8400\viewkind0
|
||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural
|
||||
|
||||
\f0\fs30 \cf0 The fish shell is a smart and user friendly command line shell. For more information, visit {\field{\*\fldinst{HYPERLINK "http://fishshell.com"}}{\fldrslt http://fishshell.com}}.\
|
||||
\
|
||||
fish will be installed into
|
||||
\f1\fs26 /usr/local/
|
||||
\f0\fs30 , and fish will be added to
|
||||
\f1\fs26 /etc/shells
|
||||
\f0\fs30 if necessary.\
|
||||
\
|
||||
Your default shell will
|
||||
\i not
|
||||
\i0 be changed. To make fish your default, run:\
|
||||
\
|
||||
|
||||
\f1 chsh -s /usr/local/bin/fish
|
||||
\f0 \
|
||||
\
|
||||
Enjoy!\
|
||||
}
|
||||
53
build_tools/osx_package_scripts/add-shell
Executable file
53
build_tools/osx_package_scripts/add-shell
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# Modified from Debian's add-shell to work on OS X
|
||||
|
||||
if test $# -eq 0
|
||||
then
|
||||
echo usage: $0 shellname [shellname ...]
|
||||
exit 1
|
||||
fi
|
||||
|
||||
scriptname=`basename "$0"`
|
||||
if [[ $UID -ne 0 ]]; then
|
||||
echo "${scriptname} must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
file=/etc/shells
|
||||
# I want this to be GUARANTEED to be on the same filesystem as $file
|
||||
tmpfile=${file}.tmp
|
||||
|
||||
set -o noclobber
|
||||
|
||||
trap "rm -f $tmpfile" EXIT
|
||||
|
||||
if ! cat $file > $tmpfile
|
||||
then
|
||||
cat 1>&2 <<EOF
|
||||
Either another instance of $0 is running, or it was previously interrupted.
|
||||
Please examine ${tmpfile} to see if it should be moved onto ${file}.
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Append a newline if it doesn't exist
|
||||
if [ "$(tail -c1 "$tmpfile"; echo x)" != $'\nx' ]; then
|
||||
echo "" >> "$tmpfile"
|
||||
fi
|
||||
|
||||
for i
|
||||
do
|
||||
if ! grep -q "^${i}$" "$tmpfile"
|
||||
then
|
||||
echo $i >> "$tmpfile"
|
||||
fi
|
||||
done
|
||||
|
||||
chmod 0644 $tmpfile
|
||||
chown root:wheel $tmpfile
|
||||
|
||||
mv $tmpfile $file
|
||||
|
||||
trap "" EXIT
|
||||
exit 0
|
||||
3
build_tools/osx_package_scripts/postinstall
Executable file
3
build_tools/osx_package_scripts/postinstall
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh -x
|
||||
|
||||
./add-shell /usr/local/bin/fish > /tmp/fish_postinstall_output.log
|
||||
90
build_tools/style.fish
Executable file
90
build_tools/style.fish
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env fish
|
||||
#
|
||||
# This is meant to be run by "make style" or "make style-all". It is not meant to
|
||||
# be run directly from a shell prompt although it can be.
|
||||
#
|
||||
# This runs C++ files and fish scripts (*.fish) through their respective code
|
||||
# formatting programs.
|
||||
#
|
||||
set c_files
|
||||
set f_files
|
||||
set all no
|
||||
|
||||
if test "$argv[1]" = "--all"
|
||||
set all yes
|
||||
set -e argv[1]
|
||||
end
|
||||
|
||||
if set -q argv[1]
|
||||
echo "Unexpected arguments: '$argv'"
|
||||
exit 1
|
||||
end
|
||||
|
||||
if test $all = yes
|
||||
set c_files src/*.h src/*.cpp
|
||||
set f_files ***.fish
|
||||
else
|
||||
# We haven't been asked to reformat all the source. If there are uncommitted
|
||||
# changes reformat those, else reformat the files in the most recent commit.
|
||||
set pending (git status --porcelain --short --untracked-files=all | sed -e 's/^ *//')
|
||||
if count $pending > /dev/null
|
||||
# There are pending changes so lint those files.
|
||||
for arg in $pending
|
||||
set files $files (string split -m 1 ' ' $arg)[2]
|
||||
end
|
||||
else
|
||||
# No pending changes so lint the files in the most recent commit.
|
||||
set files (git show --name-only --pretty=oneline head | tail --lines=+2)
|
||||
end
|
||||
|
||||
# Extract just the C/C++ files.
|
||||
set c_files (string match -r '^.*\.(?:c|cpp|h)$' -- $files)
|
||||
# Extract just the fish files.
|
||||
set f_files (string match -r '^.*\.fish$' -- $files)
|
||||
end
|
||||
|
||||
# Run the C++ reformatter if we have any C++ files.
|
||||
if set -q c_files[1]
|
||||
if type -q clang-format
|
||||
echo
|
||||
echo ========================================
|
||||
echo Running clang-format
|
||||
echo ========================================
|
||||
for file in $c_files
|
||||
clang-format $file > $file.new
|
||||
if cmp --quiet $file $file.new
|
||||
echo $file was correctly formatted
|
||||
rm $file.new
|
||||
else
|
||||
echo $file was NOT correctly formatted
|
||||
mv $file.new $file
|
||||
end
|
||||
end
|
||||
else
|
||||
echo
|
||||
echo 'WARNING: Cannot find clang-format command'
|
||||
echo
|
||||
end
|
||||
end
|
||||
|
||||
# Run the fish reformatter if we have any fish files.
|
||||
if set -q f_files[1]
|
||||
if not type -q fish_indent
|
||||
make fish_indent
|
||||
set PATH . $PATH
|
||||
end
|
||||
echo
|
||||
echo ========================================
|
||||
echo Running fish_indent
|
||||
echo ========================================
|
||||
for file in $f_files
|
||||
fish_indent < $file > $file.new
|
||||
if cmp --quiet $file $file.new
|
||||
echo $file was correctly formatted
|
||||
rm $file.new
|
||||
else
|
||||
echo $file was NOT correctly formatted
|
||||
mv $file.new $file
|
||||
end
|
||||
end
|
||||
end
|
||||
17
build_tools/xcode_version_gen.sh
Executable file
17
build_tools/xcode_version_gen.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
# Expects to be called from Xcode (Run Script build phase),
|
||||
# write version number C preprocessor macro to header file.
|
||||
|
||||
tmp="$SCRIPT_OUTPUT_FILE_1"
|
||||
ver="$SCRIPT_OUTPUT_FILE_0"
|
||||
|
||||
./build_tools/git_version_gen.sh
|
||||
|
||||
cat FISH-BUILD-VERSION-FILE | awk '{printf("#define %s \"%s\"\n",$1,$3)}' > "$tmp"
|
||||
|
||||
cmp --quiet "$tmp" "$ver"
|
||||
if [ $? -ne 0 ]; then
|
||||
/bin/mv "$tmp" "$ver"
|
||||
else
|
||||
/bin/rm "$tmp"
|
||||
fi
|
||||
169
builtin.h
169
builtin.h
@@ -1,169 +0,0 @@
|
||||
/** \file builtin.h
|
||||
Prototypes for functions for executing builtin functions.
|
||||
*/
|
||||
|
||||
#ifndef FISH_BUILTIN_H
|
||||
#define FISH_BUILTIN_H
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
enum
|
||||
{
|
||||
COMMAND_NOT_BUILTIN,
|
||||
BUILTIN_REGULAR,
|
||||
BUILTIN_FUNCTION
|
||||
}
|
||||
;
|
||||
|
||||
/**
|
||||
Error message on missing argument
|
||||
*/
|
||||
#define BUILTIN_ERR_MISSING _( L"%ls: Expected argument\n" )
|
||||
|
||||
/**
|
||||
Error message on invalid combination of options
|
||||
*/
|
||||
#define BUILTIN_ERR_COMBO _( L"%ls: Invalid combination of options\n" )
|
||||
|
||||
/**
|
||||
Error message on invalid combination of options
|
||||
*/
|
||||
#define BUILTIN_ERR_COMBO2 _( L"%ls: Invalid combination of options,\n%ls\n" )
|
||||
|
||||
/**
|
||||
Error message on multiple scope levels for variables
|
||||
*/
|
||||
#define BUILTIN_ERR_GLOCAL _( L"%ls: Variable scope can only be one of universal, global and local\n%ls\n" )
|
||||
|
||||
/**
|
||||
Error message for specifying both export and unexport to set/read
|
||||
*/
|
||||
#define BUILTIN_ERR_EXPUNEXP _( L"%ls: Variable can't be both exported and unexported\n%ls\n" )
|
||||
|
||||
/**
|
||||
Error message for unknown switch
|
||||
*/
|
||||
#define BUILTIN_ERR_UNKNOWN _( L"%ls: Unknown option '%ls'\n" )
|
||||
|
||||
/**
|
||||
Error message for invalid character in variable name
|
||||
*/
|
||||
#define BUILTIN_ERR_VARCHAR _( L"%ls: Invalid character '%lc' in variable name. Only alphanumerical characters and underscores are valid in a variable name.\n" )
|
||||
|
||||
/**
|
||||
Error message for invalid (empty) variable name
|
||||
*/
|
||||
#define BUILTIN_ERR_VARNAME_ZERO _( L"%ls: Variable name can not be the empty string\n" )
|
||||
|
||||
/**
|
||||
Stringbuffer used to represent standard output
|
||||
*/
|
||||
extern string_buffer_t *sb_out;
|
||||
|
||||
/**
|
||||
Stringbuffer used to represent standard error
|
||||
*/
|
||||
extern string_buffer_t *sb_err;
|
||||
|
||||
/**
|
||||
Kludge. Tells builtins if output is to screen
|
||||
*/
|
||||
extern int builtin_out_redirect;
|
||||
|
||||
/**
|
||||
Kludge. Tells builtins if error is to screen
|
||||
*/
|
||||
extern int builtin_err_redirect;
|
||||
|
||||
|
||||
/**
|
||||
Initialize builtin data.
|
||||
*/
|
||||
void builtin_init();
|
||||
|
||||
/**
|
||||
Destroy builtin data.
|
||||
*/
|
||||
void builtin_destroy();
|
||||
|
||||
/**
|
||||
Is there a builtin command with the given name?
|
||||
*/
|
||||
int builtin_exists( wchar_t *cmd );
|
||||
|
||||
/**
|
||||
Execute a builtin command
|
||||
|
||||
\param argv Array containing the command and parameters
|
||||
of the builtin. The list is terminated by a
|
||||
null pointer. This syntax resembles the syntax
|
||||
for exec.
|
||||
|
||||
\return the exit status of the builtin command
|
||||
*/
|
||||
int builtin_run( wchar_t **argv );
|
||||
|
||||
/**
|
||||
Insert all builtin names into l. These are not copies of the strings and should not be freed after use.
|
||||
*/
|
||||
void builtin_get_names( array_list_t *list );
|
||||
|
||||
/**
|
||||
Pushes a new set of input/output to the stack. The new stdin is supplied, a new set of output string_buffer_ts is created.
|
||||
*/
|
||||
void builtin_push_io( int stdin_fd );
|
||||
|
||||
/**
|
||||
Pops a set of input/output from the stack. The output string_buffer_ts are destroued, but the input file is not closed.
|
||||
*/
|
||||
void builtin_pop_io();
|
||||
|
||||
|
||||
/**
|
||||
Return a one-line description of the specified builtin
|
||||
*/
|
||||
const wchar_t *builtin_get_desc( const wchar_t *b );
|
||||
|
||||
/**
|
||||
Counts the number of non null pointers in the specified array
|
||||
*/
|
||||
int builtin_count_args( wchar_t **argv );
|
||||
|
||||
/**
|
||||
Print help for the specified builtin. If \c b is sb_err, also print the line information
|
||||
*/
|
||||
void builtin_print_help( wchar_t *cmd, string_buffer_t *b );
|
||||
|
||||
|
||||
/**
|
||||
The set builtin, used for setting variables. Defined in builtin_set.c.
|
||||
*/
|
||||
int builtin_set(wchar_t **argv);
|
||||
|
||||
/**
|
||||
The commandline builtin, used for setting and getting the contents of the commandline. Defined in builtin_commandline.c.
|
||||
*/
|
||||
int builtin_commandline(wchar_t **argv);
|
||||
|
||||
/**
|
||||
The ulimit builtin, used for setting resource limits. Defined in builtin_ulimit.c.
|
||||
*/
|
||||
int builtin_ulimit(wchar_t **argv);
|
||||
|
||||
/**
|
||||
The complete builtin. Used for specifying programmable
|
||||
tab-completions. Calls the functions in complete.c for any heavy
|
||||
lifting.
|
||||
*/
|
||||
int builtin_complete(wchar_t **argv);
|
||||
|
||||
/**
|
||||
This function works like wperror, but it prints its result into
|
||||
the sb_err string_buffer_t instead of to stderr. Used by the builtin
|
||||
commands.
|
||||
*/
|
||||
void builtin_wperror( const wchar_t *s);
|
||||
|
||||
#endif
|
||||
@@ -1,479 +0,0 @@
|
||||
/** \file builtin_commandline.c Functions defining the commandline builtin
|
||||
|
||||
Functions used for implementing the commandline builtin.
|
||||
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <termios.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
#include "builtin.h"
|
||||
#include "common.h"
|
||||
#include "wgetopt.h"
|
||||
#include "reader.h"
|
||||
#include "proc.h"
|
||||
#include "parser.h"
|
||||
#include "tokenizer.h"
|
||||
#include "input_common.h"
|
||||
#include "input.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Which part of the comandbuffer are we operating on
|
||||
*/
|
||||
enum
|
||||
{
|
||||
STRING_MODE=1, /**< Operate on entire buffer */
|
||||
JOB_MODE, /**< Operate on job under cursor */
|
||||
PROCESS_MODE, /**< Operate on process under cursor */
|
||||
TOKEN_MODE /**< Operate on token under cursor */
|
||||
}
|
||||
;
|
||||
|
||||
/**
|
||||
For text insertion, how should it be done
|
||||
*/
|
||||
enum
|
||||
{
|
||||
REPLACE_MODE=1, /**< Replace current text */
|
||||
INSERT_MODE, /**< Insert at cursor position */
|
||||
APPEND_MODE /**< Insert at end of current token/command/buffer */
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
/**
|
||||
Replace/append/insert the selection with/at/after the specified string.
|
||||
|
||||
\param begin beginning of selection
|
||||
\param end end of selection
|
||||
\param insert the string to insert
|
||||
\param append_mode can be one of REPLACE_MODE, INSERT_MODE or APPEND_MODE, affects the way the test update is performed
|
||||
*/
|
||||
static void replace_part( wchar_t *begin,
|
||||
wchar_t *end,
|
||||
wchar_t *insert,
|
||||
int append_mode )
|
||||
{
|
||||
wchar_t *buff = reader_get_buffer();
|
||||
string_buffer_t out;
|
||||
int out_pos=reader_get_cursor_pos();
|
||||
|
||||
sb_init( &out );
|
||||
|
||||
sb_append_substring( &out, buff, begin-buff );
|
||||
|
||||
switch( append_mode)
|
||||
{
|
||||
case REPLACE_MODE:
|
||||
{
|
||||
|
||||
sb_append( &out, insert );
|
||||
out_pos = wcslen( insert ) + (begin-buff);
|
||||
break;
|
||||
|
||||
}
|
||||
case APPEND_MODE:
|
||||
{
|
||||
sb_append_substring( &out, begin, end-begin );
|
||||
sb_append( &out, insert );
|
||||
break;
|
||||
}
|
||||
case INSERT_MODE:
|
||||
{
|
||||
int cursor = reader_get_cursor_pos() -(begin-buff);
|
||||
sb_append_substring( &out, begin, cursor );
|
||||
sb_append( &out, insert );
|
||||
sb_append_substring( &out, begin+cursor, end-begin-cursor );
|
||||
out_pos += wcslen( insert );
|
||||
break;
|
||||
}
|
||||
}
|
||||
sb_append( &out, end );
|
||||
reader_set_buffer( (wchar_t *)out.buff, out_pos );
|
||||
sb_destroy( &out );
|
||||
}
|
||||
|
||||
/**
|
||||
Output the specified selection.
|
||||
|
||||
\param begin start of selection
|
||||
\param end end of selection
|
||||
\param cut_at_cursor whether printing should stop at the surrent cursor position
|
||||
\param tokenize whether the string should be tokenized, printing one string token on every line and skipping non-string tokens
|
||||
*/
|
||||
static void write_part( wchar_t *begin,
|
||||
wchar_t *end,
|
||||
int cut_at_cursor,
|
||||
int tokenize )
|
||||
{
|
||||
tokenizer tok;
|
||||
string_buffer_t out;
|
||||
wchar_t *buff;
|
||||
int pos;
|
||||
|
||||
pos = reader_get_cursor_pos()-(begin-reader_get_buffer());
|
||||
|
||||
if( tokenize )
|
||||
{
|
||||
|
||||
buff = wcsndup( begin, end-begin );
|
||||
// fwprintf( stderr, L"Subshell: %ls, end char %lc\n", buff, *end );
|
||||
sb_init( &out );
|
||||
|
||||
for( tok_init( &tok, buff, TOK_ACCEPT_UNFINISHED );
|
||||
tok_has_next( &tok );
|
||||
tok_next( &tok ) )
|
||||
{
|
||||
if( (cut_at_cursor) &&
|
||||
(tok_get_pos( &tok)+wcslen(tok_last( &tok)) >= pos) )
|
||||
break;
|
||||
|
||||
// fwprintf( stderr, L"Next token %ls\n", tok_last( &tok ) );
|
||||
|
||||
switch( tok_last_type( &tok ) )
|
||||
{
|
||||
case TOK_STRING:
|
||||
sb_append2( &out, tok_last( &tok), L"\n", (void *)0 );
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if( out.buff )
|
||||
sb_append( sb_out,
|
||||
(wchar_t *)out.buff );
|
||||
|
||||
free( buff );
|
||||
tok_destroy( &tok );
|
||||
sb_destroy( &out );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( cut_at_cursor )
|
||||
{
|
||||
end = begin+pos;
|
||||
}
|
||||
sb_append_substring( sb_out, begin, end-begin );
|
||||
sb_append( sb_out, L"\n" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
The commandline builtin. It is used for specifying a new value for
|
||||
the commandline.
|
||||
*/
|
||||
int builtin_commandline( wchar_t **argv )
|
||||
{
|
||||
|
||||
int buffer_part=0;
|
||||
int cut_at_cursor=0;
|
||||
|
||||
int argc = builtin_count_args( argv );
|
||||
int append_mode=0;
|
||||
|
||||
int function_mode = 0;
|
||||
|
||||
int tokenize = 0;
|
||||
|
||||
if( !reader_get_buffer() )
|
||||
{
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
L": Can not set commandline in non-interactive mode\n",
|
||||
(void *)0 );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
woptind=0;
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
const static struct woption
|
||||
long_options[] =
|
||||
{
|
||||
{
|
||||
L"append", no_argument, 0, 'a'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"insert", no_argument, 0, 'i'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"replace", no_argument, 0, 'r'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"current-job", no_argument, 0, 'j'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"current-process", no_argument, 0, 'p'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"current-token", no_argument, 0, 't'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"current-buffer", no_argument, 0, 'b'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"cut-at-cursor", no_argument, 0, 'c'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"function", no_argument, 0, 'f'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"tokenize", no_argument, 0, 'o'
|
||||
}
|
||||
,
|
||||
{
|
||||
0, 0, 0, 0
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
int opt_index = 0;
|
||||
|
||||
int opt = wgetopt_long( argc,
|
||||
argv,
|
||||
L"aijpctwfor",
|
||||
long_options,
|
||||
&opt_index );
|
||||
if( opt == -1 )
|
||||
break;
|
||||
|
||||
switch( opt )
|
||||
{
|
||||
case 0:
|
||||
if(long_options[opt_index].flag != 0)
|
||||
break;
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
argv[0],
|
||||
long_options[opt_index].name );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
|
||||
return 1;
|
||||
|
||||
case L'a':
|
||||
append_mode = APPEND_MODE;
|
||||
break;
|
||||
|
||||
case L'i':
|
||||
append_mode = INSERT_MODE;
|
||||
break;
|
||||
|
||||
case L'r':
|
||||
append_mode = REPLACE_MODE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
cut_at_cursor=1;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
buffer_part = TOKEN_MODE;
|
||||
break;
|
||||
|
||||
case 'j':
|
||||
buffer_part = JOB_MODE;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
buffer_part = PROCESS_MODE;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
function_mode=1;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
tokenize=1;
|
||||
break;
|
||||
|
||||
case L'?':
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( function_mode )
|
||||
{
|
||||
int i;
|
||||
|
||||
/*
|
||||
Check for invalid switch combinations
|
||||
*/
|
||||
if( buffer_part || cut_at_cursor || append_mode || tokenize )
|
||||
{
|
||||
sb_printf(sb_err,
|
||||
BUILTIN_ERR_COMBO,
|
||||
argv[0] );
|
||||
|
||||
sb_append2(sb_err,
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
if( argc == woptind )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_MISSING,
|
||||
argv[0] );
|
||||
|
||||
sb_append2( sb_err,
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0 );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
for( i=woptind; i<argc; i++ )
|
||||
{
|
||||
wint_t c = input_get_code( argv[i] );
|
||||
if( c != -1 )
|
||||
{
|
||||
// fwprintf( stderr, L"Add function %ls (%d)\n", argv[i], c );
|
||||
/*
|
||||
input_unreadch inserts the specified keypress or
|
||||
readline function at the top of the stack of unused
|
||||
keypresses
|
||||
*/
|
||||
input_unreadch(c);
|
||||
}
|
||||
else
|
||||
{
|
||||
// fwprintf( stderr, L"BLUR %ls %d\n", argv[i], c );
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
L": Unknown readline function '",
|
||||
argv[i],
|
||||
L"'\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0 );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Check for invalid switch combinations
|
||||
*/
|
||||
if( argc-woptind > 1 )
|
||||
{
|
||||
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
L": Too many arguments\n",
|
||||
(void *)0 );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( (tokenize || cut_at_cursor) && (argc-woptind) )
|
||||
{
|
||||
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
L"--cut-at-cursor and --tokenize can not be used when setting the commandline" );
|
||||
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( append_mode && !(argc-woptind) )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
L"insertion mode switches can not be used when not in insertion mode" );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
Set default modes
|
||||
*/
|
||||
if( !append_mode )
|
||||
{
|
||||
append_mode = REPLACE_MODE;
|
||||
}
|
||||
|
||||
if( !buffer_part )
|
||||
{
|
||||
buffer_part = STRING_MODE;
|
||||
}
|
||||
|
||||
wchar_t *begin, *end;
|
||||
|
||||
switch( buffer_part )
|
||||
{
|
||||
case STRING_MODE:
|
||||
{
|
||||
begin = reader_get_buffer();
|
||||
end = begin+wcslen(begin);
|
||||
break;
|
||||
}
|
||||
|
||||
case PROCESS_MODE:
|
||||
{
|
||||
reader_current_process_extent( &begin, &end );
|
||||
break;
|
||||
}
|
||||
|
||||
case JOB_MODE:
|
||||
{
|
||||
reader_current_job_extent( &begin, &end );
|
||||
break;
|
||||
}
|
||||
|
||||
case TOKEN_MODE:
|
||||
{
|
||||
reader_current_token_extent( &begin, &end, 0, 0 );
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
switch(argc-woptind)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
write_part( begin, end, cut_at_cursor, tokenize );
|
||||
break;
|
||||
}
|
||||
|
||||
case 1:
|
||||
{
|
||||
replace_part( begin, end, argv[woptind], append_mode );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,485 +0,0 @@
|
||||
/** \file builtin_complete.c Functions defining the complete builtin
|
||||
|
||||
Functions used for implementing the complete builtin.
|
||||
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <termios.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
#include "builtin.h"
|
||||
#include "common.h"
|
||||
#include "complete.h"
|
||||
#include "wgetopt.h"
|
||||
#include "parser.h"
|
||||
#include "translate.h"
|
||||
|
||||
/*
|
||||
builtin_complete_* are a set of rather silly looping functions that
|
||||
make sure that all the proper combinations of complete_add or
|
||||
complete_remove get called.
|
||||
*/
|
||||
|
||||
static void builtin_complete_add2( const wchar_t *cmd,
|
||||
int cmd_type,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt,
|
||||
int result_mode,
|
||||
int authorative,
|
||||
const wchar_t *condition,
|
||||
const wchar_t *comp,
|
||||
const wchar_t *desc )
|
||||
{
|
||||
int i;
|
||||
const wchar_t *s;
|
||||
|
||||
for( s=short_opt; *s; s++ )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
0,
|
||||
0,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( gnu_opt ); i++ )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
(wchar_t *)al_get(gnu_opt, i ),
|
||||
0,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( old_opt ); i++ )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
(wchar_t *)al_get(old_opt, i ),
|
||||
1,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
if( al_get_count( old_opt )+al_get_count( gnu_opt )+wcslen(short_opt) == 0 )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
}
|
||||
|
||||
static void builtin_complete_add( array_list_t *cmd,
|
||||
array_list_t *path,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt,
|
||||
int result_mode,
|
||||
int authorative,
|
||||
const wchar_t *condition,
|
||||
const wchar_t *comp,
|
||||
const wchar_t *desc )
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i=0; i<al_get_count( cmd ); i++ )
|
||||
{
|
||||
builtin_complete_add2( al_get( cmd, i ),
|
||||
COMMAND,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( path ); i++ )
|
||||
{
|
||||
builtin_complete_add2( al_get( path, i ),
|
||||
PATH,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void builtin_complete_remove3( wchar_t *cmd,
|
||||
int cmd_type,
|
||||
wchar_t short_opt,
|
||||
array_list_t *long_opt )
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i=0; i<al_get_count( long_opt ); i++ )
|
||||
{
|
||||
complete_remove( cmd,
|
||||
cmd_type,
|
||||
short_opt,
|
||||
(wchar_t *)al_get( long_opt, i ) );
|
||||
}
|
||||
}
|
||||
|
||||
static void builtin_complete_remove2( wchar_t *cmd,
|
||||
int cmd_type,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt )
|
||||
{
|
||||
const wchar_t *s = (wchar_t *)short_opt;
|
||||
if( *s )
|
||||
{
|
||||
for( ; *s; s++ )
|
||||
{
|
||||
if( al_get_count( old_opt) + al_get_count( gnu_opt ) == 0 )
|
||||
{
|
||||
complete_remove(cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
0 );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
gnu_opt );
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
old_opt );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
gnu_opt );
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
old_opt );
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
static void builtin_complete_remove( array_list_t *cmd,
|
||||
array_list_t *path,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt )
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
for( i=0; i<al_get_count( cmd ); i++ )
|
||||
{
|
||||
builtin_complete_remove2( (wchar_t *)al_get( cmd, i ),
|
||||
COMMAND,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( path ); i++ )
|
||||
{
|
||||
builtin_complete_remove2( (wchar_t *)al_get( path, i ),
|
||||
PATH,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int builtin_complete( wchar_t **argv )
|
||||
{
|
||||
int res=0;
|
||||
int argc=0;
|
||||
int result_mode=SHARED;
|
||||
int remove = 0;
|
||||
int authorative = 1;
|
||||
|
||||
string_buffer_t short_opt;
|
||||
array_list_t gnu_opt, old_opt;
|
||||
wchar_t *comp=L"", *desc=L"", *condition=L"", *load=0;
|
||||
|
||||
array_list_t cmd;
|
||||
array_list_t path;
|
||||
|
||||
al_init( &cmd );
|
||||
al_init( &path );
|
||||
sb_init( &short_opt );
|
||||
al_init( &gnu_opt );
|
||||
al_init( &old_opt );
|
||||
|
||||
argc = builtin_count_args( argv );
|
||||
|
||||
woptind=0;
|
||||
|
||||
while( res == 0 )
|
||||
{
|
||||
const static struct woption
|
||||
long_options[] =
|
||||
{
|
||||
{
|
||||
L"exclusive", no_argument, 0, 'x'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"no-files", no_argument, 0, 'f'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"require-parameter", no_argument, 0, 'r'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"path", required_argument, 0, 'p'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"command", required_argument, 0, 'c'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"short-option", required_argument, 0, 's'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"long-option", required_argument, 0, 'l' }
|
||||
,
|
||||
{
|
||||
L"old-option", required_argument, 0, 'o'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"description", required_argument, 0, 'd'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"arguments", required_argument, 0, 'a'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"erase", no_argument, 0, 'e'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"unauthorative", no_argument, 0, 'u'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"condition", required_argument, 0, 'n'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"load", required_argument, 0, 'y'
|
||||
}
|
||||
,
|
||||
{
|
||||
0, 0, 0, 0
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
int opt_index = 0;
|
||||
|
||||
int opt = wgetopt_long( argc,
|
||||
argv,
|
||||
L"a:c:p:s:l:o:d:frxeun:y:",
|
||||
long_options,
|
||||
&opt_index );
|
||||
if( opt == -1 )
|
||||
break;
|
||||
|
||||
switch( opt )
|
||||
{
|
||||
case 0:
|
||||
if(long_options[opt_index].flag != 0)
|
||||
break;
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
argv[0],
|
||||
long_options[opt_index].name );
|
||||
sb_append( sb_err,
|
||||
parser_current_line() );
|
||||
// builtin_print_help( argv[0], sb_err );
|
||||
|
||||
|
||||
res = 1;
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
result_mode |= EXCLUSIVE;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
result_mode |= NO_FILES;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
result_mode |= NO_COMMON;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
al_push( &cmd, unescape( woptarg, 1));
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
al_push( &cmd, unescape( woptarg, 1) );
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
desc = woptarg;
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
authorative=0;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
sb_append( &short_opt, woptarg );
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
al_push( &gnu_opt, woptarg );
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
al_push( &old_opt, woptarg );
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
comp = woptarg;
|
||||
break;
|
||||
|
||||
|
||||
case 'e':
|
||||
remove = 1;
|
||||
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
condition = woptarg;
|
||||
break;
|
||||
|
||||
case 'y':
|
||||
load = woptarg;
|
||||
break;
|
||||
|
||||
|
||||
case '?':
|
||||
// builtin_print_help( argv[0], sb_err );
|
||||
|
||||
res = 1;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if( res != 0 )
|
||||
{
|
||||
}
|
||||
else if( woptind != argc )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
_( L"%ls: Too many arguments\n" ),
|
||||
argv[0] );
|
||||
sb_append( sb_err,
|
||||
parser_current_line() );
|
||||
// builtin_print_help( argv[0], sb_err );
|
||||
|
||||
res = 1;
|
||||
}
|
||||
else if( load )
|
||||
{
|
||||
complete_load( load, 1 );
|
||||
}
|
||||
else if( (al_get_count( &cmd) == 0 ) && (al_get_count( &path) == 0 ) )
|
||||
{
|
||||
/* No arguments specified, meaning we print the definitions of
|
||||
* all specified completions to stdout.*/
|
||||
complete_print( sb_out );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( remove )
|
||||
{
|
||||
builtin_complete_remove( &cmd,
|
||||
&path,
|
||||
(wchar_t *)short_opt.buff,
|
||||
&gnu_opt,
|
||||
&old_opt );
|
||||
}
|
||||
else
|
||||
{
|
||||
builtin_complete_add( &cmd,
|
||||
&path,
|
||||
(wchar_t *)short_opt.buff,
|
||||
&gnu_opt,
|
||||
&old_opt,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
al_foreach( &cmd, (void (*)(const void *))&free );
|
||||
al_foreach( &path, (void (*)(const void *))&free );
|
||||
|
||||
al_destroy( &cmd );
|
||||
al_destroy( &path );
|
||||
sb_destroy( &short_opt );
|
||||
al_destroy( &gnu_opt );
|
||||
al_destroy( &old_opt );
|
||||
|
||||
return res;
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
/** \file builtin_help.h
|
||||
|
||||
Prototypes for functions for printing usage information of builtin commands. The
|
||||
corresponding .c file is automatically generated by combining the
|
||||
builtin_help.hdr file with doxygen output.
|
||||
*/
|
||||
|
||||
#ifndef FISH_BUILTIN_HELP_H
|
||||
#define FISH_BUILTIN_HELP_H
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
/**
|
||||
Return the help text for the specified builtin command. Use
|
||||
non-wide characters since wide characters have some issues with
|
||||
string formating escape sequences sometimes.
|
||||
|
||||
\param cmd The command for which to obtain help text
|
||||
*/
|
||||
char *builtin_help_get( wchar_t *cmd );
|
||||
|
||||
/**
|
||||
Initialize builtin help data
|
||||
*/
|
||||
void builtin_help_init();
|
||||
|
||||
/**
|
||||
Destory builtin help data
|
||||
*/
|
||||
void builtin_help_destroy();
|
||||
|
||||
#endif
|
||||
@@ -1,37 +0,0 @@
|
||||
/** \file builtin_help.c
|
||||
|
||||
Functions for printing usage information of builtin commands. This
|
||||
file is automatically generated from the file builtin_help.hdr and
|
||||
various help files in the doc_src directory.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <strings.h>
|
||||
#include <wchar.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "common.h"
|
||||
#include "builtin_help.h"
|
||||
|
||||
/**
|
||||
Hashtable storing the help text
|
||||
*/
|
||||
static hash_table_t tbl;
|
||||
|
||||
char *builtin_help_get( wchar_t *cmd )
|
||||
{
|
||||
return (char *)hash_get( &tbl, (void *)cmd );
|
||||
}
|
||||
|
||||
void builtin_help_destroy()
|
||||
{
|
||||
hash_destroy( &tbl );
|
||||
}
|
||||
|
||||
|
||||
void builtin_help_init()
|
||||
{
|
||||
hash_init( &tbl, &hash_wcs_func, &hash_wcs_cmp );
|
||||
611
builtin_set.c
611
builtin_set.c
@@ -1,611 +0,0 @@
|
||||
/** \file builtin_set.c Functions defining the set builtin
|
||||
|
||||
Functions used for implementing the set builtin.
|
||||
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <termios.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
#include "builtin.h"
|
||||
#include "env.h"
|
||||
#include "expand.h"
|
||||
#include "common.h"
|
||||
#include "wgetopt.h"
|
||||
#include "proc.h"
|
||||
#include "parser.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Extract the name from a destination argument of the form name[index1 index2...]
|
||||
*/
|
||||
static int parse_fill_name( string_buffer_t *name,
|
||||
const wchar_t *src)
|
||||
{
|
||||
|
||||
if (src == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (iswalnum(*src) || *src == L'_')
|
||||
{
|
||||
sb_append_char(name, *src++);
|
||||
}
|
||||
|
||||
if (*src != L'[' && *src != L'\0')
|
||||
{
|
||||
sb_printf( sb_err, BUILTIN_ERR_VARCHAR, L"set", *src );
|
||||
sb_append2(sb_err, parser_current_line(), L"\n", (void *)0 );
|
||||
// builtin_print_help( L"set", sb_err );
|
||||
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Extract indexes from a destination argument of the form name[index1 index2...]
|
||||
*/
|
||||
static int parse_fill_indexes( array_list_t *indexes,
|
||||
const wchar_t *src)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
if (src == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (*src != L'\0' && (iswalnum(*src) || *src == L'_'))
|
||||
{
|
||||
src++;
|
||||
}
|
||||
|
||||
if (*src == L'\0')
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (*src++ != L'[')
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (iswspace(*src))
|
||||
{
|
||||
src++;
|
||||
}
|
||||
|
||||
while (*src != L']')
|
||||
{
|
||||
wchar_t *end;
|
||||
long l_ind = wcstol(src, &end, 10);
|
||||
if (end == src)
|
||||
{
|
||||
sb_printf(sb_err, _(L"%ls: Invalid index starting at '%ls'\n"), L"set", src);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int *ind = (int *) calloc(1, sizeof(int));
|
||||
*ind = (int) l_ind;
|
||||
al_push(indexes, ind);
|
||||
src = end;
|
||||
count++;
|
||||
while (iswspace(*src)) src++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Update a list by writing the specified values at the specified indexes
|
||||
*/
|
||||
static int update_values( array_list_t *list,
|
||||
array_list_t *indexes,
|
||||
array_list_t *values )
|
||||
{
|
||||
int i;
|
||||
|
||||
//fwprintf(stderr, L"Scan complete\n");
|
||||
/* Replace values where needed */
|
||||
for( i = 0; i < al_get_count(indexes); i++ )
|
||||
{
|
||||
int ind = *(int *) al_get(indexes, i) - 1;
|
||||
void *new = (void *) al_get(values, i);
|
||||
if (al_get(list, ind) != 0)
|
||||
{
|
||||
free((void *) al_get(list, ind));
|
||||
}
|
||||
al_set(list, ind, new != 0 ? wcsdup(new) : wcsdup(L""));
|
||||
}
|
||||
|
||||
return al_get_count(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Return 1 if an array list of int* pointers contains the specified
|
||||
value, 0 otherwise
|
||||
*/
|
||||
static int al_contains_int( array_list_t *list,
|
||||
int val)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < al_get_count(list); i++)
|
||||
{
|
||||
int *current = (int *) al_get(list, i);
|
||||
if (current != 0 && *current == val)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Erase from a list values at specified indexes
|
||||
*/
|
||||
static int erase_values(array_list_t *list, array_list_t *indexes)
|
||||
{
|
||||
int i;
|
||||
array_list_t result;
|
||||
|
||||
//fwprintf(stderr, L"Starting with %d\n", al_get_count(list));
|
||||
|
||||
al_init(&result);
|
||||
|
||||
for (i = 0; i < al_get_count(list); i++)
|
||||
{
|
||||
if (!al_contains_int(indexes, i + 1))
|
||||
{
|
||||
al_push(&result, al_get(list, i));
|
||||
}
|
||||
else
|
||||
{
|
||||
free((void *) al_get(list, i));
|
||||
}
|
||||
}
|
||||
|
||||
al_truncate(list,0);
|
||||
al_push_all( list, &result );
|
||||
al_destroy(&result);
|
||||
|
||||
//fwprintf(stderr, L"Remaining: %d\n", al_get_count(&result));
|
||||
|
||||
return al_get_count(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Fill a string buffer with values from a list, using ARRAY_SEP_STR to separate them
|
||||
*/
|
||||
static int fill_buffer_from_list(string_buffer_t *sb, array_list_t *list)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < al_get_count(list); i++)
|
||||
{
|
||||
wchar_t *v = (wchar_t *) al_get(list, i);
|
||||
if (v != 0)
|
||||
{
|
||||
// fwprintf(stderr, L".\n");
|
||||
// fwprintf(stderr, L"Collecting %ls from %d\n", v, i);
|
||||
sb_append(sb, v);
|
||||
}
|
||||
if (i < al_get_count(list) - 1)
|
||||
sb_append(sb, ARRAY_SEP_STR);
|
||||
}
|
||||
return al_get_count(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Print the names of all environment variables in the scope, with or without values,
|
||||
with or without escaping
|
||||
*/
|
||||
static void print_variables(int include_values, int esc, int scope)
|
||||
{
|
||||
array_list_t names;
|
||||
int i;
|
||||
|
||||
al_init( &names );
|
||||
env_get_names( &names, scope );
|
||||
|
||||
sort_list( &names );
|
||||
|
||||
for( i = 0; i < al_get_count(&names); i++ )
|
||||
{
|
||||
wchar_t *key = (wchar_t *)al_get( &names, i );
|
||||
wchar_t *e_key = esc ? escape(key, 1) : wcsdup(key);
|
||||
|
||||
sb_append(sb_out, e_key);
|
||||
|
||||
if( include_values )
|
||||
{
|
||||
wchar_t *value = env_get(key);
|
||||
wchar_t *e_value;
|
||||
e_value = esc ? expand_escape_variable(value) : wcsdup(value);
|
||||
sb_append2(sb_out, L" ", e_value, (void *)0);
|
||||
free(e_value);
|
||||
}
|
||||
|
||||
sb_append(sb_out, L"\n");
|
||||
free(e_key);
|
||||
}
|
||||
al_destroy(&names);
|
||||
}
|
||||
|
||||
/**
|
||||
The set builtin. Creates, updates and erases environment variables and environemnt variable arrays.
|
||||
*/
|
||||
|
||||
int builtin_set( wchar_t **argv )
|
||||
{
|
||||
const static struct woption
|
||||
long_options[] =
|
||||
{
|
||||
{
|
||||
L"export", no_argument, 0, 'x'
|
||||
},
|
||||
{
|
||||
L"global", no_argument, 0, 'g'
|
||||
},
|
||||
{
|
||||
L"local", no_argument, 0, 'l'
|
||||
},
|
||||
{
|
||||
L"erase", no_argument, 0, 'e'
|
||||
},
|
||||
{
|
||||
L"names", no_argument, 0, 'n'
|
||||
} ,
|
||||
{
|
||||
L"unexport", no_argument, 0, 'u'
|
||||
} ,
|
||||
{
|
||||
L"universal", no_argument, 0, 'U'
|
||||
} ,
|
||||
{
|
||||
L"query", no_argument, 0, 'q'
|
||||
} ,
|
||||
{
|
||||
0, 0, 0, 0
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
wchar_t short_options[] = L"+xglenuUq";
|
||||
|
||||
int argc = builtin_count_args(argv);
|
||||
|
||||
/*
|
||||
Flags to set the work mode
|
||||
*/
|
||||
int local = 0, global = 0, export = 0;
|
||||
int erase = 0, list = 0, unexport=0;
|
||||
int universal = 0, query=0;
|
||||
|
||||
|
||||
/*
|
||||
Variables used for performing the actual work
|
||||
*/
|
||||
wchar_t *dest = 0;
|
||||
array_list_t values;
|
||||
string_buffer_t name_sb;
|
||||
int retcode=0;
|
||||
wchar_t *name;
|
||||
array_list_t indexes;
|
||||
int retval;
|
||||
|
||||
|
||||
/* Parse options to obtain the requested operation and the modifiers */
|
||||
woptind = 0;
|
||||
while (1)
|
||||
{
|
||||
int c = wgetopt_long(argc, argv, short_options, long_options, 0);
|
||||
|
||||
if (c == -1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
switch(c)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 'e':
|
||||
erase = 1;
|
||||
break;
|
||||
case 'n':
|
||||
list = 1;
|
||||
break;
|
||||
case 'x':
|
||||
export = 1;
|
||||
break;
|
||||
case 'l':
|
||||
local = 1;
|
||||
break;
|
||||
case 'g':
|
||||
global = 1;
|
||||
break;
|
||||
case 'u':
|
||||
unexport = 1;
|
||||
break;
|
||||
case 'U':
|
||||
universal = 1;
|
||||
break;
|
||||
case 'q':
|
||||
query = 1;
|
||||
break;
|
||||
case '?':
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( query && (erase || list || global || local || universal || export || unexport ) )
|
||||
{
|
||||
sb_printf(sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* Check operation and modifiers sanity */
|
||||
if( erase && list )
|
||||
{
|
||||
sb_printf(sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( local + global + universal > 1 )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_GLOCAL,
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( export && unexport )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_EXPUNEXP,
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( query )
|
||||
{
|
||||
/*
|
||||
Query mode. Return number of specified variables that do not exist.
|
||||
*/
|
||||
int i;
|
||||
for( i=woptind; i<argc; i++ )
|
||||
{
|
||||
if( !env_exist( argv[i] ) )
|
||||
retcode++;
|
||||
|
||||
}
|
||||
return retcode;
|
||||
}
|
||||
|
||||
|
||||
/* Parse destination */
|
||||
if( woptind < argc )
|
||||
{
|
||||
dest = wcsdup(argv[woptind++]);
|
||||
//fwprintf(stderr, L"Dest: %ls\n", dest);
|
||||
|
||||
if( !wcslen( dest ) )
|
||||
{
|
||||
free( dest );
|
||||
sb_printf( sb_err, BUILTIN_ERR_VARNAME_ZERO, argv[0] );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Parse values */
|
||||
// wchar_t **values = woptind < argc ? (wchar_t **) calloc(argc - woptind, sizeof(wchar_t *)) : 0;
|
||||
|
||||
al_init(&values);
|
||||
while( woptind < argc )
|
||||
{
|
||||
al_push(&values, argv[woptind++]);
|
||||
// fwprintf(stderr, L"Val: %ls\n", argv[woptind - 1]);
|
||||
}
|
||||
|
||||
/* Extract variable name and indexes */
|
||||
|
||||
sb_init(&name_sb);
|
||||
retval = parse_fill_name(&name_sb, dest);
|
||||
|
||||
|
||||
if( retval < 0 )
|
||||
retcode=1;
|
||||
|
||||
if( !retcode )
|
||||
{
|
||||
name = (wchar_t *) name_sb.buff;
|
||||
//fwprintf(stderr, L"Name is %ls\n", name);
|
||||
|
||||
al_init(&indexes);
|
||||
retval = parse_fill_indexes(&indexes, dest);
|
||||
if (retval < 0)
|
||||
retcode = 1;
|
||||
}
|
||||
|
||||
if( !retcode )
|
||||
{
|
||||
|
||||
int i;
|
||||
int finished=0;
|
||||
|
||||
/* Do the actual work */
|
||||
int scope = (local ? ENV_LOCAL : 0) | (global ? ENV_GLOBAL : 0) | (export ? ENV_EXPORT : 0) | (unexport ? ENV_UNEXPORT : 0) | (universal ? ENV_UNIVERSAL:0) | ENV_USER;
|
||||
if( list )
|
||||
{
|
||||
/* Maybe we should issue an error if there are any other arguments */
|
||||
print_variables(0, 0, scope);
|
||||
finished=1;
|
||||
}
|
||||
|
||||
if( (!finished ) &&
|
||||
(name == 0 || wcslen(name) == 0))
|
||||
{
|
||||
/* No arguments -- display name & value for all variables in scope */
|
||||
if( erase )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
_(L"%ls: Erase needs a variable name\n%ls\n"),
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
retcode = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
print_variables( 1, 1, scope );
|
||||
}
|
||||
|
||||
finished=1;
|
||||
}
|
||||
|
||||
|
||||
if( !finished )
|
||||
{
|
||||
if( al_get_count( &values ) == 0 &&
|
||||
al_get_count( &indexes ) == 0 &&
|
||||
!erase &&
|
||||
!list )
|
||||
{
|
||||
/*
|
||||
Only update the variable scope
|
||||
*/
|
||||
env_set( name, 0, scope );
|
||||
finished = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( !finished )
|
||||
{
|
||||
/* There are some arguments, we have at least a variable name */
|
||||
if( erase && al_get_count(&values) != 0 )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
_(L"%ls: Values cannot be specfied with erase\n%ls\n"),
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
retcode = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* All ok, we can alter the specified variable */
|
||||
array_list_t val_l;
|
||||
al_init(&val_l);
|
||||
|
||||
void *old=0;
|
||||
|
||||
if (al_get_count(&indexes) == 0)
|
||||
{
|
||||
/* We will act upon the entire variable */
|
||||
|
||||
al_push( &val_l, wcsdup(L"") );
|
||||
old = val_l.arr;
|
||||
|
||||
/* Build indexes for all variable or all new values */
|
||||
int end_index = erase ? al_get_count(&val_l) : al_get_count(&values);
|
||||
for (i = 0; i < end_index; i++)
|
||||
{
|
||||
int *ind = (int *) calloc(1, sizeof(int));
|
||||
*ind = i + 1;
|
||||
al_push(&indexes, ind);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We will act upon some specific indexes */
|
||||
expand_variable_array( env_get(name), &val_l );
|
||||
}
|
||||
|
||||
string_buffer_t result_sb;
|
||||
sb_init(&result_sb);
|
||||
if (erase)
|
||||
{
|
||||
int rem = erase_values(&val_l, &indexes);
|
||||
if (rem == 0)
|
||||
{
|
||||
env_remove(name, ENV_USER);
|
||||
}
|
||||
else
|
||||
{
|
||||
fill_buffer_from_list(&result_sb, &val_l);
|
||||
env_set(name, (wchar_t *) result_sb.buff, scope);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
update_values( &val_l,
|
||||
&indexes,
|
||||
&values );
|
||||
|
||||
fill_buffer_from_list( &result_sb,
|
||||
&val_l );
|
||||
|
||||
env_set(name,
|
||||
(wchar_t *) result_sb.buff,
|
||||
scope);
|
||||
}
|
||||
|
||||
al_foreach( &val_l, (void (*)(const void *))&free );
|
||||
al_destroy(&val_l);
|
||||
sb_destroy(&result_sb);
|
||||
}
|
||||
}
|
||||
|
||||
al_foreach( &indexes, (void (*)(const void *))&free );
|
||||
al_destroy(&indexes);
|
||||
}
|
||||
|
||||
/* Common cleanup */
|
||||
//fwprintf(stderr, L"Cleanup\n");
|
||||
free(dest);
|
||||
sb_destroy(&name_sb);
|
||||
al_destroy( &values );
|
||||
|
||||
return retcode;
|
||||
}
|
||||
|
||||
506
builtin_ulimit.c
506
builtin_ulimit.c
@@ -1,506 +0,0 @@
|
||||
/** \file builtin_ulimit.c Functions defining the ulimit builtin
|
||||
|
||||
Functions used for implementing the ulimit builtin.
|
||||
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "builtin.h"
|
||||
#include "common.h"
|
||||
#include "wgetopt.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Struct describing a resource limit
|
||||
*/
|
||||
struct resource_t
|
||||
{
|
||||
/**
|
||||
Resource id
|
||||
*/
|
||||
int resource;
|
||||
/**
|
||||
Description of resource
|
||||
*/
|
||||
const wchar_t *desc;
|
||||
/**
|
||||
Switch used on commandline to specify resource
|
||||
*/
|
||||
wchar_t switch_char;
|
||||
/**
|
||||
The implicit multiplier used when setting getting values
|
||||
*/
|
||||
int multiplier;
|
||||
}
|
||||
;
|
||||
|
||||
/**
|
||||
Array of resource_t structs, describing all known resource types.
|
||||
*/
|
||||
const static struct resource_t resource_arr[] =
|
||||
{
|
||||
{
|
||||
RLIMIT_CORE, L"Maximum size of core files created", L'c', 1024
|
||||
}
|
||||
,
|
||||
{
|
||||
RLIMIT_DATA, L"Maximum size of a process’s data segment", L'd', 1024
|
||||
}
|
||||
,
|
||||
{
|
||||
RLIMIT_FSIZE, L"Maximum size of files created by the shell", L'f', 1024
|
||||
}
|
||||
,
|
||||
#if HAVE_RLIMIT_MEMLOCK
|
||||
{
|
||||
RLIMIT_MEMLOCK, L"Maximum size that may be locked into memory", L'l', 1024
|
||||
}
|
||||
,
|
||||
#endif
|
||||
#if HAVE_RLIMIT_RSS
|
||||
{
|
||||
RLIMIT_RSS, L"Maximum resident set size", L'm', 1024
|
||||
}
|
||||
,
|
||||
#endif
|
||||
{
|
||||
RLIMIT_NOFILE, L"Maximum number of open file descriptors", L'n', 1
|
||||
}
|
||||
,
|
||||
{
|
||||
RLIMIT_STACK, L"Maximum stack size", L's', 1024
|
||||
}
|
||||
,
|
||||
{
|
||||
RLIMIT_CPU, L"Maximum amount of cpu time in seconds", L't', 1
|
||||
}
|
||||
,
|
||||
#if HAVE_RLIMIT_NPROC
|
||||
{
|
||||
RLIMIT_NPROC, L"Maximum number of processes available to a single user", L'u', 1
|
||||
}
|
||||
,
|
||||
#endif
|
||||
#if HAVE_RLIMIT_AS
|
||||
{
|
||||
RLIMIT_AS, L"Maximum amount of virtual memory available to the shell", L'v', 1024
|
||||
}
|
||||
,
|
||||
#endif
|
||||
{
|
||||
0, 0, 0, 0
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
/**
|
||||
Get the implicit multiplication factor for the specified resource limit
|
||||
*/
|
||||
static int get_multiplier( int what )
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i=0; resource_arr[i].desc; i++ )
|
||||
{
|
||||
if( resource_arr[i].resource == what )
|
||||
{
|
||||
return resource_arr[i].multiplier;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
Return the value for the specified resource limit
|
||||
*/
|
||||
static rlim_t get( int resource, int hard )
|
||||
{
|
||||
struct rlimit ls;
|
||||
|
||||
getrlimit( resource, &ls );
|
||||
|
||||
return hard ? ls.rlim_max:ls.rlim_cur;
|
||||
}
|
||||
|
||||
/**
|
||||
Print the value of the specified resource limit
|
||||
*/
|
||||
static void print( int resource, int hard )
|
||||
{
|
||||
rlim_t l = get( resource, hard );
|
||||
|
||||
if( l == RLIM_INFINITY )
|
||||
sb_append( sb_out, L"unlimited\n" );
|
||||
else
|
||||
sb_printf( sb_out, L"%d\n", l );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
Print values of all resource limits
|
||||
*/
|
||||
static void print_all( int hard )
|
||||
{
|
||||
int i;
|
||||
int w=0;
|
||||
|
||||
for( i=0; resource_arr[i].desc; i++ )
|
||||
{
|
||||
w=maxi( w, my_wcswidth(resource_arr[i].desc));
|
||||
}
|
||||
|
||||
for( i=0; resource_arr[i].desc; i++ )
|
||||
{
|
||||
struct rlimit ls;
|
||||
rlim_t l;
|
||||
getrlimit( resource_arr[i].resource, &ls );
|
||||
l = hard ? ls.rlim_max:ls.rlim_cur;
|
||||
|
||||
wchar_t *unit = ((resource_arr[i].resource==RLIMIT_CPU)?L"(seconds, ":(get_multiplier(resource_arr[i].resource)==1?L"(":L"(kB, "));
|
||||
|
||||
sb_printf( sb_out,
|
||||
L"%-*ls %10ls-%lc) ",
|
||||
w,
|
||||
resource_arr[i].desc,
|
||||
unit,
|
||||
resource_arr[i].switch_char);
|
||||
|
||||
if( l == RLIM_INFINITY )
|
||||
sb_append( sb_out, L"unlimited\n" );
|
||||
else
|
||||
sb_printf( sb_out, L"%d\n", l );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Returns the description for the specified resource limit
|
||||
*/
|
||||
static const wchar_t *get_desc( int what )
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i=0; resource_arr[i].desc; i++ )
|
||||
{
|
||||
if( resource_arr[i].resource == what )
|
||||
{
|
||||
return resource_arr[i].desc;
|
||||
}
|
||||
}
|
||||
return L"Not a resource";
|
||||
}
|
||||
|
||||
/**
|
||||
Set the new value of the specified resource limit
|
||||
*/
|
||||
static int set( int resource, int hard, int soft, rlim_t value )
|
||||
{
|
||||
struct rlimit ls;
|
||||
getrlimit( resource, &ls );
|
||||
if( value != RLIM_INFINITY )
|
||||
value *= get_multiplier( resource );
|
||||
|
||||
if( hard )
|
||||
{
|
||||
ls.rlim_max = value;
|
||||
}
|
||||
|
||||
if( soft )
|
||||
{
|
||||
ls.rlim_cur = value;
|
||||
|
||||
/*
|
||||
Do not attempt to set the soft limit higher than the hard limit
|
||||
*/
|
||||
if( ( value == RLIM_INFINITY && ls.rlim_max != RLIM_INFINITY ) ||
|
||||
( value != RLIM_INFINITY && ls.rlim_max != RLIM_INFINITY && value > ls.rlim_max))
|
||||
{
|
||||
ls.rlim_cur = ls.rlim_max;
|
||||
}
|
||||
}
|
||||
|
||||
if( setrlimit( resource, &ls ) )
|
||||
{
|
||||
if( errno == EPERM )
|
||||
sb_printf( sb_err, L"ulimit: Permission denied when changing resource of type '%ls'\n", get_desc( resource ) );
|
||||
else
|
||||
builtin_wperror( L"ulimit" );
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
Set all resource limits
|
||||
*/
|
||||
static int set_all( int hard, int soft, rlim_t value )
|
||||
{
|
||||
int i;
|
||||
int res=0;
|
||||
|
||||
for( i=0; resource_arr[i].desc; i++ )
|
||||
{
|
||||
if( set( resource_arr[i].resource, hard, soft, value ) )
|
||||
res = 1;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
int builtin_ulimit( wchar_t ** argv )
|
||||
{
|
||||
int hard=0;
|
||||
int soft=0;
|
||||
|
||||
int what = RLIMIT_FSIZE;
|
||||
int report_all = 0;
|
||||
|
||||
int argc = builtin_count_args( argv );
|
||||
|
||||
woptind=0;
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
const static struct woption
|
||||
long_options[] =
|
||||
{
|
||||
{
|
||||
L"all", no_argument, 0, 'a'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"hard", no_argument, 0, 'H'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"soft", no_argument, 0, 'S'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"core-size", no_argument, 0, 'c'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"data-size", no_argument, 0, 'd'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"file-size", no_argument, 0, 'f'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"lock-size", no_argument, 0, 'l'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"resident-set-size", no_argument, 0, 'm'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"file-descriptor-count", no_argument, 0, 'n'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"pipe-size", no_argument, 0, 'p'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"cpu-time", no_argument, 0, 't'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"process-count", no_argument, 0, 'u'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"virtual-memory-size", no_argument, 0, 'v'
|
||||
}
|
||||
,
|
||||
{
|
||||
0, 0, 0, 0
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
int opt_index = 0;
|
||||
|
||||
int opt = wgetopt_long( argc,
|
||||
argv,
|
||||
L"aHScdflmnptuv",
|
||||
long_options,
|
||||
&opt_index );
|
||||
if( opt == -1 )
|
||||
break;
|
||||
|
||||
switch( opt )
|
||||
{
|
||||
case 0:
|
||||
if(long_options[opt_index].flag != 0)
|
||||
break;
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
argv[0],
|
||||
long_options[opt_index].name );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
|
||||
return 1;
|
||||
|
||||
case L'a':
|
||||
report_all=1;
|
||||
break;
|
||||
|
||||
case L'H':
|
||||
hard=1;
|
||||
break;
|
||||
|
||||
case L'S':
|
||||
soft=1;
|
||||
break;
|
||||
|
||||
case L'c':
|
||||
what=RLIMIT_CORE;
|
||||
break;
|
||||
|
||||
case L'd':
|
||||
what=RLIMIT_DATA;
|
||||
break;
|
||||
|
||||
case L'f':
|
||||
what=RLIMIT_FSIZE;
|
||||
break;
|
||||
#if HAVE_RLIMIT_MEMLOCK
|
||||
case L'l':
|
||||
what=RLIMIT_MEMLOCK;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if HAVE_RLIMIT_RSS
|
||||
case L'm':
|
||||
what=RLIMIT_RSS;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case L'n':
|
||||
what=RLIMIT_NOFILE;
|
||||
break;
|
||||
|
||||
case L's':
|
||||
what=RLIMIT_STACK;
|
||||
break;
|
||||
|
||||
case L't':
|
||||
what=RLIMIT_CPU;
|
||||
break;
|
||||
|
||||
#if HAVE_RLIMIT_NPROC
|
||||
case L'u':
|
||||
what=RLIMIT_NPROC;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if HAVE_RLIMIT_AS
|
||||
case L'v':
|
||||
what=RLIMIT_AS;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case L'?':
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
switch( argc - woptind )
|
||||
{
|
||||
case 0:
|
||||
/*
|
||||
Show current limit value
|
||||
*/
|
||||
if( report_all )
|
||||
{
|
||||
print_all( hard );
|
||||
}
|
||||
else
|
||||
{
|
||||
print( what, hard );
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
/*
|
||||
Change current limit value
|
||||
*/
|
||||
rlim_t new_limit;
|
||||
wchar_t *end;
|
||||
|
||||
/*
|
||||
Set both hard and soft limits if nothing else was specified
|
||||
*/
|
||||
if( !(hard+soft) )
|
||||
{
|
||||
hard=soft=1;
|
||||
}
|
||||
|
||||
|
||||
if( wcscasecmp( argv[woptind], L"unlimited" )==0)
|
||||
{
|
||||
new_limit = RLIM_INFINITY;
|
||||
}
|
||||
else if( wcscasecmp( argv[woptind], L"hard" )==0)
|
||||
{
|
||||
new_limit = get( what, 1 );
|
||||
}
|
||||
else if( wcscasecmp( argv[woptind], L"soft" )==0)
|
||||
{
|
||||
new_limit = get( what, soft );
|
||||
}
|
||||
else
|
||||
{
|
||||
errno=0;
|
||||
new_limit = wcstol( argv[woptind], &end, 10 );
|
||||
if( errno || *end )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
L"%ls: Invalid limit '%ls'\n",
|
||||
argv[0],
|
||||
argv[woptind] );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( report_all )
|
||||
{
|
||||
return set_all( hard, soft, new_limit );
|
||||
}
|
||||
else
|
||||
{
|
||||
return set( what, hard, soft, new_limit );
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
L": Too many arguments\n",
|
||||
(void *)0 );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
325
common.h
325
common.h
@@ -1,325 +0,0 @@
|
||||
/** \file common.h
|
||||
Prototypes for various functions, mostly string utilities, that are used by most parts of fish.
|
||||
*/
|
||||
|
||||
#ifndef FISH_COMMON_H
|
||||
/**
|
||||
Header guard
|
||||
*/
|
||||
#define FISH_COMMON_H
|
||||
|
||||
#include <wchar.h>
|
||||
#include <termios.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
/**
|
||||
Under curses, tputs expects an int (*func)(char) as its last
|
||||
parameter, but in ncurses, tputs expects a int (*func)(int) as its
|
||||
last parameter. tputs_arg_t is defined to always be what tputs
|
||||
expects. Hopefully.
|
||||
*/
|
||||
|
||||
#ifdef NCURSES_VERSION
|
||||
typedef int tputs_arg_t;
|
||||
#else
|
||||
typedef char tputs_arg_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
Maximum number of bytes used by a single utf-8 character
|
||||
*/
|
||||
#define MAX_UTF8_BYTES 6
|
||||
|
||||
/**
|
||||
Color code for set_color. Does not update the color.
|
||||
*/
|
||||
|
||||
#define FISH_COLOR_IGNORE -1
|
||||
|
||||
/**
|
||||
Color code for set_color. Sets the default color.
|
||||
*/
|
||||
#define FISH_COLOR_RESET -2
|
||||
|
||||
/**
|
||||
Save the shell mode on startup so we can restore them on exit
|
||||
*/
|
||||
extern struct termios shell_modes;
|
||||
|
||||
/**
|
||||
The character to use where the text has been truncated. Is an
|
||||
ellipsis on unicode system and a $ on other systems.
|
||||
*/
|
||||
extern wchar_t ellipsis_char;
|
||||
|
||||
/**
|
||||
The maximum number of charset convertion errors to report
|
||||
*/
|
||||
extern int error_max;
|
||||
|
||||
/**
|
||||
The verbosity of fish
|
||||
*/
|
||||
extern int debug_level;
|
||||
|
||||
/**
|
||||
Profiling flag. True if commands should be profiled.
|
||||
*/
|
||||
extern char *profile;
|
||||
|
||||
/**
|
||||
Name of the current program. Should be set at startup. Used by the
|
||||
debug function.
|
||||
*/
|
||||
extern wchar_t *program_name;
|
||||
|
||||
/**
|
||||
Take an array_list_t containing wide strings and converts them to a
|
||||
single null-terminated wchar_t **.
|
||||
*/
|
||||
wchar_t **list_to_char_arr( array_list_t *l );
|
||||
|
||||
/**
|
||||
Read a line from the stream f into the buffer buff of length len. If
|
||||
buff is to small, it will be reallocated, and both buff and len will
|
||||
be updated to reflect this. Returns the number of bytes read or -1
|
||||
on failiure.
|
||||
|
||||
If the carriage return character is encountered, it is
|
||||
ignored. fgetws() considers the line to end if reading the file
|
||||
results in either a newline (L'\n') character, the null (L'\\0')
|
||||
character or the end of file (WEOF) character.
|
||||
*/
|
||||
int fgetws2( wchar_t **buff, int *len, FILE *f );
|
||||
|
||||
/**
|
||||
Sorts a list of wide strings according to the wcsfilecmp-function
|
||||
from the util library
|
||||
*/
|
||||
void sort_list( array_list_t *comp );
|
||||
|
||||
/**
|
||||
Returns a newly allocated wide character string equivalent of the
|
||||
specified multibyte character string
|
||||
*/
|
||||
wchar_t *str2wcs( const char *in );
|
||||
|
||||
/**
|
||||
Returns a newly allocated multibyte character string equivalent of
|
||||
the specified wide character string
|
||||
*/
|
||||
char *wcs2str( const wchar_t *in );
|
||||
|
||||
/**
|
||||
Returns a newly allocated wide character string array equivalent of
|
||||
the specified multibyte character string array
|
||||
*/
|
||||
char **wcsv2strv( const wchar_t **in );
|
||||
|
||||
/**
|
||||
Returns a newly allocated multibyte character string array equivalent of the specified wide character string array
|
||||
*/
|
||||
wchar_t **strv2wcsv( const char **in );
|
||||
|
||||
/**
|
||||
Returns a newly allocated concatenation of the specified wide
|
||||
character strings
|
||||
*/
|
||||
wchar_t *wcsdupcat( const wchar_t *a, const wchar_t *b );
|
||||
|
||||
/**
|
||||
Returns a newly allocated concatenation of the specified wide
|
||||
character strings. The last argument must be a null pointer.
|
||||
*/
|
||||
wchar_t *wcsdupcat2( const wchar_t *a, ... );
|
||||
|
||||
|
||||
/**
|
||||
Appends src to string dst of size siz (unlike wcsncat, siz is the
|
||||
full size of dst, not space left). At most siz-1 characters will be
|
||||
copied. Always NUL terminates (unless siz <= wcslen(dst)). Returns
|
||||
wcslen(src) + MIN(siz, wcslen(initial dst)). If retval >= siz,
|
||||
truncation occurred.
|
||||
|
||||
This is the OpenBSD strlcat function, modified for wide characters,
|
||||
and renamed to reflect this change.
|
||||
|
||||
*/
|
||||
size_t wcslcat( wchar_t *dst, const wchar_t *src, size_t siz );
|
||||
|
||||
/**
|
||||
Copy src to string dst of size siz. At most siz-1 characters will
|
||||
be copied. Always NUL terminates (unless siz == 0). Returns
|
||||
wcslen(src); if retval >= siz, truncation occurred.
|
||||
|
||||
This is the OpenBSD strlcpy function, modified for wide characters,
|
||||
and renamed to reflect this change.
|
||||
*/
|
||||
size_t wcslcpy( wchar_t *dst, const wchar_t *src, size_t siz );
|
||||
|
||||
/**
|
||||
Test if the given string is a valid variable name
|
||||
*/
|
||||
|
||||
int wcsvarname( wchar_t *str );
|
||||
|
||||
|
||||
/**
|
||||
A wcswidth workalike. Fish uses this since the regular wcswidth seems flaky.
|
||||
*/
|
||||
int my_wcswidth( const wchar_t *c );
|
||||
|
||||
/**
|
||||
This functions returns the end of the quoted substring beginning at
|
||||
\c in. It can handle both single and double quotes. Returns 0 on
|
||||
error.
|
||||
|
||||
\param in the position of the opening quote
|
||||
*/
|
||||
wchar_t *quote_end( const wchar_t *in );
|
||||
|
||||
/**
|
||||
A call to this function will reset the error counter. Some
|
||||
functions print out non-critical error messages. These should check
|
||||
the error_count before, and skip printing the message if
|
||||
MAX_ERROR_COUNT messages have been printed. The error_reset()
|
||||
should be called after each interactive command executes, to allow
|
||||
new messages to be printed.
|
||||
*/
|
||||
void error_reset();
|
||||
|
||||
/**
|
||||
This function behaves exactly like a wide character equivalent of
|
||||
the C function setlocale, except that it will also try to detect if
|
||||
the user is using a Unicode character set, and if so, use the
|
||||
unicode ellipsis character as ellipsis, instead of '$'.
|
||||
*/
|
||||
const wchar_t *wsetlocale( int category, const wchar_t *locale );
|
||||
|
||||
/**
|
||||
Checks if \c needle is included in the list of strings specified
|
||||
|
||||
\param needle the string to search for in the list
|
||||
*/
|
||||
int contains_str( const wchar_t *needle, ... );
|
||||
|
||||
/**
|
||||
Call read while blocking the SIGCHLD signal. Should only be called
|
||||
if you _know_ there is data available for reading.
|
||||
*/
|
||||
int read_blocked(int fd, void *buf, size_t count);
|
||||
|
||||
/**
|
||||
This is for writing process notification messages. Has to write to
|
||||
stdout, so clr_eol and such functions will work correctly. Not an
|
||||
issue since this function is only used in interactive mode anyway.
|
||||
*/
|
||||
int writeb( tputs_arg_t b );
|
||||
|
||||
/**
|
||||
Exit program at once, leaving an error message about running out of memory
|
||||
*/
|
||||
void die_mem();
|
||||
|
||||
/**
|
||||
Clean up
|
||||
*/
|
||||
void common_destroy();
|
||||
|
||||
/**
|
||||
Issue a debug message with printf-style string formating and
|
||||
automatic line breaking. The string will begin with the string \c
|
||||
program_name, followed by a colon and a whitespace.
|
||||
|
||||
\param level the priority of the message. Lower number means higher priority. Messages with a priority_number higher than \c debug_level will be ignored..
|
||||
\param msg the message format string.
|
||||
|
||||
Example:
|
||||
|
||||
<code>debug( 1, L"Pi = %.3f", M_PI );</code>
|
||||
|
||||
will print the string 'fish: Pi = 3.141', given that debug_level is 1 or higher, and that program_name is 'fish'.
|
||||
*/
|
||||
void debug( int level, const wchar_t *msg, ... );
|
||||
|
||||
/**
|
||||
Replace special characters with backslash escape sequences. Newline is
|
||||
replaced with \n, etc.
|
||||
|
||||
\param in The string to be escaped
|
||||
\param escape_all Whether all characters wich hold special meaning in fish (Pipe, semicolon, etc,) should be escaped, or only unprintable characters
|
||||
\return The escaped string, or 0 if there is not enough memory
|
||||
*/
|
||||
|
||||
wchar_t *escape( const wchar_t *in,
|
||||
int escape_all );
|
||||
|
||||
/**
|
||||
Expand backslashed escapes and substitute them with their unescaped
|
||||
counterparts. Also optionally change the wildcards, the tilde
|
||||
character and a few more into constants which are defined in a
|
||||
private use area of Unicode. This assumes wchar_t is a unicode
|
||||
character set.
|
||||
|
||||
The result must be free()d. The original string is not modified. If
|
||||
an invalid sequence is specified, 0 is returned.
|
||||
|
||||
*/
|
||||
wchar_t *unescape( const wchar_t * in,
|
||||
int escape_special );
|
||||
|
||||
/**
|
||||
Block SIGCHLD. Calls to block/unblock may be nested, and only once the nest count reaches zero wiull the block be removed.
|
||||
*/
|
||||
void block();
|
||||
|
||||
/**
|
||||
undo call to block().
|
||||
*/
|
||||
void unblock();
|
||||
|
||||
/**
|
||||
Attempt to acquire a lock based on a lockfile, waiting LOCKPOLLINTERVAL
|
||||
milliseconds between polls and timing out after timeout seconds,
|
||||
thereafter forcibly attempting to obtain the lock if force is non-zero.
|
||||
Returns 1 on success, 0 on failure.
|
||||
To release the lock the lockfile must be unlinked.
|
||||
A unique temporary file named by appending characters to the lockfile name
|
||||
is used; any pre-existing file of the same name is subject to deletion.
|
||||
*/
|
||||
int acquire_lock_file( const char *lockfile, const int timeout, int force );
|
||||
|
||||
/**
|
||||
Returns the width of the terminal window, so that not all
|
||||
functions that use these values continually have to keep track of
|
||||
it.
|
||||
|
||||
Only works if common_handle_winch is registered to handle winch signals.
|
||||
*/
|
||||
int common_get_width();
|
||||
/**
|
||||
Returns the height of the terminal window, so that not all
|
||||
functions that use these values continually have to keep track of
|
||||
it.
|
||||
|
||||
Only works if common_handle_winch is registered to handle winch signals.
|
||||
*/
|
||||
int common_get_height();
|
||||
|
||||
/**
|
||||
Handle a window change event by looking up the new window size and
|
||||
saving it in an internal variable used by common_get_wisth and
|
||||
common_get_height().
|
||||
*/
|
||||
void common_handle_winch( int signal );
|
||||
|
||||
/**
|
||||
Write paragraph of output to screen. Ignore newlines in message and
|
||||
perform internal line-breaking.
|
||||
*/
|
||||
void write_screen( const wchar_t *msg );
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
2231
complete.c
2231
complete.c
File diff suppressed because it is too large
Load Diff
167
complete.h
167
complete.h
@@ -1,167 +0,0 @@
|
||||
/** \file complete.h
|
||||
Prototypes for functions related to tab-completion.
|
||||
|
||||
These functions are used for storing and retrieving tab-completion data, as well as for performing tab-completion.
|
||||
*/
|
||||
|
||||
#ifndef FISH_COMPLETE_H
|
||||
/**
|
||||
Header guard
|
||||
*/
|
||||
#define FISH_COMPLETE_H
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
/** Use all completions */
|
||||
#define SHARED 0
|
||||
/** Do not use file completion */
|
||||
#define NO_FILES 1
|
||||
/** Require a parameter after completion */
|
||||
#define NO_COMMON 2
|
||||
/** Only use the argument list specifies with completion after option. This is the same as (NO_FILES & NO_COMMON) */
|
||||
#define EXCLUSIVE 3
|
||||
|
||||
/** Command is a path */
|
||||
#define PATH 1
|
||||
/** Command is not a path */
|
||||
#define COMMAND 0
|
||||
|
||||
/** Separateor between completion and description*/
|
||||
#define COMPLETE_SEP L'\004'
|
||||
/** Separateor between completion and description*/
|
||||
#define COMPLETE_SEP_STR L"\004"
|
||||
|
||||
/**
|
||||
Character that separates the completion and description on programmable completions
|
||||
*/
|
||||
#define PROG_COMPLETE_SEP L'\t'
|
||||
|
||||
/**
|
||||
Initializes various structures used for tab-completion.
|
||||
*/
|
||||
void complete_init();
|
||||
|
||||
/**
|
||||
Destroys various structures used for tab-completion and free()s the memory used by them.
|
||||
*/
|
||||
void complete_destroy();
|
||||
|
||||
/**
|
||||
|
||||
Add a completion.
|
||||
|
||||
Values are copied and should be freed by the caller.
|
||||
|
||||
Examples:
|
||||
|
||||
The command 'gcc -o' requires that a file follows it, so the
|
||||
NO_COMMON option is suitable. This can be done using the following
|
||||
line:
|
||||
|
||||
complete -c gcc -s o -r
|
||||
|
||||
The command 'grep -d' required that one of the strings 'read',
|
||||
'skip' or 'recurse' is used. As such, it is suitable to specify that
|
||||
a completion requires one of them. This can be done using the
|
||||
following line:
|
||||
|
||||
complete -c grep -s d -x -a "read skip recurse"
|
||||
|
||||
|
||||
\param cmd Command to complete.
|
||||
\param cmd_type If cmd_type is PATH, cmd will be interpreted as the absolute
|
||||
path of the program (optionally containing wildcards), otherwise it
|
||||
will be interpreted as the command name.
|
||||
\param short_opt The single character name of an option. (-a is a short option, --all and -funroll are long options)
|
||||
\param long_opt The multi character name of an option. (-a is a short option, --all and -funroll are long options)
|
||||
\param long_mode Whether to use old style, single dash long options.
|
||||
\param result_mode Whether to search further completions when this
|
||||
completion has been succesfully matched. If result_mode is SHARED,
|
||||
any other completions may also be used. If result_mode is NO_FILES,
|
||||
file completion should not be used, but other completions may be
|
||||
used. If result_mode is NO_COMMON, on option may follow it - only a
|
||||
parameter. If result_mode is EXCLUSIVE, no option may follow it, and
|
||||
file completion is not performed.
|
||||
\param comp A space separated list of completions which may contain subshells.
|
||||
\param desc A description of the completion.
|
||||
\param authorative Whether there list of completions for this command is complete. If true, any options not matching one of the provided options will be flagged as an error by syntax highlighting.
|
||||
\param condition a command to be run to check it this completion should be used. If \c condition is empty, the completion is always used.
|
||||
|
||||
*/
|
||||
void complete_add( const wchar_t *cmd,
|
||||
int cmd_type,
|
||||
wchar_t short_opt,
|
||||
const wchar_t *long_opt,
|
||||
int long_mode,
|
||||
int result_mode,
|
||||
int authorative,
|
||||
const wchar_t *condition,
|
||||
const wchar_t *comp,
|
||||
const wchar_t *desc );
|
||||
|
||||
/**
|
||||
Remove a previously defined completion
|
||||
*/
|
||||
void complete_remove( const wchar_t *cmd,
|
||||
int cmd_type,
|
||||
wchar_t short_opt,
|
||||
const wchar_t *long_opt );
|
||||
|
||||
/**
|
||||
Find all completions of the command cmd, insert them into out. The
|
||||
caller must free the variables returned in out. The results are
|
||||
returned in the array_list_t 'out', in the format of wide character
|
||||
strings, with each element consisting of a suggested completion and
|
||||
a description of what kind of object this completion represents,
|
||||
separated by a separator of type COMPLETE_SEP.
|
||||
|
||||
Values returned by this function should be freed by the caller.
|
||||
*/
|
||||
void complete( const wchar_t *cmd, array_list_t *out );
|
||||
|
||||
/**
|
||||
Print a list of all current completions into the string_buffer_t.
|
||||
|
||||
\param out The string_buffer_t to write completions to
|
||||
*/
|
||||
void complete_print( string_buffer_t *out );
|
||||
|
||||
/**
|
||||
Obtain a description string for the file specified by the filename.
|
||||
|
||||
The returned value is a string constant and should not be freed.
|
||||
|
||||
\param filename The file for which to find a description string
|
||||
*/
|
||||
const wchar_t *complete_get_desc( const wchar_t *filename );
|
||||
|
||||
/**
|
||||
Tests if the specified option is defined for the specified command
|
||||
*/
|
||||
int complete_is_valid_option( const wchar_t *str,
|
||||
const wchar_t *opt,
|
||||
array_list_t *errors );
|
||||
|
||||
/**
|
||||
Tests if the specified argument is valid for the specified option
|
||||
and command
|
||||
*/
|
||||
int complete_is_valid_argument( const wchar_t *str,
|
||||
const wchar_t *opt,
|
||||
const wchar_t *arg );
|
||||
|
||||
|
||||
/**
|
||||
Load command-specific completions for the specified command. This
|
||||
is done automatically whenever completing any given command, so
|
||||
there is no need to call this except in the case of completions
|
||||
with internal dependencies.
|
||||
|
||||
\param cmd the command for which to load command-specific completions
|
||||
\param reload should the commands completions be reloaded, even if they where previously loaded. (This is set to true on actual completions, so that changed completion are updated in running shells)
|
||||
*/
|
||||
void complete_load( wchar_t *cmd, int reload );
|
||||
|
||||
#endif
|
||||
1277
config.guess
vendored
1277
config.guess
vendored
File diff suppressed because it is too large
Load Diff
552
config.sub
vendored
552
config.sub
vendored
File diff suppressed because it is too large
Load Diff
1018
configure.ac
1018
configure.ac
File diff suppressed because it is too large
Load Diff
22
count.c
22
count.c
@@ -1,22 +0,0 @@
|
||||
/** \file count.c
|
||||
The length command, used for determining the number of items in an
|
||||
environment variable array.
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/**
|
||||
The main function. Does nothing but return the number of arguments.
|
||||
|
||||
This command, unlike all other fish commands, does not feature a -h
|
||||
or --help option. This is because we want to avoid errors on arrays
|
||||
that have -h or --help as entries, which is very common when
|
||||
parsing options, etc. For this reason, the main fish binary does a
|
||||
check and prints help usage if -h or --help is explicitly given to
|
||||
the command, but not if it is the contents of a variable.
|
||||
*/
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
printf( "%d\n", argc-1 );
|
||||
return argc==1;
|
||||
}
|
||||
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@@ -0,0 +1 @@
|
||||
8
|
||||
31
debian/control
vendored
Normal file
31
debian/control
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
Source: fish
|
||||
Section: shells
|
||||
Priority: extra
|
||||
Maintainer: ridiculous_fish <corydoras@ridiculousfish.com>
|
||||
Uploaders: David Adam <zanchey@ucc.gu.uwa.edu.au>, Siteshwar Vashisht <siteshwar@gmail.com>
|
||||
Build-Depends: debhelper (>= 8.0.0), libncurses5-dev, autoconf, autotools-dev, dh-autoreconf, gettext
|
||||
Standards-Version: 3.9.4
|
||||
Homepage: http://fishshell.com/
|
||||
Vcs-Git: git://github.com/fish-shell/fish-shell.git
|
||||
Vcs-Browser: https://github.com/fish-shell/fish-shell
|
||||
|
||||
Package: fish
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, passwd (>= 4.0.3-10), bc, gettext-base, man-db
|
||||
Recommends: python (>=2.6), xsel (>=1.2.0), xdg-utils
|
||||
Description: friendly interactive shell
|
||||
Fish is a command-line shell for modern systems, focusing on user-friendliness,
|
||||
sensibility and discoverability in interactive use. The syntax is simple, but
|
||||
not POSIX compliant.
|
||||
|
||||
Package: fish-dbg
|
||||
Architecture: any
|
||||
Section: debug
|
||||
Priority: extra
|
||||
Depends: fish (= ${binary:Version}), ${misc:Depends}
|
||||
Description: debugging symbols for friendly interactive shell
|
||||
Fish is a command-line shell for modern systems, focusing on user-friendliness,
|
||||
sensibility and discoverability in interactive use. The syntax is simple, but
|
||||
not POSIX compliant.
|
||||
.
|
||||
This package contains the debugging symbols for fish.
|
||||
83
debian/copyright
vendored
Normal file
83
debian/copyright
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
This work was packaged for Debian by David Adam <zanchey@ucc.gu.uwa.edu.au>
|
||||
on Thu, 14 Jun 2012 20:33:34 +0800, based on work by James Vega
|
||||
<jamessan@jamessan.com>.
|
||||
|
||||
It was downloaded from:
|
||||
|
||||
https://github.com/fish-shell/fish-shell
|
||||
|
||||
Upstream Authors:
|
||||
|
||||
Axel Liljencrantz
|
||||
ridiculous_fish
|
||||
|
||||
Copyright:
|
||||
|
||||
Copyright (C) 2005-2008 Axel Liljencrantz
|
||||
Copyright (C) 2011-2012 ridiculous_fish
|
||||
|
||||
License:
|
||||
|
||||
Copyright (C) 2005-2008 Axel Liljencrantz
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2 as
|
||||
published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
MA 02110-1301, USA.
|
||||
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||
|
||||
Fish contains code under the BSD license, namely versions of the
|
||||
two functions strlcat and strlcpy, modified for use with wide
|
||||
character strings.
|
||||
|
||||
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
The XSel command, written and copyrighted by Conrad Parker, is
|
||||
distributed together with, and used by fish. It is released under the MIT
|
||||
license.
|
||||
|
||||
It is Copyright (C) 2001 Conrad Parker <conrad@vergenet.net>
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software
|
||||
and its documentation for any purpose is hereby granted without fee,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation. No representations are made about the
|
||||
suitability of this software for any purpose. It is provided "as is"
|
||||
without express or implied warranty.
|
||||
|
||||
Fish contains code from the glibc library, namely the wcstok function
|
||||
in fallback.c. This code is licensed under the LGPL.
|
||||
|
||||
On Debian systems, the complete text of the GNU Lesser General
|
||||
Public License can be found in `/usr/share/common-licenses/LGPL'.
|
||||
|
||||
The Debian packaging is:
|
||||
|
||||
Copyright (C) 2005 James Vega <jamessan@jamessan.com>
|
||||
Copyright (C) 2012 David Adam <zanchey@ucc.gu.uwa.edu.au>
|
||||
|
||||
and is licensed under the GPL version 2, see above.
|
||||
12
debian/fish.doc-base
vendored
Normal file
12
debian/fish.doc-base
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
Document: fish
|
||||
Title: Debian fish Manual
|
||||
Author: Axel Liljencrantz <axel@liljencrantz.se>
|
||||
Abstract: This guide documents fish, a shell
|
||||
geared towards interactive use.
|
||||
Section: Shells
|
||||
|
||||
Format: HTML
|
||||
Index: /usr/share/doc/fish/index.html
|
||||
Files: /usr/share/doc/fish/*.html
|
||||
|
||||
|
||||
2
debian/menu
vendored
Normal file
2
debian/menu
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
?package(fish):needs="text" section="Applications/Shells"\
|
||||
title="fish" command="/usr/bin/fish"
|
||||
47
debian/postinst
vendored
Normal file
47
debian/postinst
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/bin/sh
|
||||
# postinst script for fish
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postinst> `configure' <most-recently-configured-version>
|
||||
# * <old-postinst> `abort-upgrade' <new version>
|
||||
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||
# <new-version>
|
||||
# * <postinst> `abort-remove'
|
||||
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||
# <failed-install-package> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
add_shell() {
|
||||
if ! type add-shell > /dev/null 2>&1; then
|
||||
return
|
||||
fi
|
||||
|
||||
add-shell /usr/bin/fish
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
add_shell
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
37
debian/postrm
vendored
Normal file
37
debian/postrm
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
# postrm script for fish
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postrm> `remove'
|
||||
# * <postrm> `purge'
|
||||
# * <old-postrm> `upgrade' <new-version>
|
||||
# * <new-postrm> `failed-upgrade' <old-version>
|
||||
# * <new-postrm> `abort-install'
|
||||
# * <new-postrm> `abort-install' <old-version>
|
||||
# * <new-postrm> `abort-upgrade' <old-version>
|
||||
# * <disappearer's-postrm> `disappear' <overwriter>
|
||||
# <overwriter-version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
|
||||
case "$1" in
|
||||
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postrm called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
46
debian/prerm
vendored
Normal file
46
debian/prerm
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
# prerm script for fish
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <prerm> `remove'
|
||||
# * <old-prerm> `upgrade' <new-version>
|
||||
# * <new-prerm> `failed-upgrade' <old-version>
|
||||
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
|
||||
# * <deconfigured's-prerm> `deconfigure' `in-favour'
|
||||
# <package-being-installed> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
remove_shell() {
|
||||
if ! type remove-shell > /dev/null 2>&1; then
|
||||
return
|
||||
fi
|
||||
|
||||
remove-shell /usr/bin/fish
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
remove|deconfigure)
|
||||
remove_shell
|
||||
;;
|
||||
|
||||
upgrade|failed-upgrade)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "prerm called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
25
debian/rules
vendored
Executable file
25
debian/rules
vendored
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
export DH_VERBOSE=1
|
||||
|
||||
# dpkg-dev 1.16.1 doesn't export buildflags
|
||||
# can be removed once on dh compat level 9
|
||||
DPKG_EXPORT_BUILDFLAGS = 1
|
||||
-include /usr/share/dpkg/buildflags.mk
|
||||
|
||||
%:
|
||||
dh $@ --with autotools-dev,autoreconf
|
||||
|
||||
override_dh_auto_install:
|
||||
dh_auto_install --destdir=debian/fish
|
||||
|
||||
override_dh_installdocs:
|
||||
dh_installdocs --link-doc=fish
|
||||
|
||||
override_dh_strip:
|
||||
dh_strip --dbg-package=fish-dbg
|
||||
|
||||
# Don't run tests; they don't work until fish is installed
|
||||
override_dh_auto_test:
|
||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (quilt)
|
||||
1161
doc_src/Doxyfile.in
1161
doc_src/Doxyfile.in
File diff suppressed because it is too large
Load Diff
264
doc_src/FORMATTING.md
Normal file
264
doc_src/FORMATTING.md
Normal file
@@ -0,0 +1,264 @@
|
||||
# Formatting guide for fish docs
|
||||
|
||||
The fish documentation has been updated to support Doxygen 1.8.7+, and while the main benefit of this change is extensive Markdown support, the addition of a fish lexicon and syntax filter, combined with semantic markup rules allows for automatic formatting enhancements across the HTML user_docs, the developer docs and the man pages.
|
||||
|
||||
Initially my motivation was to fix a problem with long options ([Issue #1557](https://github.com/fish-shell/fish-shell/issues/1557) on GitHub), but as I worked on fixing the issue I realised there was an opportunity to simplify, reinforce and clarify the current documentation, hopefully making further contribution easier and cleaner, while allowing the documentation examples to presented more clearly with less author effort.
|
||||
|
||||
While the documentation is pretty robust to variations in the documentation source, adherence to the following style guide will help keep the already excellent documention in good shape moving forward.
|
||||
|
||||
## Line breaks and wrapping
|
||||
|
||||
Contrary to the rest of the fish source code, the documentation greatly benefits from the use of long lines and soft wrapping. It allows paragraphs to be treated as complete blocks by Doxygen, means that the semantic filter can see complete lines when deciding on how to apply syntax highlighting, and means that man pages will consistently wrap to the width of the users console in advanced pagers, such as 'most'.
|
||||
|
||||
## Doxygen special commands and aliases
|
||||
|
||||
While Markdown syntax forms the basis of the documentation content, there are some exceptions that require the use of Doxygen special commands. On the whole, Doxygen commands should be avoided, especially inline word formatting such as \\c as this would allow Doxygen to make unhelpful assumptions, such as converting double dashes (\--) to n-dashes (–).
|
||||
|
||||
### Structure: \\page, \\section and \\subsection
|
||||
|
||||
Use of Doxygen sections markers are important, as these determine what will be eventually output as a web page, man page or included in the developer docs.
|
||||
|
||||
Currently the make process for the documentation is quite convoluted, but basically the HTML docs are produced from a single, compiled file, doc.h. This contains a number of \\page markers that produce the various pages used in the documentation. The format of a \\page mark is:
|
||||
|
||||
\page universally_unique_page_id Page title
|
||||
|
||||
The source files that contain the page markers are currently:
|
||||
|
||||
- __index.hdr.in__: Core documentation
|
||||
- __commands.hdr.in__: Individual commands
|
||||
- __tutorial.hdr__: Tutorial
|
||||
- __design.hdr__: Design document
|
||||
- __faq.hdr__: Frequently Asked Questions
|
||||
- __license.hdr__: Fish and 3rd party licences
|
||||
|
||||
Unless there is a _VERY_ good reason and developer consensus, new pages should never be added.
|
||||
|
||||
The rest of the documentation is structured using \\section and \\subsection markers. Most of the source files (listed above) contain their full content, the exception being commands, which are separated out into source text files in the doc_src directory. These files are concatenated into one file, so each one starts with a \\section declaration. The synopsis, description and examples (if present) are declared as \\subsections. The format of these marks is practically identical to the page mark.
|
||||
|
||||
\section universally_unique_section_id Section title
|
||||
\subsection universally_unique_subsection_id Subsection title
|
||||
|
||||
Each page, section and subsection id _must_ be unique across the whole of the documentation, otherwise Doxygen will issue a warning.
|
||||
|
||||
### Semantic markup: the \\fish .. \\endfish block
|
||||
|
||||
While Doxygen has support for \\code..\\endcode blocks with enhanced markup and syntax colouring, it only understands the core Doxygen languages: C, C++, Objective C, Java, PHP, Python, Tcl and Fortran. To enhance Fish's syntax presentation, use the special \\fish..\\endfish blocks instead.
|
||||
|
||||
Text placed in this block will be parsed by Doxygen using the included lexicon filter (see lexicon_filter.in) as a Doxygen input filter. The filter is built during make so that it can pick up information on builtins, functions and shell commands mentioned in completions and apply markup to keywords found inside the \\fish block.
|
||||
|
||||
Basically, preformatted plain text inside the \\fish block is fed through the filter and is returned marked up so that Doxygen aliases can convert it back to a presentable form, according to the output document type.
|
||||
|
||||
For instance:
|
||||
|
||||
`echo hello world`
|
||||
|
||||
is transformed into:
|
||||
|
||||
`@cmnd{echo} @args{hello} @args{world}`
|
||||
|
||||
which is then transformed by Doxygen into an HTML version (`make doc`):
|
||||
|
||||
`<span class="command">echo</span> <span class="argument">hello</span> <span class="argument">world</span>`
|
||||
|
||||
A man page version (`make share/man`):
|
||||
|
||||
__echo__ hello world
|
||||
|
||||
And a simple HTML version for the developer docs (`make doc`) and the LATEX/PDF manual (`make doc/refman.pdf`):
|
||||
|
||||
`echo hello world`
|
||||
|
||||
### Fonts
|
||||
|
||||
In older browsers, it was easy to set the fonts used for the three basic type styles (serif, sans-serif and monospace). Modern browsers have removed these options in their respective quests for simplification, assuming the content author will provide suitable styles for the content in the site's CSS, or the end user will provide overriding styles manually. Doxygen's default styling is very simple and most users will just accept this default.
|
||||
|
||||
I've tried to use a sensible set of fonts in the documentation's CSS based on 'good' terminal fonts and as a result the firt preference font used throughout the documentation is '[DejaVu](http://dejavu-fonts.org)'. The rationale behaind this is that while DejaVu is getting a little long in the tooth, it still provides the most complete support across serif, sans-serif and monospace styles (giving a well balanced feel and consistent [x-height](http://en.wikipedia.org/wiki/X-height)), has the widest support for extended Unicode characters and has a free, permissive licenses (though it's still incompatible with GPLv2, though arguably less so than the SIL Open Font license, though this is a moot point when using it solely in the docs).
|
||||
|
||||
#### Fonts inside \\fish blocks and \`backticks\`
|
||||
|
||||
As the point of these contructs is to make fish's syntax clearer to the user, it makes sense to mimic what the user will see in the console, therefore any content is formatted using the monospaced style, specifically monospaced fonts are chosen in the following order:
|
||||
|
||||
1. __DejaVu Sans Mono__: Explained above. [[↓](http://dejavu-fonts.org)]
|
||||
2. __Source Code Pro__: Monospaced code font, part of Adobe's free Edge Web Fonts. [[↓](https://edgewebfonts.adobe.com)]
|
||||
3. __Menlo__: Apple supplied variant of DejaVu.
|
||||
4. __Ubuntu Mono__: Ubuntu Linux's default monospaced font. [[↓](http://font.ubuntu.com)]
|
||||
5. __Consolas__: Modern Microsoft supplied console font.
|
||||
6. __Monaco__: Apple supplied console font since 1984!
|
||||
7. __Lucida Console__: Generic mono terminal font, standard in many OS's and distros.
|
||||
8. __monospace__: Catchall style. Chooses default monospaced font, often Courier.
|
||||
9. __fixed__: As above, more often used on mobile devices.
|
||||
|
||||
#### General Fonts
|
||||
|
||||
1. __DejaVu Sans__: As above.[[↓](http://dejavu-fonts.org)]
|
||||
2. __Roboto__: Elegant Google free font and is Doxygen's default [[↓](http://www.google.com/fonts/specimen/Roboto)]
|
||||
3. __Lucida Grande__: Default Apple OS X content font.
|
||||
4. __Calibri__: Default Microsoft Office font (since 2007).
|
||||
5. __Verdana__: Good general font found in a lot of OSs.
|
||||
6. __Helvetica Neue__: Better spaced and balanced Helvetica/Arial variant.
|
||||
7. __Helvetica__: Standard humanist typeface found almost everywhere.
|
||||
8. __Arial__: Microsoft's Helvetica.
|
||||
9. __sans-serif__: Catchall style. Chooses default sans-serif typeface, often Helvetica.
|
||||
|
||||
The ordering of the fonts is important as it's designed to allow the documentation to settle into a number of different identities according to the fonts available. If you have the complete DejaVu family installed, then the docs are presented using that, and if your Console is set up to use the same fonts, presentation will be completely consistent.
|
||||
|
||||
On OS X, with nothing extra installed, the docs will default to Menlo and Lucida Grande giving a Mac feel. Under Windows, it will default to using Consolas and Calibri on recent versions, giving a modern Windows style.
|
||||
|
||||
#### Other sources:
|
||||
|
||||
- [Font Squirrel](http://www.fontsquirrel.com): Good source of open source font packages.
|
||||
|
||||
### Choosing a CLI style: using a \\fish{style} block
|
||||
|
||||
By default, when output as HTML, a \\fish block uses syntax colouring suited to the style of the documentation rather than trying to mimic the terminal. The block has a light, bordered background and a colour scheme that 'suggests' what the user would see in a console.
|
||||
|
||||
Additional stying can be applied adding a style declaration:
|
||||
|
||||
\fish{additional_style [another_style...]}
|
||||
...
|
||||
\endfish
|
||||
|
||||
This will translate to classes applied to the `<div>` tag, like so:
|
||||
|
||||
<div class="fish additional_style another_style">
|
||||
...
|
||||
</div>
|
||||
|
||||
The various classes are defined in `doc_src/user_doc.css` and new style can be simply added
|
||||
|
||||
The documentation currently defines a couple of additional styles:
|
||||
|
||||
- __cli-dark__: Used in the _tutorial_ and _FAQ_ to simulate a dark background terminal, with fish's default colours (slightly tweaked for legibility in the browser).
|
||||
|
||||
- __synopsis__: A simple colour theme helpful for displaying the logical 'summary' of a command's syntax, options and structure.
|
||||
|
||||
## Markdown
|
||||
|
||||
Apart from the exceptions discussed above, the rest of the documentation now supports the use of Markdown. As such the use of Doxygen special commands for HTML tags is unnecessary.
|
||||
|
||||
There are a few exceptions and extensions to the Markdown [standard](http://daringfireball.net/projects/markdown/) that are documented in the Doxygen [documentation](http://www.stack.nl/~dimitri/doxygen/manual/markdown.html).
|
||||
|
||||
### \`Backticks\`
|
||||
|
||||
As is standard in Markdown and 'Github Flavoured Markdown' (GFM), backticks can be used to denote inline technical terms in the documentation, `like so`. In the documentation this will set the font to the monospaced 'console' typeface and will cause the enclosed term to stand out.
|
||||
|
||||
However, fenced code blocks using 4 spaces or 3 backticks (\`\`\`) should be avoided as Doxygen will interpret these as \\code blocks and try to apply standard syntax colouring, which doesn't work so well for fish examples. Use `\fish..\endfish` blocks instead.
|
||||
|
||||
### Lists
|
||||
|
||||
Standard Markdown list rules apply, but as Doxygen will collapse white space on output, combined with the use of long lines, it's a good idea to include an extra new line between long list items to assist future editing.
|
||||
|
||||
## Special cases
|
||||
|
||||
The following can be used in \\fish blocks to render some fish scenarios. These are mostly used in the tutorial when an interactive situation needs to be displayed.
|
||||
|
||||
### Custom formatting tags
|
||||
|
||||
- `<s>`: auto\<s\>suggestion\</s\>.
|
||||
- `<m>`: \<m\>Matched\</m\> items, such as tab completions.
|
||||
- `<sm>`: Matched items \<sm\>searched\<sm\> for, like grep results.
|
||||
- `<error>`: \<error\>This would be shown as an error.\</error\>
|
||||
- `<asis>`: \<asis\>This test will not be parsed for fish markup.\</asis\>
|
||||
- `<outp>`: \<outp\>This would be rendered as command/script output.\</outp\>
|
||||
- `<bs>`: Render the contents with a preceding backslash. Useful when presenting output.
|
||||
- `{{` and `}}`: Required when wanting curly braces in regular expression example.
|
||||
|
||||
### Prompts and cursors
|
||||
|
||||
- `>_`: Display a basic prompt.
|
||||
- `~>_`: Display a prompt with a the home directory as the current working directory.
|
||||
- `___` (3 underscores): Display a cursor.
|
||||
|
||||
|
||||
### Keyboard shortcuts: @key{} and @cursor_key{}
|
||||
|
||||
Graphical keyboard shortcuts can be defined using the following special commands. These allow for the different text requirements across the html and man pages. The HTML uses CSS to create a keyboard style, whereas the man page would display the key as text.
|
||||
|
||||
- `@key{lable}`
|
||||
Displays a key with a purely textual lable, such as: 'Tab', 'Page Up', 'Page Down', 'Home', 'End', 'F1', 'F19' and so on.
|
||||
|
||||
- `@key{modifier,lable}`
|
||||
Displays a keystroke requiring the use of a 'modifier' key, such as 'Control-A', 'Shift-X', 'Alt-Tab' etc.
|
||||
|
||||
- `@key{modifier,entity,lable}`
|
||||
Displays a keystroke using a graphical entity, such as an arrow symbol for cursor key based shortcuts.
|
||||
|
||||
- `@cursor_key{entity,lable}`
|
||||
A special case for cursor keys, when no modifier is needed. i.e. `@cursor_key{↑,up}` for the up arrow key.
|
||||
|
||||
Some useful Unicode/HTML5 entities:
|
||||
|
||||
- Up arrow: `↑`
|
||||
- Down arrow: `↓`
|
||||
- Left arrow: `←`
|
||||
- Right arrow `→`
|
||||
- Shift: `⇧`
|
||||
- Tab: `⇥`
|
||||
- Mac option: `⌥`
|
||||
- Mac command: `⌘`
|
||||
|
||||
## Notes
|
||||
|
||||
### Doxygen
|
||||
|
||||
Tested on:
|
||||
- Ubuntu 14.04 with Doxygen 1.8.8, built from [GitHub source](https://github.com/doxygen/doxygen.git).
|
||||
- CentOS 6.5 with Doxygen 1.8.8, built from [GitHub source](https://github.com/doxygen/doxygen.git).
|
||||
- Mac OS X 10.9 with Homebrew install Doxygen 1.8.7 and 1.8.8.
|
||||
|
||||
Graphviz was also installed in all the above testing.
|
||||
|
||||
Doxygen 1.8.6 and lower do not have the \\htmlonly[block] directive which fixes a multitude of problems in the rendering of the docs. In Doxygen 1.8.7 the list of understood HTML entities was greatly increased. I tested earlier versions and many little issues returned.
|
||||
|
||||
As fish ships with pre-built documentation, I don't see this as an issue.
|
||||
|
||||
### Updated Configure/Makefile
|
||||
|
||||
- Tested on Ubuntu 14.04, CentOS 6.5 and Mac OS X 10.9.
|
||||
- Makefile has GNU/BSD sed/grep detection.
|
||||
|
||||
### HTML output
|
||||
|
||||
- The output HTML is HTML5 compliant, but should quickly and elegantly degrade on older browsers without losing basic structure.
|
||||
- The CSS avoids the use or browser specific extenstions (i.e. -webkit, -moz etc), using the W3C HTML5 standard instead.
|
||||
- It's been tested in Chrome 37.0 and Firefox 32.0 on Mac OS X 10.9 (+Safari 7), Windows 8.1 (+Internet Explorer 11) and Ubuntu Desktop 14.04.
|
||||
- My assumption is basically that if someone cares enough to want to install fish, they'll be keeping a browser current.
|
||||
|
||||
### Man page output
|
||||
|
||||
- Tested on Ubuntu 14.04, CentOS 6.5 and Mac OS X 10.9.
|
||||
- Output is substantially cleaner.
|
||||
- Tested in cat, less, more and most pagers using the following fish script:
|
||||
|
||||
```
|
||||
function manTest --description 'Test manpage' --argument page
|
||||
set -l pager
|
||||
for i in $argv
|
||||
switch $i
|
||||
case "-l"
|
||||
set pager -P '/usr/bin/less -is'
|
||||
case "-m"
|
||||
set pager -P '/usr/bin/more -s'
|
||||
case "-c"
|
||||
set pager -P '/bin/cat'
|
||||
end
|
||||
end
|
||||
man $pager ~/Projects/OpenSource/fish-shell/share/man/man1/$page.1
|
||||
end
|
||||
|
||||
# Assumes 'most' is the default system pager.
|
||||
# NOT PORTABLE! Paths would be need to be updated on other systems.
|
||||
```
|
||||
|
||||
### Developer docs and LATEX/PDF output
|
||||
|
||||
- HTML developer docs tested on Ubuntu 14.04, CentOS 6.5 and Mac OS X 10.9.
|
||||
- LATEX/PDF reference manual tested on Mac OS X 10.9 using MacTEX. PDF production returns an error (due to Doxygen's use of an outdated 'float' package), but manual PDF output is ok.
|
||||
|
||||
### Future changes
|
||||
|
||||
1. The documentation creation process would be better if it could be modularised further and moved out of the makefile into a number of supporting scripts. This would allow both the automake and Xcode build processes to use the documentation scripts directly.
|
||||
2. Remove the Doxygen dependency entirely for the user documentation. This would be very acheivable now that the bulk of the documentation is in Markdown.
|
||||
3. It would be useful to gauge what parts of the documentation are actually used by users. Judging by the amount of 'missing comment' errors during the developer docs build phase, this aspect of the docs has been rather neglected. If it is not longer used or useful, then this could change the future direction of the documentation and significantly streamline the process.
|
||||
|
||||
#### Author: Mark Griffiths [@GitHub](https://github.com/MarkGriffiths)
|
||||
46
doc_src/abbr.txt
Normal file
46
doc_src/abbr.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
\section abbr abbr - manage fish abbreviations
|
||||
|
||||
\subsection abbr-synopsis Synopsis
|
||||
\fish{synopsis}
|
||||
abbr -a word phrase...
|
||||
abbr -s
|
||||
abbr -l
|
||||
abbr -e word
|
||||
\endfish
|
||||
|
||||
\subsection abbr-description Description
|
||||
|
||||
`abbr` manipulates the list of abbreviations that fish will expand.
|
||||
|
||||
Abbreviations are user-defined character sequences or words that are replaced with longer phrases after they are entered. For example, a frequently-run command such as `git checkout` can be abbreviated to `gco`. After entering `gco` and pressing @key{Space} or @key{Enter}, the full text `git checkout` will appear in the command line.
|
||||
|
||||
Abbreviations are stored using universal variables. You can create abbreviations directly on the command line, and they will be saved automatically. Calling `abbr -a` in config.fish will lead to slightly worse startup performance.
|
||||
|
||||
The following parameters are available:
|
||||
|
||||
- `-a WORD PHRASE` or `--add WORD PHRASE` Adds a new abbreviation, where WORD will be expanded to PHRASE.
|
||||
|
||||
- `-s` or `--show` Show all abbreviated words and their expanded phrases in a manner suitable for export and import.
|
||||
|
||||
- `-l` or `--list` Lists all abbreviated words.
|
||||
|
||||
- `-e WORD` or `--erase WORD` Erase the abbreviation WORD.
|
||||
|
||||
Note: fish version 2.1 supported `-a WORD=PHRASE`. This syntax is now deprecated but will still be converted.
|
||||
|
||||
\subsection abbr-example Examples
|
||||
|
||||
\fish
|
||||
abbr -a gco git checkout
|
||||
\endfish
|
||||
Add a new abbreviation where `gco` will be replaced with `git checkout`.
|
||||
|
||||
\fish
|
||||
abbr -e gco
|
||||
\endfish
|
||||
Erase the `gco` abbreviation.
|
||||
|
||||
\fish
|
||||
ssh another_host abbr -s | source
|
||||
\endfish
|
||||
Import the abbreviations defined on another_host over SSH.
|
||||
40
doc_src/alias.txt
Normal file
40
doc_src/alias.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
\section alias alias - create a function
|
||||
|
||||
\subsection alias-synopsis Synopsis
|
||||
\fish{synopsis}
|
||||
alias NAME DEFINITION
|
||||
alias NAME=DEFINITION
|
||||
\endfish
|
||||
|
||||
\subsection alias-description Description
|
||||
|
||||
`alias` is a simple wrapper for the `function` builtin. It exists for backwards compatibility with Posix shells. For other uses, it is recommended to define a <a href='#function'>function</a>.
|
||||
|
||||
`fish` does not keep track of which functions have been defined using `alias`. They must be erased using `functions -e`.
|
||||
|
||||
- `NAME` is the name of the alias
|
||||
|
||||
- `DEFINITION` is the actual command to execute. The string `$argv` will be appended.
|
||||
|
||||
You cannot create an alias to a function with the same name.
|
||||
|
||||
Note that spaces need to be escaped in the call to alias just like in the commandline _even inside the quotes_.
|
||||
|
||||
|
||||
\subsection alias-example Example
|
||||
|
||||
The following code will create `rmi`, which runs `rm` with additional arguments on every invocation.
|
||||
|
||||
\fish
|
||||
alias rmi "rm -i"
|
||||
|
||||
# This is equivalent to entering the following function:
|
||||
|
||||
function rmi
|
||||
rm -i $argv
|
||||
end
|
||||
|
||||
# This needs to have the spaces escaped or "Chrome.app..." will be seen as an argument to "/Applications/Google":
|
||||
|
||||
alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome banana'
|
||||
\endfish
|
||||
@@ -1,17 +1,25 @@
|
||||
|
||||
\section and and - Conditionally execute a command
|
||||
\section and and - conditionally execute a command
|
||||
|
||||
\subsection and-synopsis Synopsis
|
||||
<tt>COMMAND1; and COMMAND2</tt>
|
||||
\fish{synopsis}
|
||||
COMMAND1; and COMMAND2
|
||||
\endfish
|
||||
|
||||
\subsection and-description Description
|
||||
|
||||
The \c and builtin is used to execute a command if the current exit status (as set by the last previous command) is zero
|
||||
`and` is used to execute a command if the current exit status (as set by the previous command) is 0.
|
||||
|
||||
`and` statements may be used as part of the condition in an <a href="#if">`and`</a> or <a href="#while">`while`</a> block. See the documentation
|
||||
for <a href="#if">`if`</a> and <a href="#while">`while`</a> for examples.
|
||||
|
||||
`and` does not change the current exit status. The exit status of the last foreground command to exit can always be accessed using the <a href="index.html#variables-status">$status</a> variable.
|
||||
|
||||
|
||||
\subsection and-example Example
|
||||
|
||||
The following code runs the \c make command to build a program, and if it succeeds, it runs <tt>make install</tt>, which installs the program.
|
||||
<pre>
|
||||
make; and make install
|
||||
</pre>
|
||||
The following code runs the `make` command to build a program. If the build succeeds, `make`'s exit status is 0, and the program is installed. If either step fails, the exit status is 1, and `make clean` is run, which removes the files created by the build process.
|
||||
|
||||
\fish
|
||||
make; and make install; or make clean
|
||||
\endfish
|
||||
|
||||
|
||||
BIN
doc_src/ascii_fish.png
Normal file
BIN
doc_src/ascii_fish.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
@@ -1,30 +1,45 @@
|
||||
|
||||
\section begin begin - Start a new block of code
|
||||
\section begin begin - start a new block of code
|
||||
|
||||
\subsection begin-synopsis Synopsis
|
||||
<tt>begin; [COMMAND;...] end </tt>
|
||||
\fish{synopsis}
|
||||
begin; [COMMANDS...;] end
|
||||
\endfish
|
||||
|
||||
\subsection begin-description Description
|
||||
|
||||
The \c begin builtin is used to create a new block of code. The block
|
||||
is unconditionally executed. Begin is equivalent to <tt>if
|
||||
true</tt>. The begin command is used to group any number of commands
|
||||
into a block. The reason for this is usually either to introduce a new
|
||||
variable scope or to redirect the input to output of this set of
|
||||
commands as a group.
|
||||
`begin` is used to create a new block of code.
|
||||
|
||||
The block is unconditionally executed. `begin; ...; end` is equivalent to `if true; ...; end`.
|
||||
|
||||
`begin` is used to group a number of commands into a block. This allows the introduction of a new variable scope, redirection of the input or output of a set of commands as a group, or to specify precedence when using the conditional commands like `and`.
|
||||
|
||||
`begin` does not change the current exit status.
|
||||
|
||||
|
||||
\subsection begin-example Example
|
||||
|
||||
The following code sets a number of variables inside of a block
|
||||
scope. Since the variables are set inside the block and have local
|
||||
scope, they will be automatically deleted when the block ends.
|
||||
The following code sets a number of variables inside of a block scope. Since the variables are set inside the block and have local scope, they will be automatically deleted when the block ends.
|
||||
|
||||
<pre>
|
||||
\fish
|
||||
begin
|
||||
set -x PIRATE Yarrr
|
||||
...
|
||||
set -l PIRATE Yarrr
|
||||
...
|
||||
end
|
||||
# This will not output anything, since PIRATE went out of scope at the end of
|
||||
# the block and was killed
|
||||
|
||||
echo $PIRATE
|
||||
</pre>
|
||||
# This will not output anything, since the PIRATE variable
|
||||
# went out of scope at the end of the block
|
||||
\endfish
|
||||
|
||||
In the following code, all output is redirected to the file out.html.
|
||||
|
||||
\fish
|
||||
begin
|
||||
echo $xml_header
|
||||
echo $html_header
|
||||
if test -e $file
|
||||
...
|
||||
end
|
||||
...
|
||||
end > out.html
|
||||
\endfish
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
\section bg bg - send to background
|
||||
\section bg bg - send jobs to background
|
||||
|
||||
\subsection bg-synopsis Synopsis
|
||||
<tt>bg [PID...]</tt>
|
||||
\fish{synopsis}
|
||||
bg [PID...]
|
||||
\endfish
|
||||
|
||||
\subsection bg-description Description
|
||||
Sends the specified jobs to the background. A background job is
|
||||
executed simultaneously with fish, and does not have access to the
|
||||
keyboard. If no job is specified, the last job to be used is put in the background. If PID is specified, the jobs with the specified group ids are put in the background.
|
||||
|
||||
The PID of the desired process is usually found by using process globbing.
|
||||
`bg` sends <a href="index.html#syntax-job-control">jobs</a> to the background, resuming them if they are stopped. A background job is executed simultaneously with fish, and does not have access to the keyboard. If no job is specified, the last job to be used is put in the background. If PID is specified, the jobs with the specified process group IDs are put in the background.
|
||||
|
||||
The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>.
|
||||
|
||||
|
||||
\subsection bg-example Example
|
||||
|
||||
<tt>bg \%0</tt> will put the job with job id 0 in the background.
|
||||
|
||||
`bg %1` will put the job with job ID 1 in the background.
|
||||
|
||||
156
doc_src/bind.txt
156
doc_src/bind.txt
@@ -1,16 +1,156 @@
|
||||
\section bind bind - Handle key bindings.
|
||||
\section bind bind - handle fish key bindings
|
||||
|
||||
\subsection bind-synopsis Synopsis
|
||||
<tt>bind [OPTIONS] [BINDINGS...] </tt>
|
||||
|
||||
The <tt>bind</tt> builtin causes fish to add the readline style bindings specified by <tt>BINDINGS</tt> to the list of key bindings. For more information on specifying keyboard bindings, use <tt>man readline</tt> to access the readline documentation.
|
||||
\fish{synopsis}
|
||||
bind [(-M | --mode) MODE] [(-m | --sets-mode) NEW_MODE]
|
||||
[(-k | --key)] SEQUENCE COMMAND [COMMAND...]
|
||||
bind [(-M | --mode) MODE] [(-k | --key)] SEQUENCE
|
||||
bind (-K | --key-names) [(-a | --all)]
|
||||
bind (-f | --function-names)
|
||||
bind (-e | --erase) [(-M | --mode) MODE]
|
||||
(-a | --all | [(-k | --key)] SEQUENCE [SEQUENCE...])
|
||||
\endfish
|
||||
|
||||
\subsection bind-description Description
|
||||
- <tt>-M MODE</tt> or <tt>--set-mode=MODE</tt> sets the current input mode to MODE.
|
||||
|
||||
`bind` adds a binding for the specified key sequence to the specified command.
|
||||
|
||||
SEQUENCE is the character sequence to bind to. These should be written as <a href="index.html#escapes">fish escape sequences</a>. For example, because pressing the Alt key and another character sends that character prefixed with an escape character, Alt-based key bindings can be written using the `\e` escape. For example, @key{Alt,w} can be written as `\ew`. The control character can be written in much the same way using the `\c` escape, for example @key{Control,X} (^X) can be written as `\cx`. Note that Alt-based key bindings are case sensitive and Control-based key bindings are not. This is a constraint of text-based terminals, not `fish`.
|
||||
|
||||
The default key binding can be set by specifying a `SEQUENCE` of the empty string (that is, ```''``` ). It will be used whenever no other binding matches. For most key bindings, it makes sense to use the `self-insert` function (i.e. ```bind '' self-insert```) as the default keybinding. This will insert any keystrokes not specifically bound to into the editor. Non- printable characters are ignored by the editor, so this will not result in control sequences being printable.
|
||||
|
||||
If the `-k` switch is used, the name of the key (such as 'down', 'up' or 'backspace') is used instead of a sequence. The names used are the same as the corresponding curses variables, but without the 'key_' prefix. (See `terminfo(5)` for more information, or use `bind --key-names` for a list of all available named keys.)
|
||||
|
||||
`COMMAND` can be any fish command, but it can also be one of a set of special input functions. These include functions for moving the cursor, operating on the kill-ring, performing tab completion, etc. Use `bind --function-names` for a complete list of these input functions.
|
||||
|
||||
When `COMMAND` is a shellscript command, it is a good practice to put the actual code into a <a href="#function">function</a> and simply bind to the function name. This way it becomes significantly easier to test the function while editing, and the result is usually more readable as well.
|
||||
|
||||
If such a script produces output, the script needs to finish by calling `commandline -f repaint` in order to tell fish that a repaint is in order.
|
||||
|
||||
When multiple `COMMAND`s are provided, they are all run in the specified order when the key is pressed.
|
||||
|
||||
If no `SEQUENCE` is provided, all bindings (or just the bindings in the specified `MODE`) are printed. If `SEQUENCE` is provided without `COMMAND`, just the binding matching that sequence is printed.
|
||||
|
||||
Key bindings are not saved between sessions by default. **Bare `bind` statements in <a href="index.html#initialization">config.fish</a> won't have any effect because it is sourced before the default keybindings are setup.** To save custom keybindings, put the `bind` statements into a function called `fish_user_key_bindings`, which will be <a href="tutorial.html#tut_autoload">autoloaded</a>.
|
||||
|
||||
Key bindings may use "modes", which mimics Vi's modal input behavior. The default mode is "default", and every bind applies to a single mode. The mode can be viewed/changed with the `$fish_bind_mode` variable.
|
||||
|
||||
The following parameters are available:
|
||||
|
||||
- `-k` or `--key` Specify a key name, such as 'left' or 'backspace' instead of a character sequence
|
||||
|
||||
- `-K` or `--key-names` Display a list of available key names. Specifying `-a` or `--all` includes keys that don't have a known mapping
|
||||
|
||||
- `-f` or `--function-names` Display a list of available input functions
|
||||
|
||||
- `-M MODE` or `--mode MODE` Specify a bind mode that the bind is used in. Defaults to "default"
|
||||
|
||||
- `-m NEW_MODE` or `--sets-mode NEW_MODE` Change the current mode to `NEW_MODE` after this binding is executed
|
||||
|
||||
- `-e` or `--erase` Erase the binding with the given sequence and mode instead of defining a new one. Multiple sequences can be specified with this flag. Specifying `-a` or `--all` with `-M` or `--mode` erases all binds in the given mode regardless of sequence. Specifying `-a` or `--all` without `-M` or `--mode` erases all binds in all modes regardless of sequence.
|
||||
|
||||
- `-a` or `--all` See `--erase` and `--key-names`
|
||||
|
||||
The following special input functions are available:
|
||||
|
||||
- `accept-autosuggestion`, accept the current autosuggestion completely
|
||||
|
||||
- `backward-char`, moves one character to the left
|
||||
|
||||
- `backward-bigword`, move one whitespace-delimited word to the left
|
||||
|
||||
- `backward-delete-char`, deletes one character of input to the left of the cursor
|
||||
|
||||
- `backward-kill-bigword`, move the whitespace-delimited word to the left of the cursor to the killring
|
||||
|
||||
- `backward-kill-line`, move everything from the beginning of the line to the cursor to the killring
|
||||
|
||||
- `backward-kill-path-component`, move one path component to the left of the cursor (everything from the last "/" or whitespace exclusive) to the killring
|
||||
|
||||
- `backward-kill-word`, move the word to the left of the cursor to the killring
|
||||
|
||||
- `backward-word`, move one word to the left
|
||||
|
||||
- `beginning-of-history`, move to the beginning of the history
|
||||
|
||||
- `beginning-of-line`, move to the beginning of the line
|
||||
|
||||
- `begin-selection`, start selecting text
|
||||
|
||||
- `capitalize-word`, make the current word begin with a capital letter
|
||||
|
||||
- `complete`, guess the remainder of the current token
|
||||
|
||||
- `complete-and-search`, invoke the searchable pager on completion options
|
||||
|
||||
- `delete-char`, delete one character to the right of the cursor
|
||||
|
||||
- `downcase-word`, make the current word lowercase
|
||||
|
||||
- `end-of-history`, move to the end of the history
|
||||
|
||||
- `end-of-line`, move to the end of the line
|
||||
|
||||
- `end-selection`, end selecting text
|
||||
|
||||
- `forward-bigword`, move one whitespace-delimited word to the right
|
||||
|
||||
- `forward-char`, move one character to the right
|
||||
|
||||
- `forward-word`, move one word to the right
|
||||
|
||||
- `history-search-backward`, search the history for the previous match
|
||||
|
||||
- `history-search-forward`, search the history for the next match
|
||||
|
||||
- `kill-bigword`, move the next whitespace-delimited word to the killring
|
||||
|
||||
- `kill-line`, move everything from the cursor to the end of the line to the killring
|
||||
|
||||
- `kill-selection`, move the selected text to the killring
|
||||
|
||||
- `kill-whole-line`, move the line to the killring
|
||||
|
||||
- `kill-word`, move the next word to the killring
|
||||
|
||||
- `suppress-autosuggestion`, remove the current autosuggestion
|
||||
|
||||
- `swap-selection-start-stop`, go to the other end of the highlighted text without changing the selection
|
||||
|
||||
- `transpose-chars`, transpose two characters to the left of the cursor
|
||||
|
||||
- `transpose-words`, transpose two words to the left of the cursor
|
||||
|
||||
- `upcase-word`, make the current word uppercase
|
||||
|
||||
- `yank`, insert the latest entry of the killring into the buffer
|
||||
|
||||
- `yank-pop`, rotate to the previous entry of the killring
|
||||
|
||||
|
||||
\subsection bind-example Example
|
||||
\subsection bind-example Examples
|
||||
|
||||
<tt>bind -M vi</tt> changes to the vi input mode
|
||||
\fish
|
||||
bind \cd 'exit'
|
||||
\endfish
|
||||
Causes `fish` to exit when @key{Control,D} is pressed.
|
||||
|
||||
<tt>bind '"\\M-j": jobs'</tt> Binds the jobs command to the Alt-j keyboard shortcut
|
||||
\fish
|
||||
bind -k ppage history-search-backward
|
||||
\endfish
|
||||
Performs a history search when the @key{Page Up} key is pressed.
|
||||
|
||||
\fish
|
||||
set -g fish_key_bindings fish_vi_key_bindings
|
||||
bind -M insert \cc kill-whole-line force-repaint
|
||||
\endfish
|
||||
Turns on Vi key bindings and rebinds @key{Control,C} to clear the input line.
|
||||
|
||||
|
||||
\subsection special-case-escape Special Case: The escape Character
|
||||
|
||||
The escape key can be used standalone, for example, to switch from insertion mode to normal mode when using Vi keybindings. Escape may also be used as a "meta" key, to indicate the start of an escape sequence, such as function or arrow keys. Custom bindings can also be defined that begin with an escape character.
|
||||
|
||||
fish waits for a period after receiving the escape character, to determine whether it is standalone or part of an escape sequence. While waiting, additional key presses make the escape key behave as a meta key. If no other key presses come in, it is handled as a standalone escape. The waiting period is set to 300 milliseconds (0.3 seconds) in the default key bindings and 10 milliseconds in the vi key bindings. It can be configured by setting the `fish_escape_delay_ms` variable to a value between 10 and 5000 ms. It is recommended that this be a universal variable that you set once from an interactive session.
|
||||
|
||||
Note: fish 2.2.0 and earlier used a default of 10 milliseconds, and provided no way to configure it. That effectively made it impossible to use escape as a meta key.
|
||||
|
||||
@@ -1,19 +1,41 @@
|
||||
|
||||
\section block block - Temporarily block delivery of events
|
||||
\section block block - temporarily block delivery of events
|
||||
|
||||
\subsection block-synopsis Synopsis
|
||||
<tt>block [OPTIONS...]</tt>
|
||||
\fish{synopsis}
|
||||
block [OPTIONS...]
|
||||
\endfish
|
||||
|
||||
\subsection block-description Description
|
||||
|
||||
- <tt>-l</tt> or <tt>--local</tt> Release the block at the end of the currently innermost block scope
|
||||
- <tt>-g</tt> or <tt>--global</tt> Never automatically release the lock
|
||||
- <tt>-e</tt> or <tt>--erase</tt> Release global block
|
||||
`block` prevents events triggered by `fish` or the <a href="commands.html#emit">`emit`</a> command from being delivered and acted upon while the block is in place.
|
||||
|
||||
In functions, `block` can be useful while performing work that should not be interrupted by the shell.
|
||||
|
||||
The block can be removed. Any events which triggered while the block was in place will then be delivered.
|
||||
|
||||
Event blocks should not be confused with code blocks, which are created with `begin`, `if`, `while` or `for`
|
||||
|
||||
The following parameters are available:
|
||||
|
||||
- `-l` or `--local` Release the block automatically at the end of the current innermost code block scope
|
||||
|
||||
- `-g` or `--global` Never automatically release the lock
|
||||
|
||||
- `-e` or `--erase` Release global block
|
||||
|
||||
|
||||
\subsection block-example Example
|
||||
|
||||
<pre>block -g
|
||||
\#Do something that should not be interrupted
|
||||
block -e
|
||||
</pre>
|
||||
\fish
|
||||
# Create a function that listens for events
|
||||
function --on-event foo foo; echo 'foo fired'; end
|
||||
|
||||
# Block the delivery of events
|
||||
block -g
|
||||
|
||||
emit foo
|
||||
# No output will be produced
|
||||
|
||||
block -e
|
||||
# 'foo fired' will now be printed
|
||||
\endfish
|
||||
|
||||
9
doc_src/branding/README
Normal file
9
doc_src/branding/README
Normal file
@@ -0,0 +1,9 @@
|
||||
This directory is for images relevant to the fish brand.
|
||||
|
||||
The logo.psd and logo.svg files were created by Steve Stagg
|
||||
(http://github.com/stestagg). They were uploaded to SickerMule by Andrei
|
||||
Zvonimir Crnković (https://github.com/andreicek). See
|
||||
|
||||
https://www.stickermule.com/marketplace/tags/shell
|
||||
https://www.stickermule.com/marketplace/3507-fish-shell-sticker-die-cut
|
||||
https://www.stickermule.com/marketplace/3508-fish-shell-sticker-square-cut
|
||||
BIN
doc_src/branding/logo.psd
Normal file
BIN
doc_src/branding/logo.psd
Normal file
Binary file not shown.
33
doc_src/branding/logo.svg
Normal file
33
doc_src/branding/logo.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 109 KiB |
@@ -1,21 +1,25 @@
|
||||
|
||||
\section break break - stop the innermost currently evaluated loop
|
||||
\section break break - stop the current inner loop
|
||||
|
||||
\subsection break-synopsis Synopsis
|
||||
<tt>LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end</tt>
|
||||
\fish{synopsis}
|
||||
LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end
|
||||
\endfish
|
||||
|
||||
\subsection break-description Description
|
||||
The \c break builtin is used to halt a currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
|
||||
|
||||
`break` halts a currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
|
||||
|
||||
There are no parameters for `break`.
|
||||
|
||||
|
||||
\subsection break-example Example
|
||||
The following code searches all .c files for smurfs, and halts at the first occurrence.
|
||||
<p>
|
||||
<tt>for i in *.c;
|
||||
<br> if grep smurf $i;
|
||||
<br> echo Smurfs are present in $i;
|
||||
<br> break;
|
||||
<br> end;
|
||||
<br>end;
|
||||
</tt>
|
||||
</p>
|
||||
The following code searches all .c files for "smurf", and halts at the first occurrence.
|
||||
|
||||
\fish
|
||||
for i in *.c
|
||||
if grep smurf $i
|
||||
echo Smurfs are present in $i
|
||||
break
|
||||
end
|
||||
end
|
||||
\endfish
|
||||
|
||||
14
doc_src/breakpoint.txt
Normal file
14
doc_src/breakpoint.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
\section breakpoint breakpoint - Launch debug mode
|
||||
|
||||
\subsection breakpoint-synopsis Synopsis
|
||||
\fish{synopsis}
|
||||
breakpoint
|
||||
\endfish
|
||||
|
||||
\subsection breakpoint-description Description
|
||||
|
||||
`breakpoint` is used to halt a running script and launch an interactive debugging prompt.
|
||||
|
||||
For more details, see <a href="index.html#debugging">Debugging fish scripts</a> in the `fish` manual.
|
||||
|
||||
There are no parameters for `breakpoint`.
|
||||
@@ -1,17 +1,22 @@
|
||||
|
||||
\section builtin builtin - run a builtin command
|
||||
|
||||
\subsection builtin-synopsis Synopsis
|
||||
<tt>builtin BUILTINNAME [OPTIONS...]</tt>
|
||||
\fish{synopsis}
|
||||
builtin BUILTINNAME [OPTIONS...]
|
||||
\endfish
|
||||
|
||||
\subsection builtin-description Description
|
||||
|
||||
- <tt>-n</tt> or <tt>--names</tt> List the names of all defined builtins
|
||||
`builtin` forces the shell to use a builtin command, rather than a function or program.
|
||||
|
||||
The following parameters are available:
|
||||
|
||||
- `-n` or `--names` List the names of all defined builtins
|
||||
|
||||
Prefixing a command with the word 'builtin' forces fish to ignore any aliases with the same name.
|
||||
|
||||
\subsection builtin-example Example
|
||||
|
||||
<tt>builtin jobs</tt>
|
||||
|
||||
causes fish to execute the jobs builtin, even if a function named jobs exists.
|
||||
\fish
|
||||
builtin jobs
|
||||
# executes the jobs builtin, even if a function named jobs exists
|
||||
\endfish
|
||||
|
||||
@@ -1,23 +1,27 @@
|
||||
\section case case - conditionally execute a block of commands
|
||||
|
||||
\subsection case-synopsis Synopsis
|
||||
<tt>switch VALUE; [case [WILDCARD...]; [COMMANDS...];...] end</tt>
|
||||
\fish{synopsis}
|
||||
switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
|
||||
\endfish
|
||||
|
||||
\subsection case-description Description
|
||||
|
||||
The \c switch statement is used to perform one of several blocks of
|
||||
commands depending on whether a specified value equals one of several
|
||||
wildcarded values. The \c case statement is used together with the \c
|
||||
switch statement in order to determine which block should be
|
||||
performed.
|
||||
`switch` performs one of several blocks of commands, depending on whether a specified value equals one of several wildcarded values. `case` is used together with the `switch` statement in order to determine which block should be executed.
|
||||
|
||||
Each `case` command is given one or more parameters. The first `case` command with a parameter that matches the string specified in the switch command will be evaluated. `case` parameters may contain wildcards. These need to be escaped or quoted in order to avoid regular wildcard expansion using filenames.
|
||||
|
||||
Note that fish does not fall through on case statements. Only the first matching case is executed.
|
||||
|
||||
Note that command substitutions in a case statement will be evaluated even if its body is not taken. All substitutions, including command substitutions, must be performed before the value can be compared against the parameter.
|
||||
|
||||
|
||||
\subsection case-example Example
|
||||
|
||||
If the variable \$animal contains the name of an animal, the following
|
||||
code would attempt to classify it:
|
||||
|
||||
<p>
|
||||
<pre>
|
||||
\fish
|
||||
switch $animal
|
||||
case cat
|
||||
echo evil
|
||||
@@ -27,9 +31,12 @@ switch $animal
|
||||
echo bird
|
||||
case shark trout stingray
|
||||
echo fish
|
||||
# Note that the next case has a wildcard which is quoted
|
||||
case '*'
|
||||
echo I have no idea what a $animal is
|
||||
end
|
||||
</pre>
|
||||
</p>
|
||||
<p>
|
||||
If the above code was run with \$animal set to \c whale, the output would be \c mammal.
|
||||
</p>
|
||||
\endfish
|
||||
|
||||
If the above code was run with `$animal` set to `whale`, the output
|
||||
would be `mammal`.
|
||||
|
||||
|
||||
@@ -1,12 +1,27 @@
|
||||
\section cd cd - change directory
|
||||
|
||||
\subsection cd-synopsis Synopsis
|
||||
<tt>cd [DIRECTORY]</tt>
|
||||
\fish{synopsis}
|
||||
cd [DIRECTORY]
|
||||
\endfish
|
||||
|
||||
\subsection cd-description Description
|
||||
Changes the current directory. If <tt>DIRECTORY</tt> is supplied it
|
||||
will become the new directory. If \c DIRECTORY is a relative path, the
|
||||
CDPATH environment variable will be separated using the : as
|
||||
separator, and the resulting list will be searched for a suitable new
|
||||
current directory. If CDPATH is not set, it is assumed to be '.'. If
|
||||
\c DIRECTORY is not specified, \$HOME will be the new directory.
|
||||
`cd` changes the current working directory.
|
||||
|
||||
If `DIRECTORY` is supplied, it will become the new directory. If no parameter is given, the contents of the `HOME` environment variable will be used.
|
||||
|
||||
If `DIRECTORY` is a relative path, the paths found in the `CDPATH` environment variable array will be tried as prefixes for the specified path.
|
||||
|
||||
Note that the shell will attempt to change directory without requiring `cd` if the name of a directory is provided (starting with `.`, `/` or `~`, or ending with `/`).
|
||||
|
||||
Fish also ships a wrapper function around the builtin `cd` that understands `cd -` as changing to the previous directory. See also <a href="commands.html#prevd">`prevd`</a>. This wrapper function maintains a history of the 25 most recently visited directories in the `$dirprev` and `$dirnext` global variables.
|
||||
|
||||
\subsection cd-example Examples
|
||||
|
||||
\fish
|
||||
cd
|
||||
# changes the working directory to your home directory.
|
||||
|
||||
cd /usr/src/fish-shell
|
||||
# changes the working directory to /usr/src/fish-shell
|
||||
\endfish
|
||||
|
||||
@@ -1,14 +1,24 @@
|
||||
\section command command - run a program
|
||||
|
||||
\subsection command-synopsis Synopsis
|
||||
<tt>command COMMANDNAME [OPTIONS...]</tt>
|
||||
\fish{synopsis}
|
||||
command [OPTIONS] COMMANDNAME [ARGS...]
|
||||
\endfish
|
||||
|
||||
\subsection command-description Description
|
||||
prefixing a command with the word 'command' forces fish to ignore any aliases or builtins with the same name.
|
||||
|
||||
\subsection command-example Example
|
||||
`command` forces the shell to execute the program `COMMANDNAME` and ignore any functions or builtins with the same name.
|
||||
|
||||
The following options are available:
|
||||
|
||||
<tt>command ls</tt>
|
||||
- `-s` or `--search` returns the name of the disk file that would be executed, or nothing if no file with the specified name could be found in the `$PATH`.
|
||||
|
||||
causes fish to execute the ls program, even if there exists a 'ls' alias.
|
||||
With the `-s` option, `command` treats every argument as a separate command to look up and sets the exit status to 0 if any of the specified commands were found, or 1 if no commands could be found.
|
||||
|
||||
For basic compatibility with POSIX `command`, the `-v` flag is recognized as an alias for `-s`.
|
||||
|
||||
\subsection command-example Examples
|
||||
|
||||
`command ls` causes fish to execute the `ls` program, even if an `ls` function exists.
|
||||
|
||||
`command -s ls` returns the path to the `ls` program.
|
||||
|
||||
@@ -1,51 +1,80 @@
|
||||
\section commandline commandline - Set or get the current commandline buffer
|
||||
\section commandline commandline - set or get the current command line buffer
|
||||
|
||||
\subsection commandline-synopsis Synopsis
|
||||
<tt>commandline [OPTIONS] [CMD]</tt>
|
||||
\fish{synopsis}
|
||||
commandline [OPTIONS] [CMD]
|
||||
\endfish
|
||||
|
||||
\subsection commandline-description Description
|
||||
|
||||
`commandline` can be used to set or get the current contents of the command line buffer.
|
||||
|
||||
- \c CMD is the new value of the commandline. If unspecified, the
|
||||
current value of the commandline is written to standard output.
|
||||
With no parameters, `commandline` returns the current value of the command line.
|
||||
|
||||
The following switches change the way \c commandline updates the
|
||||
commandline
|
||||
With `CMD` specified, the command line buffer is erased and replaced with the contents of `CMD`.
|
||||
|
||||
- \c -a or \c --append do not remove the current commandline, append
|
||||
the specified string at the end of it
|
||||
- \c -i or \c --insert do not remove the current commandline, insert
|
||||
the specified string at the current cursor position
|
||||
- \c -r or \c --replace remove the current commandline and replace it
|
||||
with the specified string (default)
|
||||
The following options are available:
|
||||
|
||||
The following switches change what part of the commandline is printed
|
||||
or updated
|
||||
- `-C` or `--cursor` set or get the current cursor position, not the contents of the buffer. If no argument is given, the current cursor position is printed, otherwise the argument is interpreted as the new cursor position.
|
||||
|
||||
- \c -b or \c --current-buffer select the entire buffer (default)
|
||||
- \c -j or \c --current-job select the current job
|
||||
- \c -p or \c --current-process select the current process
|
||||
- \c -t or \c --current_token select the current token.
|
||||
- `-f` or `--function` inject readline functions into the reader. This option cannot be combined with any other option. It will cause any additional arguments to be interpreted as readline functions, and these functions will be injected into the reader, so that they will be returned to the reader before any additional actual key presses are read.
|
||||
|
||||
The following switch changes the way \c commandline prints the current
|
||||
commandline
|
||||
The following options change the way `commandline` updates the command line buffer:
|
||||
|
||||
- \c -c or \c --cut-at-cursor only print selection up until the
|
||||
current cursor position
|
||||
- \c -o or \c --tokenize tokenize the selection and print one string-type token per line
|
||||
- `-a` or `--append` do not remove the current commandline, append the specified string at the end of it
|
||||
|
||||
Other switches
|
||||
- `-i` or `--insert` do not remove the current commandline, insert the specified string at the current cursor position
|
||||
|
||||
- `-r` or `--replace` remove the current commandline and replace it with the specified string (default)
|
||||
|
||||
The following options change what part of the commandline is printed or updated:
|
||||
|
||||
- `-b` or `--current-buffer` select the entire buffer (default)
|
||||
|
||||
- `-j` or `--current-job` select the current job
|
||||
|
||||
- `-p` or `--current-process` select the current process
|
||||
|
||||
- `-t` or `--current-token` select the current token.
|
||||
|
||||
The following options change the way `commandline` prints the current commandline buffer:
|
||||
|
||||
- `-c` or `--cut-at-cursor` only print selection up until the current cursor position
|
||||
|
||||
- `-o` or `--tokenize` tokenize the selection and print one string-type token per line
|
||||
|
||||
If `commandline` is called during a call to complete a given string using `complete -C STRING`, `commandline` will consider the specified string to be the current contents of the command line.
|
||||
|
||||
The following options output metadata about the commandline state:
|
||||
|
||||
- `-L` or `--line` print the line that the cursor is on, with the topmost line starting at 1
|
||||
|
||||
- `-S` or `--search-mode` evaluates to true if the commandline is performing a history search
|
||||
|
||||
- `-P` or `--paging-mode` evaluates to true if the commandline is showing pager contents, such as tab completions
|
||||
|
||||
- \c -f or \c --function inject readline functions into the
|
||||
reader. This option can not be combined with any other option. It
|
||||
will cause any additional arguments to be interpreted as readline
|
||||
functions, and these functions will be injected into the reader, so
|
||||
that they will be returned to the reader before any additional
|
||||
actual keypresses are read.
|
||||
|
||||
\subsection commandline-example Example
|
||||
|
||||
<tt>commandline -j $history[3]</tt>
|
||||
`commandline -j $history[3]` replaces the job under the cursor with the third item from the command line history.
|
||||
|
||||
replaces the job under the cursor with the third item from the
|
||||
commandline history.
|
||||
If the commandline contains
|
||||
\fish
|
||||
>_ echo $fl___ounder >&2 | less; and echo $catfish
|
||||
\endfish
|
||||
|
||||
(with the cursor on the "o" of "flounder")
|
||||
|
||||
Then the following invocations behave like this:
|
||||
\fish
|
||||
>_ commandline -t
|
||||
$flounder
|
||||
>_ commandline -ct
|
||||
$fl
|
||||
>_ commandline -b # or just commandline
|
||||
echo $flounder >&2 | less; and echo $catfish
|
||||
>_ commandline -p
|
||||
echo $flounder >&2
|
||||
>_ commandline -j
|
||||
echo $flounder >&2 | less
|
||||
\endfish
|
||||
|
||||
38
doc_src/commands.hdr.in
Normal file
38
doc_src/commands.hdr.in
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
\page commands Commands
|
||||
\htmlonly[block]
|
||||
<div class="fish_left_bar">
|
||||
<div class="logo"></div>
|
||||
<div class="menu commands_menu">
|
||||
\endhtmlonly
|
||||
@command_list_toc@
|
||||
|
||||
\htmlonly[block]
|
||||
</div>
|
||||
</div>
|
||||
<div class="commands fish_right_bar">
|
||||
<h1 class="interior_title">Command reference</h1>
|
||||
\endhtmlonly
|
||||
`fish` ships with a large number of builtin commands, shellscript functions and external commands. These are all described below.
|
||||
|
||||
Almost all fish commands respond to the `-h` or `--help` options to display their relevant help, also accessible using the `help` and `man` commands, like so:
|
||||
|
||||
\fish
|
||||
echo -h
|
||||
echo --help
|
||||
# Prints help to the terminal window
|
||||
|
||||
man echo
|
||||
# Displays the man page in the system pager
|
||||
# (normally 'less', 'more' or 'most').
|
||||
|
||||
help echo
|
||||
# Open a web browser to show the relevant documentation
|
||||
\endfish
|
||||
|
||||
@command_list@
|
||||
|
||||
\htmlonly[block]
|
||||
</div>
|
||||
\endhtmlonly
|
||||
*/
|
||||
@@ -1,75 +1,124 @@
|
||||
\section complete complete - edit command specific tab-completions.
|
||||
\section complete complete - edit command specific tab-completions
|
||||
|
||||
\subsection complete-synopsis Synopsis
|
||||
<tt>complete (-c|--command|-p|--path) COMMAND [(-s|--short-option) SHORT_OPTION] [(-l|--long-option|-o|--old-option) LONG_OPTION [(-a||--arguments) OPTION_ARGUMENTS] [(-d|--description) DESCRIPTION] </tt>
|
||||
\fish{synopsis}
|
||||
complete ( -c | --command | -p | --path ) COMMAND
|
||||
[( -c | --command | -p | --path ) COMMAND]...
|
||||
[( -e | --erase )]
|
||||
[( -s | --short-option ) SHORT_OPTION]...
|
||||
[( -l | --long-option | -o | --old-option ) LONG_OPTION]...
|
||||
[( -a | --arguments ) OPTION_ARGUMENTS]
|
||||
[( -f | --no-files )]
|
||||
[( -r | --require-parameter )]
|
||||
[( -x | --exclusive )]
|
||||
[( -w | --wraps ) WRAPPED_COMMAND]...
|
||||
[( -n | --condition ) CONDITION]
|
||||
[( -d | --description ) DESCRIPTION]
|
||||
complete ( -C[STRING] | --do-complete[=STRING] )
|
||||
\endfish
|
||||
|
||||
\subsection complete-description Description
|
||||
|
||||
For an introduction to how to specify completions, see the section <a
|
||||
href='index.html#completions-own'>Writing your own completions</a> of
|
||||
For an introduction to specifying completions, see <a
|
||||
href='index.html#completion-own'>Writing your own completions</a> in
|
||||
the fish manual.
|
||||
|
||||
- <tt>COMMAND</tt> is the name of the command for which to add a completion
|
||||
- <tt>SHORT_OPTION</tt> is a one character option for the command
|
||||
- <tt>LONG_OPTION</tt> is a multi character option for the command
|
||||
- <tt>OPTION_ARGUMENTS</tt> is parameter containing a space-separated list of possible option-arguments, which may contain subshells
|
||||
- <tt>DESCRIPTION</tt> is a description of what the option and/or option arguments do
|
||||
- <tt>-e</tt> or <tt>--erase</tt> implies that the specified completion should be deleted
|
||||
- <tt>-f</tt> or <tt>--no-files</tt> specifies that the option specified by this completion may not be followed by a filename
|
||||
- <tt>-n</tt> or <tt>--condition</tt> specifies a shell command that must return 0 if the completion is to be used. This makes it possible to specify completions that should only be used in some cases.
|
||||
- <tt>-o</tt> or <tt>--old-option</tt> implies that the command uses old long style options with only one dash
|
||||
- <tt>-p</tt> or <tt>--path</tt> implies that the string COMMAND is the full path of the command
|
||||
- <tt>-r</tt> or <tt>--require-parameter</tt> specifies that the option specified by this completion always must have an option argument, i.e. may not be followed by another option
|
||||
- <tt>-u</tt> or <tt>--unauthorative</tt> implies that there may be more options than the ones specified, and that fish should not assume that options not listed are spelling errors
|
||||
- <tt>-x</tt> or <tt>--exclusive</tt> implies both <tt>-r</tt> and <tt>-f</tt>
|
||||
- `COMMAND` is the name of the command for which to add a completion.
|
||||
|
||||
Command specific tab-completions in \c fish are based on the notion
|
||||
of options and arguments. An option is a parameter which begins with a
|
||||
hyphen, such as '-h', '-help' or '--help'. Arguments are parameters
|
||||
that do not begin with a hyphen. Fish recognizes three styles of
|
||||
options, the same styles as the GNU version of the getopt
|
||||
library. These styles are:
|
||||
- `SHORT_OPTION` is a one character option for the command.
|
||||
|
||||
- Short options, like '-a'. Short options are a single character long, are preceded by a single hyphen and may be grouped together (like '-la', which is equivalent to '-l -a'). Option arguments may be specified in the following parameter ('-w 32') or by appending the option with the value ('-w32').
|
||||
- Old style long options, like '-Wall'. Old style long options are more than one character long, are preceded by a single hyphen and may not be grouped together. Option arguments are specified in the following parameter ('-ao null').
|
||||
- GNU style long options, like '--colors'. GNU style long options are more than one character long, are preceded by two hyphens, and may not be grouped together. Option arguments may be specified in the following parameter ('--quoting-style shell') or by appending the option with a '=' and the value ('--quoting-style=shell'). GNU style long options may be abbreviated so long as the abbreviation is unique ('--h' is equivalent to '--help' if help is the only long option beginning with an 'h').
|
||||
- `LONG_OPTION` is a multi character option for the command.
|
||||
|
||||
The options for specifying command name, command path, or command
|
||||
switches may all be used multiple times to specify multiple commands
|
||||
which have the same completion or multiple switches accepted by a
|
||||
command.
|
||||
- `OPTION_ARGUMENTS` is parameter containing a space-separated list of possible option-arguments, which may contain command substitutions.
|
||||
|
||||
- `DESCRIPTION` is a description of what the option and/or option arguments do.
|
||||
|
||||
- `-c COMMAND` or `--command COMMAND` specifies that `COMMAND` is the name of the command.
|
||||
|
||||
- `-p COMMAND` or `--path COMMAND` specifies that `COMMAND` is the absolute path of the program (optionally containing wildcards).
|
||||
|
||||
- `-e` or `--erase` deletes the specified completion.
|
||||
|
||||
- `-s SHORT_OPTION` or `--short-option=SHORT_OPTION` adds a short option to the completions list.
|
||||
|
||||
- `-l LONG_OPTION` or `--long-option=LONG_OPTION` adds a GNU style long option to the completions list.
|
||||
|
||||
- `-o LONG_OPTION` or `--old-option=LONG_OPTION` adds an old style long option to the completions list (See below for details).
|
||||
|
||||
- `-a OPTION_ARGUMENTS` or `--arguments=OPTION_ARGUMENTS` adds the specified option arguments to the completions list.
|
||||
|
||||
- `-f` or `--no-files` specifies that the options specified by this completion may not be followed by a filename.
|
||||
|
||||
- `-r` or `--require-parameter` specifies that the options specified by this completion always must have an option argument, i.e. may not be followed by another option.
|
||||
|
||||
- `-x` or `--exclusive` implies both `-r` and `-f`.
|
||||
|
||||
- `-w WRAPPED_COMMAND` or `--wraps=WRAPPED_COMMAND` causes the specified command to inherit completions from the wrapped command (See blow for details).
|
||||
|
||||
- `-n` or `--condition` specifies a shell command that must return 0 if the completion is to be used. This makes it possible to specify completions that should only be used in some cases.
|
||||
|
||||
- `-CSTRING` or `--do-complete=STRING` makes complete try to find all possible completions for the specified string.
|
||||
|
||||
- `-C` or `--do-complete` with no argument makes complete try to find all possible completions for the current command line buffer. If the shell is not in interactive mode, an error is returned.
|
||||
|
||||
Command specific tab-completions in `fish` are based on the notion of options and arguments. An option is a parameter which begins with a hyphen, such as '`-h`', '`-help`' or '`--help`'. Arguments are parameters that do not begin with a hyphen. Fish recognizes three styles of options, the same styles as the GNU version of the getopt library. These styles are:
|
||||
|
||||
- Short options, like '`-a`'. Short options are a single character long, are preceded by a single hyphen and may be grouped together (like '`-la`', which is equivalent to '`-l -a`'). Option arguments may be specified in the following parameter ('`-w 32`') or by appending the option with the value ('`-w32`').
|
||||
|
||||
- Old style long options, like '`-Wall`'. Old style long options can be more than one character long, are preceded by a single hyphen and may not be grouped together. Option arguments are specified in the following parameter ('`-ao null`').
|
||||
|
||||
- GNU style long options, like '`--colors`'. GNU style long options can be more than one character long, are preceded by two hyphens, and may not be grouped together. Option arguments may be specified in the following parameter ('`--quoting-style shell`') or by appending the option with a '`=`' and the value ('`--quoting-style=shell`'). GNU style long options may be abbreviated so long as the abbreviation is unique ('`--h`') is equivalent to '`--help`' if help is the only long option beginning with an 'h').
|
||||
|
||||
The options for specifying command name and command path may be used multiple times to define the same completions for multiple commands.
|
||||
|
||||
The options for specifying command switches and wrapped commands may be used multiple times to define multiple completions for the command(s) in a single call.
|
||||
|
||||
Invoking `complete` multiple times for the same command adds the new definitions on top of any existing completions defined for the command.
|
||||
|
||||
When `-a` or `--arguments` is specified in conjunction with long, short, or old style options, the specified arguments are only used as completions when attempting to complete an argument for any of the specified options. If `-a` or `--arguments` is specified without any long, short, or old style options, the specified arguments are used when completing any argument to the command (except when completing an option argument that was specified with `-r` or `--require-parameter`).
|
||||
|
||||
Command substitutions found in `OPTION_ARGUMENTS` are not expected to return a space-separated list of arguments. Instead they must return a newline-separated list of arguments, and each argument may optionally have a tab character followed by the argument description. Any description provided in this way overrides a description given with `-d` or `--description`.
|
||||
|
||||
The `-w` or `--wraps` options causes the specified command to inherit completions from another command. The inheriting command is said to "wrap" the inherited command. The wrapping command may have its own completions in addition to inherited ones. A command may wrap multiple commands, and wrapping is transitive: if A wraps B, and B wraps C, then A automatically inherits all of C's completions. Wrapping can be removed using the `-e` or `--erase` options. Note that wrapping only works for completions specified with `-c` or `--command` and are ignored when specifying completions with `-p` or `--path`.
|
||||
|
||||
When erasing completions, it is possible to either erase all completions for a specific command by specifying `complete -c COMMAND -e`, or by specifying a specific completion option to delete by specifying either a long, short or old style option.
|
||||
|
||||
When erasing completions, it is possible to either erase all
|
||||
completions for a specific command by specifying <tt>complete -e -c
|
||||
COMMAND</tt>, or by specifying a specific completion option to delete
|
||||
by specifying either a long, short or old style option.
|
||||
|
||||
\subsection complete-example Example
|
||||
|
||||
The short style option <tt>-o</tt> for the \c gcc command requires
|
||||
that a file follows it. This can be done using writing <tt>complete
|
||||
-c gcc -s o -r</tt>.
|
||||
The short style option `-o` for the `gcc` command requires that a file follows it. This can be done using writing:
|
||||
|
||||
The short style option <tt>-d</tt> for the \c grep command requires
|
||||
that one of the strings 'read', 'skip' or 'recurse' is used. This can
|
||||
be specified writing <tt>complete -c grep -s d -x -a "read skip
|
||||
recurse"</tt>.
|
||||
\fish
|
||||
complete -c gcc -s o -r
|
||||
\endfish
|
||||
|
||||
The \c su command takes any username as an argument. Usernames are
|
||||
given as the first colon-separated field in the file /etc/passwd. This
|
||||
can be specified as: <tt>complete -x -c su -d "Username" -a "(cat
|
||||
/etc/passwd|cut -d : -f 1)" </tt>.
|
||||
The short style option `-d` for the `grep` command requires that one of the strings '`read`', '`skip`' or '`recurse`' is used. This can be specified writing:
|
||||
|
||||
The \c rpm command has several different modes. If the \c -e or \c
|
||||
--erase flag has been specified, \c rpm should delete one or more
|
||||
packages, in which case several switches related to deleting packages
|
||||
are valid, like the \c nodeps switch.
|
||||
\fish
|
||||
complete -c grep -s d -x -a "read skip recurse"
|
||||
\endfish
|
||||
|
||||
The `su` command takes any username as an argument. Usernames are given as the first colon-separated field in the file /etc/passwd. This can be specified as:
|
||||
|
||||
\fish
|
||||
complete -x -c su -d "Username" -a "(cat /etc/passwd | cut -d : -f 1)"
|
||||
\endfish
|
||||
|
||||
The `rpm` command has several different modes. If the `-e` or `--erase` flag has been specified, `rpm` should delete one or more packages, in which case several switches related to deleting packages are valid, like the `nodeps` switch.
|
||||
|
||||
This can be written as:
|
||||
|
||||
<tt>complete -c rpm -n "__fish_contains_opt -s e erase" -l nodeps -d
|
||||
"Don't check dependencies"</tt>
|
||||
\fish
|
||||
complete -c rpm -n "__fish_contains_opt -s e erase" -l nodeps -d "Don't check dependencies"
|
||||
\endfish
|
||||
|
||||
where \c __fish_contains_opt is a function that checks the commandline
|
||||
buffer for the presence of a specified set of options.
|
||||
where `__fish_contains_opt` is a function that checks the command line buffer for the presence of a specified set of options.
|
||||
|
||||
To implement an alias, use the `-w` or `--wraps` option:
|
||||
|
||||
\fish
|
||||
complete -c hub -w git
|
||||
\endfish
|
||||
|
||||
Now hub inherits all of the completions from git. Note this can also be specified in a function declaration.
|
||||
|
||||
|
||||
38
doc_src/contains.txt
Normal file
38
doc_src/contains.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
\section contains contains - test if a word is present in a list
|
||||
|
||||
\subsection contains-synopsis Synopsis
|
||||
\fish{synopsis}
|
||||
contains [OPTIONS] KEY [VALUES...]
|
||||
\endfish
|
||||
|
||||
\subsection contains-description Description
|
||||
|
||||
`contains` tests whether the set `VALUES` contains the string `KEY`. If so, `contains` exits with status 0; if not, it exits with status 1.
|
||||
|
||||
The following options are available:
|
||||
|
||||
- `-i` or `--index` print the word index
|
||||
|
||||
Note that, like GNU tools, `contains` interprets all arguments starting with a `-` as options to contains, until it reaches an argument that is `--` (two dashes). See the examples below.
|
||||
|
||||
\subsection contains-example Example
|
||||
|
||||
\fish
|
||||
for i in ~/bin /usr/local/bin
|
||||
if not contains $i $PATH
|
||||
set PATH $PATH $i
|
||||
end
|
||||
end
|
||||
\endfish
|
||||
|
||||
The above code tests if `~/bin` and `/usr/local/bin` are in the path and adds them if not.
|
||||
|
||||
\fish
|
||||
function hasargs
|
||||
if contains -- -q $argv
|
||||
echo '$argv contains a -q option'
|
||||
end
|
||||
end
|
||||
\endfish
|
||||
|
||||
The above code checks for `-q` in the argument list, using the `--` argument to demarcate options to `contains` from the key to search for.
|
||||
@@ -1,20 +1,23 @@
|
||||
|
||||
\section continue continue - skip the rest of the current lap of the innermost currently evaluated loop
|
||||
\section continue continue - skip the remainder of the current iteration of the current inner loop
|
||||
|
||||
\subsection continue-synopsis Synopsis
|
||||
<tt>LOOP_CONSTRUCT; [COMMANDS...] continue; [COMMANDS...] end</tt>
|
||||
\fish{synopsis}
|
||||
LOOP_CONSTRUCT; [COMMANDS...;] continue; [COMMANDS...;] end
|
||||
\endfish
|
||||
|
||||
\subsection continue-description Description
|
||||
The \c continue builtin is used to skip the current lap of the innermost currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
|
||||
|
||||
`continue` skips the remainder of the current iteration of the current inner loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
|
||||
|
||||
\subsection continue-example Example
|
||||
The following code removes all tmp files without smurfs.
|
||||
<p>
|
||||
<tt>for i in *.tmp;
|
||||
<br> if grep smurf $i;
|
||||
<br> continue;
|
||||
<br> end;
|
||||
<br> rm $i;
|
||||
<br>end;
|
||||
</tt>
|
||||
</p>
|
||||
|
||||
The following code removes all tmp files that do not contain the word smurf.
|
||||
|
||||
\fish
|
||||
for i in *.tmp
|
||||
if grep smurf $i
|
||||
continue
|
||||
end
|
||||
rm $i
|
||||
end
|
||||
\endfish
|
||||
|
||||
@@ -1,33 +1,25 @@
|
||||
|
||||
\section count count - Count the number of elements of an array
|
||||
\section count count - count the number of elements of an array
|
||||
|
||||
\subsection count-synopsis Synopsis
|
||||
<tt>count $VARIABLE</tt>
|
||||
\fish{synopsis}
|
||||
count $VARIABLE
|
||||
\endfish
|
||||
|
||||
\subsection count-description Description
|
||||
|
||||
<tt>count</tt> returns the number of arguments that were passed to
|
||||
it. This is usually used to find out how many elements an environment
|
||||
variable array contains, but this is not the only potential usage for
|
||||
the count command.
|
||||
`count` prints the number of arguments that were passed to it. This is usually used to find out how many elements an environment variable array contains.
|
||||
|
||||
`count` does not accept any options, including `-h` or `--help`.
|
||||
|
||||
`count` exits with a non-zero exit status if no arguments were passed to it, and with zero if at least one argument was passed.
|
||||
|
||||
The count command does not accept any options, not even '-h'. This way
|
||||
the user does not have to worry about an array containing elements
|
||||
such as dashes. \c fish performs a special check when invoking the
|
||||
count program, and if the user uses a help option, this help page is
|
||||
displayed, but if a help option is contained inside of a variable or
|
||||
is the result of expansion, it will be passed on to the count program.
|
||||
|
||||
\subsection count-example Example
|
||||
|
||||
<pre>
|
||||
\fish
|
||||
count $PATH
|
||||
</pre>
|
||||
# Returns the number of directories in the users PATH variable.
|
||||
|
||||
returns the number of directories in the users PATH variable.
|
||||
|
||||
<pre>
|
||||
count *.txt
|
||||
</pre>
|
||||
|
||||
returns the number of files in the current working directory ending with the suffix '.txt'.
|
||||
# Returns the number of files in the current working directory ending with the suffix '.txt'.
|
||||
\endfish
|
||||
110
doc_src/design.hdr
Normal file
110
doc_src/design.hdr
Normal file
@@ -0,0 +1,110 @@
|
||||
/**
|
||||
\page design Design document
|
||||
\htmlonly[block]
|
||||
<div class="fish_only_bar">
|
||||
<div class="design">
|
||||
<h1 class="interior_title">Design documentation</h1>
|
||||
\endhtmlonly
|
||||
|
||||
\section design-overview Overview
|
||||
|
||||
This is a description of the design principles that have been used to design fish. The fish design has three high level goals. These are:
|
||||
|
||||
-# Everything that can be done in other shell languages should be possible to do in fish, though fish may rely on external commands in doing so.
|
||||
|
||||
-# Fish should be user friendly, but not at the expense of expressiveness. Most tradeoffs between power and ease of use can be avoided with careful design.
|
||||
|
||||
-# Whenever possible without breaking the above goals, fish should follow the Posix syntax.
|
||||
|
||||
To achieve these high-level goals, the fish design relies on a number of more specific design principles. These are presented below, together with a rationale and a few examples for each.
|
||||
|
||||
|
||||
\section ortho The law of orthogonality
|
||||
|
||||
The shell language should have a small set of orthogonal features. Any situation where two features are related but not identical, one of them should be removed, and the other should be made powerful and general enough to handle all common use cases of either feature.
|
||||
|
||||
Rationale:
|
||||
|
||||
Related features make the language larger, which makes it harder to learn. It also increases the size of the source code, making the program harder to maintain and update.
|
||||
|
||||
Examples:
|
||||
|
||||
- Here documents are too similar to using echo inside of a pipeline.
|
||||
|
||||
- Subshells, command substitution and process substitution are strongly related. `fish` only supports command substitution, the others can be achieved either using a block or the psub shellscript function.
|
||||
|
||||
- Having both aliases and functions is confusing, especially since both of them have limitations and problems. `fish` functions have none of the drawbacks of either syntax.
|
||||
|
||||
- The many Posix quoting styles are silly, especially $''.
|
||||
|
||||
|
||||
\section design-response The law of responsiveness
|
||||
|
||||
The shell should attempt to remain responsive to the user at all times, even in the face of contended or unresponsive filesystems. It is only acceptable to block in response to a user initiated action, such as running a command.
|
||||
|
||||
Rationale:
|
||||
Bad performance increases user-facing complexity, because it trains users to recognize and route around slow use cases. It is also incredibly frustrating.
|
||||
|
||||
Examples:
|
||||
|
||||
- Features like syntax highlighting and autosuggestions must perform all of their disk I/O asynchronously.
|
||||
|
||||
- Startup should minimize forks and disk I/O, so that fish can be started even if the system is under load.
|
||||
|
||||
\section design-configurability Configurability is the root of all evil
|
||||
|
||||
Every configuration option in a program is a place where the program is too stupid to figure out for itself what the user really wants, and should be considered a failure of both the program and the programmer who implemented it.
|
||||
|
||||
Rationale:
|
||||
Different configuration options are a nightmare to maintain, since the number of potential bugs caused by specific configuration combinations quickly becomes an issue. Configuration options often imply assumptions about the code which change when reimplementing the code, causing issues with backwards compatibility. But mostly, configuration options should be avoided since they simply should not exist, as the program should be smart enough to do what is best, or at least a good enough approximation of it.
|
||||
|
||||
Examples:
|
||||
|
||||
- Fish allows the user to set various syntax highlighting colors. This is needed because fish does not know what colors the terminal uses by default, which might make some things unreadable. The proper solution would be for text color preferences to be defined centrally by the user for all programs, and for the terminal emulator to send these color properties to fish.
|
||||
|
||||
- Fish does not allow you to set the history filename, the number of history entries, different language substyles or any number of other common shell configuration options.
|
||||
|
||||
A special note on the evils of configurability is the long list of very useful features found in some shells, that are not turned on by default. Both zsh and bash support command-specific completions, but no such completions are shipped with bash by default, and they are turned off by default in zsh. Other features that zsh supports that are disabled by default include tab-completion of strings containing wildcards, a sane completion pager and a history file.
|
||||
|
||||
\section user The law of user focus
|
||||
|
||||
When designing a program, one should first think about how to make a intuitive and powerful program. Implementation issues should only be considered once a user interface has been designed.
|
||||
|
||||
Rationale:
|
||||
|
||||
This design rule is different than the others, since it describes how one should go about designing new features, not what the features should be. The problem with focusing on what can be done, and what is easy to do, is that too much of the implementation is exposed. This means that the user must know a great deal about the underlying system to be able to guess how the shell works, it also means that the language will often be rather low-level.
|
||||
|
||||
Examples:
|
||||
- There should only be one type of input to the shell, lists of commands. Loops, conditionals and variable assignments are all performed through regular commands.
|
||||
|
||||
- The differences between built-in commands and shellscript functions should be made as small as possible. Built-ins and shellscript functions should have exactly the same types of argument expansion as other commands, should be possible to use in any position in a pipeline, and should support any I/O redirection.
|
||||
|
||||
- Instead of forking when performing command substitution to provide a fake variable scope, all fish commands are performed from the same process, and fish instead supports true scoping.
|
||||
|
||||
- All blocks end with the `end` built-in.
|
||||
|
||||
\section disc The law of discoverability
|
||||
|
||||
A program should be designed to make its features as easy as possible to discover for the user.
|
||||
|
||||
Rationale:
|
||||
A program whose features are discoverable turns a new user into an expert in a shorter span of time, since the user will become an expert on the program simply by using it.
|
||||
|
||||
The main benefit of a graphical program over a command-line-based program is discoverability. In a graphical program, one can discover all the common features by simply looking at the user interface and guessing what the different buttons, menus and other widgets do. The traditional way to discover features in command-line programs is through manual pages. This requires both that the user starts to use a different program, and then they remember the new information until the next time they use the same program.
|
||||
|
||||
Examples:
|
||||
- Everything should be tab-completable, and every tab completion should have a description.
|
||||
|
||||
- Every syntax error and error in a built-in command should contain an error message describing what went wrong and a relevant help page. Whenever possible, errors should be flagged red by the syntax highlighter.
|
||||
|
||||
- The help manual should be easy to read, easily available from the shell, complete and contain many examples
|
||||
|
||||
- The language should be uniform, so that once the user understands the command/argument syntax, they will know the whole language, and be able to use tab-completion to discover new features.
|
||||
|
||||
|
||||
\htmlonly[block]
|
||||
</div>
|
||||
</div>
|
||||
\endhtmlonly
|
||||
|
||||
*/
|
||||
@@ -1,8 +1,14 @@
|
||||
\section dirh dirh
|
||||
\section dirh dirh - print directory history
|
||||
|
||||
\subsection dirh-synopsis Synopsis
|
||||
<tt>dirh</tt>
|
||||
\fish{synopsis}
|
||||
dirh
|
||||
\endfish
|
||||
|
||||
\subsection dirh-description Description
|
||||
<tt>dirh</tt> prints the current directory history. The current position in the
|
||||
history is highlighted using <tt>$fish_color_history_current</tt>.
|
||||
\subsection dirh-description Description
|
||||
|
||||
`dirh` prints the current directory history. The current position in the history is highlighted using the color defined in the `fish_color_history_current` environment variable.
|
||||
|
||||
`dirh` does not accept any parameters.
|
||||
|
||||
Note that the `cd` command limits directory history to the 25 most recently visited directories. The history is stored in the `$dirprev` and `$dirnext` variables.
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
\section dirs dirs
|
||||
\section dirs dirs - print directory stack
|
||||
|
||||
\subsection dirs-synopsis Synopsis
|
||||
<tt>dirs</tt>
|
||||
\fish{synopsis}
|
||||
dirs
|
||||
dirs -c
|
||||
\endfish
|
||||
|
||||
\subsection dirs-description Description
|
||||
<tt>dirs</tt> prints the current directory stack.
|
||||
\subsection dirs-description Description
|
||||
|
||||
`dirs` prints the current directory stack, as created by the <a href="#pushd">`pushd`</a> command.
|
||||
|
||||
With "-c", it clears the directory stack instead.
|
||||
|
||||
`dirs` does not accept any parameters.
|
||||
|
||||
2068
doc_src/doc.hdr
2068
doc_src/doc.hdr
File diff suppressed because it is too large
Load Diff
60
doc_src/echo.txt
Normal file
60
doc_src/echo.txt
Normal file
@@ -0,0 +1,60 @@
|
||||
\section echo echo - display a line of text
|
||||
|
||||
\subsection echo-synopsis Synopsis
|
||||
\fish{synopsis}
|
||||
echo [OPTIONS] [STRING]
|
||||
\endfish
|
||||
|
||||
\subsection echo-description Description
|
||||
|
||||
`echo` displays a string of text.
|
||||
|
||||
The following options are available:
|
||||
|
||||
- `-n`, Do not output a newline
|
||||
|
||||
- `-s`, Do not separate arguments with spaces
|
||||
|
||||
- `-E`, Disable interpretation of backslash escapes (default)
|
||||
|
||||
- `-e`, Enable interpretation of backslash escapes
|
||||
|
||||
\subsection echo-escapes Escape Sequences
|
||||
|
||||
If `-e` is used, the following sequences are recognized:
|
||||
|
||||
- `\` backslash
|
||||
|
||||
- `\a` alert (BEL)
|
||||
|
||||
- `\b` backspace
|
||||
|
||||
- `\c` produce no further output
|
||||
|
||||
- `\e` escape
|
||||
|
||||
- `\f` form feed
|
||||
|
||||
- `\n` new line
|
||||
|
||||
- `\r` carriage return
|
||||
|
||||
- `\t` horizontal tab
|
||||
|
||||
- `\v` vertical tab
|
||||
|
||||
- `\0NNN` byte with octal value NNN (1 to 3 digits)
|
||||
|
||||
- `\xHH` byte with hexadecimal value HH (1 to 2 digits)
|
||||
|
||||
\subsection echo-example Example
|
||||
|
||||
\fish
|
||||
echo 'Hello World'
|
||||
\endfish
|
||||
Print hello world to stdout
|
||||
|
||||
\fish
|
||||
echo -e 'Top\nBottom'
|
||||
\endfish
|
||||
Print Top and Bottom on separate lines, using an escape sequence
|
||||
@@ -1,17 +1,23 @@
|
||||
\section else else - execute command if a condition is not met.
|
||||
\section else else - execute command if a condition is not met
|
||||
|
||||
\subsection else-synopsis Synopsis
|
||||
<tt>if CONDITION; COMMAND_TRUE [else; COMMAND_FALSE] end;</tt>
|
||||
\fish{synopsis}
|
||||
if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end
|
||||
\endfish
|
||||
|
||||
\subsection else-description Description
|
||||
<tt>if</tt> will execute the command CONDITION. If the commands exit
|
||||
status is zero, the command COMMAND_TRUE will execute. If it is
|
||||
not zero and COMMAND_FALSE is specified, COMMAND_FALSE will be
|
||||
executed.
|
||||
|
||||
`if` will execute the command `CONDITION`. If the condition's exit status is 0, the commands `COMMANDS_TRUE` will execute. If it is not 0 and `else` is given, `COMMANDS_FALSE` will be executed.
|
||||
|
||||
|
||||
\subsection else-example Example
|
||||
|
||||
The command <tt>if test -f foo.txt; echo foo.txt exists; else; echo foo.txt does not exist; end</tt>
|
||||
will print <tt>foo.txt exists</tt> if the file foo.txt
|
||||
exists and is a regular file, otherwise it will print
|
||||
<tt>foo.txt does not exist</tt>.
|
||||
The following code tests whether a file `foo.txt` exists as a regular file.
|
||||
|
||||
\fish
|
||||
if test -f foo.txt
|
||||
echo foo.txt exists
|
||||
else
|
||||
echo foo.txt does not exist
|
||||
end
|
||||
\endfish
|
||||
|
||||
23
doc_src/emit.txt
Normal file
23
doc_src/emit.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
\section emit emit - Emit a generic event
|
||||
|
||||
\subsection emit-synopsis Synopsis
|
||||
\fish{synopsis}
|
||||
emit EVENT_NAME [ARGUMENTS...]
|
||||
\endfish
|
||||
|
||||
\subsection emit-description Description
|
||||
|
||||
`emit` emits, or fires, an event. Events are delivered to, or caught by, special functions called event handlers. The arguments are passed to the event handlers as function arguments.
|
||||
|
||||
|
||||
\subsection emit-example Example
|
||||
|
||||
The following code first defines an event handler for the generic event named 'test_event', and then emits an event of that type.
|
||||
|
||||
\fish
|
||||
function event_test --on-event test_event
|
||||
echo event test: $argv
|
||||
end
|
||||
|
||||
emit test_event something
|
||||
\endfish
|
||||
@@ -1,13 +1,19 @@
|
||||
\section end end - end a block of commands.
|
||||
|
||||
\subsection end-synopsis Synopsis
|
||||
<pre>for VARNAME in [VALUES...]; COMMANDS; end
|
||||
if CONDITION; COMMAND_TRUE [else; COMMAND_FALSE] end
|
||||
while CONDITION; COMMANDS; end
|
||||
switch VALUE; [case [WILDCARD...]; [COMMANDS...];...] end
|
||||
</pre>
|
||||
\fish{synopsis}
|
||||
begin; [COMMANDS...] end
|
||||
if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end
|
||||
while CONDITION; COMMANDS...; end
|
||||
for VARNAME in [VALUES...]; COMMANDS...; end
|
||||
switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
|
||||
\endfish
|
||||
|
||||
\subsection end-description Description
|
||||
<tt>end</tt> ends a block of commands. For more information, read the
|
||||
documentation for the block constructs, such as \c if, \c for and \
|
||||
while.
|
||||
|
||||
`end` ends a block of commands.
|
||||
|
||||
For more information, read the
|
||||
documentation for the block constructs, such as `if`, `for` and `while`.
|
||||
|
||||
The `end` command does not change the current exit status.
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
\section eval eval - eval the specified commands
|
||||
\section eval eval - evaluate the specified commands
|
||||
|
||||
\subsection eval-synopsis Synopsis
|
||||
<tt>eval [COMMANDS...]</tt>
|
||||
\fish{synopsis}
|
||||
eval [COMMANDS...]
|
||||
\endfish
|
||||
|
||||
\subsection eval-description Description
|
||||
The <tt>eval</tt> builtin causes fish to evaluate the specified parameters as a command. If more than one parameter is specified, all parameters will be joined using a space character as a separator.
|
||||
`eval` evaluates the specified parameters as a command. If more than one parameter is specified, all parameters will be joined using a space character as a separator.
|
||||
|
||||
|
||||
\subsection eval-example Example
|
||||
|
||||
<pre>
|
||||
The following code will call the ls command. Note that `fish` does not support the use of shell variables as direct commands; `eval` can be used to work around this.
|
||||
|
||||
\fish
|
||||
set cmd ls
|
||||
eval $cmd
|
||||
</pre>
|
||||
\endfish
|
||||
|
||||
will call the ls command.
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
|
||||
\section exec exec - Execute command in current process
|
||||
\section exec exec - execute command in current process
|
||||
|
||||
\subsection exec-synopsis Synopsis
|
||||
<tt>exec COMMAND [OPTIONS...]</tt>
|
||||
\fish{synopsis}
|
||||
exec COMMAND [OPTIONS...]
|
||||
\endfish
|
||||
|
||||
\subsection exec-description Description
|
||||
|
||||
The \c exec builtin is used to replace the currently running shells
|
||||
process image with a new command. On successful completion, exec never
|
||||
returns. exec can not be used inside a pipeline.
|
||||
`exec` replaces the currently running shell with a new command. On successful completion, `exec` never returns. `exec` cannot be used inside a pipeline.
|
||||
|
||||
|
||||
\subsection exec-example Example
|
||||
|
||||
<tt>exec emacs</tt> starts up the emacs text editor. When emacs exits,
|
||||
the session will terminate.
|
||||
`exec emacs` starts up the emacs text editor, and exits `fish`. When emacs exits, the session will terminate.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user