mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-14 14:01:16 -03:00
Compare commits
1077 Commits
Integratio
...
Integratio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
708d6b6911 | ||
|
|
c3dddee804 | ||
|
|
e468b71459 | ||
|
|
41f87e82a8 | ||
|
|
c9a409dcf3 | ||
|
|
0297e5a105 | ||
|
|
5996962749 | ||
|
|
8d32eb62ae | ||
|
|
446f5d6134 | ||
|
|
1f77c2d09d | ||
|
|
6c906b365b | ||
|
|
509ce38375 | ||
|
|
6580ba8d8e | ||
|
|
1baaeee17e | ||
|
|
6f9f7632f3 | ||
|
|
dcf3d03e54 | ||
|
|
81a41e26f8 | ||
|
|
41a41b1591 | ||
|
|
4bc220f349 | ||
|
|
5eaccf91e2 | ||
|
|
12ea04580a | ||
|
|
11dccccdcc | ||
|
|
e9de674bbd | ||
|
|
4bed9ea56d | ||
|
|
c28bd74ca7 | ||
|
|
bf274f4fb5 | ||
|
|
f365f720da | ||
|
|
4223b3da68 | ||
|
|
e5bfdb99b6 | ||
|
|
6eb88dc13f | ||
|
|
48392517d4 | ||
|
|
c5a6d87c5e | ||
|
|
e1b445f934 | ||
|
|
19c038d1ef | ||
|
|
6daa8d7e12 | ||
|
|
177e06808c | ||
|
|
69005f8c60 | ||
|
|
fcd53af89d | ||
|
|
6c3f12fe24 | ||
|
|
6f8775499f | ||
|
|
430d82bd4f | ||
|
|
573916e5e2 | ||
|
|
7a3e0924e0 | ||
|
|
fc81fa6abf | ||
|
|
af022728bd | ||
|
|
5ca63c4956 | ||
|
|
a070dffc4e | ||
|
|
f0515d0caa | ||
|
|
1f836f72b3 | ||
|
|
89e48ba0b3 | ||
|
|
b118ed69d3 | ||
|
|
dddbdddcff | ||
|
|
05f19ad09c | ||
|
|
7211802fc0 | ||
|
|
7b906134e2 | ||
|
|
1fb92b6f8c | ||
|
|
b22842a52f | ||
|
|
834fdf8666 | ||
|
|
1621fa43d8 | ||
|
|
3da3558e35 | ||
|
|
b29b026106 | ||
|
|
7ffcb828fe | ||
|
|
11f4e64e45 | ||
|
|
bd93a9e6ff | ||
|
|
aed5267fd1 | ||
|
|
26e781ef5a | ||
|
|
ee6691458e | ||
|
|
4cd34816cf | ||
|
|
f9835b5077 | ||
|
|
52c7ebe502 | ||
|
|
6b536922af | ||
|
|
574424dc5a | ||
|
|
aedee4e1a4 | ||
|
|
f31f53f61f | ||
|
|
7c40abe4a6 | ||
|
|
58347d494a | ||
|
|
01dbfb0a3f | ||
|
|
2740cc80d2 | ||
|
|
8ba2a4cfd4 | ||
|
|
1f2432d63a | ||
|
|
a70ed0282b | ||
|
|
a7e3678d3e | ||
|
|
dce9453d25 | ||
|
|
fa7682ec3c | ||
|
|
28cde83c33 | ||
|
|
96157a05f6 | ||
|
|
b9f0842d7e | ||
|
|
77d4d21caa | ||
|
|
48aa929008 | ||
|
|
291a28e79c | ||
|
|
6ab97227de | ||
|
|
6dec6ddc26 | ||
|
|
0785260365 | ||
|
|
885de80a0e | ||
|
|
8204d3103b | ||
|
|
0814797444 | ||
|
|
e8bed9e038 | ||
|
|
a927efa015 | ||
|
|
05ab849b72 | ||
|
|
d8a9e11c32 | ||
|
|
fe8fb2dccf | ||
|
|
720c0ddb35 | ||
|
|
2900352e04 | ||
|
|
dc96c01c93 | ||
|
|
1ace742b6c | ||
|
|
7996e15ad1 | ||
|
|
3b50fe8b68 | ||
|
|
9870cf838a | ||
|
|
8d27f81a7b | ||
|
|
9f8d854c2a | ||
|
|
40fa0d5c83 | ||
|
|
e8c18386c8 | ||
|
|
745bceb9d8 | ||
|
|
483e9fdea2 | ||
|
|
c6e3dd7965 | ||
|
|
c2c3813555 | ||
|
|
1a1a9b9927 | ||
|
|
47b78b9eeb | ||
|
|
396bf1235d | ||
|
|
d885f00941 | ||
|
|
0ba02ee3d1 | ||
|
|
5a5b51c909 | ||
|
|
07ef1e7c4b | ||
|
|
896b9ecc70 | ||
|
|
4c7baa37a3 | ||
|
|
599089de80 | ||
|
|
eb3ed2680b | ||
|
|
90f7d4b081 | ||
|
|
05a640b027 | ||
|
|
a8a10d634b | ||
|
|
029d88e962 | ||
|
|
59fa04bd91 | ||
|
|
0019c12af3 | ||
|
|
8e1661cd22 | ||
|
|
b48b2ddfb2 | ||
|
|
d0077d0910 | ||
|
|
e79d42aa52 | ||
|
|
7bb3bf7c74 | ||
|
|
41acaced3f | ||
|
|
42eaacd3a1 | ||
|
|
9443a415bf | ||
|
|
45d3a705be | ||
|
|
4288db9d39 | ||
|
|
8324893565 | ||
|
|
41d4058156 | ||
|
|
ed85393611 | ||
|
|
ffd4754cb2 | ||
|
|
54dd4b7ed6 | ||
|
|
8041913e7a | ||
|
|
2d5ce72cb4 | ||
|
|
d058d290be | ||
|
|
85d697f13d | ||
|
|
754b78a748 | ||
|
|
254762f30f | ||
|
|
bf53f39cdd | ||
|
|
2b0bad889a | ||
|
|
ee15f1b987 | ||
|
|
3289797248 | ||
|
|
2b7dddf342 | ||
|
|
1293cd8b6a | ||
|
|
417255fc55 | ||
|
|
d73ff39393 | ||
|
|
227ba10628 | ||
|
|
15921d37c4 | ||
|
|
eaa3741336 | ||
|
|
422ff0f173 | ||
|
|
e2ed561264 | ||
|
|
1fbcb1ee9d | ||
|
|
a0d9db94cb | ||
|
|
6a5a1a8964 | ||
|
|
a8b2da8405 | ||
|
|
7cfe028b9d | ||
|
|
1ca1667786 | ||
|
|
c8d2e6d972 | ||
|
|
ca33bbd4e0 | ||
|
|
f47ebc4b1c | ||
|
|
682af2f83f | ||
|
|
7c6527e9cf | ||
|
|
121109ee4d | ||
|
|
11a60c8374 | ||
|
|
54a76bb9e5 | ||
|
|
2f33c24a07 | ||
|
|
d0146d7b6f | ||
|
|
9ad1b86e4e | ||
|
|
f63c8a703e | ||
|
|
4f6ac06b21 | ||
|
|
18cc06b38f | ||
|
|
c1d4c07548 | ||
|
|
e97c5b552c | ||
|
|
9588c9a811 | ||
|
|
94ef40fb19 | ||
|
|
87b0d1b828 | ||
|
|
38ea6e088e | ||
|
|
0eda4020a2 | ||
|
|
ded6e726e5 | ||
|
|
df55991806 | ||
|
|
73bd7c51cf | ||
|
|
df12ac24b2 | ||
|
|
fb63bee322 | ||
|
|
c7a016a137 | ||
|
|
3a03d5df53 | ||
|
|
f0ba37b73a | ||
|
|
a928517e95 | ||
|
|
5ec9fcd8d4 | ||
|
|
ed5f90d22e | ||
|
|
5cfd3eb63a | ||
|
|
aad2848e80 | ||
|
|
320cb6857f | ||
|
|
9ac78e06b4 | ||
|
|
93e6f57dfc | ||
|
|
45c7836bec | ||
|
|
b8778ba4a2 | ||
|
|
b16511344e | ||
|
|
1054a2fd36 | ||
|
|
b86b84e2a9 | ||
|
|
52d1b6b97d | ||
|
|
9b4310b10f | ||
|
|
13a4ef80b3 | ||
|
|
0de2a1072f | ||
|
|
2e5693a6bc | ||
|
|
acc2353328 | ||
|
|
8423345e09 | ||
|
|
36d4283d17 | ||
|
|
acd8363c38 | ||
|
|
e8a31a13a1 | ||
|
|
3e82be4ac2 | ||
|
|
521546a986 | ||
|
|
708f80d855 | ||
|
|
8645aa94c8 | ||
|
|
043725cdd5 | ||
|
|
209a2576cd | ||
|
|
5284a133b0 | ||
|
|
2d26a262e7 | ||
|
|
2e81ade66a | ||
|
|
5eb1ef4b4a | ||
|
|
5d6415b6bf | ||
|
|
bd03c3fbc5 | ||
|
|
20bcbcc252 | ||
|
|
47a9f99523 | ||
|
|
7356987e6e | ||
|
|
6518b6c6b7 | ||
|
|
d5462fb3d7 | ||
|
|
d7283cdaa1 | ||
|
|
54360d8cfe | ||
|
|
0b0d0e7799 | ||
|
|
609100c196 | ||
|
|
9e922a6e02 | ||
|
|
a275618589 | ||
|
|
83c7931afb | ||
|
|
1155c4b413 | ||
|
|
7a1146ebb5 | ||
|
|
180c211dd2 | ||
|
|
848495d4cf | ||
|
|
87c51f2c10 | ||
|
|
b41fced062 | ||
|
|
71e835feec | ||
|
|
313cb0d248 | ||
|
|
0c4ede5627 | ||
|
|
034aaaa62b | ||
|
|
839cd2a1c7 | ||
|
|
adba0550d5 | ||
|
|
6d1c127687 | ||
|
|
7cca963b8f | ||
|
|
1fb8f4e277 | ||
|
|
98863541c3 | ||
|
|
87bfd1a01e | ||
|
|
95385eda80 | ||
|
|
c02f5ceb0f | ||
|
|
4ba1f9e398 | ||
|
|
294e78205c | ||
|
|
d437a84828 | ||
|
|
2f28e96956 | ||
|
|
00a8766635 | ||
|
|
097d2246c2 | ||
|
|
23c3101440 | ||
|
|
003ea83410 | ||
|
|
de87419df9 | ||
|
|
4e505efc50 | ||
|
|
b7d910a941 | ||
|
|
f05fe4e292 | ||
|
|
72e687296b | ||
|
|
c9c311fbdb | ||
|
|
b9b66791c1 | ||
|
|
9b0d45d4fa | ||
|
|
5709c81fe0 | ||
|
|
e35b91d38c | ||
|
|
4f4d34e664 | ||
|
|
f6047f02d6 | ||
|
|
71e69b6d75 | ||
|
|
60c47deca9 | ||
|
|
c10952c354 | ||
|
|
e73226d7e8 | ||
|
|
19e12e3747 | ||
|
|
e4ce5ca24f | ||
|
|
01fb830bf5 | ||
|
|
edcf15e3d7 | ||
|
|
9f05697dcc | ||
|
|
c18614552d | ||
|
|
9701d5cc7b | ||
|
|
50fc3d72df | ||
|
|
feaeca4999 | ||
|
|
d4fb9a0e65 | ||
|
|
2c38978115 | ||
|
|
520f810bf9 | ||
|
|
d441de33e5 | ||
|
|
46b791240a | ||
|
|
3bd24ddb17 | ||
|
|
26c1430e82 | ||
|
|
6c3900ff64 | ||
|
|
6192e2453e | ||
|
|
eab836864e | ||
|
|
225caa2fe8 | ||
|
|
4fe2a2921f | ||
|
|
7779132595 | ||
|
|
ca5a4ec1d5 | ||
|
|
49ed20c8cb | ||
|
|
a5f6382d77 | ||
|
|
b2f047421d | ||
|
|
dfe7813c02 | ||
|
|
ddbf63c46f | ||
|
|
c8fe0e53dd | ||
|
|
7bcae09674 | ||
|
|
2a5ad198bf | ||
|
|
960cc628b2 | ||
|
|
6b41240cd2 | ||
|
|
6e873719fd | ||
|
|
f4f9ed56ee | ||
|
|
9f23f619c9 | ||
|
|
1e234f492c | ||
|
|
f0ab1331a5 | ||
|
|
99b729eb4d | ||
|
|
9af0797334 | ||
|
|
6bef7b7be9 | ||
|
|
b0b2182535 | ||
|
|
fb979922b3 | ||
|
|
c4bd110fca | ||
|
|
b663b0e818 | ||
|
|
41f1232cf9 | ||
|
|
4a2aed1f8e | ||
|
|
2d46969d3e | ||
|
|
f382fa8e8a | ||
|
|
7ea2dc4488 | ||
|
|
56679d4776 | ||
|
|
070ef6fd5b | ||
|
|
075be74cc4 | ||
|
|
5a8be61954 | ||
|
|
7fdbbe0711 | ||
|
|
8af6bb4436 | ||
|
|
2bb52c65c2 | ||
|
|
37d91d0c29 | ||
|
|
8dfee7ff76 | ||
|
|
07de13f61f | ||
|
|
668de88e69 | ||
|
|
31432c3535 | ||
|
|
cdb82e45ac | ||
|
|
a90b521eb4 | ||
|
|
25e0a39165 | ||
|
|
d982427216 | ||
|
|
21521b2953 | ||
|
|
42458ff7ab | ||
|
|
a8c9019a39 | ||
|
|
100a0ea549 | ||
|
|
cbe2d4b5f1 | ||
|
|
7878dbc4f0 | ||
|
|
e16f6ca2aa | ||
|
|
c7e26e494e | ||
|
|
6e6b294a3f | ||
|
|
00303ed07f | ||
|
|
345950ac1b | ||
|
|
e9543617f6 | ||
|
|
9c85dce863 | ||
|
|
bf3466d82c | ||
|
|
3eb7a8fa09 | ||
|
|
dcb39af8c0 | ||
|
|
8a2d6a9752 | ||
|
|
cc31cda835 | ||
|
|
b560daac21 | ||
|
|
8a7b30d3f0 | ||
|
|
d474368ea5 | ||
|
|
7e962d6f22 | ||
|
|
a26f68d63f | ||
|
|
bff6a6e66a | ||
|
|
f490b56378 | ||
|
|
dc6b538f56 | ||
|
|
4f397e86d7 | ||
|
|
d5ca88d42d | ||
|
|
f48fec31d6 | ||
|
|
0f65d9306b | ||
|
|
bb47dfcabc | ||
|
|
170a5ea31c | ||
|
|
4f95c4b8ac | ||
|
|
36352c0370 | ||
|
|
6d322dff73 | ||
|
|
fe8727fb71 | ||
|
|
44baf0f9bd | ||
|
|
4acfdcb0a0 | ||
|
|
e8ed45ecd3 | ||
|
|
3c0de01c07 | ||
|
|
1d418365b5 | ||
|
|
a3d0ea5c7f | ||
|
|
d35cbb6594 | ||
|
|
3663726689 | ||
|
|
cda415cb5d | ||
|
|
36f320598e | ||
|
|
d8497f0f1e | ||
|
|
f464704884 | ||
|
|
ea3e144f2d | ||
|
|
14efcb7cc5 | ||
|
|
4ffc6e02b7 | ||
|
|
f33ece11ac | ||
|
|
92e14d7e4a | ||
|
|
a5034874ab | ||
|
|
37c4247cb7 | ||
|
|
c07c98ac05 | ||
|
|
851e449347 | ||
|
|
213ef3ee56 | ||
|
|
30e56c0237 | ||
|
|
5d4fffcae4 | ||
|
|
8d40bf325d | ||
|
|
488a09fffb | ||
|
|
22558f9e7b | ||
|
|
b71aa8f9e8 | ||
|
|
8b9102d9fe | ||
|
|
4e1226a313 | ||
|
|
91a311c156 | ||
|
|
7fd3079bb6 | ||
|
|
f7f39b8c90 | ||
|
|
d389b22afc | ||
|
|
17f5727e7e | ||
|
|
61388cff02 | ||
|
|
d2739f10e1 | ||
|
|
a863f74fc4 | ||
|
|
41bf002049 | ||
|
|
632a209685 | ||
|
|
ce6e9b52ce | ||
|
|
0c23b5652a | ||
|
|
40a83e4018 | ||
|
|
53f1ebaf6b | ||
|
|
386f2bdcf4 | ||
|
|
c5b17b5310 | ||
|
|
36fe172932 | ||
|
|
94aeb47f63 | ||
|
|
ce1c9f3a65 | ||
|
|
45ae726d4f | ||
|
|
cd84587c3a | ||
|
|
c0c2e1d4fa | ||
|
|
d17f2585fa | ||
|
|
b05c09429d | ||
|
|
7ec205d59c | ||
|
|
b485d95808 | ||
|
|
eeea3f3b3c | ||
|
|
ca929e088e | ||
|
|
92dd6de73c | ||
|
|
01fa31f313 | ||
|
|
662ba60d63 | ||
|
|
f843eb3d31 | ||
|
|
e9b5505169 | ||
|
|
c2a8de4873 | ||
|
|
503edf2d49 | ||
|
|
4c34ba9959 | ||
|
|
204e79105a | ||
|
|
98470ab608 | ||
|
|
93bea5b321 | ||
|
|
2c8bc05826 | ||
|
|
8b1625be2b | ||
|
|
d71b97c2cf | ||
|
|
76c73aa8ce | ||
|
|
02ba7933e0 | ||
|
|
be0bd999ad | ||
|
|
92e3a3c8ef | ||
|
|
96ebfaaf87 | ||
|
|
30b71fbb78 | ||
|
|
fc3cd77c2f | ||
|
|
22c20f36cb | ||
|
|
46ab1a155c | ||
|
|
29b9e6705a | ||
|
|
ed7bf83b56 | ||
|
|
0a6dc2addb | ||
|
|
05b52eaa0b | ||
|
|
e14ae90cc8 | ||
|
|
06c658dd5e | ||
|
|
85cd372a4e | ||
|
|
f9115b5ef1 | ||
|
|
9d69f44550 | ||
|
|
c57b30cba1 | ||
|
|
bb754c2085 | ||
|
|
f7c6426b21 | ||
|
|
90e535f66f | ||
|
|
af95813514 | ||
|
|
82b298dcc5 | ||
|
|
ae32d0288b | ||
|
|
b17ebb4551 | ||
|
|
6faa2f9866 | ||
|
|
0335921c3c | ||
|
|
af0a2add10 | ||
|
|
87a532f533 | ||
|
|
fa837a2e4a | ||
|
|
f0125734d0 | ||
|
|
c0c8fffd50 | ||
|
|
2822dfc92d | ||
|
|
87fd9bca02 | ||
|
|
3d6cb59b31 | ||
|
|
6936e64b34 | ||
|
|
f78f51e2a7 | ||
|
|
578e4e8207 | ||
|
|
f7daa5884a | ||
|
|
f0e884075c | ||
|
|
363fa0a598 | ||
|
|
9f6ba5db7a | ||
|
|
cac3b239e3 | ||
|
|
b0716885bc | ||
|
|
a0623e870b | ||
|
|
7ce042ccff | ||
|
|
30f26b62e6 | ||
|
|
e89057b70c | ||
|
|
1bc887cd9f | ||
|
|
6b1801063b | ||
|
|
b895a50bb2 | ||
|
|
4b740d1fb6 | ||
|
|
e54b30d138 | ||
|
|
4b2d1c9acf | ||
|
|
8ca3adaa91 | ||
|
|
2345bea5c1 | ||
|
|
443fc66048 | ||
|
|
eeb42f5e54 | ||
|
|
35bee00802 | ||
|
|
3702616b60 | ||
|
|
3e30857e99 | ||
|
|
f37995c676 | ||
|
|
5328d6b83c | ||
|
|
172541c689 | ||
|
|
cfefaaf4ee | ||
|
|
0893134543 | ||
|
|
4f596536f5 | ||
|
|
2047351723 | ||
|
|
476ffe12f6 | ||
|
|
a872d9c299 | ||
|
|
b0184f1476 | ||
|
|
cb22354f83 | ||
|
|
4d04125fa1 | ||
|
|
ecaba64056 | ||
|
|
4906a5f390 | ||
|
|
f76e620be8 | ||
|
|
bfee664af3 | ||
|
|
4e2d2c125c | ||
|
|
f25d5a0f52 | ||
|
|
6d81e2b8a4 | ||
|
|
df0d0ae80a | ||
|
|
044efef577 | ||
|
|
8f0ea07eab | ||
|
|
b93ac10dda | ||
|
|
c99386a375 | ||
|
|
5dd959070c | ||
|
|
df10ffab9c | ||
|
|
9b5625a66b | ||
|
|
6f53709b65 | ||
|
|
9daffc7080 | ||
|
|
790968120d | ||
|
|
386c698d45 | ||
|
|
f3e93f0666 | ||
|
|
2a119ff082 | ||
|
|
2dbc7ddcb8 | ||
|
|
710addde16 | ||
|
|
ef5d3232e4 | ||
|
|
dc02587ac4 | ||
|
|
077a0e1b47 | ||
|
|
816857ead2 | ||
|
|
1248642996 | ||
|
|
a5e31cb0f1 | ||
|
|
27c88c870b | ||
|
|
67a594c12c | ||
|
|
e46978fedb | ||
|
|
7e0e745958 | ||
|
|
43515e1298 | ||
|
|
ccd62ff44b | ||
|
|
744da2cab2 | ||
|
|
b36414152b | ||
|
|
93b9e7443e | ||
|
|
b1f576deae | ||
|
|
01f09cf4c1 | ||
|
|
d68320a3c6 | ||
|
|
00cb9ce80a | ||
|
|
afa266a7ea | ||
|
|
3f9bd72bca | ||
|
|
fb845cdb72 | ||
|
|
8277f6a1ba | ||
|
|
d7604dcc99 | ||
|
|
71e1e38426 | ||
|
|
b77e2a67f8 | ||
|
|
e75fc8452f | ||
|
|
6c8ecab44b | ||
|
|
5da3d2f27b | ||
|
|
d51a1e4fe2 | ||
|
|
ee26eafc25 | ||
|
|
acfd380176 | ||
|
|
3a08a24259 | ||
|
|
0a51b17716 | ||
|
|
b12c413c28 | ||
|
|
375de96016 | ||
|
|
49008d7a1c | ||
|
|
e1ab6494cd | ||
|
|
5afd939f3e | ||
|
|
644ea82c2f | ||
|
|
450d4be88f | ||
|
|
3669805627 | ||
|
|
46fba342db | ||
|
|
5eedb0ee9c | ||
|
|
325f047803 | ||
|
|
c76f896f69 | ||
|
|
88688d02b2 | ||
|
|
ec292ec51b | ||
|
|
3a7a6f16ef | ||
|
|
3d0ea5fe79 | ||
|
|
d252704fdb | ||
|
|
dfe363c945 | ||
|
|
799d8ddfc4 | ||
|
|
99351fcb44 | ||
|
|
9bd5257dda | ||
|
|
10ae6d8b26 | ||
|
|
2fa4bd8fd7 | ||
|
|
3468fbc605 | ||
|
|
34ca8fd213 | ||
|
|
8140f74d75 | ||
|
|
1d2fff9686 | ||
|
|
b53f42970c | ||
|
|
4fbc476b19 | ||
|
|
9aad3781fb | ||
|
|
23ea77be76 | ||
|
|
51e25e5a8d | ||
|
|
113145e52a | ||
|
|
f9355a0b86 | ||
|
|
eb0d04d7ff | ||
|
|
b2be50f081 | ||
|
|
190fb4a665 | ||
|
|
20f28c2ef3 | ||
|
|
e00c70c5fe | ||
|
|
6b99af05a5 | ||
|
|
2df263fa26 | ||
|
|
06003f82ae | ||
|
|
f08ac969e9 | ||
|
|
fb3c839a15 | ||
|
|
e3187b2361 | ||
|
|
1e27910b60 | ||
|
|
09291735e6 | ||
|
|
512506f0f9 | ||
|
|
8cb560dc7e | ||
|
|
b2b327fec4 | ||
|
|
013506dfd5 | ||
|
|
bd2b7764c7 | ||
|
|
ba12bcad33 | ||
|
|
8b06d2ad66 | ||
|
|
a6cd12a7f1 | ||
|
|
6e0521e23f | ||
|
|
d895f876b4 | ||
|
|
bb6ce9d142 | ||
|
|
0ef811f8b8 | ||
|
|
7c6a3e7026 | ||
|
|
34a2ce2646 | ||
|
|
9abbc5f06c | ||
|
|
3ca5ca77fa | ||
|
|
733e960c11 | ||
|
|
14c7cfa84b | ||
|
|
2f0cb2a32b | ||
|
|
bd33e11599 | ||
|
|
3c4e322ec1 | ||
|
|
755d0089f3 | ||
|
|
ee599bdd5c | ||
|
|
a8d911bd39 | ||
|
|
85c346d6ad | ||
|
|
7a343a8665 | ||
|
|
40b4732f94 | ||
|
|
3cd1ef23ab | ||
|
|
efbbe5129f | ||
|
|
8326bdc9af | ||
|
|
ceedc6f345 | ||
|
|
f839282ac0 | ||
|
|
e99c6104fe | ||
|
|
d68c37b726 | ||
|
|
e3ac6d3fe2 | ||
|
|
b7c96417d1 | ||
|
|
9a442673e6 | ||
|
|
0fb434d372 | ||
|
|
163e16f546 | ||
|
|
9b4938e2c2 | ||
|
|
67f6a48a78 | ||
|
|
89c96c2114 | ||
|
|
52d8fdccff | ||
|
|
de076f00f8 | ||
|
|
30065d101b | ||
|
|
5a1a25bfbe | ||
|
|
cf393a264d | ||
|
|
70d798f6ed | ||
|
|
ca15a22cd1 | ||
|
|
86d9e5251a | ||
|
|
417d53a58f | ||
|
|
497b3f51c8 | ||
|
|
080e3efd1b | ||
|
|
71cf516f58 | ||
|
|
08fc19484f | ||
|
|
f966248f16 | ||
|
|
e597df70d7 | ||
|
|
c79e9c7d4e | ||
|
|
75e7784f18 | ||
|
|
8e7f0e781d | ||
|
|
528b9fdcf2 | ||
|
|
edee3e5eb2 | ||
|
|
c9caee37b4 | ||
|
|
bc693bd4e0 | ||
|
|
dff384e42d | ||
|
|
cd422e5d78 | ||
|
|
ca6cda20a3 | ||
|
|
3d8e8a8715 | ||
|
|
af0f9e5308 | ||
|
|
88cb616c1b | ||
|
|
63120a9962 | ||
|
|
807dc82a75 | ||
|
|
1fb4cc0e76 | ||
|
|
6a36144587 | ||
|
|
0045b46af8 | ||
|
|
47fbfdca3e | ||
|
|
772e35562a | ||
|
|
e42f593553 | ||
|
|
9642fcb589 | ||
|
|
7e58a3982a | ||
|
|
431589a16a | ||
|
|
cbee315b1b | ||
|
|
84b08a4fe3 | ||
|
|
c429a585e4 | ||
|
|
68e167d576 | ||
|
|
262452d0b1 | ||
|
|
7e08679f1b | ||
|
|
dda890cf88 | ||
|
|
44cde9e0e9 | ||
|
|
d7bc20c933 | ||
|
|
d69a68e265 | ||
|
|
534c1287ca | ||
|
|
81dee16d69 | ||
|
|
e5011fbcdf | ||
|
|
0f5bfeead2 | ||
|
|
a47b4b0e95 | ||
|
|
02f578a82d | ||
|
|
dfb4998778 | ||
|
|
ea71f0b610 | ||
|
|
a3e9e179eb | ||
|
|
0f3b4d2bd8 | ||
|
|
ceee1ebfd9 | ||
|
|
046174397b | ||
|
|
a6ec2dc3ed | ||
|
|
6ec83568b5 | ||
|
|
b2a2705df4 | ||
|
|
0d6bdb38e6 | ||
|
|
02cef2da23 | ||
|
|
9c53019d95 | ||
|
|
7a4065eb9f | ||
|
|
13eb302f3c | ||
|
|
6122ae83a6 | ||
|
|
fa78a7101c | ||
|
|
5d680f6dbc | ||
|
|
290e936322 | ||
|
|
ecf4517ffe | ||
|
|
eb834f47ef | ||
|
|
db2c128b24 | ||
|
|
e0a627f99d | ||
|
|
8070cd81d6 | ||
|
|
00291c1c5a | ||
|
|
10661bb024 | ||
|
|
f9edcbbbe2 | ||
|
|
7365b6bd0c | ||
|
|
d66d51f101 | ||
|
|
bc8ec46ef9 | ||
|
|
3a0d417b9e | ||
|
|
7e56d6385e | ||
|
|
db0176b884 | ||
|
|
f63f6e54fa | ||
|
|
7cf6ef675a | ||
|
|
29664c42a0 | ||
|
|
8dc4b0d4b2 | ||
|
|
cb74f0f60e | ||
|
|
d8dd718695 | ||
|
|
4424909801 | ||
|
|
a243580cfa | ||
|
|
693d6879d3 | ||
|
|
ad7e9a8d56 | ||
|
|
d0fdc82fdf | ||
|
|
82c56bc64b | ||
|
|
098f6d01c4 | ||
|
|
4b0f1cf85b | ||
|
|
7ac32e45cb | ||
|
|
8e21d5de92 | ||
|
|
f04644f749 | ||
|
|
7ab65595cb | ||
|
|
2cabcf4ad4 | ||
|
|
20d36f16d3 | ||
|
|
dc58edd521 | ||
|
|
e6d4ac5ee2 | ||
|
|
0ca103686f | ||
|
|
cfe3fc301c | ||
|
|
cbe97ac1a1 | ||
|
|
3cecc1f475 | ||
|
|
9f0c31611c | ||
|
|
d70be18c42 | ||
|
|
1be3fe6633 | ||
|
|
7b17d20099 | ||
|
|
ab1db7ebee | ||
|
|
723d689679 | ||
|
|
cd6a9ee522 | ||
|
|
a5e0555e83 | ||
|
|
1499ade89c | ||
|
|
0310d3bd8c | ||
|
|
02375982df | ||
|
|
5435f60f31 | ||
|
|
b72ed1fa8c | ||
|
|
3a7719015d | ||
|
|
0ee03cbf98 | ||
|
|
67339caa33 | ||
|
|
d77c20b09a | ||
|
|
d910aa15fe | ||
|
|
5d20750aaa | ||
|
|
c4e322d3ad | ||
|
|
222a07e907 | ||
|
|
9d2092bf9f | ||
|
|
4d49c902ac | ||
|
|
65ed22d5a6 | ||
|
|
09f9d71bb2 | ||
|
|
059e11078c | ||
|
|
8829bb1364 | ||
|
|
e30db95baa | ||
|
|
970d895aca | ||
|
|
c9b3220160 | ||
|
|
10575d895d | ||
|
|
67f3c01396 | ||
|
|
536d6cebd9 | ||
|
|
7a97095583 | ||
|
|
f37dafdf52 | ||
|
|
c84137aec8 | ||
|
|
f1dc1cd92b | ||
|
|
41f2344cea | ||
|
|
a965a71079 | ||
|
|
913624cbfa | ||
|
|
220fd418a7 | ||
|
|
5dda908c1f | ||
|
|
b7f45c3783 | ||
|
|
3a6e239437 | ||
|
|
fcbeddc3eb | ||
|
|
7ef40f4e53 | ||
|
|
2fafb13eaa | ||
|
|
90ee810c73 | ||
|
|
1357f5a364 | ||
|
|
9f21e3792a | ||
|
|
0b385f145c | ||
|
|
32a585a52b | ||
|
|
410d92ed61 | ||
|
|
53e865b654 | ||
|
|
57f289850c | ||
|
|
63a851cfd6 | ||
|
|
24d6f6d066 | ||
|
|
db1ec847f9 | ||
|
|
aee9d2c9d7 | ||
|
|
22e0702e8d | ||
|
|
29c38d73a2 | ||
|
|
8d11bb9f86 | ||
|
|
8d6735cb41 | ||
|
|
3d74b160b3 | ||
|
|
2768d2ea06 | ||
|
|
bb11999bf7 | ||
|
|
5bf1b0e5f5 | ||
|
|
3d19b549c8 | ||
|
|
bfb5fec330 | ||
|
|
0d257fd651 | ||
|
|
ebde55f704 | ||
|
|
f23464001f | ||
|
|
0882e0cb95 | ||
|
|
763c620d0b | ||
|
|
2871096f9c | ||
|
|
a918397da2 | ||
|
|
8e88b29eeb | ||
|
|
aaaea44714 | ||
|
|
ffe5736abb | ||
|
|
d79a5a3152 | ||
|
|
ffcfe73299 | ||
|
|
2885c085d8 | ||
|
|
7af9e1f5c5 | ||
|
|
980fb59232 | ||
|
|
9ad3488b5d | ||
|
|
8f420b9272 | ||
|
|
d55b226f19 | ||
|
|
95635a5982 | ||
|
|
91962d8aa2 | ||
|
|
d1208386d2 | ||
|
|
d7a4838a54 | ||
|
|
6d6f67ee67 | ||
|
|
987f7cafd3 | ||
|
|
b883e59ee9 | ||
|
|
79fa4d5c4a | ||
|
|
23de5908cf | ||
|
|
0d5ef3f43e | ||
|
|
2a8309458d | ||
|
|
2418daebf3 | ||
|
|
53c506f109 | ||
|
|
7d1f45e25f | ||
|
|
1bad956633 | ||
|
|
2f51088bfb | ||
|
|
0a40dcdb44 | ||
|
|
6b92fdd18d | ||
|
|
b9848538e3 | ||
|
|
475439fa0b | ||
|
|
8fba36b242 | ||
|
|
8b44358c53 | ||
|
|
dac8483f7e | ||
|
|
46f4819ffa | ||
|
|
c238ad35bd | ||
|
|
309e10e7a2 | ||
|
|
dc470bcad3 | ||
|
|
49d9883b3e | ||
|
|
2606cfe72d | ||
|
|
85e701f422 | ||
|
|
5accc7c6c5 | ||
|
|
60317190bd | ||
|
|
6594c061be | ||
|
|
432c0058a9 | ||
|
|
7c24369454 | ||
|
|
46be5ac468 | ||
|
|
30ea7cc3f8 | ||
|
|
573b3797a5 | ||
|
|
a0b3b8ac4c | ||
|
|
4d63ebde15 | ||
|
|
9cee3f13a1 | ||
|
|
8dc74de92e | ||
|
|
21fc2decd7 | ||
|
|
9192bf1db5 | ||
|
|
7c2c516353 | ||
|
|
db18449f4c | ||
|
|
44757c81af | ||
|
|
d0aa461587 | ||
|
|
504b32f61b | ||
|
|
6a5d89669e | ||
|
|
e39628bbe9 | ||
|
|
f5dcb6a0cb | ||
|
|
14187f9e3f | ||
|
|
9225b16d12 | ||
|
|
00e32a0909 | ||
|
|
73f2992a2e | ||
|
|
d55113b5b5 | ||
|
|
51468b7646 | ||
|
|
ff1d651415 | ||
|
|
149e601743 | ||
|
|
a998921f39 | ||
|
|
3daccf3c22 | ||
|
|
c63c88262b | ||
|
|
fbe2cdc3c7 | ||
|
|
b60ef72c3d | ||
|
|
d2e79cf6f6 | ||
|
|
a38d5504ac | ||
|
|
76d24aa1bc | ||
|
|
a7605d584b | ||
|
|
4244a6e6fe | ||
|
|
b055b8440c | ||
|
|
14d7b1a0fa | ||
|
|
3626c39398 | ||
|
|
0d1d324e9f | ||
|
|
100eef4e42 | ||
|
|
59c8800c4d | ||
|
|
1d101ef3d0 | ||
|
|
ac47100a7d | ||
|
|
01e5ca5c96 | ||
|
|
28228627fc | ||
|
|
1c6f6df2b3 | ||
|
|
bc6cc4c105 | ||
|
|
4481692037 | ||
|
|
1cdf386822 | ||
|
|
d4b5620bb3 | ||
|
|
4246cfa95c | ||
|
|
22cc0515c9 | ||
|
|
79f342b954 | ||
|
|
527e5f52ba | ||
|
|
42068931c7 | ||
|
|
e1a706bd77 | ||
|
|
d97c22df2d | ||
|
|
3ad5c7c289 | ||
|
|
fc44cffac5 | ||
|
|
5c8763be0e | ||
|
|
ee44879d4d | ||
|
|
c14bac4284 | ||
|
|
0aa7fd95b8 | ||
|
|
fa53563733 | ||
|
|
835176ef32 | ||
|
|
ed086fb1c8 | ||
|
|
c76d866317 | ||
|
|
9d742a4fa1 | ||
|
|
dc8d31a12a | ||
|
|
8d6b88eb5d | ||
|
|
80250c0729 | ||
|
|
ca912f157e | ||
|
|
716706bd9f | ||
|
|
61a614b612 | ||
|
|
3d6f995a9c | ||
|
|
ea945cc437 | ||
|
|
13d7432368 | ||
|
|
ed8d1040ba | ||
|
|
4f619c966b | ||
|
|
483b798863 | ||
|
|
b19bfc0dd3 | ||
|
|
8b2cf81f17 | ||
|
|
da17420cdf | ||
|
|
08c29727e0 | ||
|
|
45c6ac0208 | ||
|
|
7378871768 | ||
|
|
d3f155d895 | ||
|
|
075811e588 | ||
|
|
aa8840b423 | ||
|
|
58d7c4b388 | ||
|
|
a897ef0025 | ||
|
|
fb1443a885 | ||
|
|
fde26d4049 | ||
|
|
b32bf22616 | ||
|
|
b064da8d38 | ||
|
|
ba5a55b754 | ||
|
|
bd2b107d37 | ||
|
|
4c84224d06 | ||
|
|
74d3aa582b | ||
|
|
85b136314b | ||
|
|
8fc6011741 | ||
|
|
5092904ea3 | ||
|
|
3e24ae80b3 | ||
|
|
ffad7b0b29 | ||
|
|
d93bbfd486 | ||
|
|
32c241f51b | ||
|
|
690ceeeaa7 | ||
|
|
ea02da35d4 | ||
|
|
cea65599e6 | ||
|
|
6c329e8a83 | ||
|
|
5fa8370c13 | ||
|
|
96a28df018 | ||
|
|
e08039a2bd | ||
|
|
108d66211f | ||
|
|
87d5fa054d | ||
|
|
ac68c0c878 | ||
|
|
bc35ca6366 | ||
|
|
df10b53c0c | ||
|
|
c2f9d60eb1 | ||
|
|
c4c7983497 | ||
|
|
1f06e5f0b9 | ||
|
|
daa217f533 | ||
|
|
e67505bead | ||
|
|
7ebafa53f6 | ||
|
|
e6ad48ea1b | ||
|
|
ba5a22e2ce | ||
|
|
f5241da836 | ||
|
|
8ab980b793 | ||
|
|
dcef1a5593 | ||
|
|
5df8fab463 | ||
|
|
b8817215dc | ||
|
|
f28a1c58f3 | ||
|
|
2f8d0e9aba | ||
|
|
bd4622a0d0 | ||
|
|
9aeed0dc06 | ||
|
|
c93e38380a | ||
|
|
a10a79c6d0 | ||
|
|
61c0ca9dd9 | ||
|
|
ba1008b750 | ||
|
|
8558561650 | ||
|
|
f034d8ba3a | ||
|
|
8eb342ad3c | ||
|
|
21e927d24e | ||
|
|
5f849d0264 | ||
|
|
671c0515d4 | ||
|
|
b5b8d9010e | ||
|
|
ea3d9c36a5 | ||
|
|
706bfa70c1 | ||
|
|
8e103c231e | ||
|
|
9569f51e83 | ||
|
|
6431c0de16 | ||
|
|
85799ee86e | ||
|
|
0993141334 | ||
|
|
46840ae375 | ||
|
|
59f0261dba | ||
|
|
7ad6a90ea2 |
@@ -6,3 +6,5 @@
|
|||||||
BasedOnStyle: Google
|
BasedOnStyle: Google
|
||||||
ColumnLimit: 100
|
ColumnLimit: 100
|
||||||
IndentWidth: 4
|
IndentWidth: 4
|
||||||
|
# We don't want OCLint pragmas to be reformatted.
|
||||||
|
CommentPragmas: '^!OCLINT'
|
||||||
|
|||||||
35
.cppcheck.rules
Normal file
35
.cppcheck.rules
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<![CDATA[
|
||||||
|
<!-- Sadly we can't enable the following two rules since doing so causes false
|
||||||
|
positives in standard header files rather than just project specific
|
||||||
|
source files. If we can find a way to enable these rules by also
|
||||||
|
excluding system include files we should do so.
|
||||||
|
<rule version="1">
|
||||||
|
<pattern> wcwidth \(</pattern>
|
||||||
|
<message>
|
||||||
|
<id>wcwidthForbidden</id>
|
||||||
|
<severity>warning</severity>
|
||||||
|
<summary>Always use fish_wcwidth rather than wcwidth.</summary>
|
||||||
|
</message>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule version="1">
|
||||||
|
<pattern> wcswidth \(</pattern>
|
||||||
|
<message>
|
||||||
|
<id>wcswidthForbidden</id>
|
||||||
|
<severity>warning</severity>
|
||||||
|
<summary>Always use fish_wcswidth rather than wcswidth.</summary>
|
||||||
|
</message>
|
||||||
|
</rule>
|
||||||
|
<--!>
|
||||||
|
]]>
|
||||||
|
|
||||||
|
<rule>
|
||||||
|
<pattern>flock \(</pattern>
|
||||||
|
<message>
|
||||||
|
<id>flockSemanticsWarning</id>
|
||||||
|
<severity>warning</severity>
|
||||||
|
<summary>flock has a fallback implemented in terms of fcntl; ensure that the fcntl semantics will apply (see http://0pointer.de/blog/projects/locking.html)</summary>
|
||||||
|
</message>
|
||||||
|
</rule>
|
||||||
14
.cppcheck.suppressions
Normal file
14
.cppcheck.suppressions
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// suppress all instances of varFuncNullUB: "Passing NULL after the last typed
|
||||||
|
// argument to a variadic function leads to undefined behaviour." That's
|
||||||
|
// because all the places we do this are valid and won't cause problems even
|
||||||
|
// on a ILP64 platform because we're careful about using NULL rather than 0.
|
||||||
|
varFuncNullUB
|
||||||
|
// Suppress the warning about unmatched suppressions. At the moment these
|
||||||
|
// warnings are emitted even when removing the suppression comment results in
|
||||||
|
// the warning being suppressed. In other words this unmatchedSuppression
|
||||||
|
// warnings are false positives.
|
||||||
|
unmatchedSuppression
|
||||||
|
|
||||||
|
memleak:src/env_universal_common.cpp
|
||||||
|
flockSemanticsWarning:src/env_universal_common.cpp
|
||||||
|
flockSemanticsWarning:src/history.cpp
|
||||||
21
.editorconfig
Normal file
21
.editorconfig
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_size = 4
|
||||||
|
indent_style = space
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[{Makefile,*.in}]
|
||||||
|
indent_style = tab
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
[*.{sh,ac}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[Dockerfile]
|
||||||
|
indent_size = 2
|
||||||
29
.gitattributes
vendored
29
.gitattributes
vendored
@@ -1,25 +1,42 @@
|
|||||||
|
# normalize newlines
|
||||||
|
* text=auto
|
||||||
|
*.fish text
|
||||||
|
*.bat eol=crlf
|
||||||
|
|
||||||
|
# let git show off diff hunk headers, help git diff -L:
|
||||||
|
# https://git-scm.com/docs/gitattributes
|
||||||
|
*.cpp diff=cpp
|
||||||
|
*.py diff=py
|
||||||
|
# add a [diff "fish"] to git config with pattern
|
||||||
|
*.fish diff=fish
|
||||||
|
|
||||||
|
# omit from git archive
|
||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
.gitignore export-ignore
|
.gitignore export-ignore
|
||||||
.travis.yml export-ignore
|
.travis.yml export-ignore
|
||||||
fish.spec.in export-ignore
|
fish.spec.in export-ignore
|
||||||
/build_tools/make_svn_completions.fish 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_hg_completions.fish export-ignore
|
||||||
/build_tools/make_vcs_completions.fish export-ignore
|
/build_tools/make_vcs_completions.fish export-ignore
|
||||||
/build_tools/make_vcs_completions_generic.fish export-ignore
|
/build_tools/make_vcs_completions_generic.fish export-ignore
|
||||||
/build_tools/osx_package_resources export-ignore
|
/build_tools/osx_package_resources export-ignore
|
||||||
/build_tools/osx_package_resources/terminal_logo.png export-ignore
|
/build_tools/osx_package_resources/* export-ignore
|
||||||
/build_tools/osx_package_resources/welcome.rtf export-ignore
|
|
||||||
/build_tools/make_csv_completions.fish export-ignore
|
/build_tools/make_csv_completions.fish export-ignore
|
||||||
/build_tools/osx_distribution.xml export-ignore
|
/build_tools/osx_distribution.xml export-ignore
|
||||||
/build_tools/make_tarball.sh 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 export-ignore
|
||||||
/build_tools/osx_package_scripts/add-shell export-ignore
|
/build_tools/osx_package_scripts/* export-ignore
|
||||||
/build_tools/osx_package_scripts/postinstall export-ignore
|
|
||||||
/build_tools/make_pkg.sh export-ignore
|
/build_tools/make_pkg.sh export-ignore
|
||||||
/build_tools/make_darcs_completions.fish export-ignore
|
/build_tools/make_darcs_completions.fish export-ignore
|
||||||
/debian export-ignore
|
/debian export-ignore
|
||||||
/debian/* export-ignore
|
/debian/* export-ignore
|
||||||
/.github export-ignore
|
/.github export-ignore
|
||||||
/.github/* export-ignore
|
/.github/* export-ignore
|
||||||
|
|
||||||
|
# for linguist; let github identify our project as C++ instead of C due to pcre2
|
||||||
|
/pcre2-10.21/ linguist-vendored
|
||||||
|
/pcre2-10.21/* linguist-vendored
|
||||||
|
angular.js linguist-vendored
|
||||||
|
/doc_src/* linguist-documentation
|
||||||
|
*.fish linguist-language=fish
|
||||||
|
tests/*.in linguist-language=fish
|
||||||
49
.github/ISSUE_TEMPLATE.md
vendored
49
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,40 +1,21 @@
|
|||||||
<!--
|
<!-- check if this problem is already solved! github.com/issues?q=is:issue+user:fish-shell -->
|
||||||
Thanks for helping to make fish better!
|
- [ ] Have you checked if problem occurs with [fish 2.4.0](/fish-shell/fish-shell/releases/tag/2.4.0)?
|
||||||
|
- [ ] Tried fish without third-party customizations *(check `sh -c 'env HOME=$(mktemp -d) fish'`)*?
|
||||||
|
|
||||||
If you are asking for help with fish, or you've found a bug:
|
**fish version installed** *(`fish --version`)*:
|
||||||
- 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:
|
|
||||||
|
|
||||||
-->
|
**OS/terminal used**:
|
||||||
|
|
||||||
[Please include a short description of the problem here]
|
Talk about the the issue here.
|
||||||
|
|
||||||
### Reproduction Steps:
|
## Reproduction steps
|
||||||
|
1. step one
|
||||||
|
2. …
|
||||||
|
|
||||||
1. [First Step]
|
<!-- Hard to explain? Post a screen recording on asciinema.org then link it here -->
|
||||||
2. [Second Step]
|
|
||||||
3. [Other Steps...]
|
|
||||||
|
|
||||||
### Expected behavior:
|
## Results
|
||||||
|
```console
|
||||||
[Describe expected behavior here]
|
~ $ math 2 + 2
|
||||||
|
5
|
||||||
### 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]
|
|
||||||
|
|||||||
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
## Description
|
||||||
|
|
||||||
|
Talk about your changes here.
|
||||||
|
|
||||||
|
Fixes issue #
|
||||||
|
|
||||||
|
## TODOs:
|
||||||
|
<!-- Just check off what what we know been done so far. We can help you with this stuff. -->
|
||||||
|
- [ ] Changes to fish usage are reflected in user documenation/manpages.
|
||||||
|
- [ ] Tests have been added for regressions fixed
|
||||||
126
.gitignore
vendored
126
.gitignore
vendored
@@ -1,43 +1,99 @@
|
|||||||
*.o
|
# Note that some of the patterns below should be in an individual's
|
||||||
*~
|
# ~/.config/git/ignore file. For example, ".DS_Store" from people working on
|
||||||
*.exe
|
# MacOS.
|
||||||
*.xccheckout
|
|
||||||
|
|
||||||
.DS_Store
|
# File extensions that should never be checked in regardless of which project
|
||||||
|
# directory they reside in.
|
||||||
|
*.exe
|
||||||
|
*.app
|
||||||
|
*.out
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
*.dll
|
||||||
|
*.lai
|
||||||
|
*.la
|
||||||
|
*.a
|
||||||
|
*.lib
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.lo
|
||||||
|
*.slo
|
||||||
|
*.d
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
*.xccheckout
|
||||||
|
*~
|
||||||
|
*~HEAD
|
||||||
|
*bak
|
||||||
|
*.new
|
||||||
|
*.orig
|
||||||
|
*.log
|
||||||
|
.Trash-*
|
||||||
|
*.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
._*
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
|
||||||
|
# These file names can appear anywhere in the hierarchy. They tend to be OS
|
||||||
|
# or build system artifacts.
|
||||||
|
autom4te.cache
|
||||||
|
aclocal.m4
|
||||||
Makefile
|
Makefile
|
||||||
autom4te.cache/
|
|
||||||
build/
|
|
||||||
command_list.txt
|
|
||||||
command_list_toc.txt
|
|
||||||
confdefs.h
|
|
||||||
config.h
|
config.h
|
||||||
|
config.cache
|
||||||
config.h.in
|
config.h.in
|
||||||
config.log
|
|
||||||
config.status
|
config.status
|
||||||
configure
|
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
|
messages.pot
|
||||||
lexicon.txt
|
.directory
|
||||||
lexicon_filter
|
.fuse_hidden*
|
||||||
lexicon.log
|
|
||||||
|
|
||||||
|
# Directories that only contain transitory files from building and testing.
|
||||||
|
/doc/
|
||||||
|
/obj/
|
||||||
|
/share/man/
|
||||||
|
/share/doc/
|
||||||
|
/test/
|
||||||
|
/user_doc/
|
||||||
|
|
||||||
|
# File names that can appear in the project root that represent artifacts from
|
||||||
|
# building and testing.
|
||||||
|
/FISH-BUILD-VERSION-FILE
|
||||||
|
/command_list.txt
|
||||||
|
/command_list_toc.txt
|
||||||
|
/compile_commands.json
|
||||||
|
/confdefs.h
|
||||||
|
/doc.h
|
||||||
|
/fish
|
||||||
|
/fish.pc
|
||||||
|
/fish_indent
|
||||||
|
/fish_key_reader
|
||||||
|
/fish_tests
|
||||||
|
/lexicon.txt
|
||||||
|
/lexicon_filter
|
||||||
|
/toc.txt
|
||||||
|
/version
|
||||||
|
|
||||||
|
# File names that can appear below the project root that represent artifacts
|
||||||
|
# from building and testing.
|
||||||
|
/doc_src/commands.hdr
|
||||||
|
/doc_src/index.hdr
|
||||||
|
/po/*.gmo
|
||||||
|
/share/__fish_build_paths.fish
|
||||||
|
/tests/*.tmp.*
|
||||||
|
/share/pkgconfig
|
||||||
|
|
||||||
|
# xcode
|
||||||
|
## Build generated
|
||||||
|
build/
|
||||||
DerivedData/
|
DerivedData/
|
||||||
compile_commands.json
|
xcuserdata/
|
||||||
xcodebuild.log
|
*.moved-aside
|
||||||
|
*.xccheckout
|
||||||
|
*.xcscmblueprin
|
||||||
|
|
||||||
|
|||||||
63
.oclint
63
.oclint
@@ -1,8 +1,67 @@
|
|||||||
rules:
|
rules:
|
||||||
rule-configurations:
|
rule-configurations:
|
||||||
|
#
|
||||||
# This is the default value (as of the time I wrote this) but I'm making
|
# 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.
|
# 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
|
# Thus, if we ever change the fish style to allow longer or shorter lines
|
||||||
# be changed (as well as the corresponding clang-format config).
|
# this should be changed (as well as the corresponding .clang-format file).
|
||||||
|
#
|
||||||
- key: LONG_LINE
|
- key: LONG_LINE
|
||||||
value: 100
|
value: 100
|
||||||
|
#
|
||||||
|
# The default limit for the length of variable names is 20. Long names are
|
||||||
|
# problematic but twenty chars results in way too many errors. So increase
|
||||||
|
# the limit to something more reasonable.
|
||||||
|
#
|
||||||
|
- key: LONG_VARIABLE_NAME
|
||||||
|
value: 30
|
||||||
|
#
|
||||||
|
# This allows us to avoid peppering our code with inline comments such as
|
||||||
|
#
|
||||||
|
# scoped_lock locker(m_lock); //!OCLINT(side-effect)
|
||||||
|
#
|
||||||
|
# Specifically, this config key tells oclint that the named classes have
|
||||||
|
# RAII behavior so the local vars are actually used.
|
||||||
|
#
|
||||||
|
- key: RAII_CUSTOM_CLASSES
|
||||||
|
value: scoped_lock scoped_buffer_t builtin_commandline_scoped_transient_t scoped_push
|
||||||
|
|
||||||
|
disable-rules:
|
||||||
|
#
|
||||||
|
# A few instances of "useless parentheses" errors are meaningful. Mostly
|
||||||
|
# in the context of the `return` statement. Unfortunately the vast
|
||||||
|
# majority would result in removing parentheses that decreases
|
||||||
|
# readability. So we're going to ignore this warning and rely on humans to
|
||||||
|
# notice when the parentheses are truly not needed.
|
||||||
|
#
|
||||||
|
# Also, some macro expansions, such as FD_SET(), trigger this warning and
|
||||||
|
# we don't want to suppress each of those individually.
|
||||||
|
#
|
||||||
|
- UselessParentheses
|
||||||
|
#
|
||||||
|
# OCLint wants variable names to be at least three characters in length.
|
||||||
|
# Which would be fine if it supported a reasonable set of exceptions
|
||||||
|
# (e.g., "i", "j", "k") and allowed adding additional exceptions to match
|
||||||
|
# conventions employed by a project. Since it doesn't, and thus generates
|
||||||
|
# a lot of really annoying warnings, we're going to disable this rule.
|
||||||
|
#
|
||||||
|
- ShortVariableName
|
||||||
|
#
|
||||||
|
# This rule flags perfectly reasonable conditions like `if (!some_condition)`
|
||||||
|
# and is therefore just noise. Disable this rule.
|
||||||
|
#
|
||||||
|
- InvertedLogic
|
||||||
|
#
|
||||||
|
# The idea behind the "double negative" rule is sound since constructs
|
||||||
|
# like "!!(var & flag)" should be written as "static_cast<bool>(var &
|
||||||
|
# flag)". Unfortunately this rule has way too many false positives;
|
||||||
|
# especially in the context of assert statements. So disable this rule.
|
||||||
|
#
|
||||||
|
- DoubleNegative
|
||||||
|
#
|
||||||
|
# Avoiding bitwise operators in a conditional is a good idea with one
|
||||||
|
# exception: testing whether a bit flag is set. Which happens to be the
|
||||||
|
# only time you'll see something like `if (j->flags & JOB_CONSTRUCTED)`
|
||||||
|
# in fish source.
|
||||||
|
#
|
||||||
|
- BitwiseOperatorInConditional
|
||||||
|
|||||||
33
.travis.yml
33
.travis.yml
@@ -1,5 +1,6 @@
|
|||||||
language: cpp
|
language: cpp
|
||||||
sudo: false
|
dist: trusty
|
||||||
|
sudo: required
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@@ -12,9 +13,23 @@ matrix:
|
|||||||
- expect
|
- expect
|
||||||
- gettext
|
- gettext
|
||||||
- libncurses5-dev
|
- libncurses5-dev
|
||||||
|
- os: linux
|
||||||
|
compiler: gcc
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- bc
|
||||||
|
- expect
|
||||||
|
- gettext
|
||||||
|
- lib32ncurses5-dev
|
||||||
|
- g++-multilib
|
||||||
|
env:
|
||||||
|
- CXXFLAGS="-g -m32" CFLAGS="-g -m32"
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
|
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
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
sources:
|
sources:
|
||||||
@@ -27,16 +42,14 @@ matrix:
|
|||||||
- expect
|
- expect
|
||||||
- gettext
|
- gettext
|
||||||
- libncurses5-dev
|
- 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
|
- os: osx
|
||||||
|
osx_image: xcode8
|
||||||
before_install:
|
before_install:
|
||||||
- brew update
|
- brew update
|
||||||
- brew install pcre2 # use system PCRE2
|
- brew install pcre2 # use system PCRE2
|
||||||
|
- brew outdated xctool || brew upgrade xctool # for xcode... soon.
|
||||||
|
env:
|
||||||
|
- CXXFLAGS="-g -lstdc++"
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
|
|
||||||
script:
|
script:
|
||||||
@@ -59,5 +72,5 @@ notifications:
|
|||||||
skip_join: true
|
skip_join: true
|
||||||
webhooks:
|
webhooks:
|
||||||
urls:
|
urls:
|
||||||
#- https://webhooks.gitter.im/e/61821cec3015bf0f8bb1
|
#- https://webhooks.gitter.im/e/61821cec3015bf0f8bb1
|
||||||
secure: fPfOmxnC3MCsfR1oocVFeWLawGcRZkn+8fNHlSOeZ+SqqoZfcCHgQTvQ22TqmVl1yvkXbNlaXjo6dbVzTOAh7r7H0bRMEKBVh3dQS7wqjB1sKivpXd8PAS3BTj5MQpGeJzdHnDuwVlwDktGtfHfhGeq1Go/4IosOq8u+6RTe28g=
|
secure: fPfOmxnC3MCsfR1oocVFeWLawGcRZkn+8fNHlSOeZ+SqqoZfcCHgQTvQ22TqmVl1yvkXbNlaXjo6dbVzTOAh7r7H0bRMEKBVh3dQS7wqjB1sKivpXd8PAS3BTj5MQpGeJzdHnDuwVlwDktGtfHfhGeq1Go/4IosOq8u+6RTe28g=
|
||||||
|
|||||||
174
CHANGELOG.md
174
CHANGELOG.md
@@ -1,3 +1,177 @@
|
|||||||
|
# fish 2.5.0 (released February 3, 2017)
|
||||||
|
|
||||||
|
There are no major changes between 2.5b1 and 2.5.0. If you are upgrading from version 2.4.0 or before, please also review the release notes for 2.5b1 (included below).
|
||||||
|
|
||||||
|
## Notable fixes and improvements
|
||||||
|
|
||||||
|
- The Home, End, Insert, Delete, Page Up and Page Down keys work in Vi-style key bindings (#3731).
|
||||||
|
|
||||||
|
# fish 2.5b1 (released January 14, 2017)
|
||||||
|
|
||||||
|
## Platform Changes
|
||||||
|
|
||||||
|
Starting with version 2.5, fish requires a more up-to-date version of C++, specifically C++11 (from 2011). This affects some older platforms:
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
For users building from source, GCC's g++ 4.8 or later, or LLVM's clang 3.3 or later, are known to work. Older platforms may require a newer compiler installed.
|
||||||
|
|
||||||
|
Unfortunately, because of the complexity of the toolchain, binary packages are no longer published by the fish-shell developers for the following platforms:
|
||||||
|
|
||||||
|
- Red Hat Enterprise Linux and CentOS 5 & 6 for 64-bit builds
|
||||||
|
- Ubuntu 12.04 (EoLTS April 2017)
|
||||||
|
- Debian 7 (EoLTS May 2018)
|
||||||
|
|
||||||
|
Installing newer version of fish on these systems will require building from source.
|
||||||
|
|
||||||
|
### OS X SnowLeopard
|
||||||
|
|
||||||
|
Starting with version 2.5, fish requires a C++11 standard library on OS X 10.6 ("SnowLeopard"). If this library is not installed, you will see this error: `dyld: Library not loaded: /usr/lib/libc++.1.dylib`
|
||||||
|
|
||||||
|
MacPorts is the easiest way to obtain this library. After installing the SnowLeopard MacPorts release from the install page, run:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo port -v install libcxx
|
||||||
|
```
|
||||||
|
|
||||||
|
Now fish should launch successfully. (Please open an issue if it does not.)
|
||||||
|
|
||||||
|
This is only necessary on 10.6. OS X 10.7 and later include the required library by default.
|
||||||
|
|
||||||
|
## Other significant changes
|
||||||
|
|
||||||
|
- Attempting to exit with running processes in the background produces a warning, then signals them to terminate if a second attempt to exit is made. This brings the behaviour for running background processes into line with stopped processes. (#3497)
|
||||||
|
- `random` can now have start, stop and step values specified, or the new `choice` subcommand can be used to pick an argument from a list (#3619).
|
||||||
|
- A new key bindings preset, `fish_hybrid_key_bindings`, including all the Emacs-style and Vi-style bindings, which behaves like `fish_vi_key_bindings` in fish 2.3.0 (#3556).
|
||||||
|
- `function` now returns an error when called with invalid options, rather than defining the function anyway (#3574). This was a regression present in fish 2.3 and 2.4.0.
|
||||||
|
- fish no longer prints a warning when it identifies a running instance of an old version (2.1.0 and earlier). Changes to universal variables may not propagate between these old versions and 2.5b1.
|
||||||
|
- Improved compatiblity with Android (#3585), MSYS/mingw (#2360), Solaris (#3456, #3340)
|
||||||
|
- Like other shells, the `test` builting now returns an error for numeric operations on invalid integers (#3346, #3581).
|
||||||
|
- `complete` no longer recognises `--authoritative` and `--unauthoritative` options, and they are marked as obsolete.
|
||||||
|
- `status` accepts subcommands, and should be used like `status is-interactive`. The old options continue to be supported for the foreseeable future (#3526), although only one subcommand or option can be specified at a time.
|
||||||
|
- Selection mode (used with "begin-selection") no longer selects a character the cursor does not move over (#3684).
|
||||||
|
- List indexes are handled better, and a bit more liberally in some cases (`echo $PATH[1 .. 3]` is now valid) (#3579).
|
||||||
|
- The `fish_mode_prompt` function is now simply a stub around `fish_default_mode_prompt`, which allows the mode prompt to be included more easily in customised prompt functions (#3641).
|
||||||
|
|
||||||
|
## Notable fixes and improvements
|
||||||
|
- `alias`, run without options or arguments, lists all defined aliases, and aliases now include a description in the function signature that identifies them.
|
||||||
|
- `complete` accepts empty strings as descriptions (#3557).
|
||||||
|
- `command` accepts `-q`/`--quiet` in combination with `--search` (#3591), providing a simple way of checking whether a command exists in scripts.
|
||||||
|
- Abbreviations can now be renamed with `abbr --rename OLD_KEY NEW_KEY` (#3610).
|
||||||
|
- The command synopses printed by `--help` options work better with copying and pasting (#2673).
|
||||||
|
- `help` launches the browser specified by the `$fish_help_browser variable` if it is set (#3131).
|
||||||
|
- History merging could lose items under certain circumstances and is now fixed (#3496).
|
||||||
|
- The `$status` variable is now set to 123 when a syntactically invalid command is entered (#3616).
|
||||||
|
- Exiting fish now signals all background processes to terminate, not just stopped jobs (#3497).
|
||||||
|
- A new `prompt_hostname` function which prints a hostname suitable for use in prompts (#3482).
|
||||||
|
- The `__fish_man_page` function (bound to Alt-h by default) now tries to recognize subcommands (e.g. `git add` will now open the "git-add" man page) (#3678).
|
||||||
|
- A new function `edit_command_buffer` (bound to Alt-e & Alt-v by default) to edit the command buffer in an external editor (#1215, #3627).
|
||||||
|
- `set_color` now supports italics (`--italics`), dim (`--dim`) and reverse (`--reverse`) modes (#3650).
|
||||||
|
- Filesystems with very slow locking (eg incorrectly-configured NFS) will no longer slow fish down (#685).
|
||||||
|
- Improved completions for `apt` (#3695), `fusermount` (#3642), `make` (#3628), `netctl-auto` (#3378), `nmcli` (#3648), `pygmentize` (#3378), and `tar` (#3719).
|
||||||
|
- Added completions for:
|
||||||
|
- `VBoxHeadless` (#3378)
|
||||||
|
- `VBoxSDL` (#3378)
|
||||||
|
- `base64` (#3378)
|
||||||
|
- `caffeinate` (#3524)
|
||||||
|
- `dconf` (#3638)
|
||||||
|
- `dig` (#3495)
|
||||||
|
- `dpkg-reconfigure` (#3521 & #3522)
|
||||||
|
- `feh` (#3378)
|
||||||
|
- `launchctl` (#3682)
|
||||||
|
- `lxc` (#3554 & #3564),
|
||||||
|
- `mddiagnose` (#3524)
|
||||||
|
- `mdfind` (#3524)
|
||||||
|
- `mdimport` (#3524)
|
||||||
|
- `mdls` (#3524)
|
||||||
|
- `mdutil` (#3524)
|
||||||
|
- `mkvextract` (#3492)
|
||||||
|
- `nvram` (#3524)
|
||||||
|
- `objdump` (#3378)
|
||||||
|
- `sysbench` (#3491)
|
||||||
|
- `tmutil` (#3524)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# fish 2.4.0 (released November 8, 2016)
|
||||||
|
|
||||||
|
There are no major changes between 2.4b1 and 2.4.0.
|
||||||
|
|
||||||
|
## Notable fixes and improvements
|
||||||
|
- The documentation is now generated properly and with the correct version identifier.
|
||||||
|
- Automatic cursor changes are now only enabled on the subset of XTerm versions known to support them, resolving a problem where older versions printed garbage to the terminal before and after every prompt (#3499).
|
||||||
|
- Improved the title set in Apple Terminal.app.
|
||||||
|
- Added completions for `defaults` and improved completions for `diskutil` (#3478).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# fish 2.4b1 (released October 18, 2016)
|
||||||
|
|
||||||
|
## Significant changes
|
||||||
|
- The clipboard integration has been revamped with explicit bindings. The killring commands no longer copy from, or paste to, the X11 clipboard - use the new copy (`C-x`) and paste (`C-v`) bindings instead. The clipboard is now available on OS X as well as systems using X11 (e.g. Linux). (#3061)
|
||||||
|
- `history` uses subcommands (`history delete`) rather than options (`history --delete`) for its actions (#3367). You can no longer specify multiple actions via flags (e.g., `history --delete --save something`).
|
||||||
|
- New `history` options have been added, including `--max=n` to limit the number of history entries, `--show-time` option to show timestamps (#3175, #3244), and `--null` to null terminate history entries in the search output.
|
||||||
|
- `history search` is now case-insensitive by default (which also affects `history delete`) (#3236).
|
||||||
|
- `history delete` now correctly handles multiline commands (#31).
|
||||||
|
- Vi-style bindings no longer include all of the default emacs-style bindings; instead, they share some definitions (#3068).
|
||||||
|
- If there is no locale set in the environment, various known system configuration files will be checked for a default. If no locale can be found, `en_US-UTF.8` will be used (#277).
|
||||||
|
- A number followed by a caret (e.g. `5^`) is no longer treated as a redirection (#1873).
|
||||||
|
- The `$version` special variable can be overwritten, so that it can be used for other purposes if required.
|
||||||
|
|
||||||
|
## Notable fixes and improvements
|
||||||
|
- The `fish_realpath` builtin has been renamed to `realpath` and made compatible with GNU `realpath` when run without arguments (#3400). It is used only for systems without a `realpath` or `grealpath` utility (#3374).
|
||||||
|
- Improved color handling on terminals/consoles with 8-16 colors, particularly the use of bright named color (#3176, #3260).
|
||||||
|
- `fish_indent` can now read from files given as arguments, rather than just standard input (#3037).
|
||||||
|
- Fuzzy tab completions behave in a less surprising manner (#3090, #3211).
|
||||||
|
- `jobs` should only print its header line once (#3127).
|
||||||
|
- Wildcards in redirections are highlighted appropriately (#2789).
|
||||||
|
- Suggestions will be offered more often, like after removing characters (#3069).
|
||||||
|
- `history --merge` now correctly interleaves items in chronological order (#2312).
|
||||||
|
- Options for `fish_indent` have been aligned with the other binaries - in particular, `-d` now means `--debug`. The `--dump` option has been renamed to `--dump-parse-tree` (#3191).
|
||||||
|
- The display of bindings in the Web-based configuration has been greatly improved (#3325), as has the rendering of prompts (#2924).
|
||||||
|
- fish should no longer hang using 100% CPU in the C locale (#3214).
|
||||||
|
- A bug in FreeBSD 11 & 12, Dragonfly BSD & illumos prevented fish from working correctly on these platforms under UTF-8 locales; fish now avoids the buggy behaviour (#3050).
|
||||||
|
- Prompts which show git repository information (via `__fish_git_prompt`) are faster in large repositories (#3294) and slow filesystems (#3083).
|
||||||
|
- fish 2.3.0 reintroduced a problem where the greeting was printed even when using `read`; this has been corrected again (#3261).
|
||||||
|
- Vi mode changes the cursor depending on the current mode (#3215).
|
||||||
|
- Command lines with escaped space characters at the end tab-complete correctly (#2447).
|
||||||
|
- Added completions for:
|
||||||
|
- `arcanist` (#3256)
|
||||||
|
- `connmanctl` (#3419)
|
||||||
|
- `figlet` (#3378)
|
||||||
|
- `mdbook` (#3378)
|
||||||
|
- `ninja` (#3415)
|
||||||
|
- `p4`, the Perforce client (#3314)
|
||||||
|
- `pygmentize` (#3378)
|
||||||
|
- `ranger` (#3378)
|
||||||
|
- Improved completions for `aura` (#3297), `abbr` (#3267), `brew` (#3309), `chown` (#3380, #3383),`cygport` (#3392), `git` (#3274, #3226, #3225, #3094, #3087, #3035, #3021, #2982, #3230), `kill` & `pkill` (#3200), `screen` (#3271), `wget` (#3470), and `xz` (#3378).
|
||||||
|
- Distributors, packagers and developers will notice that the build process produces more succinct output by default; use `make V=1` to get verbose output (#3248).
|
||||||
|
- Improved compatibility with minor platforms including musl (#2988), Cygwin (#2993), Android (#3441, #3442), Haiku (#3322) and Solaris .
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# fish 2.3.1 (released July 3, 2016)
|
||||||
|
|
||||||
|
This is a functionality and bugfix release. This release does not contain all the changes to fish since the last release, but fixes a number of issues directly affecting users at present and includes a small number of new features.
|
||||||
|
|
||||||
|
## Significant changes
|
||||||
|
- A new `fish_key_reader` binary for decoding interactive keypresses (#2991).
|
||||||
|
- `fish_mode_prompt` has been updated to reflect the changes in the way the Vi input mode is set up (#3067), making this more reliable.
|
||||||
|
- `fish_config` can now properly be launched from the OS X app bundle (#3140).
|
||||||
|
|
||||||
|
## Notable fixes and improvements
|
||||||
|
|
||||||
|
- Extra lines were sometimes inserted into the output under Windows (Cygwin and Microsoft Windows Subsystem for Linux) due to TTY timestamps not being updated (#2859).
|
||||||
|
- The `string` builtin's `match` mode now handles the combination of `-rnv` (match, invert and count) correctly (#3098).
|
||||||
|
- Improvements to TTY special character handling (#3064), locale handling (#3124) and terminal environment variable handling (#3060).
|
||||||
|
- Work towards handling the terminal modes for external commands launched from initialisation files (#2980).
|
||||||
|
- Ease the upgrade path from fish 2.2.0 and before by warning users to restart fish if the `string` builtin is not available (#3057).
|
||||||
|
- `type -a` now syntax-colorizes function source output.
|
||||||
|
- Added completions for `alsamixer`, `godoc`, `gofmt`, `goimports`, `gorename`, `lscpu`, `mkdir`, `modinfo`, `netctl-auto`, `poweroff`, `termite`, `udisksctl` and `xz` (#3123).
|
||||||
|
- Improved completions for `apt` (#3097), `aura` (#3102),`git` (#3114), `npm` (#3158), `string` and `suspend` (#3154).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# fish 2.3.0 (released May 20, 2016)
|
# fish 2.3.0 (released May 20, 2016)
|
||||||
|
|
||||||
There are no significant changes between 2.3.0 and 2.3b2.
|
There are no significant changes between 2.3.0 and 2.3b2.
|
||||||
|
|||||||
112
CONTRIBUTING.md
112
CONTRIBUTING.md
@@ -1,9 +1,27 @@
|
|||||||
|
|
||||||
# Guidelines For Developers
|
# 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.
|
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.
|
See the bottom of this document for help on installing the linting and style reformatting tools discussed in the following sections.
|
||||||
|
|
||||||
|
Fish source should limit the C++ features it uses to those available in C++03. That allows fish to use a few components from [C++TR1](https://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1) such as `shared_ptr`. It also allows fish to be built and run on OS X Snow Leopard (released in 2009); the oldest OS X release we still support.
|
||||||
|
|
||||||
|
## Include What You Use
|
||||||
|
|
||||||
|
You should not depend on symbols being visible to a `*.cpp` module from `#include` statements inside another header file. In other words if your module does `#include "common.h"` and that header does `#include "signal.h"` your module should pretend that sub-include is not present. It should instead directly `#include "signal.h"` if it needs any symbol from that header. That makes the actual dependencies much clearer. It also makes it easy to modify the headers included by a specific header file without having to worry that will break any module (or header) that includes a particular header.
|
||||||
|
|
||||||
|
To help enforce this rule the `make lint` (and `make lint-all`) command will run the [include-what-you-use](http://include-what-you-use.org/) tool. The IWYU you project is on [github](https://github.com/include-what-you-use/include-what-you-use).
|
||||||
|
|
||||||
|
To install the tool on OS X you'll need to add a [formula](https://github.com/jasonmp85/homebrew-iwyu) then install it:
|
||||||
|
|
||||||
|
```
|
||||||
|
brew tap jasonmp85/iwyu
|
||||||
|
brew install iwyu
|
||||||
|
```
|
||||||
|
|
||||||
|
On Ubuntu you can install it via `sudo apt-get install iwyu`.
|
||||||
|
|
||||||
## Lint Free Code
|
## 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.
|
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.
|
||||||
@@ -12,6 +30,8 @@ Ultimately we want lint free code. However, at the moment a lot of cleanup is re
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
Fish has custom cppcheck rules in the file `.cppcheck.rule`. These help catch mistakes such as using `wcwidth()` rather than `fish_wcwidth()`. Please add a new rule if you find similar mistakes being made.
|
||||||
|
|
||||||
### Dealing With Lint Warnings
|
### 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.
|
You are strongly encouraged to address a lint warning by refactoring the code, changing variable names, or whatever action is implied by the warning.
|
||||||
@@ -40,7 +60,9 @@ The following sections discuss the specific rules for the style that should be u
|
|||||||
make style
|
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.
|
before commiting your change. That will run `git-clang-format` to rewrite just the lines you're modifying.
|
||||||
|
|
||||||
|
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. However, in that case it will run `clang-format` to ensure the entire file, not just the lines modified by the commit, conform to the style.
|
||||||
|
|
||||||
If you want to check the style of the entire code base run
|
If you want to check the style of the entire code base run
|
||||||
|
|
||||||
@@ -48,7 +70,40 @@ If you want to check the style of the entire code base run
|
|||||||
make style-all
|
make style-all
|
||||||
```
|
```
|
||||||
|
|
||||||
### Suppressing Reformatting of the Code
|
That command will refuse to restyle any files if you have uncommitted changes.
|
||||||
|
|
||||||
|
### Configuring Your Editor for Fish C++ Code
|
||||||
|
|
||||||
|
#### ViM
|
||||||
|
|
||||||
|
As of ViM 7.4 it does not recognize triple-slash comments as used by Doxygen and the OS X Xcode IDE to flag comments that explain the following C symbol. This means the `gq` key binding to reformat such comments doesn't behave as expected. You can fix that by adding the following to your vimrc:
|
||||||
|
|
||||||
|
```
|
||||||
|
autocmd Filetype c,cpp setlocal comments^=:///
|
||||||
|
```
|
||||||
|
|
||||||
|
If you use ViM I recommend the [vim-clang-format plugin](https://github.com/rhysd/vim-clang-format) by [@rhysd](https://github.com/rhysd).
|
||||||
|
|
||||||
|
You can also get ViM to provide reasonably correct behavior by installing
|
||||||
|
|
||||||
|
http://www.vim.org/scripts/script.php?script_id=2636
|
||||||
|
|
||||||
|
#### Emacs
|
||||||
|
|
||||||
|
If you use Emacs: TBD
|
||||||
|
|
||||||
|
### Configuring Your Editor for Fish Scripts
|
||||||
|
|
||||||
|
If you use ViM: TBD
|
||||||
|
|
||||||
|
If you use Emacs: Install [fish-mode](https://github.com/wwwjfy/emacs-fish) (also available in melpa and melpa-stable) and `(setq-default indent-tabs-mode nil)` for it (via a hook or in `use-package`s ":init" block). It can also be made to run fish_indent via e.g.
|
||||||
|
|
||||||
|
```elisp
|
||||||
|
(add-hook 'fish-mode-hook (lambda ()
|
||||||
|
(add-hook 'before-save-hook 'fish_indent-before-save)))
|
||||||
|
```
|
||||||
|
|
||||||
|
### Suppressing Reformatting of C++ 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:
|
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:
|
||||||
|
|
||||||
@@ -60,11 +115,11 @@ code to ignore
|
|||||||
|
|
||||||
## Fish Script Style Guide
|
## Fish Script Style Guide
|
||||||
|
|
||||||
Fish scripts such as those in the *share/functions* and *tests* directories should be formatted using the `fish_indent` command.
|
1. 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.
|
1. 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.
|
1. 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
|
## C++ Style Guide
|
||||||
|
|
||||||
@@ -80,6 +135,8 @@ The first word of global variable names should generally be `fish` for public va
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
1. Comments that document the purpose of a function or class should begin with three slashes, `///`, so that OS X Xcode (and possibly other ideas) will extract the comment and show it in the "Quick Help" window when the cursor is on the symbol.
|
||||||
|
|
||||||
## Testing
|
## 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.
|
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.
|
||||||
@@ -110,6 +167,51 @@ You'll receive an email when the tests are complete telling you whether or not a
|
|||||||
|
|
||||||
You'll find the configuration used to control Travis in the `.travis.yml` file.
|
You'll find the configuration used to control Travis in the `.travis.yml` file.
|
||||||
|
|
||||||
|
### Git hooks
|
||||||
|
|
||||||
|
Since developers sometimes forget to run the tests, it can be helpful to use git hooks (see githooks(5)) to automate it.
|
||||||
|
|
||||||
|
One possibility is a pre-push hook script like this one:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
#!/bin/sh
|
||||||
|
#### A pre-push hook for the fish-shell project
|
||||||
|
# This will run the tests when a push to master is detected, and will stop that if the tests fail
|
||||||
|
# Save this as .git/hooks/pre-push and make it executable
|
||||||
|
|
||||||
|
protected_branch='master'
|
||||||
|
|
||||||
|
# Git gives us lines like "refs/heads/frombranch SOMESHA1 refs/heads/tobranch SOMESHA1"
|
||||||
|
# We're only interested in the branches
|
||||||
|
while read from _ to _; do
|
||||||
|
if [ "x$to" = "xrefs/heads/$protected_branch" ]; then
|
||||||
|
isprotected=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "x$isprotected" = x1 ]; then
|
||||||
|
echo "Running tests before push to master"
|
||||||
|
make test
|
||||||
|
RESULT=$?
|
||||||
|
if [ $RESULT -ne 0 ]; then
|
||||||
|
echo "Tests failed for a push to master, we can't let you do that" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
```
|
||||||
|
|
||||||
|
This will check if the push is to the master branch and, if it is, will run `make test` and only allow the push if that succeeds. In some circumstances it might be advisable to circumvent it with `git push --no-verify`, but usually that should not be necessary.
|
||||||
|
|
||||||
|
To install the hook, put it in .git/hooks/pre-push and make it executable.
|
||||||
|
|
||||||
|
### Coverity Scan
|
||||||
|
|
||||||
|
We use Coverity's static analysis tool which offers free access to open source projects. While access to the tool itself is
|
||||||
|
restricted, fish-shell organization members should know that they can login
|
||||||
|
[here with their GitHub account](https://scan.coverity.com/projects/fish-shell-fish-shell?tab=overview).
|
||||||
|
Currently, tests are triggered upon merging the `master` branch into `coverity_scan_master`.
|
||||||
|
Even if you are not a fish developer, you can keep an eye on our statistics there.
|
||||||
|
|
||||||
## Installing the Required Tools
|
## Installing the Required Tools
|
||||||
|
|
||||||
### Installing the Linting Tools
|
### Installing the Linting Tools
|
||||||
|
|||||||
2
COPYING
2
COPYING
@@ -9,7 +9,7 @@ you can redistribute it and/or modify it under the terms of the GNU GPL as
|
|||||||
published by the Free Software Foundation.
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
fish also includes software licensed under the GNU Lesser General Public
|
fish also includes software licensed under the GNU Lesser General Public
|
||||||
License version 2, the OpenBSD license and the ISC license.
|
License version 2, the OpenBSD license, the ISC license, and the NetBSD license.
|
||||||
|
|
||||||
Full licensing information is contained in doc_src/license.hdr.
|
Full licensing information is contained in doc_src/license.hdr.
|
||||||
|
|
||||||
|
|||||||
6
Doxyfile
6
Doxyfile
@@ -289,7 +289,7 @@ TCL_SUBST =
|
|||||||
# members will be omitted, etc.
|
# members will be omitted, etc.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||||
|
|
||||||
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
|
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
|
||||||
# Python sources only. Doxygen will then generate output that is more tailored
|
# Python sources only. Doxygen will then generate output that is more tailored
|
||||||
@@ -822,7 +822,7 @@ INPUT_ENCODING = UTF-8
|
|||||||
# *.qsf, *.as and *.js.
|
# *.qsf, *.as and *.js.
|
||||||
|
|
||||||
FILE_PATTERNS = *.h \
|
FILE_PATTERNS = *.h \
|
||||||
*.c
|
*.cpp
|
||||||
|
|
||||||
# The RECURSIVE tag can be used to specify whether or not subdirectories should
|
# The RECURSIVE tag can be used to specify whether or not subdirectories should
|
||||||
# be searched for input files as well.
|
# be searched for input files as well.
|
||||||
@@ -837,7 +837,7 @@ RECURSIVE = NO
|
|||||||
# Note that relative paths are relative to the directory from which doxygen is
|
# Note that relative paths are relative to the directory from which doxygen is
|
||||||
# run.
|
# run.
|
||||||
|
|
||||||
EXCLUDE = print_help.c
|
EXCLUDE =
|
||||||
|
|
||||||
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
|
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
|
||||||
# directories that are symbolic links (a Unix file system feature) are excluded
|
# directories that are symbolic links (a Unix file system feature) are excluded
|
||||||
|
|||||||
@@ -741,7 +741,7 @@ CITE_BIB_FILES =
|
|||||||
# messages are off.
|
# messages are off.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
QUIET = NO
|
QUIET = YES
|
||||||
|
|
||||||
# The WARNINGS tag can be used to turn on/off the warning messages that are
|
# The WARNINGS tag can be used to turn on/off the warning messages that are
|
||||||
# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
|
# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
|
||||||
|
|||||||
@@ -741,7 +741,7 @@ CITE_BIB_FILES =
|
|||||||
# messages are off.
|
# messages are off.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
QUIET = NO
|
QUIET = YES
|
||||||
|
|
||||||
# The WARNINGS tag can be used to turn on/off the warning messages that are
|
# The WARNINGS tag can be used to turn on/off the warning messages that are
|
||||||
# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
|
# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
|
||||||
|
|||||||
1174
Makefile.in
1174
Makefile.in
File diff suppressed because it is too large
Load Diff
14
README.md
14
README.md
@@ -13,9 +13,9 @@ Detailed user documentation is available by running `help` within fish, and also
|
|||||||
|
|
||||||
## Building
|
## 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 requires a C++11 compiler. It builds successfully with g++ 4.8 or later, or with clang 3.3 or later.
|
||||||
|
|
||||||
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 can be built using autotools or Xcode. autoconf 2.60 or later, as well as automake 1.13 or later, are required to build from git versions. These are not required to build from released tarballs.
|
||||||
|
|
||||||
fish depends on a curses implementation, such as ncurses. The headers and libraries are required for building.
|
fish depends on a curses implementation, such as ncurses. The headers and libraries are required for building.
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ Building the documentation requires Doxygen 1.8.7 or newer.
|
|||||||
|
|
||||||
### Autotools Build
|
### Autotools Build
|
||||||
|
|
||||||
autoconf [if building from Git]
|
autoreconf --no-recursive [if building from Git]
|
||||||
./configure
|
./configure
|
||||||
make [gmake on BSD]
|
make [gmake on BSD]
|
||||||
sudo make install
|
sudo make install
|
||||||
@@ -64,9 +64,11 @@ fish requires a number of utilities to operate, which should be present on any U
|
|||||||
|
|
||||||
Translation support requires the gettext program.
|
Translation support requires the gettext program.
|
||||||
|
|
||||||
|
Usage output for builtin functions is generated on-demand from the installed manpages using `nroff` and `ul`.
|
||||||
|
|
||||||
Some optional features of fish, such as the manual page completion parser and the web configuration tool, require Python.
|
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.
|
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. To process lzma-compresed manpages, backports.lzma is needed for Python 3.2 or older. From version 3.3 onwards, Python already includes the required module.
|
||||||
|
|
||||||
## Packages for Linux
|
## Packages for Linux
|
||||||
|
|
||||||
@@ -82,7 +84,7 @@ chsh will prompt you for your password, and change your default shell. Substitut
|
|||||||
|
|
||||||
Use the following command if you didn't already add your fish path to /etc/shells.
|
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
|
echo /usr/local/bin/fish | sudo tee -a /etc/shells
|
||||||
|
|
||||||
To switch your default shell back, you can run:
|
To switch your default shell back, you can run:
|
||||||
|
|
||||||
@@ -90,6 +92,8 @@ To switch your default shell back, you can run:
|
|||||||
|
|
||||||
Substitute /bin/bash with /bin/tcsh or /bin/zsh as appropriate.
|
Substitute /bin/bash with /bin/tcsh or /bin/zsh as appropriate.
|
||||||
|
|
||||||
|
You may need to logout/login for the change (chsh) to take effect.
|
||||||
|
|
||||||
## Contributing Changes to the Code
|
## Contributing Changes to the Code
|
||||||
|
|
||||||
See the [Guide for Developers](CONTRIBUTING.md).
|
See the [Guide for Developers](CONTRIBUTING.md).
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ fi
|
|||||||
|
|
||||||
# Determine which man pages we don't want to generate.
|
# 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.
|
# on OS X, don't make a man page for open, since we defeat fish's open function on OS X.
|
||||||
|
# This is also done in the Makefile, but the Xcode build doesn't use that
|
||||||
CONDEMNED_PAGES=
|
CONDEMNED_PAGES=
|
||||||
if test `uname` = 'Darwin'; then
|
if test `uname` = 'Darwin'; then
|
||||||
CONDEMNED_PAGES="$CONDEMNED_PAGES open.1"
|
CONDEMNED_PAGES="$CONDEMNED_PAGES open.1"
|
||||||
@@ -46,6 +47,9 @@ echo " input filter: $INPUTFILTER"
|
|||||||
echo " output directory: $OUTPUTDIR"
|
echo " output directory: $OUTPUTDIR"
|
||||||
echo " skipping: $CONDEMNED_PAGES"
|
echo " skipping: $CONDEMNED_PAGES"
|
||||||
|
|
||||||
|
#Until now the makefile likely has been affecting our output, reset for upcoming warnings
|
||||||
|
tput sgr0
|
||||||
|
|
||||||
# Make sure INPUTDIR is found
|
# Make sure INPUTDIR is found
|
||||||
if test ! -d "$INPUTDIR"; then
|
if test ! -d "$INPUTDIR"; then
|
||||||
echo >&2 "Could not find input directory '${INPUTDIR}'"
|
echo >&2 "Could not find input directory '${INPUTDIR}'"
|
||||||
@@ -132,13 +136,18 @@ if test "$RESULT" = 0 ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Destroy TMPLOC
|
# Destroy TMPLOC
|
||||||
echo "Cleaning up '$TMPLOC'"
|
if test "$RESULT" -ne 0; then
|
||||||
|
echo "Cleaning up '$TMPLOC'"
|
||||||
|
fi
|
||||||
rm -Rf "$TMPLOC"
|
rm -Rf "$TMPLOC"
|
||||||
|
|
||||||
if test "$RESULT" = 0; then
|
if test "$RESULT" -ne 0; then
|
||||||
# Tell the user what we did
|
tput smso 2> /dev/null || true
|
||||||
echo "Output man pages into '${OUTPUTDIR}'"
|
echo "Doxygen failed creating manpages. See the output log for details."
|
||||||
|
tput sgr0 2> /dev/null || true
|
||||||
else
|
else
|
||||||
echo "Doxygen failed. See the output log for details."
|
tput bold 2> /dev/null || true
|
||||||
|
echo Built manpages
|
||||||
|
tput sgr0 2> /dev/null || true
|
||||||
fi
|
fi
|
||||||
exit $RESULT
|
exit $RESULT
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/usr/local/bin/fish
|
#!/usr/local/bin/fish
|
||||||
|
|
||||||
cppcheck --enable=all --std=posix --quiet .
|
cppcheck --enable=all --std=posix --quiet ./src/
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
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/iwyu.linux.imp
Normal file
28
build_tools/iwyu.linux.imp
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Map file for the include-what-you-use tool on Linux.
|
||||||
|
[
|
||||||
|
{ include: ["<bits/fcntl-linux.h>", "private", "<fcntl.h>", "public"] },
|
||||||
|
{ include: ["<bits/mman-linux.h>", "private", "<sys/mman.h>", "public"] },
|
||||||
|
{ include: ["<bits/socket-linux.h>", "private", "<sys/socket.h>", "public"] },
|
||||||
|
{ include: ["<bits/socket_type.h>", "private", "<sys/socket.h>", "public"] },
|
||||||
|
{ include: ["<bits/local_lim.h>", "private", "<limits.h>", "public"] },
|
||||||
|
{ include: ["<tr1/memory>", "public", "<memory>", "public"] },
|
||||||
|
{ include: ["<features.h>", "public", "<stdio.h>", "public"] },
|
||||||
|
{ include: ["<features.h>", "public", "<stddef.h>", "public"] },
|
||||||
|
{ include: ["<features.h>", "public", "<unistd.h>", "public"] },
|
||||||
|
|
||||||
|
{ symbol: ["size_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["size_t", "private", "<stddef.h>", "public"] },
|
||||||
|
{ symbol: ["size_t", "private", "<stdlib.h>", "public"] },
|
||||||
|
{ symbol: ["intmax_t", "private", "<sys/stdint.h>", "public"] },
|
||||||
|
{ symbol: ["intmax_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["uint32_t", "private", "<sys/stdint.h>", "public"] },
|
||||||
|
{ symbol: ["uint32_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["uint64_t", "private", "<sys/stdint.h>", "public"] },
|
||||||
|
{ symbol: ["uint64_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["uintmax_t", "private", "<sys/stdint.h>", "public"] },
|
||||||
|
{ symbol: ["uintmax_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["clock_gettime", "private", "<sys/time.h>", "public"] },
|
||||||
|
{ symbol: ["timespec", "private", "<sys/time.h>", "public"] },
|
||||||
|
{ symbol: ["memset", "private", "<string.h>", "public"] },
|
||||||
|
{ symbol: ["strerror", "private", "<string.h>", "public"] },
|
||||||
|
]
|
||||||
98
build_tools/iwyu.osx.imp
Normal file
98
build_tools/iwyu.osx.imp
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# Map file for the include-what-you-use tool on OS X. For some reason
|
||||||
|
# the version installed by HomeBrew doesn't have useful mappings for the
|
||||||
|
# system provided private headers.
|
||||||
|
[
|
||||||
|
{ include: ["<sys/_pthread/_pthread_once_t.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_pthread/_pthread_mutex_t.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_pthread/_pthread_rwlock_t.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_pthread/_pthread_mutexattr_t.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_pthread/_pthread_cond_t.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_pthread/_pthread_t.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_pthread/_pthread_key_t.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_posix_vdisable.h>", "private", "<pthread.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_time_t.h>", "private", "<time.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_suseconds_t.h>", "private", "<time.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_suseconds_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/errno.h>", "private", "<errno.h>", "public"] },
|
||||||
|
{ include: ["<sys/unistd.h>", "private", "<unistd.h>", "public"] },
|
||||||
|
{ include: ["<_wctype.h>", "private", "<wctype.h>", "public"] },
|
||||||
|
{ include: ["<sys/fcntl.h>", "private", "<fcntl.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_seek_set.h>", "private", "<fcntl.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_mbstate_t.h>", "private", "<wchar.h>", "public"] },
|
||||||
|
{ include: ["<iosfwd>", "private", "<string>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_s_ifmt.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_size_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_size_t.h>", "private", "<stdlib.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_mode_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_pid_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_fd_def.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_fd_isset.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_fd_set.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_fd_zero.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_timeval.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_uid_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<_types/_intmax_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<_types/_uintmax_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<_types/_uint8_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_int32_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<_types/_uint64_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_uintptr_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_dev_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_ino_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_va_list.h>", "private", "<stdio.h>", "public"] },
|
||||||
|
{ include: ["<__functional_base>", "private", "<memory>", "public"] },
|
||||||
|
{ include: ["<__functional_base>", "private", "<vector>", "public"] },
|
||||||
|
{ include: ["<__functional_base>", "private", "<string>", "public"] },
|
||||||
|
{ include: ["<__tree>", "private", "<map>", "public"] },
|
||||||
|
{ include: ["<__tree>", "private", "<set>", "public"] },
|
||||||
|
{ include: ["<_types/_uint32_t.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_va_list.h>", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_sigset_t.h>", "private", "<signal.h>", "public"] },
|
||||||
|
{ include: ["<sys/signal.h>", "private", "<signal.h>", "public"] },
|
||||||
|
{ include: ["<strings.h>", "private", "<string.h>", "public"] },
|
||||||
|
{ include: ["<sys/termios.h>", "private", "<termios.h>", "public"] },
|
||||||
|
{ include: ["<sys/ttycom.h>", "private", "<termios.h>", "public"] },
|
||||||
|
{ include: ["<sys/syslimits.h>", "private", "<limits.h>", "public"] },
|
||||||
|
{ include: ["<i386/limits.h>", "private", "<limits.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_wint_t.h>", "private", "<stddef.h>", "public"] },
|
||||||
|
{ include: ["<sys/_select.h>", "private", "<select.h>", "public"] },
|
||||||
|
{ include: ["<sys/cdefs.h>", "private", "<unistd.h>", "public"] },
|
||||||
|
{ include: ["<istream>", "private", "<iostream>", "public"] },
|
||||||
|
{ include: ["<sys/_endian.h>", "private", "<netinet/in.h>", "public"] },
|
||||||
|
{ include: ["<sys/_types/_timespec.h>", "private", "<time.h>", "public"] },
|
||||||
|
{ include: ["<sys/spawn.h>", "private", "<spawn.h>", "public"] },
|
||||||
|
{ include: ["<sys/dirent.h>", "private", "<dirent.h>", "public"] },
|
||||||
|
# { include: ["<>", "private", "<>", "public"] },
|
||||||
|
|
||||||
|
{ symbol: ["NULL", "private", "<stddef.h>", "public"] },
|
||||||
|
{ symbol: ["NULL", "private", "<stdlib.h>", "public"] },
|
||||||
|
{ symbol: ["NULL", "private", "<stdio.h>", "public"] },
|
||||||
|
{ symbol: ["NULL", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["off_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["size_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["size_t", "private", "<stddef.h>", "public"] },
|
||||||
|
{ symbol: ["size_t", "private", "<stdlib.h>", "public"] },
|
||||||
|
{ symbol: ["off_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["size_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["ssize_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["intptr_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["ssize_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["gid_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["uid_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["pid_t", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["pid_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["uid_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["gid_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["timeval", "private", "<sys/time.h>", "public"] },
|
||||||
|
{ symbol: ["uint32_t", "private", "<sys/types.h>", "public"] },
|
||||||
|
{ symbol: ["uint32_t", "private", "<stdint.h>", "public"] },
|
||||||
|
{ symbol: ["intptr_t", "private", "<stdint.h>", "public"] },
|
||||||
|
{ symbol: ["size_t", "private", "<stdint.h>", "public"] },
|
||||||
|
{ symbol: ["tparm", "private", "<ncurses.h>", "public"] },
|
||||||
|
{ symbol: ["ERR", "private", "<ncurses.h>", "public"] },
|
||||||
|
{ symbol: ["select", "private", "<sys/select.h>", "public"] },
|
||||||
|
{ symbol: ["_LIBCPP_VERSION", "private", "<stddef.h>", "public"] },
|
||||||
|
{ symbol: ["_LIBCPP_VERSION", "private", "<unistd.h>", "public"] },
|
||||||
|
{ symbol: ["MB_CUR_MAX", "private", "<xlocale.h>", "public"] },
|
||||||
|
{ symbol: ["MB_CUR_MAX", "private", "<stdlib.h>", "public"] },
|
||||||
|
]
|
||||||
@@ -7,6 +7,8 @@ set cppchecks warning,performance,portability,information,missingInclude
|
|||||||
set cppcheck_args
|
set cppcheck_args
|
||||||
set c_files
|
set c_files
|
||||||
set all no
|
set all no
|
||||||
|
set kernel_name (uname -s)
|
||||||
|
set machine_type (uname -m)
|
||||||
|
|
||||||
set -gx CXX $argv[1]
|
set -gx CXX $argv[1]
|
||||||
set -e argv[1]
|
set -e argv[1]
|
||||||
@@ -17,6 +19,16 @@ if test "$argv[1]" = "--all"
|
|||||||
set -e argv[1]
|
set -e argv[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if test $kernel_name = Linux
|
||||||
|
# This is an awful hack. However, the include-what-you-use program spews lots of errors like
|
||||||
|
# /usr/include/unistd.h:226:10: fatal error: 'stddef.h' file not found
|
||||||
|
# if we don't explicitly tell it where to find the system headers on Linux. See
|
||||||
|
# http://stackoverflow.com/questions/19642590/libtooling-cant-find-stddef-h-nor-other-headers/
|
||||||
|
set -l sys_includes (eval $CXX -v -c src/builtin.cpp 2>&1 | \
|
||||||
|
sed -n -e '/^#include <...> search/,/^End of search list/s/^ *//p')[2..-2]
|
||||||
|
set -x CPLUS_INCLUDE_PATH (string join ':' $sys_includes)
|
||||||
|
end
|
||||||
|
|
||||||
# We only want -D and -I options to be passed thru to cppcheck.
|
# We only want -D and -I options to be passed thru to cppcheck.
|
||||||
for arg in $argv
|
for arg in $argv
|
||||||
if string match -q -- '-D*' $arg
|
if string match -q -- '-D*' $arg
|
||||||
@@ -25,7 +37,13 @@ for arg in $argv
|
|||||||
set cppcheck_args $cppcheck_args $arg
|
set cppcheck_args $cppcheck_args $arg
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if test (uname -m) = "x86_64"
|
|
||||||
|
# Not sure when this became necessary but without these flags cppcheck no longer works on macOS.
|
||||||
|
# It complains that "Cppcheck cannot find all the include files." It appears that cppcheck used
|
||||||
|
# to, but no longer, recognizes the -iquote flag. So switch to hardcoding the appropriate -I flags.
|
||||||
|
set cppcheck_args $cppcheck_args -I . -I ./src
|
||||||
|
|
||||||
|
if test "$machine_type" = "x86_64"
|
||||||
set cppcheck_args -D__x86_64__ -D__LP64__ $cppcheck_args
|
set cppcheck_args -D__x86_64__ -D__LP64__ $cppcheck_args
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -34,33 +52,73 @@ if test $all = yes
|
|||||||
else
|
else
|
||||||
# We haven't been asked to lint all the source. If there are uncommitted
|
# 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.
|
# changes lint those, else lint the files in the most recent commit.
|
||||||
set pending (git status --porcelain --short --untracked-files=all | sed -e 's/^ *//')
|
# Select (cached files) (modified but not cached, and untracked files)
|
||||||
if set -q pending[1]
|
set files (git diff-index --cached HEAD --name-only)
|
||||||
# There are pending changes so lint those files.
|
set files $files (git ls-files --exclude-standard --others --modified)
|
||||||
for arg in $pending
|
if not set -q files[1]
|
||||||
set files $files (string split -m 1 ' ' $arg)[2]
|
|
||||||
end
|
|
||||||
else
|
|
||||||
# No pending changes so lint the files in the most recent commit.
|
# 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]
|
set files (git diff-tree --no-commit-id --name-only -r HEAD)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Extract just the C/C++ files.
|
# Extract just the C/C++ files that exist.
|
||||||
set c_files (string match -r '.*\.c(?:pp)?$' -- $files)
|
set c_files
|
||||||
|
for file in (string match -r '.*\.c(?:pp)?$' -- $files)
|
||||||
|
test -f $file; and set c_files $c_files $file
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# We now have a list of files to check so run the linters.
|
# We now have a list of files to check so run the linters.
|
||||||
if set -q c_files[1]
|
if set -q c_files[1]
|
||||||
|
if type -q iwyu
|
||||||
|
echo
|
||||||
|
echo ========================================
|
||||||
|
echo Running IWYU
|
||||||
|
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.
|
||||||
|
for c_file in $c_files
|
||||||
|
switch $kernel_name
|
||||||
|
case Darwin
|
||||||
|
include-what-you-use -Xiwyu --no_default_mappings -Xiwyu \
|
||||||
|
--mapping_file=build_tools/iwyu.osx.imp --std=c++11 \
|
||||||
|
$cppcheck_args $c_file 2>&1
|
||||||
|
case Linux
|
||||||
|
include-what-you-use -Xiwyu --mapping_file=build_tools/iwyu.linux.imp \
|
||||||
|
$cppcheck_args $c_file 2>&1
|
||||||
|
case '*' # hope for the best
|
||||||
|
include-what-you-use $cppcheck_args $c_file 2>&1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if type -q cppcheck
|
if type -q cppcheck
|
||||||
echo
|
echo
|
||||||
echo ========================================
|
echo ========================================
|
||||||
echo Running cppcheck
|
echo Running cppcheck
|
||||||
echo ========================================
|
echo ========================================
|
||||||
# The stderr to stdout redirection is because cppcheck, incorrectly
|
# The stderr to stdout redirection is because cppcheck, incorrectly IMHO, writes its
|
||||||
# IMHO, writes its diagnostic messages to stderr. Anyone running
|
# diagnostic messages to stderr. Anyone running this who wants to capture its output will
|
||||||
# this who wants to capture its output will expect those messages to be
|
# expect those messages to be written to stdout.
|
||||||
# written to stdout.
|
set -l cn (set_color normal)
|
||||||
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
|
set -l cb (set_color --bold)
|
||||||
|
set -l cu (set_color --underline)
|
||||||
|
set -l cm (set_color magenta)
|
||||||
|
set -l cbrm (set_color brmagenta)
|
||||||
|
set -l template "[$cb$cu{file}$cn$cb:{line}$cn] $cbrm{severity}$cm ({id}):$cn\n {message}"
|
||||||
|
set cppcheck_args -q --verbose --std=c++11 --std=posix --language=c++ --template $template \
|
||||||
|
--suppress=missingIncludeSystem --inline-suppr --enable=$cppchecks \
|
||||||
|
--rule-file=.cppcheck.rules --suppressions-list=.cppcheck.suppressions $cppcheck_args
|
||||||
|
|
||||||
|
cppcheck $cppcheck_args $c_files 2>&1
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo ========================================
|
||||||
|
echo 'Running `cppcheck --check-config` to identify missing includes similar problems.'
|
||||||
|
echo 'Ignore unmatchedSuppression warnings as they are probably false positives we'
|
||||||
|
echo 'cannot suppress.'
|
||||||
|
echo ========================================
|
||||||
|
cppcheck $cppcheck_args --check-config $c_files 2>&1
|
||||||
end
|
end
|
||||||
|
|
||||||
if type -q oclint
|
if type -q oclint
|
||||||
@@ -68,29 +126,28 @@ if set -q c_files[1]
|
|||||||
echo ========================================
|
echo ========================================
|
||||||
echo Running oclint
|
echo Running oclint
|
||||||
echo ========================================
|
echo ========================================
|
||||||
# The stderr to stdout redirection is because oclint, incorrectly
|
# The stderr to stdout redirection is because oclint, incorrectly writes its final summary
|
||||||
# writes its final summary counts of the errors detected to stderr.
|
# counts of the errors detected to stderr. Anyone running this who wants to capture its
|
||||||
# Anyone running this who wants to capture its output will expect those
|
# output will expect those messages to be written to stdout.
|
||||||
# messages to be written to stdout.
|
if test "$kernel_name" = "Darwin"
|
||||||
if test (uname -s) = "Darwin"
|
|
||||||
if not test -f compile_commands.json
|
if not test -f compile_commands.json
|
||||||
xcodebuild > xcodebuild.log
|
xcodebuild -alltargets >xcodebuild.log
|
||||||
oclint-xcodebuild xcodebuild.log > /dev/null
|
oclint-xcodebuild xcodebuild.log >/dev/null
|
||||||
end
|
end
|
||||||
if test $all = yes
|
if test $all = yes
|
||||||
oclint-json-compilation-database -e '/pcre2-10.21/' -- -enable-global-analysis 2>& 1
|
oclint-json-compilation-database -e '/pcre2-10.21/' -- -enable-global-analysis 2>&1
|
||||||
else
|
else
|
||||||
set i_files
|
set i_files
|
||||||
for f in $c_files
|
for f in $c_files
|
||||||
set i_files $i_files -i $f
|
set i_files $i_files -i $f
|
||||||
end
|
end
|
||||||
echo oclint-json-compilation-database -e '/pcre2-10.21/' $i_files
|
echo oclint-json-compilation-database -e '/pcre2-10.21/' $i_files
|
||||||
oclint-json-compilation-database -e '/pcre2-10.21/' $i_files 2>& 1
|
oclint-json-compilation-database -e '/pcre2-10.21/' $i_files 2>&1
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
# Presumably we're on Linux or other platform not requiring special
|
# Presumably we're on Linux or other platform not requiring special
|
||||||
# handling for oclint to work.
|
# handling for oclint to work.
|
||||||
oclint $c_files -- $argv 2>& 1
|
oclint $c_files -- $argv 2>&1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/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
|
|
||||||
|
|
||||||
@@ -1,9 +1,15 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
VERSION=`sed -E -n 's/^.*PACKAGE_VERSION "([0-9.]+)"/\1/p' osx/config.h`
|
# Script to produce an OS X installer .pkg and .app(.zip)
|
||||||
|
|
||||||
|
VERSION=`git describe --always --dirty 2>/dev/null`
|
||||||
if test -z "$VERSION" ; then
|
if test -z "$VERSION" ; then
|
||||||
echo "Could not get version from osx/config.h"
|
echo "Could not get version from git"
|
||||||
exit 1
|
VERSION=`sed -E -n 's/^.*PACKAGE_VERSION "([0-9a-z.\-]+)"/\1/p' osx/config.h`
|
||||||
|
if test -z "$VERSION"; then
|
||||||
|
echo "Could not get version from osx/config.h"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Version is $VERSION"
|
echo "Version is $VERSION"
|
||||||
@@ -11,20 +17,25 @@ echo "Version is $VERSION"
|
|||||||
set -x
|
set -x
|
||||||
|
|
||||||
make distclean
|
make distclean
|
||||||
rm -Rf /tmp/fish_pkg
|
|
||||||
|
|
||||||
#Exit on error
|
#Exit on error
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
mkdir -p /tmp/fish_pkg/root /tmp/fish_pkg/intermediates /tmp/fish_pkg/dst
|
PKGDIR=`mktemp -d`
|
||||||
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
|
OUTPUT_PATH=${FISH_ARTEFACT_PATH:-~/fish_built}
|
||||||
|
|
||||||
|
mkdir -p $PKGDIR/root $PKGDIR/intermediates $PKGDIR/dst
|
||||||
|
xcodebuild install -scheme install_tree -configuration Release DSTROOT=$PKGDIR/root/
|
||||||
|
pkgbuild --scripts build_tools/osx_package_scripts --root $PKGDIR/root/ --identifier 'com.ridiculousfish.fish-shell-pkg' --version "$VERSION" $PKGDIR/intermediates/fish.pkg
|
||||||
|
|
||||||
|
productbuild --package-path $PKGDIR/intermediates --distribution build_tools/osx_distribution.xml --resources build_tools/osx_package_resources/ $OUTPUT_PATH/fish-$VERSION.pkg
|
||||||
|
|
||||||
|
|
||||||
# Make the app
|
# Make the app
|
||||||
xcodebuild -scheme fish.app -configuration Release DSTROOT=/tmp/fish_app/
|
xcodebuild -scheme fish.app -configuration Release DSTROOT=/tmp/fish_app/ SYMROOT=DerivedData/fish/Build/Products
|
||||||
rm -f ~/fish_built/fish.app.zip
|
|
||||||
cd DerivedData/fish/Build/Products/Release/
|
cd DerivedData/fish/Build/Products/Release/
|
||||||
zip -r ~/fish_built/fish.app.zip fish.app
|
zip -r $OUTPUT_PATH/fish-$VERSION.app.zip fish.app
|
||||||
|
|
||||||
|
rm -r $PKGDIR
|
||||||
|
|||||||
@@ -4,27 +4,43 @@
|
|||||||
# We use git to output a tree. But we also want to build the user documentation
|
# 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
|
# and put that in the tarball, so that nobody needs to have doxygen installed
|
||||||
# to build it.
|
# to build it.
|
||||||
|
# Outputs to $FISH_ARTEFACT_PATH or ~/fish_built by default
|
||||||
|
|
||||||
# Exit on error
|
# Exit on error
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# We wil generate a tarball with a prefix "fish"
|
# We wil generate a tarball with a prefix "fish-VERSION"
|
||||||
# git can do that automatically for us via git-archive
|
# git can do that automatically for us via git-archive
|
||||||
# but to get the documentation in, we need to make a symlink called "fish"
|
# but to get the documentation in, we need to make a symlink called "fish-VERSION"
|
||||||
# and tar from that, so that the documentation gets the right prefix
|
# and tar from that, so that the documentation gets the right prefix
|
||||||
|
|
||||||
|
# We need GNU tar as that supports the --mtime option
|
||||||
|
# BSD tar supports --mtree but keeping them in sync sounds too hard
|
||||||
|
TAR=notfound
|
||||||
|
for try in tar gtar gnutar; do
|
||||||
|
if $try -Pcf /dev/null --mtime now /dev/null >/dev/null 2>&1; then
|
||||||
|
TAR=$try
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$TAR" = "notfound" ]; then
|
||||||
|
echo 'No suitable tar (supporting --mtime) found as tar/gtar/gnutar in PATH'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Get the current directory, which we'll use for symlinks
|
# Get the current directory, which we'll use for symlinks
|
||||||
wd="$PWD"
|
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
|
# Get the version from git-describe
|
||||||
VERSION=`git describe --dirty 2>/dev/null`
|
VERSION=`git describe --dirty 2>/dev/null`
|
||||||
prefix="$prefix-$VERSION"
|
|
||||||
|
# The name of the prefix, which is the directory that you get when you untar
|
||||||
|
prefix="fish-$VERSION"
|
||||||
|
|
||||||
# The path where we will output the tar file
|
# The path where we will output the tar file
|
||||||
path=~/fish_built/$prefix.tar
|
# Defaults to ~/fish_built
|
||||||
|
path=${FISH_ARTEFACT_PATH:-~/fish_built}/$prefix.tar
|
||||||
|
|
||||||
# Clean up stuff we've written before
|
# Clean up stuff we've written before
|
||||||
rm -f "$path" "$path".gz
|
rm -f "$path" "$path".gz
|
||||||
@@ -33,26 +49,29 @@ rm -f "$path" "$path".gz
|
|||||||
git archive --format=tar --prefix="$prefix"/ HEAD > "$path"
|
git archive --format=tar --prefix="$prefix"/ HEAD > "$path"
|
||||||
|
|
||||||
# tarball out the documentation, generate a configure script and version file
|
# 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
|
autoreconf --no-recursive
|
||||||
# Don't run autoheader since configure.ac runs it. autoconf is enough.
|
|
||||||
autoconf
|
|
||||||
./configure --with-doxygen
|
./configure --with-doxygen
|
||||||
make doc share/man
|
make doc share/man
|
||||||
echo $VERSION > version
|
echo $VERSION > version
|
||||||
cd /tmp
|
|
||||||
rm -f "$prefix"
|
PREFIX_TMPDIR=`mktemp -d`
|
||||||
|
cd $PREFIX_TMPDIR
|
||||||
|
|
||||||
ln -s "$wd" "$prefix"
|
ln -s "$wd" "$prefix"
|
||||||
TAR_APPEND="gnutar --append --file=$path --mtime=now --owner=0 --group=0 --mode=g+w,a+rX"
|
TAR_APPEND="$TAR --append --file=$path --mtime=now --owner=0 --group=0 --mode=g+w,a+rX"
|
||||||
$TAR_APPEND --no-recursion "$prefix"/user_doc
|
$TAR_APPEND --no-recursion "$prefix"/user_doc
|
||||||
$TAR_APPEND "$prefix"/user_doc/html "$prefix"/share/man
|
$TAR_APPEND "$prefix"/user_doc/html "$prefix"/share/man
|
||||||
$TAR_APPEND "$prefix"/version
|
$TAR_APPEND "$prefix"/version
|
||||||
$TAR_APPEND "$prefix"/configure "$prefix"/config.h.in
|
$TAR_APPEND "$prefix"/configure "$prefix"/config.h.in
|
||||||
rm -f "$prefix"/version
|
rm "$prefix"/version
|
||||||
rm -f "$prefix"
|
unlink "$prefix"
|
||||||
|
|
||||||
|
cd -
|
||||||
|
rmdir $PREFIX_TMPDIR
|
||||||
|
|
||||||
# gzip it
|
# gzip it
|
||||||
gzip "$path"
|
gzip "$path"
|
||||||
|
|
||||||
# Output what we did, and the sha1 hash
|
# Output what we did, and the sha1 hash
|
||||||
echo "Tarball written to $path".gz
|
echo "Tarball written to $path".gz
|
||||||
openssl sha1 "$path".gz
|
openssl dgst -sha256 "$path".gz
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 35 KiB |
@@ -1,11 +1,12 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370
|
{\rtf1\ansi\ansicpg1252\cocoartf1485\cocoasubrtf410
|
||||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Monaco;}
|
{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;\f1\fnil\fcharset0 Menlo-Regular;}
|
||||||
{\colortbl;\red255\green255\blue255;}
|
{\colortbl;\red255\green255\blue255;}
|
||||||
|
{\*\expandedcolortbl;\csgenericrgb\c100000\c100000\c100000;}
|
||||||
{\info
|
{\info
|
||||||
{\author dlkfjslfjsfdlkfk}}\margl1440\margr1440\vieww10800\viewh8400\viewkind0
|
{\author dlkfjslfjsfdlkfk}}\margl1440\margr1440\vieww10800\viewh8400\viewkind0
|
||||||
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural
|
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
|
||||||
|
|
||||||
\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}}.\
|
\f0\fs30 \cf0 Fish is a smart and user friendly command line shell. For more information, visit {\field{\*\fldinst{HYPERLINK "https://fishshell.com"}}{\fldrslt https://fishshell.com}}\
|
||||||
\
|
\
|
||||||
fish will be installed into
|
fish will be installed into
|
||||||
\f1\fs26 /usr/local/
|
\f1\fs26 /usr/local/
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
# This runs C++ files and fish scripts (*.fish) through their respective code
|
# This runs C++ files and fish scripts (*.fish) through their respective code
|
||||||
# formatting programs.
|
# formatting programs.
|
||||||
#
|
#
|
||||||
|
set git_clang_format no
|
||||||
set c_files
|
set c_files
|
||||||
set f_files
|
set f_files
|
||||||
set all no
|
set all no
|
||||||
@@ -21,37 +22,62 @@ if set -q argv[1]
|
|||||||
end
|
end
|
||||||
|
|
||||||
if test $all = yes
|
if test $all = yes
|
||||||
|
set files (git status --porcelain --short --untracked-files=all | sed -e 's/^ *[^ ]* *//')
|
||||||
|
if set -q files[1]
|
||||||
|
echo
|
||||||
|
echo You have uncommited changes. Cowardly refusing to restyle the entire code base.
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
set c_files src/*.h src/*.cpp
|
set c_files src/*.h src/*.cpp
|
||||||
set f_files ***.fish
|
# For now we don't restyle all fish scripts other than completion scripts. That's because people
|
||||||
|
# really like to vertically align the elements of the `complete` command and fish_indent
|
||||||
|
# currently does not honor that whitespace.
|
||||||
|
set f_files (printf '%s\n' share/***.fish | grep -v /completions/)
|
||||||
else
|
else
|
||||||
# We haven't been asked to reformat all the source. If there are uncommitted
|
# We haven't been asked to reformat all the source. If there are uncommitted changes reformat
|
||||||
# changes reformat those, else reformat the files in the most recent commit.
|
# those using `git clang-format`. Else reformat the files in the most recent commit.
|
||||||
set pending (git status --porcelain --short --untracked-files=all | sed -e 's/^ *//')
|
# Select (cached files) (modified but not cached, and untracked files)
|
||||||
if count $pending > /dev/null
|
set files (git diff-index --cached HEAD --name-only) (git ls-files --exclude-standard --others --modified)
|
||||||
# There are pending changes so lint those files.
|
if set -q files[1]
|
||||||
for arg in $pending
|
set git_clang_format yes
|
||||||
set files $files (string split -m 1 ' ' $arg)[2]
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
# No pending changes so lint the files in the most recent commit.
|
# No pending changes so lint the files in the most recent commit.
|
||||||
set files (git show --name-only --pretty=oneline head | tail --lines=+2)
|
set files (git diff-tree --no-commit-id --name-only -r HEAD)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Extract just the C/C++ files.
|
# Extract just the C/C++ files that exist.
|
||||||
set c_files (string match -r '^.*\.(?:c|cpp|h)$' -- $files)
|
set c_files
|
||||||
|
for file in (string match -r '^.*\.(?:c|cpp|h)$' -- $files)
|
||||||
|
test -f $file; and set c_files $c_files $file
|
||||||
|
end
|
||||||
# Extract just the fish files.
|
# Extract just the fish files.
|
||||||
set f_files (string match -r '^.*\.fish$' -- $files)
|
set f_files (string match -r '^.*\.fish$' -- $files)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Run the C++ reformatter if we have any C++ files.
|
# Run the C++ reformatter if we have any C++ files.
|
||||||
if set -q c_files[1]
|
if set -q c_files[1]
|
||||||
if type -q clang-format
|
if test $git_clang_format = yes
|
||||||
|
if type -q git-clang-format
|
||||||
|
echo
|
||||||
|
echo ========================================
|
||||||
|
echo Running git-clang-format
|
||||||
|
echo ========================================
|
||||||
|
git add $c_files
|
||||||
|
git-clang-format
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo 'WARNING: Cannot find git-clang-format command'
|
||||||
|
echo
|
||||||
|
end
|
||||||
|
else if type -q clang-format
|
||||||
echo
|
echo
|
||||||
echo ========================================
|
echo ========================================
|
||||||
echo Running clang-format
|
echo Running clang-format
|
||||||
echo ========================================
|
echo ========================================
|
||||||
for file in $c_files
|
for file in $c_files
|
||||||
clang-format $file > $file.new
|
cp $file $file.new # preserves mode bits
|
||||||
|
clang-format $file >$file.new
|
||||||
if cmp --quiet $file $file.new
|
if cmp --quiet $file $file.new
|
||||||
echo $file was correctly formatted
|
echo $file was correctly formatted
|
||||||
rm $file.new
|
rm $file.new
|
||||||
@@ -78,7 +104,8 @@ if set -q f_files[1]
|
|||||||
echo Running fish_indent
|
echo Running fish_indent
|
||||||
echo ========================================
|
echo ========================================
|
||||||
for file in $f_files
|
for file in $f_files
|
||||||
fish_indent < $file > $file.new
|
cp $file $file.new # preserves mode bits
|
||||||
|
fish_indent <$file >$file.new
|
||||||
if cmp --quiet $file $file.new
|
if cmp --quiet $file $file.new
|
||||||
echo $file was correctly formatted
|
echo $file was correctly formatted
|
||||||
rm $file.new
|
rm $file.new
|
||||||
|
|||||||
499
configure.ac
499
configure.ac
@@ -14,6 +14,7 @@ AC_PREREQ([2.60])
|
|||||||
AC_INIT(fish,
|
AC_INIT(fish,
|
||||||
m4_esyscmd([cut -f 3 -d ' ' FISH-BUILD-VERSION-FILE | tr -d '\n']),
|
m4_esyscmd([cut -f 3 -d ' ' FISH-BUILD-VERSION-FILE | tr -d '\n']),
|
||||||
fish-users@lists.sourceforge.net)
|
fish-users@lists.sourceforge.net)
|
||||||
|
ac_clean_files=a.out.dSYM
|
||||||
|
|
||||||
#
|
#
|
||||||
# List of output variables produced by this configure script
|
# List of output variables produced by this configure script
|
||||||
@@ -25,7 +26,6 @@ AC_SUBST(LDFLAGS_FISH)
|
|||||||
AC_SUBST(WCHAR_T_BITS)
|
AC_SUBST(WCHAR_T_BITS)
|
||||||
AC_SUBST(EXTRA_PCRE2)
|
AC_SUBST(EXTRA_PCRE2)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# If needed, run autoconf to regenerate the configure file
|
# If needed, run autoconf to regenerate the configure file
|
||||||
#
|
#
|
||||||
@@ -34,23 +34,23 @@ AC_SUBST(EXTRA_PCRE2)
|
|||||||
# running autoconf to handle an updates configure.ac.
|
# running autoconf to handle an updates configure.ac.
|
||||||
#
|
#
|
||||||
|
|
||||||
AC_MSG_CHECKING([if autoconf needs to be run])
|
AC_MSG_CHECKING([if autoreconf needs to be run])
|
||||||
if test configure -ot configure.ac; then
|
if test configure -ot configure.ac; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
if which autoconf >/dev/null; then
|
if which autoreconf >/dev/null; then
|
||||||
# No need to provide any error messages if autoconf fails, the
|
# No need to provide any error messages if autoreconf fails, the
|
||||||
# shell and autconf should take care of that themselves
|
# shell and autconf should take care of that themselves
|
||||||
AC_MSG_NOTICE([running autoconf])
|
AC_MSG_NOTICE([running autoreconf --no-recursive])
|
||||||
if autoconf; then
|
if autoreconf --no-recursive; then
|
||||||
./configure "$@"
|
./configure "$@"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
AC_MSG_ERROR(
|
AC_MSG_ERROR(
|
||||||
[cannot find the autoconf program in your path.
|
[cannot find the autoreconf program in your path.
|
||||||
This program needs to be run whenever the configure.ac file is modified.
|
This program needs to be run whenever the configure.ac file is modified.
|
||||||
Please install it and try again.]
|
Please install autoreconf and try again.]
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -75,31 +75,42 @@ if test ! -f ./config.h.in -o config.h.in -ot configure.ac; then
|
|||||||
AC_MSG_ERROR(
|
AC_MSG_ERROR(
|
||||||
[cannot find the autoheader program in your path.
|
[cannot find the autoheader program in your path.
|
||||||
This program needs to be run whenever the configure.ac file is modified.
|
This program needs to be run whenever the configure.ac file is modified.
|
||||||
Please install it and try again.]
|
Please install autotools and try again.]
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Include the autoconf macros directory
|
||||||
|
#
|
||||||
|
|
||||||
|
AC_CONFIG_MACRO_DIRS([m4])
|
||||||
|
|
||||||
#
|
#
|
||||||
# Set up various programs needed for install
|
# Set up various programs needed for install
|
||||||
# Note AC_PROG_CXX sets CXXFLAGS if not set, which we want
|
# Note AC_PROG_CXX sets CXXFLAGS if not set, which we want
|
||||||
# So ensure this happens before we modify CXXFLAGS below
|
# So ensure this happens before we modify CXXFLAGS below
|
||||||
#
|
# Do CC also, because PCRE2 will use it.
|
||||||
|
AC_PROG_CC
|
||||||
AC_PROG_CXX([g++ c++])
|
AC_PROG_CC_STDC # c99
|
||||||
AC_PROG_INSTALL
|
AC_PROG_CXX
|
||||||
AC_PROG_SED
|
|
||||||
AC_LANG(C++)
|
AC_LANG(C++)
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_PROG_LN_S
|
||||||
|
AC_PROG_MKDIR_P
|
||||||
|
AC_PROG_AWK
|
||||||
|
AC_PROG_FGREP
|
||||||
|
AC_PROG_SED
|
||||||
AC_USE_SYSTEM_EXTENSIONS
|
AC_USE_SYSTEM_EXTENSIONS
|
||||||
|
AX_CXX_COMPILE_STDCXX_11(noext,mandatory)
|
||||||
echo "CXXFLAGS: $CXXFLAGS"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Tell autoconf to create config.h header
|
# Tell autoconf to create config.h header
|
||||||
#
|
#
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -197,8 +208,7 @@ AS_IF([test "$use_doxygen" != "no"],
|
|||||||
# where off_t can be either 32 or 64 bit, the latter size is used. On
|
# where off_t can be either 32 or 64 bit, the latter size is used. On
|
||||||
# other systems, this should do nothing. (Hopefully)
|
# other systems, this should do nothing. (Hopefully)
|
||||||
#
|
#
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
CXXFLAGS="$CXXFLAGS -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64"
|
|
||||||
|
|
||||||
|
|
||||||
# fish does not use exceptions
|
# fish does not use exceptions
|
||||||
@@ -211,12 +221,11 @@ CXXFLAGS="$CXXFLAGS -fno-exceptions"
|
|||||||
# But signed comparison warnings are way too aggressive
|
# But signed comparison warnings are way too aggressive
|
||||||
#
|
#
|
||||||
|
|
||||||
CXXFLAGS="$CXXFLAGS -Wall -Wno-sign-compare"
|
CXXFLAGS="$CXXFLAGS -Wextra"
|
||||||
|
|
||||||
#
|
#
|
||||||
# This is needed in order to get the really cool backtraces on Linux
|
# This is needed in order to get the really cool backtraces on Linux
|
||||||
#
|
#
|
||||||
|
|
||||||
AC_MSG_CHECKING([for -rdynamic linker flag])
|
AC_MSG_CHECKING([for -rdynamic linker flag])
|
||||||
prev_LDFLAGS="$LDFLAGS"
|
prev_LDFLAGS="$LDFLAGS"
|
||||||
LDFLAGS="$LDFLAGS -rdynamic"
|
LDFLAGS="$LDFLAGS -rdynamic"
|
||||||
@@ -230,100 +239,6 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
|
|||||||
])
|
])
|
||||||
LDFLAGS="$prev_LDFLAGS"
|
LDFLAGS="$prev_LDFLAGS"
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# If we are compiling against glibc, set some flags to work around
|
|
||||||
# some rather stupid attempts to hide prototypes for *wprintf
|
|
||||||
# functions, as well as prototypes of various gnu extensions.
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if we are compiling against glibc])
|
|
||||||
AC_RUN_IFELSE(
|
|
||||||
[
|
|
||||||
AC_LANG_PROGRAM(
|
|
||||||
[
|
|
||||||
#include <stdlib.h>
|
|
||||||
#ifdef __GLIBC__
|
|
||||||
#define STATUS 0
|
|
||||||
#else
|
|
||||||
#define STATUS 1
|
|
||||||
#endif
|
|
||||||
],
|
|
||||||
[
|
|
||||||
return STATUS;
|
|
||||||
]
|
|
||||||
)
|
|
||||||
],
|
|
||||||
[glibc=yes],
|
|
||||||
[glibc=no]
|
|
||||||
)
|
|
||||||
|
|
||||||
if test "$glibc" = yes; then
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
|
|
||||||
#
|
|
||||||
# This gives us access to prototypes for gnu extensions and C99
|
|
||||||
# functions if we are compiling agains glibc. All GNU extensions
|
|
||||||
# that are used must have a fallback implementation available in
|
|
||||||
# fallback.h, in order to keep fish working on non-gnu platforms.
|
|
||||||
#
|
|
||||||
|
|
||||||
CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE=1 -D_ISO99_SOURCE=1"
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Test cpu for special handling of ppc
|
|
||||||
#
|
|
||||||
# This is used to skip use of tputs on ppc systems, since it seemed to
|
|
||||||
# be broken, at least on older debin-based systems. This is obviously
|
|
||||||
# not the right way to to detect whether this workaround should be
|
|
||||||
# used, since it catches far to many systems, but I do not have the
|
|
||||||
# hardware available to narrow this problem down, and in practice, it
|
|
||||||
# seems that tputs is never really needed.
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_CANONICAL_TARGET
|
|
||||||
|
|
||||||
if test $target_cpu = powerpc; then
|
|
||||||
AC_DEFINE([TPUTS_KLUDGE],[1],[Evil kludge to get Power based machines to work])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Solaris-specific flags go here
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if we are under Solaris])
|
|
||||||
case $target_os in
|
|
||||||
solaris*)
|
|
||||||
AC_DEFINE( __EXTENSIONS__, 1, [Macro to enable additional prototypes under Solaris])
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
#
|
|
||||||
# BSD-specific flags go here
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if we are under BSD])
|
|
||||||
case $target_os in
|
|
||||||
*bsd*)
|
|
||||||
AC_DEFINE( __BSD_VISIBLE, 1, [Macro to enable additional prototypes under BSD])
|
|
||||||
AC_DEFINE( _NETBSD_SOURCE, 1, [Macro to enable additional prototypes under BSD])
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# See if Linux procfs is present. This is used to get extra
|
# See if Linux procfs is present. This is used to get extra
|
||||||
# information about running processes.
|
# information about running processes.
|
||||||
@@ -331,22 +246,22 @@ esac
|
|||||||
|
|
||||||
AC_CHECK_FILES([/proc/self/stat])
|
AC_CHECK_FILES([/proc/self/stat])
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# This is ued to tell the wgetopt library to translate strings. This
|
|
||||||
# way wgetopt can be dropped into any project without requiring i18n.
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_DEFINE(
|
|
||||||
[HAVE_TRANSLATE_H],
|
|
||||||
[1],
|
|
||||||
[Define to 1 if the wgettext function should be used for translating strings.]
|
|
||||||
)
|
|
||||||
|
|
||||||
# Disable curses macros that conflict with the STL
|
# Disable curses macros that conflict with the STL
|
||||||
AC_DEFINE([NCURSES_NOMACROS], [1], [Define to 1 to disable ncurses macros that conflict with the STL])
|
AC_DEFINE([NCURSES_NOMACROS], [1], [Define to 1 to disable ncurses macros that conflict with the STL])
|
||||||
AC_DEFINE([NOMACROS], [1], [Define to 1 to disable curses macros that conflict with the STL])
|
AC_DEFINE([NOMACROS], [1], [Define to 1 to disable curses macros that conflict with the STL])
|
||||||
|
|
||||||
|
# Threading is excitingly broken on Solaris without adding -pthread to CXXFLAGS
|
||||||
|
# Only support GCC for now
|
||||||
|
dnl Ideally we would use the AX_PTHREAD macro here, but it's GPL3-licensed
|
||||||
|
dnl ACX_PTHREAD is way too old and seems to break the OS X build
|
||||||
|
dnl Both only check with AC_LANG(C) in any case
|
||||||
|
case $host_os in
|
||||||
|
solaris*)
|
||||||
|
CXXFLAGS="$CXXFLAGS -pthread"
|
||||||
|
CFLAGS="$CFLAGS -pthread"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check presense of various libraries. This is done on a per-binary
|
# Check presense of various libraries. This is done on a per-binary
|
||||||
# level, since including various extra libraries in all binaries only
|
# level, since including various extra libraries in all binaries only
|
||||||
@@ -355,13 +270,11 @@ AC_DEFINE([NOMACROS], [1], [Define to 1 to disable curses macros that conflict w
|
|||||||
#
|
#
|
||||||
|
|
||||||
# Check for os dependant libraries for all binaries.
|
# Check for os dependant libraries for all binaries.
|
||||||
AC_SEARCH_LIBS( connect, socket, , [AC_MSG_ERROR([Cannot find the socket library, needed to build this package.] )] )
|
|
||||||
AC_SEARCH_LIBS( nanosleep, rt, , [AC_MSG_ERROR([Cannot find the rt library, needed to build this package.] )] )
|
AC_SEARCH_LIBS( nanosleep, rt, , [AC_MSG_ERROR([Cannot find the rt library, needed to build this package.] )] )
|
||||||
AC_SEARCH_LIBS( shm_open, rt, , [AC_MSG_ERROR([Cannot find the rt library, needed to build this package.] )] )
|
AC_SEARCH_LIBS( shm_open, rt, [AC_DEFINE([HAVE_SHM_OPEN], [1], [Define to 1 if the shm_open() function exists])] )
|
||||||
AC_SEARCH_LIBS( pthread_create, pthread, , [AC_MSG_ERROR([Cannot find the pthread library, needed to build this package.] )] )
|
AC_SEARCH_LIBS( pthread_create, pthread, , [AC_MSG_ERROR([Cannot find the pthread library, needed to build this package.] )] )
|
||||||
AC_SEARCH_LIBS( setupterm, [ncurses tinfo curses], , [AC_MSG_ERROR([Could not find a curses implementation, needed to build fish. If this is Linux, try running 'sudo apt-get install libncurses5-dev' or 'sudo yum install ncurses-devel'])] )
|
AC_SEARCH_LIBS( setupterm, [ncurses tinfo curses], , [AC_MSG_ERROR([Could not find a curses implementation, needed to build fish. If this is Linux, try running 'sudo apt-get install libncurses5-dev' or 'sudo yum install ncurses-devel'])] )
|
||||||
AC_SEARCH_LIBS( [nan], [m], [AC_DEFINE( [HAVE_NAN], [1], [Define to 1 if you have the nan function])] )
|
AC_SEARCH_LIBS( [dladdr], [dl] )
|
||||||
AC_SEARCH_LIBS( [backtrace_symbols_fd], [execinfo] )
|
|
||||||
|
|
||||||
if test x$local_gettext != xno; then
|
if test x$local_gettext != xno; then
|
||||||
AC_SEARCH_LIBS( gettext, intl,,)
|
AC_SEARCH_LIBS( gettext, intl,,)
|
||||||
@@ -387,128 +300,10 @@ AC_CHECK_SIZEOF(wchar_t)
|
|||||||
WCHAR_T_BITS=`expr 8 \* $ac_cv_sizeof_wchar_t`
|
WCHAR_T_BITS=`expr 8 \* $ac_cv_sizeof_wchar_t`
|
||||||
AC_DEFINE_UNQUOTED([WCHAR_T_BITS], [$WCHAR_T_BITS], [The size of wchar_t in bits.])
|
AC_DEFINE_UNQUOTED([WCHAR_T_BITS], [$WCHAR_T_BITS], [The size of wchar_t in bits.])
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# On some platforms (Solaris 10) adding -std=c99 in turn requires that
|
|
||||||
# _POSIX_C_SOURCE be defined to 200112L otherwise several
|
|
||||||
# POSIX-specific, non-ISO-C99 types/prototypes are made unavailable
|
|
||||||
# e.g. siginfo_t. Defining _XOPEN_SOURCE to 600 is compatible with
|
|
||||||
# the _POSIX_C_SOURCE value and provides a little assurance that
|
|
||||||
# extension functions' prototypes are available, e.g. killpg().
|
|
||||||
#
|
|
||||||
# Some other platforms (OS X), will remove types/prototypes/macros
|
|
||||||
# e.g. SIGWINCH if either _POSIX_C_SOURCE or _XOPEN_SOURCE is defined.
|
|
||||||
#
|
|
||||||
# This test adds these macros only if they enable a program that uses
|
|
||||||
# both Posix and non-standard features to compile, and that program
|
|
||||||
# does not compile without these macros.
|
|
||||||
#
|
|
||||||
# We try to make everyone happy.
|
|
||||||
#
|
|
||||||
# The ordering of the various autoconf tests is very critical as well:
|
|
||||||
#
|
|
||||||
# * This test needs to be run _after_ header detection tests, so that
|
|
||||||
# the proper headers are included.
|
|
||||||
#
|
|
||||||
# * This test needs to be run _before_ testing for the presense of any
|
|
||||||
# prototypes or other language functinality.
|
|
||||||
#
|
|
||||||
# * This test should be (but does not need to be) run after the
|
|
||||||
# conditional definition of __EXTENSIONS__, to avoid redundant tests.
|
|
||||||
#
|
|
||||||
|
|
||||||
XCXXFLAGS="$CXXFLAGS"
|
|
||||||
|
|
||||||
echo checking how to use -D_XOPEN_SOURCE=600 and -D_POSIX_C_SOURCE=200112L...
|
|
||||||
local_found_posix_switch=no
|
|
||||||
|
|
||||||
for i in "" "-D_POSIX_C_SOURCE=200112L" "-D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=200112L"; do
|
|
||||||
|
|
||||||
AC_MSG_CHECKING( if switches \"$i\" works)
|
|
||||||
CXXFLAGS="$XCXXFLAGS $i"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Try to run this program, which should test various extensions
|
|
||||||
# and Posix functionality. If this program works, then everything
|
|
||||||
# should work. Hopefully.
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_TRY_LINK(
|
|
||||||
[
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
/* POSIX, C89 and C99: POSIX extends this header.
|
|
||||||
* For: kill(), killpg(), siginfo_t, sigset_t,
|
|
||||||
* struct sigaction, sigemptyset(), sigaction(),
|
|
||||||
* SIGIO and SIGWINCH. */
|
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
#ifdef HAVE_SIGINFO_H
|
|
||||||
/* Neither POSIX, C89 nor C99: Solaris-specific (others?).
|
|
||||||
* For: siginfo_t (also defined by signal.h when in
|
|
||||||
* POSIX/extensions mode). */
|
|
||||||
#include <siginfo.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_SYS_IOCTL_H
|
|
||||||
/* As above (under at least Linux and FreeBSD). */
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_TERMIOS_H
|
|
||||||
#include <termios.h>
|
|
||||||
#endif
|
|
||||||
],
|
|
||||||
[
|
|
||||||
/* Avert high-level optimisation, by making the program's
|
|
||||||
* return value depend on all tested identifiers. */
|
|
||||||
long ret = 0;
|
|
||||||
/* POSIX only: might be unhidden by _POSIX_C_SOURCE. */
|
|
||||||
struct sigaction sa;
|
|
||||||
sigset_t ss;
|
|
||||||
siginfo_t info;
|
|
||||||
ret += (long)(void *)&info + kill( 0, 0 ) +
|
|
||||||
sigaction( 0, &sa, 0 ) + sigemptyset( &ss );
|
|
||||||
/* Extended-POSIX: might be unhidden by _XOPEN_SOURCE. */
|
|
||||||
ret += killpg( 0, 0 );
|
|
||||||
/* Non-standard: might be hidden by the macros. */
|
|
||||||
{
|
|
||||||
struct winsize termsize;
|
|
||||||
ret += (long)(void *)&termsize;
|
|
||||||
ret += SIGWINCH + TIOCGWINSZ + SIGIO;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
],
|
|
||||||
local_cv_use__posix_c_source=yes,
|
|
||||||
local_cv_use__posix_c_source=no,
|
|
||||||
)
|
|
||||||
|
|
||||||
if test x$local_cv_use__posix_c_source = xyes; then
|
|
||||||
AC_MSG_RESULT( yes )
|
|
||||||
local_found_posix_switch=yes
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT( no )
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
#
|
|
||||||
# We didn't find any combination of switches that worked - revert to
|
|
||||||
# no switches and hope that the fallbacks work. A warning will be
|
|
||||||
# printed at the end of the configure script.
|
|
||||||
#
|
|
||||||
|
|
||||||
if test ! x$local_found_posix_switch = xyes; then
|
|
||||||
CXXFLAGS="$XCXXFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Detect nanoseconds fields in struct stat
|
# Detect nanoseconds fields in struct stat
|
||||||
#
|
#
|
||||||
|
AC_CHECK_MEMBERS([struct stat.st_ctime_nsec])
|
||||||
AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec])
|
AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec])
|
||||||
AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
|
AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
|
||||||
|
|
||||||
@@ -518,19 +313,77 @@ AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
|
|||||||
AC_STRUCT_DIRENT_D_TYPE
|
AC_STRUCT_DIRENT_D_TYPE
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check for presense of various functions used by fish
|
# Check for presence of various functions used by fish
|
||||||
#
|
#
|
||||||
|
|
||||||
AC_CHECK_FUNCS( wcsdup wcsndup wcslen wcscasecmp wcsncasecmp fwprintf )
|
AC_CHECK_FUNCS( wcsndup )
|
||||||
AC_CHECK_FUNCS( futimes wcwidth wcswidth wcstok fputwc fgetwc )
|
AC_CHECK_FUNCS( futimes )
|
||||||
AC_CHECK_FUNCS( wcstol wcslcat wcslcpy lrand48_r killpg )
|
AC_CHECK_FUNCS( wcslcpy lrand48_r killpg )
|
||||||
AC_CHECK_FUNCS( backtrace backtrace_symbols_fd sysconf getifaddrs )
|
AC_CHECK_FUNCS( backtrace_symbols getifaddrs )
|
||||||
AC_CHECK_FUNCS( futimens clock_gettime )
|
AC_CHECK_FUNCS( futimens clock_gettime )
|
||||||
|
AC_CHECK_FUNCS( getpwent flock )
|
||||||
|
AC_CHECK_FUNCS( dirfd )
|
||||||
|
|
||||||
AC_CHECK_DECL( [mkostemp], [ AC_CHECK_FUNCS([mkostemp]) ] )
|
AC_CHECK_DECL( [mkostemp], [ AC_CHECK_FUNCS([mkostemp]) ] )
|
||||||
|
|
||||||
|
dnl AC_CHECK_FUNCS uses C linkage, but sometimes (Solaris!) the behaviour is
|
||||||
|
dnl different with C++.
|
||||||
|
AC_MSG_CHECKING([for wcsdup])
|
||||||
|
AC_TRY_LINK( [ #include <wchar.h> ],
|
||||||
|
[ wchar_t* foo = wcsdup(L""); ],
|
||||||
|
[ AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_WCSDUP, 1, Define to 1 if you have the `wcsdup' function.)
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(no)],
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for std::wcsdup])
|
||||||
|
AC_TRY_LINK( [ #include <wchar.h> ],
|
||||||
|
[ wchar_t* foo = std::wcsdup(L""); ],
|
||||||
|
[ AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_STD__WCSDUP, 1, Define to 1 if you have the `std::wcsdup' function.)
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(no)],
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for wcscasecmp])
|
||||||
|
AC_TRY_LINK( [ #include <wchar.h> ],
|
||||||
|
[ int foo = wcscasecmp(L"", L""); ],
|
||||||
|
[ AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_WCSCASECMP, 1, Define to 1 if you have the `wcscasecmp' function.)
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(no)],
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for std::wcscasecmp])
|
||||||
|
AC_TRY_LINK( [ #include <wchar.h> ],
|
||||||
|
[ int foo = std::wcscasecmp(L"", L""); ],
|
||||||
|
[ AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_STD__WCSCASECMP, 1, Define to 1 if you have the `std::wcscasecmp' function.)
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(no)],
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for wcsncasecmp])
|
||||||
|
AC_TRY_LINK( [ #include <wchar.h> ],
|
||||||
|
[ int foo = wcsncasecmp(L"", L"", 0); ],
|
||||||
|
[ AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_WCSNCASECMP, 1, Define to 1 if you have the `wcsncasecmp' function.)
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(no)],
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for std::wcsncasecmp])
|
||||||
|
AC_TRY_LINK( [ #include <wchar.h> ],
|
||||||
|
[ int foo = std::wcsncasecmp(L"", L"", 0); ],
|
||||||
|
[ AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_STD__WCSNCASECMP, 1, Define to 1 if you have the `std::wcsncasecmp' function.)
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(no)],
|
||||||
|
)
|
||||||
|
|
||||||
if test x$local_gettext != xno; then
|
if test x$local_gettext != xno; then
|
||||||
AC_CHECK_FUNCS( gettext dcgettext )
|
AC_CHECK_FUNCS( gettext )
|
||||||
|
|
||||||
#
|
#
|
||||||
# The Makefile also needs to know if we have gettext, so it knows if
|
# The Makefile also needs to know if we have gettext, so it knows if
|
||||||
@@ -544,45 +397,6 @@ fi
|
|||||||
# features that Autoconf doesn't tell us about
|
# features that Autoconf doesn't tell us about
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Check if realpath accepts null for its second argument
|
|
||||||
#
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if realpath accepts null for its second argument])
|
|
||||||
AC_RUN_IFELSE(
|
|
||||||
[
|
|
||||||
AC_LANG_PROGRAM(
|
|
||||||
[
|
|
||||||
#include <limits.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
],
|
|
||||||
[
|
|
||||||
int status;
|
|
||||||
char *res;
|
|
||||||
res = realpath( "somefile", 0 );
|
|
||||||
status = !(res != 0 || errno == ENOENT);
|
|
||||||
exit( status );
|
|
||||||
]
|
|
||||||
)
|
|
||||||
],
|
|
||||||
[have_realpath_null=yes],
|
|
||||||
[have_realpath_null=no]
|
|
||||||
)
|
|
||||||
|
|
||||||
if test "$have_realpath_null" = yes; then
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE(
|
|
||||||
[HAVE_REALPATH_NULL],
|
|
||||||
[1],
|
|
||||||
[Define to 1 if realpath accepts null for its second argument.]
|
|
||||||
)
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check if struct winsize and TIOCGWINSZ exist
|
# Check if struct winsize and TIOCGWINSZ exist
|
||||||
#
|
#
|
||||||
@@ -616,41 +430,6 @@ AC_LINK_IFELSE(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# If we have a fwprintf in libc, test that it actually works. As of
|
|
||||||
# March 2006, it is broken under DragonFly BSD.
|
|
||||||
#
|
|
||||||
|
|
||||||
if test "$ac_cv_func_fwprintf" = yes; then
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if fwprintf is broken])
|
|
||||||
AC_RUN_IFELSE(
|
|
||||||
[
|
|
||||||
AC_LANG_PROGRAM(
|
|
||||||
[
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <locale.h>
|
|
||||||
#include <wchar.h>
|
|
||||||
],
|
|
||||||
[
|
|
||||||
setlocale( LC_ALL, "" );
|
|
||||||
fwprintf( stderr, L"%ls%ls", L"", L"fish:" );
|
|
||||||
]
|
|
||||||
)
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
AC_DEFINE([HAVE_BROKEN_FWPRINTF], [1], [Define to 1 one if the implemented fwprintf is broken])
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Check for _nl_msg_cat_cntr symbol
|
# Check for _nl_msg_cat_cntr symbol
|
||||||
AC_MSG_CHECKING([for _nl_msg_cat_cntr symbol])
|
AC_MSG_CHECKING([for _nl_msg_cat_cntr symbol])
|
||||||
AC_TRY_LINK(
|
AC_TRY_LINK(
|
||||||
@@ -658,6 +437,7 @@ AC_TRY_LINK(
|
|||||||
#if HAVE_LIBINTL_H
|
#if HAVE_LIBINTL_H
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <stdlib.h>
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
extern int _nl_msg_cat_cntr;
|
extern int _nl_msg_cat_cntr;
|
||||||
@@ -678,30 +458,6 @@ else
|
|||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for __environ symbol
|
|
||||||
AC_MSG_CHECKING([for __environ symbol])
|
|
||||||
AC_TRY_LINK(
|
|
||||||
[
|
|
||||||
#include <unistd.h>
|
|
||||||
],
|
|
||||||
[
|
|
||||||
extern char **__environ;
|
|
||||||
char **tmp = __environ;
|
|
||||||
exit(tmp!=0);
|
|
||||||
],
|
|
||||||
have___environ=yes,
|
|
||||||
have___environ=no
|
|
||||||
)
|
|
||||||
if test "$have___environ" = yes; then
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE(
|
|
||||||
[HAVE___ENVIRON],
|
|
||||||
[1],
|
|
||||||
[Define to 1 if the __environ symbol is exported.]
|
|
||||||
)
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for sys_errlist
|
# Check for sys_errlist
|
||||||
AC_MSG_CHECKING([for sys_errlist array])
|
AC_MSG_CHECKING([for sys_errlist array])
|
||||||
@@ -792,6 +548,34 @@ else
|
|||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check that threads actually work on Solaris
|
||||||
|
AC_MSG_CHECKING([for threadsafe errno])
|
||||||
|
AC_RUN_IFELSE(
|
||||||
|
[AC_LANG_PROGRAM([
|
||||||
|
#include <errno.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
void *thread1_func(void *p_arg)
|
||||||
|
{
|
||||||
|
errno = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
],[
|
||||||
|
errno = 0;
|
||||||
|
pthread_t t1;
|
||||||
|
pthread_create(&t1, NULL, thread1_func, NULL);
|
||||||
|
pthread_join(t1, NULL);
|
||||||
|
return errno;
|
||||||
|
])],
|
||||||
|
[AC_MSG_RESULT(yes)],
|
||||||
|
[
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
AC_MSG_FAILURE([errno is not threadsafe - check your compiler settings])
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(crosscompiling, skipped)]
|
||||||
|
)
|
||||||
|
|
||||||
pcre2_min_version=10.21
|
pcre2_min_version=10.21
|
||||||
EXTRA_PCRE2=
|
EXTRA_PCRE2=
|
||||||
AC_ARG_WITH(
|
AC_ARG_WITH(
|
||||||
@@ -815,7 +599,7 @@ if test "x$included_pcre2" != "xyes"; then
|
|||||||
XLIBS="$LIBS"
|
XLIBS="$LIBS"
|
||||||
LIBS="$LIBS "`$PCRE2_CONFIG --libs$WCHAR_T_BITS 2>/dev/null`
|
LIBS="$LIBS "`$PCRE2_CONFIG --libs$WCHAR_T_BITS 2>/dev/null`
|
||||||
XCXXFLAGS="$CXXFLAGS"
|
XCXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS"`$PCRE2_CONFIG --cflags`
|
CXXFLAGS="$CXXFLAGS "`$PCRE2_CONFIG --cflags`
|
||||||
|
|
||||||
# cheat a bit here. the exact library is determined by $WCHAR_T_BITS,
|
# cheat a bit here. the exact library is determined by $WCHAR_T_BITS,
|
||||||
# and so AC_CHECK_LIB won't work (can't use a variable as library name)
|
# and so AC_CHECK_LIB won't work (can't use a variable as library name)
|
||||||
@@ -912,11 +696,4 @@ AC_ARG_WITH([extra-confdir],
|
|||||||
AC_CONFIG_FILES([Makefile])
|
AC_CONFIG_FILES([Makefile])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
if test ! x$local_found_posix_switch = xyes; then
|
|
||||||
echo "Can't find a combination of switches to enable common extensions like detecting window size."
|
|
||||||
echo "Some fish features may be disabled."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "fish is now configured."
|
echo "fish is now configured."
|
||||||
echo "Use 'make' and 'make install' to build and install fish."
|
|
||||||
|
|
||||||
|
|||||||
2
debian/compat
vendored
2
debian/compat
vendored
@@ -1 +1 @@
|
|||||||
8
|
9
|
||||||
|
|||||||
22
debian/control
vendored
22
debian/control
vendored
@@ -2,8 +2,9 @@ Source: fish
|
|||||||
Section: shells
|
Section: shells
|
||||||
Priority: extra
|
Priority: extra
|
||||||
Maintainer: ridiculous_fish <corydoras@ridiculousfish.com>
|
Maintainer: ridiculous_fish <corydoras@ridiculousfish.com>
|
||||||
Uploaders: David Adam <zanchey@ucc.gu.uwa.edu.au>, Siteshwar Vashisht <siteshwar@gmail.com>
|
Uploaders: David Adam <zanchey@ucc.gu.uwa.edu.au>
|
||||||
Build-Depends: debhelper (>= 8.0.0), libncurses5-dev, autoconf, autotools-dev, dh-autoreconf, gettext
|
Build-Depends: debhelper (>= 9.0.0), libncurses5-dev, autoconf, autotools-dev, dh-autoreconf, gettext
|
||||||
|
# When libpcre2-dev is available on all supported Debian versions, add a dependency on that.
|
||||||
Standards-Version: 3.9.4
|
Standards-Version: 3.9.4
|
||||||
Homepage: http://fishshell.com/
|
Homepage: http://fishshell.com/
|
||||||
Vcs-Git: git://github.com/fish-shell/fish-shell.git
|
Vcs-Git: git://github.com/fish-shell/fish-shell.git
|
||||||
@@ -11,13 +12,26 @@ Vcs-Browser: https://github.com/fish-shell/fish-shell
|
|||||||
|
|
||||||
Package: fish
|
Package: fish
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends}, ${misc:Depends}, passwd (>= 4.0.3-10), bc, gettext-base, man-db
|
Depends: ${shlibs:Depends}, ${misc:Depends}, fish-common (= ${source:Version}), passwd (>= 4.0.3-10), bc, gettext-base, man-db
|
||||||
Recommends: python (>=2.6), xsel (>=1.2.0), xdg-utils
|
Recommends: xsel (>=1.2.0)
|
||||||
Description: friendly interactive shell
|
Description: friendly interactive shell
|
||||||
Fish is a command-line shell for modern systems, focusing on user-friendliness,
|
Fish is a command-line shell for modern systems, focusing on user-friendliness,
|
||||||
sensibility and discoverability in interactive use. The syntax is simple, but
|
sensibility and discoverability in interactive use. The syntax is simple, but
|
||||||
not POSIX compliant.
|
not POSIX compliant.
|
||||||
|
|
||||||
|
Package: fish-common
|
||||||
|
Architecture: all
|
||||||
|
Depends: ${misc:Depends}
|
||||||
|
Recommends: fish, python (>=2.6)
|
||||||
|
Suggests: xdg-utils
|
||||||
|
Replaces: fish (<= 2.1.1.dfsg-2)
|
||||||
|
Description: friendly interactive shell (architecture-independent files)
|
||||||
|
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 common fish files shared by all architectures.
|
||||||
|
|
||||||
Package: fish-dbg
|
Package: fish-dbg
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Section: debug
|
Section: debug
|
||||||
|
|||||||
56
debian/copyright
vendored
56
debian/copyright
vendored
@@ -1,6 +1,7 @@
|
|||||||
This work was packaged for Debian by David Adam <zanchey@ucc.gu.uwa.edu.au>
|
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
|
on Thu, 14 Jun 2012 20:33:34 +0800, based on work by James Vega
|
||||||
<jamessan@jamessan.com>.
|
<jamessan@jamessan.com>. Modifications from the downstream Debian maintainer,
|
||||||
|
Tristan Seligmann <mithrandi@debian.org>, have also been included.
|
||||||
|
|
||||||
It was downloaded from:
|
It was downloaded from:
|
||||||
|
|
||||||
@@ -37,11 +38,41 @@ Copyright (C) 2005-2008 Axel Liljencrantz
|
|||||||
On Debian systems, the complete text of the GNU General
|
On Debian systems, the complete text of the GNU General
|
||||||
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
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
|
Fish contains code from the PCRE2 library to support regular expressions. This
|
||||||
two functions strlcat and strlcpy, modified for use with wide
|
code, created by Philip Hazel, is distributed under the terms of the BSD
|
||||||
character strings.
|
license. Copyright © 1997-2015 University of Cambridge.
|
||||||
|
|
||||||
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
- Neither the name of the University of Cambridge nor the names of any
|
||||||
|
contributors may be used to endorse or promote products derived from this
|
||||||
|
software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
Fish also contains small amounts of code under the OpenBSD license, namely a
|
||||||
|
version of the function strlcpy, modified for use with wide character strings.
|
||||||
|
This code is copyrighted by Todd C. Miller (1998). It also contains code from
|
||||||
|
tmux, copyrighted by Nicholas Marriott <nicm@users.sourceforge.net> (2007), and
|
||||||
|
made available under an identical license.
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software for any
|
Permission to use, copy, modify, and distribute this software for any
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -55,20 +86,6 @@ character strings.
|
|||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
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
|
Fish contains code from the glibc library, namely the wcstok function
|
||||||
in fallback.c. This code is licensed under the LGPL.
|
in fallback.c. This code is licensed under the LGPL.
|
||||||
|
|
||||||
@@ -79,5 +96,6 @@ The Debian packaging is:
|
|||||||
|
|
||||||
Copyright (C) 2005 James Vega <jamessan@jamessan.com>
|
Copyright (C) 2005 James Vega <jamessan@jamessan.com>
|
||||||
Copyright (C) 2012 David Adam <zanchey@ucc.gu.uwa.edu.au>
|
Copyright (C) 2012 David Adam <zanchey@ucc.gu.uwa.edu.au>
|
||||||
|
Copyright (C) 2015 Tristan Seligmann <mithrandi@debian.org>
|
||||||
|
|
||||||
and is licensed under the GPL version 2, see above.
|
and is licensed under the GPL version 2, see above.
|
||||||
|
|||||||
@@ -9,4 +9,3 @@ Format: HTML
|
|||||||
Index: /usr/share/doc/fish/index.html
|
Index: /usr/share/doc/fish/index.html
|
||||||
Files: /usr/share/doc/fish/*.html
|
Files: /usr/share/doc/fish/*.html
|
||||||
|
|
||||||
|
|
||||||
1
debian/fish-common.docs
vendored
Normal file
1
debian/fish-common.docs
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
README.md
|
||||||
2
debian/fish-common.install
vendored
Normal file
2
debian/fish-common.install
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
debian/tmp/etc
|
||||||
|
debian/tmp/usr/share
|
||||||
4
debian/fish-common.lintian-overrides
vendored
Normal file
4
debian/fish-common.lintian-overrides
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# These directories are intentionally empty.
|
||||||
|
fish-common: package-contains-empty-directory usr/share/fish/vendor_completions.d/
|
||||||
|
fish-common: package-contains-empty-directory usr/share/fish/vendor_conf.d/
|
||||||
|
fish-common: package-contains-empty-directory usr/share/fish/vendor_functions.d/
|
||||||
1
debian/fish.install
vendored
Normal file
1
debian/fish.install
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
debian/tmp/usr/bin
|
||||||
0
debian/postinst → debian/fish.postinst
vendored
0
debian/postinst → debian/fish.postinst
vendored
0
debian/postrm → debian/fish.postrm
vendored
0
debian/postrm → debian/fish.postrm
vendored
0
debian/prerm → debian/fish.prerm
vendored
0
debian/prerm → debian/fish.prerm
vendored
10
debian/rules
vendored
10
debian/rules
vendored
@@ -4,20 +4,14 @@
|
|||||||
# Uncomment this to turn on verbose mode.
|
# Uncomment this to turn on verbose mode.
|
||||||
export DH_VERBOSE=1
|
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
|
dh $@ --with autotools-dev,autoreconf
|
||||||
|
|
||||||
override_dh_auto_install:
|
|
||||||
dh_auto_install --destdir=debian/fish
|
|
||||||
|
|
||||||
override_dh_installdocs:
|
override_dh_installdocs:
|
||||||
dh_installdocs --link-doc=fish
|
dh_installdocs --link-doc=fish
|
||||||
|
|
||||||
|
# Still needed until all platforms have debhelper 9.20151219
|
||||||
|
# Consider transitioning https://wiki.debian.org/DebugPackage
|
||||||
override_dh_strip:
|
override_dh_strip:
|
||||||
dh_strip --dbg-package=fish-dbg
|
dh_strip --dbg-package=fish-dbg
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Formatting guide for fish docs
|
# 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.
|
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 and 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.
|
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.
|
||||||
|
|
||||||
@@ -60,14 +60,10 @@ 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>`
|
`<span class="command">echo</span> <span class="argument">hello</span> <span class="argument">world</span>`
|
||||||
|
|
||||||
A man page version (`make share/man`):
|
And a man page version (`make share/man`):
|
||||||
|
|
||||||
__echo__ hello world
|
__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
|
### 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.
|
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.
|
||||||
@@ -154,21 +150,25 @@ The following can be used in \\fish blocks to render some fish scenarios. These
|
|||||||
|
|
||||||
### Custom formatting tags
|
### Custom formatting tags
|
||||||
|
|
||||||
- `<s>`: auto\<s\>suggestion\</s\>.
|
```html
|
||||||
- `<m>`: \<m\>Matched\</m\> items, such as tab completions.
|
<u>: <u>These words are underlined.</u>
|
||||||
- `<sm>`: Matched items \<sm\>searched\<sm\> for, like grep results.
|
<s>: auto<s>suggestion</s>.
|
||||||
- `<error>`: \<error\>This would be shown as an error.\</error\>
|
<m>: <m>Matched</m> items, such as tab completions.
|
||||||
- `<asis>`: \<asis\>This test will not be parsed for fish markup.\</asis\>
|
<sm>: Matched items <sm>searched</sm> for, like grep results.
|
||||||
- `<outp>`: \<outp\>This would be rendered as command/script output.\</outp\>
|
<bs>: Render the contents with a preceding backslash. Useful when presenting output.
|
||||||
- `<bs>`: Render the contents with a preceding backslash. Useful when presenting output.
|
<error>: <error>This would be shown as an error.</error>
|
||||||
- `{{` and `}}`: Required when wanting curly braces in regular expression example.
|
<asis>: <asis>This text will not be parsed for fish markup.</asis>
|
||||||
|
<outp>: <outp>This would be rendered as command/script output.</outp>
|
||||||
|
{{ and }}: Required when wanting curly braces in regular expression example.
|
||||||
|
```
|
||||||
|
|
||||||
### Prompts and cursors
|
### Prompts and cursors
|
||||||
|
|
||||||
- `>_`: Display a basic prompt.
|
```html
|
||||||
- `~>_`: Display a prompt with a the home directory as the current working directory.
|
>_: Display a basic prompt.
|
||||||
- `___` (3 underscores): Display a cursor.
|
~>_: Display a prompt with a the home directory as the current working directory.
|
||||||
|
___ (3 underscores): Display a cursor.
|
||||||
|
```
|
||||||
|
|
||||||
### Keyboard shortcuts: @key{} and @cursor_key{}
|
### Keyboard shortcuts: @key{} and @cursor_key{}
|
||||||
|
|
||||||
@@ -250,15 +250,4 @@ end
|
|||||||
# NOT PORTABLE! Paths would be need to be updated on other systems.
|
# 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)
|
#### Author: Mark Griffiths [@GitHub](https://github.com/MarkGriffiths)
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
\subsection abbr-synopsis Synopsis
|
\subsection abbr-synopsis Synopsis
|
||||||
\fish{synopsis}
|
\fish{synopsis}
|
||||||
abbr -a word phrase...
|
abbr --add word phrase...
|
||||||
abbr -s
|
abbr --rename word new_word
|
||||||
abbr -l
|
abbr --show
|
||||||
abbr -e word
|
abbr --list
|
||||||
|
abbr --erase word
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection abbr-description Description
|
\subsection abbr-description Description
|
||||||
@@ -14,11 +15,26 @@ abbr -e word
|
|||||||
|
|
||||||
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 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.
|
Abbreviations are stored in a variable named `fish_user_abbreviations`. This is automatically created as a universal variable the first time an abbreviation is created. If you want your abbreviations to be private to a particular fish session you can put the following in your *~/.config/fish/config.fish* file before you define your first abbrevation:
|
||||||
|
|
||||||
|
\fish
|
||||||
|
if status --is-interactive
|
||||||
|
set -g fish_user_abbreviations
|
||||||
|
abbr --add first 'echo my first abbreviation'
|
||||||
|
abbr --add second 'echo my second abbreviation'
|
||||||
|
# etcetera
|
||||||
|
end
|
||||||
|
\endfish
|
||||||
|
|
||||||
|
You can create abbreviations directly on the command line and they will be saved automatically and made visible to other fish sessions if `fish_user_abbreviations` is a universal variable. If you keep the variable as universal, `abbr --add` statements in <a href="tutorial.html#tut_startup">config.fish</a> will do nothing but slow down startup slightly.
|
||||||
|
|
||||||
|
\subsection abbr-options Options
|
||||||
|
|
||||||
The following parameters are available:
|
The following parameters are available:
|
||||||
|
|
||||||
- `-a WORD PHRASE` or `--add WORD PHRASE` Adds a new abbreviation, where WORD will be expanded to PHRASE.
|
- `-a WORD PHRASE` or `--add WORD PHRASE` Adds a new abbreviation, causing WORD to be expanded to PHRASE.
|
||||||
|
|
||||||
|
- `-r WORD NEW_WORD` or `--rename WORD NEW_WORD` Renames an abbreviation, from WORD to NEW_WORD.
|
||||||
|
|
||||||
- `-s` or `--show` Show all abbreviated words and their expanded phrases in a manner suitable for export and import.
|
- `-s` or `--show` Show all abbreviated words and their expanded phrases in a manner suitable for export and import.
|
||||||
|
|
||||||
@@ -35,6 +51,11 @@ abbr -a gco git checkout
|
|||||||
\endfish
|
\endfish
|
||||||
Add a new abbreviation where `gco` will be replaced with `git checkout`.
|
Add a new abbreviation where `gco` will be replaced with `git checkout`.
|
||||||
|
|
||||||
|
\fish
|
||||||
|
abbr -r gco gch
|
||||||
|
\endfish
|
||||||
|
Renames an existing abbreviation from `gco` to `gch`.
|
||||||
|
|
||||||
\fish
|
\fish
|
||||||
abbr -e gco
|
abbr -e gco
|
||||||
\endfish
|
\endfish
|
||||||
|
|||||||
@@ -2,39 +2,34 @@
|
|||||||
|
|
||||||
\subsection alias-synopsis Synopsis
|
\subsection alias-synopsis Synopsis
|
||||||
\fish{synopsis}
|
\fish{synopsis}
|
||||||
|
alias
|
||||||
alias NAME DEFINITION
|
alias NAME DEFINITION
|
||||||
alias NAME=DEFINITION
|
alias NAME=DEFINITION
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection alias-description Description
|
\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>.
|
`alias` is a simple wrapper for the `function` builtin, which creates a function wrapping a command. It has similar syntax to POSIX shell `alias`. 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`.
|
`fish` marks functions that have been created by `alias` by including the command used to create them in the function description. You can list `alias`-created functions by running `alias` without arguments. They must be erased using `functions -e`.
|
||||||
|
|
||||||
- `NAME` is the name of the alias
|
- `NAME` is the name of the alias
|
||||||
|
|
||||||
- `DEFINITION` is the actual command to execute. The string `$argv` will be appended.
|
- `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.
|
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 at the command line, _even inside quoted parts_.
|
||||||
|
|
||||||
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
|
\subsection alias-example Example
|
||||||
|
|
||||||
The following code will create `rmi`, which runs `rm` with additional arguments on every invocation.
|
The following code will create `rmi`, which runs `rm` with additional arguments on every invocation.
|
||||||
|
|
||||||
\fish
|
\fish
|
||||||
alias rmi "rm -i"
|
alias rmi="rm -i"
|
||||||
|
|
||||||
# This is equivalent to entering the following function:
|
# This is equivalent to entering the following function:
|
||||||
|
function rmi --wraps rm --description 'alias rmi=rm -i'
|
||||||
function rmi
|
|
||||||
rm -i $argv
|
rm -i $argv
|
||||||
end
|
end
|
||||||
|
|
||||||
# This needs to have the spaces escaped or "Chrome.app..." will be seen as an argument to "/Applications/Google":
|
# 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'
|
alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome banana'
|
||||||
\endfish
|
\endfish
|
||||||
|
|||||||
@@ -9,12 +9,10 @@ COMMAND1; and COMMAND2
|
|||||||
|
|
||||||
`and` is used to execute a command if the current exit status (as set by the previous command) is 0.
|
`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
|
`and` statements may be used as part of the condition in an <a href="#if">`if`</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.
|
||||||
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.
|
`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
|
\subsection and-example Example
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 12 KiB |
@@ -71,6 +71,8 @@ The following special input functions are available:
|
|||||||
|
|
||||||
- `backward-word`, move one word to the left
|
- `backward-word`, move one word to the left
|
||||||
|
|
||||||
|
- `beginning-of-buffer`, moves to the beginning of the buffer, i.e. the start of the first line
|
||||||
|
|
||||||
- `beginning-of-history`, move to the beginning of the history
|
- `beginning-of-history`, move to the beginning of the history
|
||||||
|
|
||||||
- `beginning-of-line`, move to the beginning of the line
|
- `beginning-of-line`, move to the beginning of the line
|
||||||
@@ -81,12 +83,14 @@ The following special input functions are available:
|
|||||||
|
|
||||||
- `complete`, guess the remainder of the current token
|
- `complete`, guess the remainder of the current token
|
||||||
|
|
||||||
- `complete-and-search`, invoke the searchable pager on completion options
|
- `complete-and-search`, invoke the searchable pager on completion options (for convenience, this also moves backwards in the completion pager)
|
||||||
|
|
||||||
- `delete-char`, delete one character to the right of the cursor
|
- `delete-char`, delete one character to the right of the cursor
|
||||||
|
|
||||||
- `downcase-word`, make the current word lowercase
|
- `downcase-word`, make the current word lowercase
|
||||||
|
|
||||||
|
- `end-of-buffer`, moves to the end of the buffer, i.e. the end of the first line
|
||||||
|
|
||||||
- `end-of-history`, move to the end of the history
|
- `end-of-history`, move to the end of the history
|
||||||
|
|
||||||
- `end-of-line`, move to the end of the line
|
- `end-of-line`, move to the end of the line
|
||||||
@@ -131,7 +135,7 @@ The following special input functions are available:
|
|||||||
\subsection bind-example Examples
|
\subsection bind-example Examples
|
||||||
|
|
||||||
\fish
|
\fish
|
||||||
bind \cd 'exit'
|
bind <asis>\\cd</asis> 'exit'
|
||||||
\endfish
|
\endfish
|
||||||
Causes `fish` to exit when @key{Control,D} is pressed.
|
Causes `fish` to exit when @key{Control,D} is pressed.
|
||||||
|
|
||||||
@@ -142,7 +146,7 @@ Performs a history search when the @key{Page Up} key is pressed.
|
|||||||
|
|
||||||
\fish
|
\fish
|
||||||
set -g fish_key_bindings fish_vi_key_bindings
|
set -g fish_key_bindings fish_vi_key_bindings
|
||||||
bind -M insert \cc kill-whole-line force-repaint
|
bind -M insert \\cc kill-whole-line force-repaint
|
||||||
\endfish
|
\endfish
|
||||||
Turns on Vi key bindings and rebinds @key{Control,C} to clear the input line.
|
Turns on Vi key bindings and rebinds @key{Control,C} to clear the input line.
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
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
|
|
||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 109 KiB |
@@ -13,7 +13,7 @@ The following options are available:
|
|||||||
|
|
||||||
- `-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`.
|
- `-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`.
|
||||||
|
|
||||||
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.
|
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. Additionally passing a `-q` or `--quiet` option prevents any paths from being printed, like the `type -q`, for testing only the exit status.
|
||||||
|
|
||||||
For basic compatibility with POSIX `command`, the `-v` flag is recognized as an alias for `-s`.
|
For basic compatibility with POSIX `command`, the `-v` flag is recognized as an alias for `-s`.
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ the fish manual.
|
|||||||
|
|
||||||
- `-x` or `--exclusive` implies both `-r` and `-f`.
|
- `-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).
|
- `-w WRAPPED_COMMAND` or `--wraps=WRAPPED_COMMAND` causes the specified command to inherit completions from the wrapped command (See below 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.
|
- `-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.
|
||||||
|
|
||||||
@@ -61,6 +61,10 @@ the fish manual.
|
|||||||
|
|
||||||
- `-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.
|
- `-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.
|
||||||
|
|
||||||
|
- `-A` and `--authoritative` no longer do anything and are silently ignored.
|
||||||
|
|
||||||
|
- `-u` and `--unauthoritative` no longer do anything and are silently ignored.
|
||||||
|
|
||||||
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:
|
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`').
|
- 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`').
|
||||||
|
|||||||
@@ -55,6 +55,6 @@ echo 'Hello World'
|
|||||||
Print hello world to stdout
|
Print hello world to stdout
|
||||||
|
|
||||||
\fish
|
\fish
|
||||||
echo -e 'Top\nBottom'
|
echo -e 'Top\\nBottom'
|
||||||
\endfish
|
\endfish
|
||||||
Print Top and Bottom on separate lines, using an escape sequence
|
Print Top and Bottom on separate lines, using an escape sequence
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
- <a href='#faq-greeting'>How do I change the greeting message?</a>
|
- <a href='#faq-greeting'>How do I change the greeting message?</a>
|
||||||
- <a href='#faq-history'>Why doesn't history substitution ("!$" etc.) work?</a>
|
- <a href='#faq-history'>Why doesn't history substitution ("!$" etc.) work?</a>
|
||||||
- <a href='#faq-uninstalling'>How do I uninstall fish?</a>
|
- <a href='#faq-uninstalling'>How do I uninstall fish?</a>
|
||||||
|
- <a href='#faq-third-party'>Where can I find extra tools for fish?</a>
|
||||||
|
|
||||||
\htmlonly[block]
|
\htmlonly[block]
|
||||||
</div>
|
</div>
|
||||||
@@ -220,6 +221,18 @@ rm -f fish fish_indent
|
|||||||
|
|
||||||
Fish reserves the <a href="http://www.unicode.org/faq/private_use.html">Unicode private-use character range</a> from U+F600 thru U+F73F for internal use. Any attempt to feed characters in that range to fish will result in them being replaced by the Unicode "replacement character" U+FFFD. This includes both interactive input as well as any file read by fish (but not programs run by fish).
|
Fish reserves the <a href="http://www.unicode.org/faq/private_use.html">Unicode private-use character range</a> from U+F600 thru U+F73F for internal use. Any attempt to feed characters in that range to fish will result in them being replaced by the Unicode "replacement character" U+FFFD. This includes both interactive input as well as any file read by fish (but not programs run by fish).
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
\section faq-third-party Where can I find extra tools for fish?
|
||||||
|
|
||||||
|
The fish user community extends fish in unique and useful ways via scripts that aren't always appropriate for bundling with the fish package. Typically because they solve a niche problem unlikely to appeal to a broad audience. You can find those extensions, including prompts, themes and useful functions, in various third-party repositories. These include:
|
||||||
|
|
||||||
|
- <a href="https://github.com/fisherman/fisherman">Fisherman</a>
|
||||||
|
- <a href="https://github.com/tuvistavie/fundle">Fundle</a>
|
||||||
|
- <a href="https://github.com/oh-my-fish/oh-my-fish">Oh My Fish</a>
|
||||||
|
- <a href="https://github.com/justinmayer/tacklebox">Tacklebox</a>
|
||||||
|
|
||||||
|
This is not an exhaustive list and the fish project has no opinion regarding the merits of the repositories listed above or the scripts found therein. We mention these only because you may find within them a solution to a need you have such as supporting the `&&` and `||` operators or improved integration with other tools that you use.
|
||||||
|
|
||||||
\htmlonly[block]
|
\htmlonly[block]
|
||||||
</div>
|
</div>
|
||||||
\endhtmlonly
|
\endhtmlonly
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ fg [PID]
|
|||||||
|
|
||||||
`fg` brings the specified <a href="index.html#syntax-job-control">job</a> to the foreground, resuming it if it is stopped. While a foreground job is executed, fish is suspended. If no job is specified, the last job to be used is put in the foreground. If PID is specified, the job with the specified group ID is put in the foreground.
|
`fg` brings the specified <a href="index.html#syntax-job-control">job</a> to the foreground, resuming it if it is stopped. While a foreground job is executed, fish is suspended. If no job is specified, the last job to be used is put in the foreground. If PID is specified, the job with the specified group ID is put in the foreground.
|
||||||
|
|
||||||
The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>.
|
The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>. Fish is capable of expanding far more than just the numeric PID, including referencing itself and finding PIDs by name.
|
||||||
|
|
||||||
|
|
||||||
\subsection fg-example Example
|
\subsection fg-example Example
|
||||||
|
|||||||
@@ -25,4 +25,6 @@ The following options are available:
|
|||||||
|
|
||||||
- `-v` or `--version` display version and exit
|
- `-v` or `--version` display version and exit
|
||||||
|
|
||||||
|
- `-D` or `--debug-stack-frames=DEBUG_LEVEL` specify how many stack frames to display when debug messages are written. The default is zero. A value of 3 or 4 is usually sufficient to gain insight into how a given debug call was reached but you can specify a value up to 128.
|
||||||
|
|
||||||
The fish exit status is generally the exit status of the last foreground command. If fish is exiting because of a parse error, the exit status is 127.
|
The fish exit status is generally the exit status of the last foreground command. If fish is exiting because of a parse error, the exit status is 127.
|
||||||
|
|||||||
@@ -7,16 +7,22 @@ fish_indent [OPTIONS]
|
|||||||
|
|
||||||
\subsection fish_indent-description Description
|
\subsection fish_indent-description Description
|
||||||
|
|
||||||
`fish_indent` is used to indent a piece of fish code. `fish_indent` reads commands from standard input and outputs them to standard output.
|
`fish_indent` is used to indent a piece of fish code. `fish_indent` reads commands from standard input and outputs them to standard output or a specified file.
|
||||||
|
|
||||||
The following options are available:
|
The following options are available:
|
||||||
|
|
||||||
- `-d` or `--dump` dumps information about the parsed fish commands to stderr
|
- `-w` or `--write` indents a specified file and immediately writes to that file.
|
||||||
|
|
||||||
- `-i` or `--no-indent` do not indent commands; only reformat to one job per line
|
- `-i` or `--no-indent` do not indent commands; only reformat to one job per line.
|
||||||
|
|
||||||
- `-v` or `--version` displays the current fish version and then exits
|
- `-v` or `--version` displays the current fish version and then exits.
|
||||||
|
|
||||||
- `--ansi` colorizes the output using ANSI escape sequences, appropriate for the current $TERM, using the colors defined in the environment (such as `$fish_color_command`).
|
- `--ansi` colorizes the output using ANSI escape sequences, appropriate for the current $TERM, using the colors defined in the environment (such as `$fish_color_command`).
|
||||||
|
|
||||||
- `--html` outputs HTML, which supports syntax highlighting if the appropriate CSS is defined. The CSS class names are the same as the variable names, such as `fish_color_command`
|
- `--html` outputs HTML, which supports syntax highlighting if the appropriate CSS is defined. The CSS class names are the same as the variable names, such as `fish_color_command`.
|
||||||
|
|
||||||
|
- `-d` or `--debug-level=DEBUG_LEVEL` enables debug output and specifies a verbosity level (like `fish -d`). Defaults to 0.
|
||||||
|
|
||||||
|
- `-D` or `--debug-stack-frames=DEBUG_LEVEL` specify how many stack frames to display when debug messages are written. The default is zero. A value of 3 or 4 is usually sufficient to gain insight into how a given debug call was reached but you can specify a value up to 128.
|
||||||
|
|
||||||
|
- `--dump-parse-tree` dumps information about the parsed statements to stderr. This is likely to be of interest only to people working on the fish source code.
|
||||||
|
|||||||
33
doc_src/fish_key_reader.txt
Normal file
33
doc_src/fish_key_reader.txt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
\section fish_key_reader fish_key_reader - explore what characters keyboard keys send
|
||||||
|
|
||||||
|
\subsection fish_key_reader-synopsis Synopsis
|
||||||
|
\fish{synopsis}
|
||||||
|
fish_key_reader [OPTIONS]
|
||||||
|
\endfish
|
||||||
|
|
||||||
|
\subsection fish_key_reader-description Description
|
||||||
|
|
||||||
|
`fish_key_reader` is used to study input received from the terminal and can help with key binds. The program is interactive and works on standard input. Individual characters themselves and their hexadecimal values are displayed.
|
||||||
|
|
||||||
|
The tool will write an example `bind` command matching the character sequence captured to stdout. If the character sequence matches a special key name (see `bind --key-names`), both `bind CHARS ...` and `bind -k KEYNAME ...` usage will be shown. Additional details about the characters received, such as the delay between chars, are written to stderr.
|
||||||
|
|
||||||
|
The following options are available:
|
||||||
|
|
||||||
|
- `-c` or `--continuous` begins a session where multiple key sequences can be inspected. By default the program exits after capturing a single key sequence.
|
||||||
|
|
||||||
|
- `-d` or `--debug-level=DEBUG_LEVEL` enables debug output and specifies a verbosity level (like `fish -d`). Defaults to 0.
|
||||||
|
|
||||||
|
- `-D` or `--debug-stack-frames=DEBUG_LEVEL` specify how many stack frames to display when debug messages are written. The default is zero. A value of 3 or 4 is usually sufficient to gain insight into how a given debug call was reached but you can specify a value up to 128.
|
||||||
|
|
||||||
|
- `-h` or `--help` prints usage information.
|
||||||
|
|
||||||
|
\subsection fish_key_reader-usage-notes Usage Notes
|
||||||
|
|
||||||
|
The delay in milliseconds since the previous character was received is included in the diagnostic information written to stderr. This information may be useful to determine the optimal `fish_escape_delay_ms` setting or learn the amount of lag introduced by tools like `ssh`, `mosh` or `tmux`.
|
||||||
|
|
||||||
|
`fish_key_reader` intentionally disables handling of many signals. To terminate `fish_key_reader` in `--continuous` mode do:
|
||||||
|
|
||||||
|
- press `Ctrl-C` twice, or
|
||||||
|
- press `Ctrl-D` twice, or
|
||||||
|
- type `exit`, or
|
||||||
|
- type `quit`
|
||||||
11
doc_src/fish_mode_prompt.txt
Normal file
11
doc_src/fish_mode_prompt.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
\section fish_mode_prompt fish_mode_prompt - define the appearance of the mode indicator
|
||||||
|
|
||||||
|
\subsection fish_mode_prompt-synopsis Synopsis
|
||||||
|
|
||||||
|
fish_mode_prompt will output the mode indicator for use in vi-mode.
|
||||||
|
|
||||||
|
\subsection fish_mode_prompt-description Description
|
||||||
|
|
||||||
|
The output of `fish_mode_prompt` will be displayed in the mode indicator position to the left of the regular prompt.
|
||||||
|
|
||||||
|
Multiple lines are not supported in `fish_mode_prompt`.
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
\section fish_realpath fish_realpath - Convert a path to an absolute path without symlinks
|
|
||||||
|
|
||||||
\subsection fish_realpath-synopsis Synopsis
|
|
||||||
\fish{synopsis}
|
|
||||||
fish_realpath path
|
|
||||||
\endfish
|
|
||||||
|
|
||||||
\subsection fish_realpath-description Description
|
|
||||||
|
|
||||||
This is an implementation of the external realpath command that doesn't support any options. It's meant to be used only by scripts which need to be portable. In general scripts shouldn't invoke this directly. They should just use `realpath` which will fallback to this builtin if an external command cannot be found.
|
|
||||||
|
|
||||||
If the path is invalid no translated path will be written to stdout and an error will be reported.
|
|
||||||
This implementation behaves like the GNU command being invoked with `--canonicalize-existing`.
|
|
||||||
@@ -7,4 +7,6 @@ fish_vi_mode
|
|||||||
|
|
||||||
\subsection fish_vi_mode-description Description
|
\subsection fish_vi_mode-description Description
|
||||||
|
|
||||||
|
This function is deprecated. Please call `fish_vi_key_bindings directly`
|
||||||
|
|
||||||
`fish_vi_mode` enters a vi-like command editing mode. To always start in vi mode, add `fish_vi_mode` to your `config.fish` file.
|
`fish_vi_mode` enters a vi-like command editing mode. To always start in vi mode, add `fish_vi_mode` to your `config.fish` file.
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ The following options are available:
|
|||||||
|
|
||||||
- `-S` or `--no-scope-shadowing` allows the function to access the variables of calling functions. Normally, any variables inside the function that have the same name as variables from the calling function are "shadowed", and their contents is independent of the calling function.
|
- `-S` or `--no-scope-shadowing` allows the function to access the variables of calling functions. Normally, any variables inside the function that have the same name as variables from the calling function are "shadowed", and their contents is independent of the calling function.
|
||||||
|
|
||||||
- `-V` or `--inherit-variable NAME` snapshots the value of the variable `NAME` and defines a local variable with that same name and value when the function is executed.
|
- `-V` or `--inherit-variable NAME` snapshots the value of the variable `NAME` and defines a local variable with that same name and value when the function is defined. This is similar to a closure in other languages like Python but a bit different. Note the word "snapshot" in the first sentence. If you change the value of the variable after defining the function, even if you do so in the same scope (typically another function) the new value will not be used by the function you just created using this option. See the `function notify` example below for how this might be used.
|
||||||
|
|
||||||
If the user enters any additional arguments after the function, they are inserted into the environment <a href="index.html#variables-arrays">variable array</a> `$argv`. If the `--argument-names` option is provided, the arguments are also assigned to names specified in that option.
|
If the user enters any additional arguments after the function, they are inserted into the environment <a href="index.html#variables-arrays">variable array</a> `$argv`. If the `--argument-names` option is provided, the arguments are also assigned to names specified in that option.
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ If a `SECTION` is specified, the help for that command is shown.
|
|||||||
|
|
||||||
If the BROWSER environment variable is set, it will be used to display the documentation. Otherwise, fish will search for a suitable browser.
|
If the BROWSER environment variable is set, it will be used to display the documentation. Otherwise, fish will search for a suitable browser.
|
||||||
|
|
||||||
|
If you prefer to use a different browser (other than as described above) for fish help, you can set the fish_help_browser variable. This variable may be set as an array, where the first element is the browser command and the rest are browser options.
|
||||||
|
|
||||||
Note that most builtin commands display their help in the terminal when given the `--help` option.
|
Note that most builtin commands display their help in the terminal when given the `--help` option.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,33 +2,49 @@
|
|||||||
|
|
||||||
\subsection history-synopsis Synopsis
|
\subsection history-synopsis Synopsis
|
||||||
\fish{synopsis}
|
\fish{synopsis}
|
||||||
history ( --merge | --save | --clear )
|
history search [ --show-time ] [ --case-sensitive ] [ --exact | --prefix | --contains ] [ --max=n ] [ --null ] [ "search string"... ]
|
||||||
history ( --search | --delete ) [ --prefix "prefix string" | --contains "search string" ]
|
history delete [ --show-time ] [ --case-sensitive ] [ --exact | --prefix | --contains ] "search string"...
|
||||||
|
history merge
|
||||||
|
history save
|
||||||
|
history clear
|
||||||
|
history ( -h | --help )
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection history-description Description
|
\subsection history-description Description
|
||||||
|
|
||||||
`history` is used to list, search and delete the history of commands used.
|
`history` is used to search, delete, and otherwise manipulate the history of interactive commands.
|
||||||
|
|
||||||
|
The following operations (sub-commands) are available:
|
||||||
|
|
||||||
|
- `search` returns history items matching the search string. If no search string is provided it returns all history items. This is the default operation if no other operation is specified. You only have to explicitly say `history search` if you wish to search for one of the subcommands. The `--contains` search option will be used if you don't specify a different search option. Entries are ordered newest to oldest. If stdout is attached to a tty the output will be piped through your pager by the history function. The history builtin simply writes the results to stdout.
|
||||||
|
|
||||||
|
- `delete` deletes history items. Without the `--prefix` or `--contains` options, the exact match of the specified text will be deleted. If you don't specify `--exact` a prompt will be displayed before any items are deleted asking you which entries are to be deleted. You can enter the word "all" to delete all matching entries. You can enter a single ID (the number in square brackets) to delete just that single entry. You can enter more than one ID separated by a space to delete multiple entries. Just press [enter] to not delete anything. Note that the interactive delete behavior is a feature of the history function. The history builtin only supports `--exact --case-sensitive` deletion.
|
||||||
|
|
||||||
|
- `merge` immediately incorporates history changes from other sessions. Ordinarily `fish` ignores history changes from sessions started after the current one. This command applies those changes immediately.
|
||||||
|
|
||||||
|
- `save` immediately writes all changes to the history file. The shell automatically saves the history file; this option is provided for internal use and should not normally need to be used by the user.
|
||||||
|
|
||||||
|
- `clear` clears the history file. A prompt is displayed before the history is erased asking you to confirm you really want to clear all history unless `builtin history` is used.
|
||||||
|
|
||||||
The following options are available:
|
The following options are available:
|
||||||
- `--merge` immediately incorporates history changes from other sessions. Ordinarily `fish` ignores history changes from sessions started after the current one. This command applies those changes immediately.
|
|
||||||
|
|
||||||
- `--save` saves all changes in the history file. The shell automatically saves the history file; this option is provided for internal use.
|
These flags can appear before or immediately after one of the sub-commands listed above.
|
||||||
|
|
||||||
- `--clear` clears the history file. A prompt is displayed before the history is erased.
|
- `-C` or `--case-sensitive` does a case-sensitive search. The default is case-insensitive. Note that prior to fish 2.4.0 the default was case-sensitive.
|
||||||
|
|
||||||
- `--search` returns history items in keeping with the `--prefix` or `--contains` options.
|
- `-c` or `--contains` searches or deletes items in the history that contain the specified text string. This is the default for the `--search` flag. This is not currently supported by the `--delete` flag.
|
||||||
|
|
||||||
- `--delete` deletes history items.
|
- `-e` or `--exact` searches or deletes items in the history that exactly match the specified text string. This is the default for the `--delete` flag. Note that the match is case-insensitive by default. If you really want an exact match, including letter case, you must use the `-C` or `--case-sensitive` flag.
|
||||||
|
|
||||||
- `--prefix` searches or deletes items in the history that begin with the specified text string.
|
- `-p` or `--prefix` searches or deletes items in the history that begin with the specified text string. This is not currently supported by the `--delete` flag.
|
||||||
|
|
||||||
- `--contains` searches or deletes items in the history that contain the specified text string.
|
- `-t` or `--show-time` prepends each history entry with the date and time the entry was recorded . By default it uses the strftime format `# %c%n`. You can specify another format; e.g., `--show-time='%Y-%m-%d %H:%M:%S '` or `--show-time='%a%I%p'`. The short option, `-t` doesn't accept a stftime format string; it only uses the default format. Any strftime format is allowed, including `%s` to get the raw UNIX seconds since the epoch. Note that `--with-time` is also allowed but is deprecated and will be removed at a future date.
|
||||||
|
|
||||||
If `--search` is specified without `--contains` or `--prefix`, `--contains` will be assumed.
|
- `-z` or `--null` causes history entries written by the search operations to be terminated by a NUL character rather than a newline. This allows the output to be processed by `read -z` to correctly handle multiline history entries.
|
||||||
|
|
||||||
If `--delete` is specified without `--contains` or `--prefix`, only a history item which exactly matches the parameter will be erased. No prompt will be given. If `--delete` is specified with either of these parameters, an interactive prompt will be displayed before any items are deleted.
|
- `-<number>` `-n <number>` or `--max=<number>` limits the matched history items to the first "n" matching entries. This is only valid for `history search`.
|
||||||
|
|
||||||
|
- `-h` or `--help` display help for this command.
|
||||||
|
|
||||||
\subsection history-examples Example
|
\subsection history-examples Example
|
||||||
|
|
||||||
@@ -40,5 +56,12 @@ history --search --contains "foo"
|
|||||||
# Outputs a list of all previous commands containing the string "foo".
|
# Outputs a list of all previous commands containing the string "foo".
|
||||||
|
|
||||||
history --delete --prefix "foo"
|
history --delete --prefix "foo"
|
||||||
# Interactively deletes the record of previous commands which start with "foo".
|
# Interactively deletes commands which start with "foo" from the history.
|
||||||
|
# You can select more than one entry by entering their IDs seperated by a space.
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
|
\subsection history-notes Notes
|
||||||
|
|
||||||
|
If you specify both `--prefix` and `--contains` the last flag seen is used.
|
||||||
|
|
||||||
|
Note that for backwards compatibility each subcommand can also be specified as a long option. For example, rather than `history search` you can type `history --search`. Those long options are deprecated and will be removed in a future release.
|
||||||
|
|||||||
@@ -12,11 +12,10 @@ end
|
|||||||
|
|
||||||
`if` will execute the command `CONDITION`. If the condition's exit status is 0, the commands `COMMANDS_TRUE` will execute. If the exit status is not 0 and `else` is given, `COMMANDS_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 the exit status is not 0 and `else` is given, `COMMANDS_FALSE` will be executed.
|
||||||
|
|
||||||
You can use <a href="#and">`and`</a> or <a href="#and">`or`</a> in the condition. See the second example below.
|
You can use <a href="#and">`and`</a> or <a href="#or">`or`</a> in the condition. See the second example below.
|
||||||
|
|
||||||
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.
|
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 if-example Example
|
\subsection if-example Example
|
||||||
|
|
||||||
The following code will print `foo.txt exists` if the file foo.txt exists and is a regular file, otherwise it will print `bar.txt exists` if the file bar.txt exists and is a regular file, otherwise it will print `foo.txt and bar.txt do not exist`.
|
The following code will print `foo.txt exists` if the file foo.txt exists and is a regular file, otherwise it will print `bar.txt exists` if the file bar.txt exists and is a regular file, otherwise it will print `foo.txt and bar.txt do not exist`.
|
||||||
|
|||||||
@@ -146,6 +146,8 @@ An example of a file redirection is `echo hello > output.txt`, which directs the
|
|||||||
- To append standard output to a file, write `>>DESTINATION_FILE`
|
- To append standard output to a file, write `>>DESTINATION_FILE`
|
||||||
- To append standard error to a file, write `^^DESTINATION_FILE`
|
- To append standard error to a file, write `^^DESTINATION_FILE`
|
||||||
|
|
||||||
|
- To not overwrite ("clobber") an existing file, write '>?DESTINATION' or '^?DESTINATION'
|
||||||
|
|
||||||
`DESTINATION` can be one of the following:
|
`DESTINATION` can be one of the following:
|
||||||
|
|
||||||
- A filename. The output will be written to the specified file.
|
- A filename. The output will be written to the specified file.
|
||||||
@@ -238,6 +240,8 @@ There are a few important things that need to be noted about aliases:
|
|||||||
|
|
||||||
- If the alias has the same name as the aliased command, it is necessary to prefix the call to the program with `command` in order to tell fish that the function should not call itself, but rather a command with the same name. Failing to do so will cause infinite recursion bugs.
|
- If the alias has the same name as the aliased command, it is necessary to prefix the call to the program with `command` in order to tell fish that the function should not call itself, but rather a command with the same name. Failing to do so will cause infinite recursion bugs.
|
||||||
|
|
||||||
|
- Autoloading isn't applicable to aliases. Since, by definition, the function is created at the time the alias command is executed. You cannot autoload aliases.
|
||||||
|
|
||||||
To easily create a function of this form, you can use the <a href="commands.html#alias">alias</a> command.
|
To easily create a function of this form, you can use the <a href="commands.html#alias">alias</a> command.
|
||||||
|
|
||||||
|
|
||||||
@@ -261,6 +265,8 @@ It is very important that function definition files only contain the definition
|
|||||||
|
|
||||||
Autoloading also won't work for <a href=#event>event handlers</a>, since fish cannot know that a function is supposed to be executed when an event occurs when it hasn't yet loaded the function. See the <a href=#event>event handlers</a> section for more information.
|
Autoloading also won't work for <a href=#event>event handlers</a>, since fish cannot know that a function is supposed to be executed when an event occurs when it hasn't yet loaded the function. See the <a href=#event>event handlers</a> section for more information.
|
||||||
|
|
||||||
|
Autoloading is not applicable to functions created by the `alias` command. For functions simple enough that you prefer to use the `alias` command to define them you'll need to put those commands in your `~/.config/fish/config.fish` script or some other script run when the shell starts.
|
||||||
|
|
||||||
If you are developing another program, you may wish to install functions which are available for all users of the fish shell on a system. They can be installed to the "vendor" functions directory. As this path may vary from system to system, the `pkgconfig` framework should be used to discover this path with the output of `pkg-config --variable functionsdir fish`.
|
If you are developing another program, you may wish to install functions which are available for all users of the fish shell on a system. They can be installed to the "vendor" functions directory. As this path may vary from system to system, the `pkgconfig` framework should be used to discover this path with the output of `pkg-config --variable functionsdir fish`.
|
||||||
|
|
||||||
|
|
||||||
@@ -504,7 +510,7 @@ A dollar sign followed by a string of characters is expanded into the value of t
|
|||||||
|
|
||||||
Undefined and empty variables expand to nothing.
|
Undefined and empty variables expand to nothing.
|
||||||
|
|
||||||
To separate a variable name from text it should immediately be followed by, encase the variable within quotes.
|
To separate a variable name from text encase the variable within double-quotes or braces.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
\fish
|
\fish
|
||||||
@@ -522,7 +528,7 @@ echo The plural of $WORD is {$WORD}s
|
|||||||
|
|
||||||
Note that without the quotes or braces, fish will try to expand a variable called `$WORDs`, which may not exist.
|
Note that without the quotes or braces, fish will try to expand a variable called `$WORDs`, which may not exist.
|
||||||
|
|
||||||
The latter syntax `{$WORD}` works by exploiting <a href="#expand-brace">brace expansion</a>; care should be taken with array variables and undefined variables, as these expand as a <a href="#cartesian-product">cartesian product</a>, so undefined variables eliminate the string.
|
The latter syntax `{$WORD}` works by exploiting <a href="#expand-brace">brace expansion</a>; care should be taken with zero-element array variables and undefined variables, as these expand as a <a href="#cartesian-product">cartesian product</a>, so they eliminate the string.
|
||||||
|
|
||||||
Variable expansion is the only type of expansion performed on double quoted strings. There is, however, an important difference in how variables are expanded when quoted and when unquoted. An unquoted variable expansion will result in a variable number of arguments. For example, if the variable `$foo` has zero elements or is undefined, the argument `$foo` will expand to zero elements. If the variable $foo is an array of five elements, the argument `$foo` will expand to five elements. When quoted, like `"$foo"`, a variable expansion will always result in exactly one argument. Undefined variables will expand to the empty string, and array variables will be concatenated using the space character.
|
Variable expansion is the only type of expansion performed on double quoted strings. There is, however, an important difference in how variables are expanded when quoted and when unquoted. An unquoted variable expansion will result in a variable number of arguments. For example, if the variable `$foo` has zero elements or is undefined, the argument `$foo` will expand to zero elements. If the variable $foo is an array of five elements, the argument `$foo` will expand to five elements. When quoted, like `"$foo"`, a variable expansion will always result in exactly one argument. Undefined variables will expand to the empty string, and array variables will be concatenated using the space character.
|
||||||
|
|
||||||
@@ -637,7 +643,7 @@ This form of expansion is useful for commands like kill and fg, which take proce
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
`fg %ema` will search for a process whose command line begins with the letters 'ema', such as emacs, and if found, put it in the foreground.
|
`fg %%ema` will search for a process whose command line begins with the letters 'ema', such as emacs, and if found, put it in the foreground.
|
||||||
|
|
||||||
`kill -s SIGINT %3` will send the SIGINT signal to the job with job ID 3.
|
`kill -s SIGINT %3` will send the SIGINT signal to the job with job ID 3.
|
||||||
|
|
||||||
@@ -811,7 +817,7 @@ The user can change the settings of `fish` by changing the values of certain var
|
|||||||
|
|
||||||
- `BROWSER`, the user's preferred web browser. If this variable is set, fish will use the specified browser instead of the system default browser to display the fish documentation.
|
- `BROWSER`, the user's preferred web browser. If this variable is set, fish will use the specified browser instead of the system default browser to display the fish documentation.
|
||||||
|
|
||||||
- `CDPATH`, an array of directories in which to search for the new directory for the `cd` builtin. By default, the fish configuration defines `CDPATH` to be a universal variable with the values `.` and `~`.
|
- `CDPATH`, an array of directories in which to search for the new directory for the `cd` builtin.
|
||||||
|
|
||||||
- `LANG`, `LC_ALL`, `LC_COLLATE`, `LC_CTYPE`, `LC_MESSAGES`, `LC_MONETARY`, `LC_NUMERIC` and `LC_TIME` set the language option for the shell and subprograms. See the section <a href='#variables-locale'>Locale variables</a> for more information.
|
- `LANG`, `LC_ALL`, `LC_COLLATE`, `LC_CTYPE`, `LC_MESSAGES`, `LC_MONETARY`, `LC_NUMERIC` and `LC_TIME` set the language option for the shell and subprograms. See the section <a href='#variables-locale'>Locale variables</a> for more information.
|
||||||
|
|
||||||
@@ -841,6 +847,14 @@ The user can change the settings of `fish` by changing the values of certain var
|
|||||||
|
|
||||||
- `CMD_DURATION`, the runtime of the last command in milliseconds.
|
- `CMD_DURATION`, the runtime of the last command in milliseconds.
|
||||||
|
|
||||||
|
- `FISH_VERSION`, the version of the currently running fish
|
||||||
|
|
||||||
|
- `COLUMNS`, the current width of the terminal
|
||||||
|
|
||||||
|
- `LINES`, the current height of the terminal
|
||||||
|
|
||||||
|
- `SHLVL`, the level of nesting of shells
|
||||||
|
|
||||||
The names of these variables are mostly derived from the csh family of shells and differ from the ones used by Bourne style shells such as bash.
|
The names of these variables are mostly derived from the csh family of shells and differ from the ones used by Bourne style shells such as bash.
|
||||||
|
|
||||||
Variables whose name are in uppercase are exported to the commands started by fish, while those in lowercase are not exported. This rule is not enforced by fish, but it is good coding practice to use casing to distinguish between exported and unexported variables. `fish` also uses several variables internally. Such variables are prefixed with the string `__FISH` or `__fish.` These should never be used by the user. Changing their value may break fish.
|
Variables whose name are in uppercase are exported to the commands started by fish, while those in lowercase are not exported. This rule is not enforced by fish, but it is good coding practice to use casing to distinguish between exported and unexported variables. `fish` also uses several variables internally. Such variables are prefixed with the string `__FISH` or `__fish.` These should never be used by the user. Changing their value may break fish.
|
||||||
@@ -855,6 +869,8 @@ If `fish` encounters a problem while executing a command, the status variable ma
|
|||||||
|
|
||||||
- 1 is the generally the exit status from fish builtin commands if they were supplied with invalid arguments
|
- 1 is the generally the exit status from fish builtin commands if they were supplied with invalid arguments
|
||||||
|
|
||||||
|
- 123 means that the command was not executed because the command name contained invalid characters
|
||||||
|
|
||||||
- 124 means that the command was not executed because none of the wildcards in the command produced any matches
|
- 124 means that the command was not executed because none of the wildcards in the command produced any matches
|
||||||
|
|
||||||
- 125 means that while an executable with the specified name was located, the operating system could not actually execute the command
|
- 125 means that while an executable with the specified name was located, the operating system could not actually execute the command
|
||||||
@@ -943,54 +959,73 @@ For a list of all builtins, functions and commands shipped with fish, see the <a
|
|||||||
|
|
||||||
The `fish` editor features copy and paste, a searchable history and many editor functions that can be bound to special keyboard shortcuts.
|
The `fish` editor features copy and paste, a searchable history and many editor functions that can be bound to special keyboard shortcuts.
|
||||||
|
|
||||||
Similar to bash, fish has Emacs and Vi editing modes. The default editing mode is Emacs. You can switch to Vi mode with `fish_vi_key_bindings` and switch back with `fish_default_key_bindings`.
|
Similar to bash, fish has Emacs and Vi editing modes. The default editing mode is Emacs. You can switch to Vi mode with `fish_vi_key_bindings` and switch back with `fish_default_key_bindings`. You can also make your own key bindings by creating a function and setting $fish_key_bindings to its name. For example:
|
||||||
|
|
||||||
|
\fish
|
||||||
|
function hybrid_bindings --description "Vi-style bindings that inherit emacs-style bindings in all modes"
|
||||||
|
for mode in default insert visual
|
||||||
|
fish_default_key_bindings -M $mode
|
||||||
|
end
|
||||||
|
fish_vi_key_bindings --no-erase
|
||||||
|
end
|
||||||
|
set -g fish_key_bindings hybrid_bindings
|
||||||
|
\endfish
|
||||||
|
|
||||||
\subsection emacs-mode Emacs mode commands
|
\subsection shared-binds Shared bindings
|
||||||
|
|
||||||
|
Some bindings are shared between emacs- and vi-mode because they aren't text editing bindings or because what Vi/Vim does for a particular key doesn't make sense for a shell.
|
||||||
|
|
||||||
- @key{Tab} <a href="#completion">completes</a> the current token. @key{Shift, Tab} completes the current token and starts the pager's search mode.
|
- @key{Tab} <a href="#completion">completes</a> the current token. @key{Shift, Tab} completes the current token and starts the pager's search mode.
|
||||||
|
|
||||||
- @key{Home} or @key{Control,A} moves the cursor to the beginning of the line.
|
|
||||||
|
|
||||||
- @key{End} or @key{Control,E} moves to the end of line. If the cursor is already at the end of the line, and an autosuggestion is available, @key{End} or @key{Control,E} accepts the autosuggestion.
|
|
||||||
|
|
||||||
- @cursor_key{←,Left} (or @key{Control,B}) and @cursor_key{→,Right} (or @key{Control,F}) move the cursor left or right by one character. If the cursor is already at the end of the line, and an autosuggestion is available, the @cursor_key{→,Right} key and the @key{Control,F} combination accept the suggestion.
|
|
||||||
|
|
||||||
- @key{Alt,←,Left} and @key{Alt,→,Right} move the cursor one word left or right, or moves forward/backward in the directory history if the command line is empty. If the cursor is already at the end of the line, and an autosuggestion is available, @key{Alt,→,Right} (or @key{Alt,F}) accepts the first word in the suggestion.
|
- @key{Alt,←,Left} and @key{Alt,→,Right} move the cursor one word left or right, or moves forward/backward in the directory history if the command line is empty. If the cursor is already at the end of the line, and an autosuggestion is available, @key{Alt,→,Right} (or @key{Alt,F}) accepts the first word in the suggestion.
|
||||||
|
|
||||||
- @cursor_key{↑,Up} and @cursor_key{↓,Down} search the command history for the previous/next command containing the string that was specified on the commandline before the search was started. If the commandline was empty when the search started, all commands match. See the <a href='#history'>history</a> section for more information on history searching.
|
- @cursor_key{↑,Up} and @cursor_key{↓,Down} search the command history for the previous/next command containing the string that was specified on the commandline before the search was started. If the commandline was empty when the search started, all commands match. See the <a href='#history'>history</a> section for more information on history searching.
|
||||||
|
|
||||||
- @key{Alt,↑,Up} and @key{Alt,↓,Down} search the command history for the previous/next token containing the token under the cursor before the search was started. If the commandline was not on a token when the search started, all tokens match. See the <a href='#history'>history</a> section for more information on history searching.
|
- @key{Alt,↑,Up} and @key{Alt,↓,Down} search the command history for the previous/next token containing the token under the cursor before the search was started. If the commandline was not on a token when the search started, all tokens match. See the <a href='#history'>history</a> section for more information on history searching.
|
||||||
|
|
||||||
- @key{Delete} and @key{Backspace} removes one character forwards or backwards respectively.
|
- @key{Control,C} cancels the entire line.
|
||||||
|
|
||||||
- @key{Control,C} deletes the entire line.
|
|
||||||
|
|
||||||
- @key{Control,D} delete one character to the right of the cursor. If the command line is empty, @key{Control,D} will exit fish.
|
- @key{Control,D} delete one character to the right of the cursor. If the command line is empty, @key{Control,D} will exit fish.
|
||||||
|
|
||||||
- @key{Control,K} moves contents from the cursor to the end of line to the <a href="#killring">killring</a>.
|
|
||||||
|
|
||||||
- @key{Control,U} moves contents from the beginning of line to the cursor to the <a href="#killring">killring</a>.
|
- @key{Control,U} moves contents from the beginning of line to the cursor to the <a href="#killring">killring</a>.
|
||||||
|
|
||||||
- @key{Control,L} clears and repaints the screen.
|
- @key{Control,L} clears and repaints the screen.
|
||||||
|
|
||||||
- @key{Control,W} moves the previous path component (everything up to the previous "/") to the <a href="#killring">killring</a>.
|
- @key{Control,W} moves the previous path component (everything up to the previous "/") to the <a href="#killring">killring</a>.
|
||||||
|
|
||||||
- @key{Alt,D} moves the next word to the <a href="#killring">killring</a>.
|
- @key{Control,X} copies the current buffer to the system's clipboard, @key{Control,V} inserts the clipboard contents.
|
||||||
|
|
||||||
- @key{Alt,W} prints a short description of the command under the cursor.
|
- @key{Alt,d} moves the next word to the <a href="#killring">killring</a>.
|
||||||
|
|
||||||
- @key{Alt,L} lists the contents of the current directory, unless the cursor is over a directory argument, in which case the contents of that directory will be listed.
|
- @key{Alt,h} (or @key{F1}) shows the manual page for the current command, if one exists.
|
||||||
|
|
||||||
- @key{Alt,P} adds the string '`| less;`' to the end of the job under the cursor. The result is that the output of the command will be paged.
|
- @key{Alt,l} lists the contents of the current directory, unless the cursor is over a directory argument, in which case the contents of that directory will be listed.
|
||||||
|
|
||||||
- @key{Alt,C} capitalizes the current word.
|
- @key{Alt,p} adds the string '`| less;`' to the end of the job under the cursor. The result is that the output of the command will be paged.
|
||||||
|
|
||||||
- @key{Alt,U} makes the current word uppercase.
|
- @key{Alt,w} prints a short description of the command under the cursor.
|
||||||
|
|
||||||
- @key{Alt,H} (or @key{F1}) shows the manual page for the current command, if one exists.
|
- @key{Alt,e} edit the current command line in an external editor. The editor is chosen from the first available of the `$VISUAL` or `$EDITOR` variables.
|
||||||
|
|
||||||
- @key{Control, t} transposes the last two characters
|
- @key{Alt,v} Same as @key{Alt,e}.
|
||||||
|
|
||||||
|
\subsection emacs-mode Emacs mode commands
|
||||||
|
|
||||||
|
- @key{Home} or @key{Control,A} moves the cursor to the beginning of the line.
|
||||||
|
|
||||||
|
- @key{End} or @key{Control,E} moves to the end of line. If the cursor is already at the end of the line, and an autosuggestion is available, @key{End} or @key{Control,E} accepts the autosuggestion.
|
||||||
|
|
||||||
|
- @cursor_key{←,Left} (or @key{Control,B}) and @cursor_key{→,Right} (or @key{Control,F}) move the cursor left or right by one character. If the cursor is already at the end of the line, and an autosuggestion is available, the @cursor_key{→,Right} key and the @key{Control,F} combination accept the suggestion.
|
||||||
|
|
||||||
|
- @key{Delete} and @key{Backspace} removes one character forwards or backwards respectively.
|
||||||
|
|
||||||
|
- @key{Control,K} moves contents from the cursor to the end of line to the <a href="#killring">killring</a>.
|
||||||
|
|
||||||
|
- @key{Alt,c} capitalizes the current word.
|
||||||
|
|
||||||
|
- @key{Alt,u} makes the current word uppercase.
|
||||||
|
|
||||||
|
- @key{Control,t} transposes the last two characters
|
||||||
|
|
||||||
- @key{Alt,t} transposes the last two words
|
- @key{Alt,t} transposes the last two words
|
||||||
|
|
||||||
@@ -1000,7 +1035,22 @@ You can change these key bindings using the <a href="commands.html#bind">bind</a
|
|||||||
|
|
||||||
\subsection vi-mode Vi mode commands
|
\subsection vi-mode Vi mode commands
|
||||||
|
|
||||||
Vi mode allows for the use of Vi-like commands at the prompt. Initially, <a href="#vi-mode-insert">insert mode</a> is active. @key{Escape} enters <a href="#vi-mode-command">command mode</a>. The commands available in command, insert and visual mode are described below. Vi mode builds on top of <a href="#emacs-mode">Emacs mode</a>, so all keybindings mentioned there that do not contradict the ones mentioned here also work.
|
Vi mode allows for the use of Vi-like commands at the prompt. Initially, <a href="#vi-mode-insert">insert mode</a> is active. @key{Escape} enters <a href="#vi-mode-command">command mode</a>. The commands available in command, insert and visual mode are described below. Vi mode shares <a href="#shared-binds">some bindings</a> with <a href="#emacs-mode">Emacs mode</a>.
|
||||||
|
|
||||||
|
It is also possible to add all emacs-mode bindings to vi-mode by using something like
|
||||||
|
|
||||||
|
\fish
|
||||||
|
function fish_user_key_bindings
|
||||||
|
# Execute this once per mode that emacs bindings should be used in
|
||||||
|
fish_default_key_bindings -M insert
|
||||||
|
# Without an argument, fish_vi_key_bindings will default to
|
||||||
|
# resetting all bindings.
|
||||||
|
# The argument specifies the initial mode (insert, "default" or visual).
|
||||||
|
fish_vi_key_bindings insert
|
||||||
|
end
|
||||||
|
\endfish
|
||||||
|
|
||||||
|
When in vi-mode, the <a href="fish_mode_prompt.html">`fish_mode_prompt`</a> function will display a mode indicator to the left of the prompt. The `fish_vi_cursor` function will be used to change the cursor's shape depending on the mode in supported terminals. To disable this feature, override it with an empty function. To display the mode elsewhere (like in your right prompt), use the output of the `fish_default_mode_prompt` function.
|
||||||
|
|
||||||
\subsubsection vi-mode-command Command mode
|
\subsubsection vi-mode-command Command mode
|
||||||
|
|
||||||
@@ -1030,21 +1080,13 @@ Command mode is also known as normal mode.
|
|||||||
|
|
||||||
- @key{[} and @key{]} search the command history for the previous/next token containing the token under the cursor before the search was started. See the <a href='#history'>history</a> section for more information on history searching.
|
- @key{[} and @key{]} search the command history for the previous/next token containing the token under the cursor before the search was started. See the <a href='#history'>history</a> section for more information on history searching.
|
||||||
|
|
||||||
- @key{Control,C} deletes the entire line.
|
- @key{Backspace} moves the cursor left.
|
||||||
|
|
||||||
\subsubsection vi-mode-insert Insert mode
|
\subsubsection vi-mode-insert Insert mode
|
||||||
|
|
||||||
- @key{Tab} <a href="#completion">completes</a> the current token.
|
- @key{Escape} enters <a href="#vi-mode-command">command mode</a>.
|
||||||
|
|
||||||
- @key{Escape} or @key{Control,C} enters <a href="#vi-mode-command">command mode</a>.
|
- @key{Backspace} removes one character to the left.
|
||||||
|
|
||||||
- @cursor_key{↑,Up} and @cursor_key{↓,Down} search the command history. See the <a href='#history'>history</a> section for more information on history searching.
|
|
||||||
|
|
||||||
- @key{Control,W} moves the previous word to the <a href="#killring">killring</a>.
|
|
||||||
|
|
||||||
- @key{Control,U} moves contents from the beginning of line to the cursor to the <a href="#killring">killring</a>.
|
|
||||||
|
|
||||||
- @key{Control,x} moves the cursor to the end of the line. If an autosuggestion is available, it will be accepted completely.
|
|
||||||
|
|
||||||
\subsubsection vi-mode-visual Visual mode
|
\subsubsection vi-mode-visual Visual mode
|
||||||
|
|
||||||
@@ -1060,9 +1102,6 @@ Command mode is also known as normal mode.
|
|||||||
|
|
||||||
`fish` uses an Emacs style kill ring for copy and paste functionality. Use @key{Control,K} to cut from the current cursor position to the end of the line. The string that is cut (a.k.a. killed) is inserted into a linked list of kills, called the kill ring. To paste the latest value from the kill ring use @key{Control,Y}. After pasting, use @key{Alt,Y} to rotate to the previous kill.
|
`fish` uses an Emacs style kill ring for copy and paste functionality. Use @key{Control,K} to cut from the current cursor position to the end of the line. The string that is cut (a.k.a. killed) is inserted into a linked list of kills, called the kill ring. To paste the latest value from the kill ring use @key{Control,Y}. After pasting, use @key{Alt,Y} to rotate to the previous kill.
|
||||||
|
|
||||||
If the environment variable `DISPLAY` is set and the `xsel` program is installed, `fish` will try to connect to the X Windows server specified by this variable, and use the clipboard on the X server for copying and pasting.
|
|
||||||
|
|
||||||
|
|
||||||
\subsection history-search Searchable history
|
\subsection history-search Searchable history
|
||||||
|
|
||||||
After a command has been entered, it is inserted at the end of a history list. Any duplicate history items are automatically removed. By pressing the up and down keys, the user can search forwards and backwards in the history. If the current command line is not empty when starting a history search, only the commands containing the string entered into the command line are shown.
|
After a command has been entered, it is inserted at the end of a history list. Any duplicate history items are automatically removed. By pressing the up and down keys, the user can search forwards and backwards in the history. If the current command line is not empty when starting a history search, only the commands containing the string entered into the command line are shown.
|
||||||
@@ -1073,7 +1112,7 @@ History searches can be aborted by pressing the escape key.
|
|||||||
|
|
||||||
Prefixing the commandline with a space will prevent the entire line from being stored in the history.
|
Prefixing the commandline with a space will prevent the entire line from being stored in the history.
|
||||||
|
|
||||||
The history is stored in the file `~/.config/fish/fish_history`.
|
The history is stored in the file `~/.local/share/fish/fish_history` (or `$XDG_DATA_HOME/fish/fish_history` if that variable is set).
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
@@ -1110,15 +1149,15 @@ Note that functions cannot be started in the background. Functions that are stop
|
|||||||
|
|
||||||
\section initialization Initialization files
|
\section initialization Initialization files
|
||||||
|
|
||||||
On startup, Fish evaluates a number of configuration files, which can be used to control the behavior of the shell.
|
On startup, Fish evaluates a number of configuration files, which can be used to control the behavior of the shell. The location of these configuration variables is controlled by a number of environment variables, and their default or usual location is given below.
|
||||||
|
|
||||||
Configuration files are evaluated in the following order:
|
Configuration files are evaluated in the following order:
|
||||||
- Configuration shipped with fish, which should not be edited, usually `/usr/share/fish/config.fish`.
|
- Configuration shipped with fish, which should not be edited, in `$__fish_datadir/config.fish` (usually `/usr/share/fish/config.fish`).
|
||||||
- System-wide configuration files, where administrators can include initialization that should be run for all users on the system - similar to `/etc/profile` for POSIX-style shells - usually `/etc/fish/config.fish`;
|
- System-wide configuration files, where administrators can include initialization that should be run for all users on the system - similar to `/etc/profile` for POSIX-style shells - in `$__fish_sysconfdir` (usually `/etc/fish/config.fish`);
|
||||||
- Configuration snippets in files ending in `.fish`, in the directories:
|
- Configuration snippets in files ending in `.fish`, in the directories:
|
||||||
- `~/.config/fish/conf.d/`
|
- `$XDG_CONFIG_HOME/fish/conf.d` (by default, `~/.config/fish/conf.d/`)
|
||||||
- `/etc/fish/conf.d`
|
- `$__fish_sysconfdir/conf.d` (by default, `/etc/fish/conf.d`)
|
||||||
- `/usr/share/fish/vendor_conf.d`
|
- `/usr/share/fish/vendor_conf.d` (set at compile time; by default, `$__fish_datadir/conf.d`)
|
||||||
|
|
||||||
If there are multiple files with the same name in these directories, only the first will be executed.
|
If there are multiple files with the same name in these directories, only the first will be executed.
|
||||||
|
|
||||||
@@ -1126,7 +1165,7 @@ Configuration files are evaluated in the following order:
|
|||||||
|
|
||||||
These paths are controlled by parameters set at build, install, or run time, and may vary from the defaults listed above.
|
These paths are controlled by parameters set at build, install, or run time, and may vary from the defaults listed above.
|
||||||
|
|
||||||
This wide search may be confusing. If you are unsure, use `~/.config/fish/config.fish`.
|
This wide search may be confusing. If you are unsure where to put your own customisations, use `~/.config/fish/config.fish`.
|
||||||
|
|
||||||
These files are all executed on the startup of every shell. If you want to run a command only on starting an interactive shell, use the exit status of the command `status --is-interactive` to determine if the shell is interactive. If you want to run a command only when using a login shell, use `status --is-login` instead. This will speed up the starting of non-interactive or non-login shells.
|
These files are all executed on the startup of every shell. If you want to run a command only on starting an interactive shell, use the exit status of the command `status --is-interactive` to determine if the shell is interactive. If you want to run a command only when using a login shell, use `status --is-login` instead. This will speed up the starting of non-interactive or non-login shells.
|
||||||
|
|
||||||
@@ -1138,7 +1177,7 @@ If you want to add the directory `~/linux/bin` to your PATH variable when using
|
|||||||
|
|
||||||
\fish
|
\fish
|
||||||
if status --is-login
|
if status --is-login
|
||||||
set PATH $PATH ~/linux/bin
|
set -x PATH $PATH ~/linux/bin
|
||||||
end
|
end
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
@@ -1192,6 +1231,10 @@ function fish_title
|
|||||||
end
|
end
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
|
\subsection prompt Programmable prompt
|
||||||
|
|
||||||
|
When fish waits for input, it will display a prompt by evaluating the `fish_prompt` and `fish_right_prompt` functions. The output of the former is displayed on the left and the latter's output on the right side of the terminal. The output of `fish_mode_prompt` will be prepended on the left, though the default function only does this when in <a href="index.html#vi-mode">vi-mode</a>.
|
||||||
|
|
||||||
\subsection greeting Configurable greeting
|
\subsection greeting Configurable greeting
|
||||||
|
|
||||||
If a function named `fish_greeting` exists, it will be run when entering interactive mode. Otherwise, if an environment variable named `fish_greeting` exists, it will be printed.
|
If a function named `fish_greeting` exists, it will be run when entering interactive mode. Otherwise, if an environment variable named `fish_greeting` exists, it will be printed.
|
||||||
|
|||||||
@@ -134,9 +134,9 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|||||||
----
|
----
|
||||||
|
|
||||||
|
|
||||||
## License for wcslcat and wcslcpy, and code derived from tmux
|
## License for wcslcpy and code derived from tmux
|
||||||
|
|
||||||
`fish` also contains small amounts of code under the OpenBSD license, namely versions of the two functions strlcat and strlcpy, modified for use with wide character strings. This code is copyrighted by Todd C. Miller (1998). It also contains code from [tmux](http://tmux.sourceforge.net), copyrighted by Nicholas Marriott <nicm@users.sourceforge.net> (2007), and made available under an identical license.
|
`fish` also contains small amounts of code under the OpenBSD license, namely a version of the function strlcpy, modified for use with wide character strings. This code is copyrighted by Todd C. Miller (1998). It also contains code from [tmux](http://tmux.sourceforge.net), copyrighted by Nicholas Marriott <nicm@users.sourceforge.net> (2007), and made available under an identical license.
|
||||||
|
|
||||||
The OpenBSD license is included below.
|
The OpenBSD license is included below.
|
||||||
|
|
||||||
@@ -320,6 +320,38 @@ Permission to use, copy, modify, and/or distribute this software for any purpose
|
|||||||
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 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
## License for flock
|
||||||
|
|
||||||
|
`fish` also contains small amounts of code from NetBSD, namely the `flock` fallback function. This code is copyright 2001 The NetBSD Foundation, Inc., and derived from software contributed to The NetBSD Foundation by Todd Vierling.
|
||||||
|
|
||||||
|
The NetBSD license follows.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
\htmlonly[block]
|
\htmlonly[block]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
|
|
||||||
\section math math - Perform mathematics calculations
|
\section math math - Perform mathematics calculations
|
||||||
|
|
||||||
\subsection math-synopsis Synopsis
|
\subsection math-synopsis Synopsis
|
||||||
\fish{synopsis}
|
\fish{synopsis}
|
||||||
math EXPRESSION
|
math [-sN] EXPRESSION
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection math-description Description
|
\subsection math-description Description
|
||||||
@@ -12,9 +11,26 @@ math EXPRESSION
|
|||||||
|
|
||||||
For a description of the syntax supported by math, see the manual for the bc program. Keep in mind that parameter expansion takes place on any expressions before they are evaluated. This can be very useful in order to perform calculations involving shell variables or the output of command substitutions, but it also means that parenthesis have to be escaped.
|
For a description of the syntax supported by math, see the manual for the bc program. Keep in mind that parameter expansion takes place on any expressions before they are evaluated. This can be very useful in order to perform calculations involving shell variables or the output of command substitutions, but it also means that parenthesis have to be escaped.
|
||||||
|
|
||||||
|
The following options are available:
|
||||||
|
|
||||||
|
- `-sN` Sets the scale of the result. `N` must be an integer and defaults to zero. This simply sets bc's `scale` variable to the provided value. Note that you cannot put a space between `-s` and `N`.
|
||||||
|
|
||||||
|
\subsection return-values Return Values
|
||||||
|
|
||||||
|
If invalid options or no expression is provided the return `status` is two. If the expression is invalid the return `status` is three. If bc returns a result of `0` (literally, not `0.0` or similar variants) the return `status` is one otherwise it's zero.
|
||||||
|
|
||||||
\subsection math-example Examples
|
\subsection math-example Examples
|
||||||
|
|
||||||
`math 1+1` outputs 2.
|
`math 1+1` outputs 2.
|
||||||
|
|
||||||
`math $status-128` outputs the numerical exit status of the last command minus 128.
|
`math $status-128` outputs the numerical exit status of the last command minus 128.
|
||||||
|
|
||||||
|
`math 10 / 6` outputs `1`.
|
||||||
|
|
||||||
|
`math -s0 10.0 / 6.0` outputs `1`.
|
||||||
|
|
||||||
|
`math -s3 10 / 6` outputs `1.666`.
|
||||||
|
|
||||||
|
\subsection math-cautions Cautions
|
||||||
|
|
||||||
|
Note that the modulo operator (`x % y`) is not well defined for floating point arithmetic. The `bc` command produces a nonsensical result rather than emit an error and fail in that case. It doesn't matter if the arguments are integers; e.g., `10 % 4`. You'll still get an incorrect result. Do not use the `-sN` flag with N greater than zero if you want sensible answers when using the modulo operator.
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ open FILES...
|
|||||||
|
|
||||||
`open` opens a file in its default application, using the appropriate tool for the operating system. On GNU/Linux, this requires the common but optional `xdg-open` utility, from the `xdg-utils` package.
|
`open` opens a file in its default application, using the appropriate tool for the operating system. On GNU/Linux, this requires the common but optional `xdg-open` utility, from the `xdg-utils` package.
|
||||||
|
|
||||||
|
Note that this function will not be used if a command by this name exists (which is the case on macOS or Haiku).
|
||||||
|
|
||||||
|
|
||||||
\subsection open-example Example
|
\subsection open-example Example
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ printf also knows a number of backslash escapes:
|
|||||||
- `\uhhhh` 16-bit Unicode character (hhhh is 4 digits)
|
- `\uhhhh` 16-bit Unicode character (hhhh is 4 digits)
|
||||||
- `\Uhhhhhhhh` 32-bit Unicode character (hhhhhhhh is 8 digits)
|
- `\Uhhhhhhhh` 32-bit Unicode character (hhhhhhhh is 8 digits)
|
||||||
|
|
||||||
The `format' argument is re-used as many times as necessary to convert all of the given arguments. If a format specifier is not appropriate for the given argument, an error is printed. For example, `printf '%d' "102.234"` produces an error, as "102.234" cannot be formatted as an integer.
|
The `format` argument is re-used as many times as necessary to convert all of the given arguments. If a format specifier is not appropriate for the given argument, an error is printed. For example, `printf '%d' "102.234"` produces an error, as "102.234" cannot be formatted as an integer.
|
||||||
|
|
||||||
This file has been imported from the printf in GNU Coreutils version 6.9. If you would like to use a newer version of printf, for example the one shipped with your OS, try `command printf`.
|
This file has been imported from the printf in GNU Coreutils version 6.9. If you would like to use a newer version of printf, for example the one shipped with your OS, try `command printf`.
|
||||||
|
|
||||||
|
|||||||
@@ -2,31 +2,43 @@
|
|||||||
|
|
||||||
\subsection random-synopsis Synopsis
|
\subsection random-synopsis Synopsis
|
||||||
\fish{synopsis}
|
\fish{synopsis}
|
||||||
random [SEED]
|
random
|
||||||
|
random SEED
|
||||||
|
random START END
|
||||||
|
random START STEP END
|
||||||
|
random choice [ITEMS...]
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection random-description Description
|
\subsection random-description Description
|
||||||
|
|
||||||
`random` outputs a psuedo-random number from 0 to 32767, inclusive.
|
`RANDOM` generates a pseudo-random integer from a uniform distribution. The
|
||||||
Even ignoring the very narrow range of values you should not assume
|
range (inclusive) is dependent on the arguments passed.
|
||||||
this produces truly random values within that range. Do not use the
|
No arguments indicate a range of [0; 32767].
|
||||||
value for any cryptographic purposes, and take care to handle collisions:
|
If one argument is specified, the internal engine will be seeded with the
|
||||||
the same random number appearing more than once in a given fish instance.
|
argument for future invocations of `RANDOM` and no output will be produced.
|
||||||
|
Two arguments indicate a range of [START; END].
|
||||||
|
Three arguments indicate a range of [START; END] with a spacing of STEP
|
||||||
|
between possible outputs.
|
||||||
|
`RANDOM choice` will select one random item from the succeeding arguments.
|
||||||
|
|
||||||
If a `SEED` value is provided, it is used to seed the random number
|
Note that seeding the engine will NOT give the same result across different
|
||||||
generator, and no output will be produced. This can be useful for debugging
|
systems.
|
||||||
purposes, where it can be desirable to get the same random number sequence
|
|
||||||
multiple times. If the random number generator is called without first
|
|
||||||
seeding it, the current time will be used as the seed.
|
|
||||||
|
|
||||||
|
You should not consider `RANDOM` cryptographically secure, or even
|
||||||
|
statistically accurate.
|
||||||
|
|
||||||
\subsection random-example Example
|
\subsection random-example Example
|
||||||
|
|
||||||
The following code will count down from a random number to 1:
|
The following code will count down from a random even number between 10 and 20 to 1:
|
||||||
|
|
||||||
\fish
|
\fish
|
||||||
for i in (seq (random) -1 1)
|
for i in (seq (random 10 2 20) -1 1)
|
||||||
echo $i
|
echo $i
|
||||||
sleep
|
|
||||||
end
|
end
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
|
And this will open a random picture from any of the subdirectories:
|
||||||
|
|
||||||
|
\fish
|
||||||
|
open (random choice **jpg)
|
||||||
|
\endfish
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ If `-a` or `--array` is provided, only one variable name is allowed and the toke
|
|||||||
|
|
||||||
See the documentation for `set` for more details on the scoping rules for variables.
|
See the documentation for `set` for more details on the scoping rules for variables.
|
||||||
|
|
||||||
|
When read reaches the end-of-file (EOF) instead of the separator, it returns 1. If not, it returns 0.
|
||||||
|
|
||||||
\subsection read-example Example
|
\subsection read-example Example
|
||||||
|
|
||||||
@@ -50,4 +51,9 @@ The following code stores the value 'hello' in the shell variable `$foo`.
|
|||||||
|
|
||||||
\fish
|
\fish
|
||||||
echo hello|read foo
|
echo hello|read foo
|
||||||
|
|
||||||
|
# This is a neat way to handle command output by-line:
|
||||||
|
printf '%s\n' line1 line2 line3 line4 | while read -l foo
|
||||||
|
echo "This is another line: $foo"
|
||||||
|
end
|
||||||
\endfish
|
\endfish
|
||||||
|
|||||||
12
doc_src/realpath.txt
Normal file
12
doc_src/realpath.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
\section realpath realpath - Convert a path to an absolute path without symlinks
|
||||||
|
|
||||||
|
\subsection realpath-synopsis Synopsis
|
||||||
|
\fish{synopsis}
|
||||||
|
realpath path
|
||||||
|
\endfish
|
||||||
|
|
||||||
|
\subsection realpath-description Description
|
||||||
|
|
||||||
|
This is implemented as a function and a builtin. The function will attempt to use an external realpath command if one can be found. Otherwise it falls back to the builtin. The builtin does not support any options. It's meant to be used only by scripts which need to be portable. The builtin implementation behaves like GNU realpath when invoked without any options (which is the most common use case). In general scripts should not invoke the builtin directly. They should just use `realpath`.
|
||||||
|
|
||||||
|
If the path is invalid no translated path will be written to stdout and an error will be reported.
|
||||||
@@ -2,34 +2,38 @@
|
|||||||
|
|
||||||
\subsection set_color-synopsis Synopsis
|
\subsection set_color-synopsis Synopsis
|
||||||
\fish{synopsis}
|
\fish{synopsis}
|
||||||
set_color [OPTIONS] [COLOR]
|
set_color [OPTIONS] VALUE
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection set_color-description Description
|
\subsection set_color-description Description
|
||||||
|
|
||||||
`set_color` changes the foreground and/or background color of the terminal. `COLOR` is one of `black`, `red`, `green`, `brown`, `yellow`, `blue`, `magenta`, `purple`, `cyan`, `brred`, `brgreen`, `brbrown`, `bryellow`, `brblue`, `brmagenta`, `brpurple`, `brcyan`, `white`. The `br`, bright, forms are most useful as background colors. The special color `normal` resets the background and foreground to whatever is normal for your terminal.
|
`set_color` is used to control the color and styling of text in the terminal. `VALUE` corresponds to a reserved color name such as *red* or a RGB color value given as 3 or 6 hexadecimal digits. The *br*-, as in 'bright', forms are full-brightness variants of the 8 standard-brightness colors on many terminals. *brblack* has higher brightness than *black* - towards gray. A special keyword *normal* resets text formatting to terminal defaults.
|
||||||
|
|
||||||
You can also specify an RGB value with three or six hex digits, such as A0FF33 or f2f. `fish` will choose the closest supported color. A three digit value is equivalent to specifying each digit twice; e.g., `#2BC` is the same as `#22BBCC`. Hex RGB values can be in lower or uppercase, optionally prefixed with the pound-sign character. Depending on the capabilities of your terminal the actual color may be approximated by the closest known matching color in the [ANSI X3.64](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) color palette.
|
Valid colors include:
|
||||||
|
|
||||||
|
- *black*, *red*, *green*, *yellow*, *blue*, *magenta*, *cyan*, *white*
|
||||||
|
- *brblack*, *brred*, *brgreen*, *bryellow*, *brblue*, *brmagenta*, *brcyan*, *brwhite*
|
||||||
|
|
||||||
|
An RGB value with three or six hex digits, such as A0FF33 or f2f can be used. `fish` will choose the closest supported color. A three digit value is equivalent to specifying each digit twice; e.g., `set_color 2BC` is the same as `set_color 22BBCC`. Hexadecimal RGB values can be in lower or uppercase. Depending on the capabilities of your terminal (and the level of support `set_color` has for it) the actual color may be approximated by a nearby matching reserved color name or `set_color` may not have an effect on color. A second color may be given as a desired fallback color. e.g. `set_color 124212` *brblue* will instruct set_color to use *brblue* if a terminal is not capable of the exact shade of grey desired. This is very useful when an 8 or 16 color terminal might otherwise not use a color.
|
||||||
|
|
||||||
The following options are available:
|
The following options are available:
|
||||||
|
|
||||||
- `-b`, `--background` `COLOR` sets the background color.
|
- `-b`, `--background` *COLOR* sets the background color.
|
||||||
|
- `-c`, `--print-colors` prints a list of the 16 named colors.
|
||||||
- `-c`, `--print-colors` prints a list of all valid color names.
|
- `-o`, `--bold` sets bold mode.
|
||||||
|
- `-d`, `--dim` sets dim mode.
|
||||||
- `-o`, `--bold` sets bold or extra bright mode.
|
- `-i`, `--italics` sets italics mode.
|
||||||
|
- `-r`, `--reverse` sets reverse mode.
|
||||||
- `-u`, `--underline` sets underlined mode.
|
- `-u`, `--underline` sets underlined mode.
|
||||||
|
|
||||||
Calling `set_color normal` will set the terminal background and foreground colors to the defaults for the terminal.
|
Using the *normal* keyword will reset foreground, background, and all formatting back to default.
|
||||||
|
|
||||||
Some terminals use the `--bold` escape sequence to switch to a brighter color set rather than bolding the characters. This only applies to the foreground color. You should probably use the `br` color name variants listed above for both the foreground and background "bright" colors rather than use this option. The only use for this option is on a black&white terminal (e.g., a DEC VT220) to select foreground black text that is bolder than the normal text.
|
\subsection set_color-notes Notes
|
||||||
|
|
||||||
Not all terminal emulators support all these features.
|
1. Using the *normal* keyword will reset both background and foreground colors to whatever is the default for the terminal.
|
||||||
|
2. Setting the background color only affects subsequently written characters. Fish provides no way to set the background color for the entire terminal window. Configuring the window background color (and other attributes such as its opacity) has to be done using whatever mechanisms the terminal provides.
|
||||||
Note 1: Setting either color to "normal" will reset both background and foreground colors to whatever is the default for the terminal.
|
3. Some terminals use the `--bold` escape sequence to switch to a brighter color set rather than increasing the weight of text.
|
||||||
|
4. `set_color` works by printing sequences of characters to *stdout*. If used in command substitution or a pipe, these characters will also be captured. This may or may not be desirable. Checking the exit code of `isatty stdout` before using `set_color` can be useful to decide not to colorize output in a script.
|
||||||
Note 2: Setting the background color only affects subsequently written characters. Fish provides no way to set the background color for the entire terminal window. Configuring the window background color (and other attributes such as its opacity) has to be done using whatever mechanisms the terminal provides.
|
|
||||||
|
|
||||||
\subsection set_color-example Examples
|
\subsection set_color-example Examples
|
||||||
|
|
||||||
@@ -37,13 +41,17 @@ Note 2: Setting the background color only affects subsequently written character
|
|||||||
set_color red; echo "Roses are red"
|
set_color red; echo "Roses are red"
|
||||||
set_color blue; echo "Violets are blue"
|
set_color blue; echo "Violets are blue"
|
||||||
set_color 62A; echo "Eggplants are dark purple"
|
set_color 62A; echo "Eggplants are dark purple"
|
||||||
set_color normal; echo "Normal is nice" # This will reset background, too
|
set_color normal; echo "Normal is nice" # Resets the background too
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection set_color-detection Terminal Capability Detection
|
\subsection set_color-detection Terminal Capability Detection
|
||||||
|
|
||||||
Fish uses a heuristic to decide if your terminal supports the 256 color palette (as opposed to the more limited 16 color palette of older terminals). If you've done the equivalent of `set fish_term256 1` that will be true. If the $TERM value contains "256color" (e.g., "xterm-256color") that will be true. If your $TERM value is "xterm" and $TERM_PROGRAM is not set to "Apple_Terminal" that will be true. If your terminal supports the full 256 color palette (which is pretty much every color terminal emulator written in the past decade) you should ensure one of the aforementioned conditions is true.
|
Fish uses a heuristic to decide if a terminal supports the 256-color palette as opposed to the more limited 16 color palette of older terminals. Support can be forced on by setting `fish_term256` to *1*. If `$TERM` contains "256color" (e.g., *xterm-256color*), 256-color support is enabled. If `$TERM` contains *xterm*, 256 color support is enabled (except for MacOS: `$TERM_PROGRAM` and `$TERM_PROGRAM_VERSION` are used to detect Terminal.app from MacOS 10.6; support is disabled here it because it is known that it reports `xterm` and only supports 16 colors.
|
||||||
|
|
||||||
Many terminals support 24-bit (i.e., true-color) color escape sequences. This includes modern xterms, Gnome Terminal, KDE Konsole, and iTerm2. Fish currently does some limited attempts to detect whether a given `$TERM` supports 24-bit colors. You can explicitly enable that support via `set fish_term24bit 1`. If you do so fish will not map your RGB color values to the closest known matching color in the ANSI X3.64 color palette.
|
If terminfo reports 256 color support for a terminal, support will always be enabled. To debug color palette problems, `tput colors` may be useful to see the number of colors in terminfo for a terminal. Fish launched as `fish -d2` will include diagnostic messages that indicate the color support mode in use.
|
||||||
|
|
||||||
The `set_color` command uses the terminfo database to look up how to change terminal colors on whatever terminal is in use. Some systems have old and incomplete terminfo databases, and may lack color information for terminals that support it. Fish will use the [ANSI X3.64](https://en.wikipedia.org/wiki/ANSI_escape_code) escape sequences if the terminfo definition says less than 256 colors are supported; otherwise it will use the terminfo definition.
|
Many terminals support 24-bit (i.e., true-color) color escape sequences. This includes modern xterm, Gnome Terminal, Konsole, and iTerm2. Fish attempts to detect such terminals through various means in `config.fish` You can explicitly force that support via `set fish_term24bit 1`.
|
||||||
|
|
||||||
|
The `set_color` command uses the terminfo database to look up how to change terminal colors on whatever terminal is in use. Some systems have old and incomplete terminfo databases, and may lack color information for terminals that support it. Fish will assume that all terminals can use the [ANSI X3.64](https://en.wikipedia.org/wiki/ANSI_escape_code) escape sequences if the terminfo definition indicates a color below 16 is not supported.
|
||||||
|
|
||||||
|
Support for italics, dim, reverse, and other modes is not guaranteed in all terminal emulators. Fish attempts to determine if the terminal supports these modes even if the terminfo database may not be up-to-date.
|
||||||
|
|||||||
@@ -2,33 +2,50 @@
|
|||||||
|
|
||||||
\subsection status-synopsis Synopsis
|
\subsection status-synopsis Synopsis
|
||||||
\fish{synopsis}
|
\fish{synopsis}
|
||||||
status [OPTION]
|
status
|
||||||
|
status is-login
|
||||||
|
status is-interactive
|
||||||
|
status is-block
|
||||||
|
status is-command-substitution
|
||||||
|
status is-no-job-control
|
||||||
|
status is-full-job-control
|
||||||
|
status is-interactive-job-control
|
||||||
|
status current-filename
|
||||||
|
status current-line-number
|
||||||
|
status print-stack-trace
|
||||||
|
status job-control CONTROL-TYPE
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
\subsection status-description Description
|
\subsection status-description Description
|
||||||
|
|
||||||
With no arguments, `status` displays a summary of the current login and job control status of the shell.
|
With no arguments, `status` displays a summary of the current login and job control status of the shell.
|
||||||
|
|
||||||
The following options are available:
|
The following operations (sub-commands) are available:
|
||||||
|
|
||||||
- `-c` or `--is-command-substitution` returns 0 if fish is currently executing a command substitution.
|
- `is-command-sub` returns 0 if fish is currently executing a command substitution. Also `-c` or `--is-command-substitution`.
|
||||||
|
|
||||||
- `-b` or `--is-block` returns 0 if fish is currently executing a block of code.
|
- `is-block` returns 0 if fish is currently executing a block of code. Also `-b` or `--is-block`.
|
||||||
|
|
||||||
- `-i` or `--is-interactive` returns 0 if fish is interactive - that is, connected to a keyboard.
|
- `is-interactive` returns 0 if fish is interactive - that is, connected to a keyboard. Also `-i` or `--is-interactive`.
|
||||||
|
|
||||||
- `-l` or `--is-login` returns 0 if fish is a login shell - that is, if fish should perform login tasks such as setting up the PATH.
|
- `is-login` returns 0 if fish is a login shell - that is, if fish should perform login tasks such as setting up the PATH. Also `-l` or `--is-login`.
|
||||||
|
|
||||||
- `--is-full-job-control` returns 0 if full job control is enabled.
|
- `is-full-job-control` returns 0 if full job control is enabled. Also `--is-full-job-control` (no short flag).
|
||||||
|
|
||||||
- `--is-interactive-job-control` returns 0 if interactive job control is enabled.
|
- `is-interactive-job-control` returns 0 if interactive job control is enabled. Also, `--is-interactive-job-control` (no short flag).
|
||||||
|
|
||||||
- `--is-no-job-control` returns 0 if no job control is enabled.
|
- `is-no-job-control` returns 0 if no job control is enabled. Also `--is-no-job-control` (no short flag).
|
||||||
|
|
||||||
- `-f` or `--current-filename` prints the filename of the currently running script.
|
- `current-filename` prints the filename of the currently running script. Also `-f` or `--current-filename`.
|
||||||
|
|
||||||
- `-n` or `--current-line-number` prints the line number of the currently running script.
|
- `current-line-number` prints the line number of the currently running script. Also `-n` or `--current-line-number`.
|
||||||
|
|
||||||
- `-j CONTROLTYPE` or `--job-control=CONTROLTYPE` sets the job control type, which can be `none`, `full`, or `interactive`.
|
- `job-control CONTROL-TYPE` sets the job control type, which can be `none`, `full`, or `interactive`. Also `-j CONTROL-TYPE` or `--job-control=CONTROL-TYPE`.
|
||||||
|
|
||||||
- `-t` or `--print-stack-trace` prints a stack trace of all function calls on the call stack.
|
- `print-stack-trace` prints a stack trace of all function calls on the call stack. Also `-t` or `--print-stack-trace`.
|
||||||
|
|
||||||
|
\subsection status-notes Notes
|
||||||
|
|
||||||
|
For backwards compatibility each subcommand can also be specified as a long or short option. For example, rather than `status is-login` you can type `status --is-login`. The flag forms are deprecated and may be removed in a future release (but not before fish 3.0).
|
||||||
|
|
||||||
|
You can only specify one subcommand per invocation even if you use the flag form of the subcommand.
|
||||||
|
|||||||
@@ -42,12 +42,17 @@ The following subcommands are available:
|
|||||||
|
|
||||||
- `trim` removes leading and trailing whitespace from each STRING. If `-l` or `--left` is given, only leading whitespace is removed. If `-r` or `--right` is given, only trailing whitespace is trimmed. The `-c` or `--chars` switch causes the characters in CHARS to be removed instead of whitespace. Exit status: 0 if at least one character was trimmed, or 1 otherwise.
|
- `trim` removes leading and trailing whitespace from each STRING. If `-l` or `--left` is given, only leading whitespace is removed. If `-r` or `--right` is given, only trailing whitespace is trimmed. The `-c` or `--chars` switch causes the characters in CHARS to be removed instead of whitespace. Exit status: 0 if at least one character was trimmed, or 1 otherwise.
|
||||||
|
|
||||||
- `escape` escapes each STRING such that it can be passed back to `eval` to produce the original argument again. By default, all special characters are escaped, and quotes are used to simplify the output when possible. If `-n` or `--no-quote` is given, the simplifying quoted format is not used. Exit status: 0 if at least one string was escaped, or 1 otherwise.
|
- `escape` escapes each STRING such that it can be passed back to `eval` to produce the original argument again. By default, all special characters are escaped, and quotes are used to simplify the output when possible. If `-n` or `--no-quoted` is given, the simplifying quoted format is not used. Exit status: 0 if at least one string was escaped, or 1 otherwise.
|
||||||
|
|
||||||
- `match` tests each STRING against PATTERN and prints matching substrings. Only the first match for each STRING is reported unless `-a` or `--all` is given, in which case all matches are reported. Matching can be made case-insensitive with `-i` or `--ignore-case`. If `-n` or `--index` is given, each match is reported as a 1-based start position and a length. By default, PATTERN is interpreted as a glob pattern matched against each entire STRING argument. If `-r` or `--regex` is given, PATTERN is interpreted as a Perl-compatible regular expression. For a regular expression containing capturing groups, multiple items will be reported for each match, one for the entire match and one for each capturing group. If --invert or -v is used the selected lines will be only those which do not match the given glob pattern or regular expression. Exit status: 0 if at least one match was found, or 1 otherwise.
|
- `match` tests each STRING against PATTERN and prints matching substrings. Only the first match for each STRING is reported unless `-a` or `--all` is given, in which case all matches are reported. Matching can be made case-insensitive with `-i` or `--ignore-case`. If `-n` or `--index` is given, each match is reported as a 1-based start position and a length. By default, PATTERN is interpreted as a glob pattern matched against each entire STRING argument. A glob pattern is only considered a valid match if it matches the entire STRING. If `-r` or `--regex` is given, PATTERN is interpreted as a Perl-compatible regular expression, which does not have to match the entire STRING. For a regular expression containing capturing groups, multiple items will be reported for each match, one for the entire match and one for each capturing group. If --invert or -v is used the selected lines will be only those which do not match the given glob pattern or regular expression. Exit status: 0 if at least one match was found, or 1 otherwise.
|
||||||
|
|
||||||
- `replace` is similar to `match` but replaces non-overlapping matching substrings with a replacement string and prints the result. By default, PATTERN is treated as a literal substring to be matched. If `-r` or `--regex` is given, PATTERN is interpreted as a Perl-compatible regular expression, and REPLACEMENT can contain C-style escape sequences like `\t` as well as references to capturing groups by number or name as `$n` or `${n}`. Exit status: 0 if at least one replacement was performed, or 1 otherwise.
|
- `replace` is similar to `match` but replaces non-overlapping matching substrings with a replacement string and prints the result. By default, PATTERN is treated as a literal substring to be matched. If `-r` or `--regex` is given, PATTERN is interpreted as a Perl-compatible regular expression, and REPLACEMENT can contain C-style escape sequences like `\t` as well as references to capturing groups by number or name as `$n` or `${n}`. Exit status: 0 if at least one replacement was performed, or 1 otherwise.
|
||||||
|
|
||||||
|
\subsection regular-expressions Regular Expressions
|
||||||
|
|
||||||
|
Both the `match` and `replace` subcommand support regular expressions when used with the `-r` or `--regex` option. The dialect is that of PCRE2.
|
||||||
|
|
||||||
|
In general, special characters are special by default, so `a+` matches one or more "a"s, while `a\+` matches an "a" and then a "+". `(a+)` matches one or more "a"s in a capturing group (`(?:XXXX)` denotes a non-capturing group). For the replacement parameter of `replace`, `$n` refers to the n-th group of the match. In the match parameter, `\n` (e.g. `\1`) refers back to groups.
|
||||||
|
|
||||||
\subsection string-example Examples
|
\subsection string-example Examples
|
||||||
|
|
||||||
@@ -120,6 +125,13 @@ The following subcommands are available:
|
|||||||
|
|
||||||
>_ echo 'ok?' | string match '*\\?'
|
>_ echo 'ok?' | string match '*\\?'
|
||||||
>_ <outp>ok?</outp>
|
>_ <outp>ok?</outp>
|
||||||
|
\endfish
|
||||||
|
|
||||||
|
\subsection string-example-match-regex Match Regex Examples
|
||||||
|
|
||||||
|
\fish{cli-dark}
|
||||||
|
>_ string match -r 'cat|dog|fish' 'nice dog'
|
||||||
|
<outp>dog</outp>
|
||||||
|
|
||||||
>_ string match -r -v "c.*[12]" {cat,dog}(seq 1 4)
|
>_ string match -r -v "c.*[12]" {cat,dog}(seq 1 4)
|
||||||
<outp>dog1</outp>
|
<outp>dog1</outp>
|
||||||
@@ -128,13 +140,6 @@ The following subcommands are available:
|
|||||||
<outp>dog3</outp>
|
<outp>dog3</outp>
|
||||||
<outp>cat4</outp>
|
<outp>cat4</outp>
|
||||||
<outp>dog4</outp>
|
<outp>dog4</outp>
|
||||||
\endfish
|
|
||||||
|
|
||||||
\subsection string-example-match-regex Match Regex Examples
|
|
||||||
|
|
||||||
\fish{cli-dark}
|
|
||||||
>_ string match -r 'cat|dog|fish' 'nice dog'
|
|
||||||
<outp>dog</outp>
|
|
||||||
|
|
||||||
>_ string match -r '(\\d\\d?):(\\d\\d):(\\d\\d)' <asis>2:34:56</asis>
|
>_ string match -r '(\\d\\d?):(\\d\\d):(\\d\\d)' <asis>2:34:56</asis>
|
||||||
<outp>2:34:56</outp>
|
<outp>2:34:56</outp>
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ suspend [--force]
|
|||||||
`suspend` suspends execution of the current shell by sending it a
|
`suspend` suspends execution of the current shell by sending it a
|
||||||
SIGTSTP signal, returning to the controlling process. It can be
|
SIGTSTP signal, returning to the controlling process. It can be
|
||||||
resumed later by sending it a SIGCONT. In order to prevent suspending
|
resumed later by sending it a SIGCONT. In order to prevent suspending
|
||||||
a shell that doesn't have a controlling process, it will not suspend a
|
a shell that doesn't have a controlling process, it will not suspend
|
||||||
the shell if it is a login shell or if `$SHLVL` is less
|
the shell if it is a login shell. This requirement is bypassed
|
||||||
`$suspend_minimum_SHLVL`, which defaults to three. This test is
|
if the `--force` option is given or the shell is not interactive.
|
||||||
skipped if the `--force` option is given or the shell is not
|
|
||||||
interactive.
|
|
||||||
@@ -99,7 +99,7 @@ Commands can be chained with semicolons.
|
|||||||
You'll quickly notice that `fish` performs syntax highlighting as you type. Invalid commands are colored red by default:
|
You'll quickly notice that `fish` performs syntax highlighting as you type. Invalid commands are colored red by default:
|
||||||
|
|
||||||
\fish{cli-dark}
|
\fish{cli-dark}
|
||||||
>_ <error>/bin/mkd</error>
|
>_ <eror>/bin/mkd</eror>
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
A command may be invalid because it does not exist, or refers to a file that you cannot execute. When the command becomes valid, it is shown in a different color:
|
A command may be invalid because it does not exist, or refers to a file that you cannot execute. When the command becomes valid, it is shown in a different color:
|
||||||
@@ -170,7 +170,7 @@ stdin and stdout can be redirected via the familiar < and >. Unlike other
|
|||||||
`fish` suggests commands as you type, and shows the suggestion to the right of the cursor, in gray. For example:
|
`fish` suggests commands as you type, and shows the suggestion to the right of the cursor, in gray. For example:
|
||||||
|
|
||||||
\fish{cli-dark}
|
\fish{cli-dark}
|
||||||
>_ <error>/bin/h</error><s>___ostname</s>
|
>_ <eror>/bin/h</eror><s>___ostname</s>
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
It knows about paths and options:
|
It knows about paths and options:
|
||||||
@@ -182,7 +182,7 @@ It knows about paths and options:
|
|||||||
And history too. Type a command once, and you can re-summon it by just typing a few letters:
|
And history too. Type a command once, and you can re-summon it by just typing a few letters:
|
||||||
|
|
||||||
\fish{cli-dark}
|
\fish{cli-dark}
|
||||||
>_ <error>r</error><s>___sync -avze ssh . myname@somelonghost.com:/some/long/path/doo/dee/doo/dee/doo</s>
|
>_ <eror>r<</eror><s>___sync -avze ssh . myname@somelonghost.com:/some/long/path/doo/dee/doo/dee/doo</s>
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
To accept the autosuggestion, hit @cursor_key{→,right arrow} or @key{Control,F}. To accept a single word of the autosuggestion, @key{Alt,→} (right arrow). If the autosuggestion is not what you want, just ignore it.
|
To accept the autosuggestion, hit @cursor_key{→,right arrow} or @key{Control,F}. To accept a single word of the autosuggestion, @key{Alt,→} (right arrow). If the autosuggestion is not what you want, just ignore it.
|
||||||
@@ -194,14 +194,14 @@ To accept the autosuggestion, hit @cursor_key{→,right arrow} or @key{Contro
|
|||||||
Press @key{Tab}, and `fish` will attempt to complete the command, argument, or path:
|
Press @key{Tab}, and `fish` will attempt to complete the command, argument, or path:
|
||||||
|
|
||||||
\fish{cli-dark}
|
\fish{cli-dark}
|
||||||
>_ <error>/pri</error> @key{Tab} → /private/
|
>_ <eror>/pri</eror> @key{Tab} → /private/
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
If there's more than one possibility, it will list them:
|
If there's more than one possibility, it will list them:
|
||||||
|
|
||||||
\fish{cli-dark}
|
\fish{cli-dark}
|
||||||
>_ <error>~/stuff/s</error> @key{Tab}
|
>_ <eror>~/stuff/s</eror> @key{Tab}
|
||||||
<outp><m>~/stuff/s</m>cript.sh <i>(Executable, 4.8kB)</i> <m>~/stuff/s</m>ources/ <i>(Directory)</i></outp>
|
<outp><mtch>~/stuff/s</outp>cript.sh <i>(Executable, 4.8kB)</i> \mtch{~/stuff/s</mtch>ources/ <i>(Directory)</i>}
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
Hit tab again to cycle through the possibilities.
|
Hit tab again to cycle through the possibilities.
|
||||||
@@ -211,7 +211,7 @@ Hit tab again to cycle through the possibilities.
|
|||||||
\fish{cli-dark}
|
\fish{cli-dark}
|
||||||
>_ git merge pr @key{Tab} → git merge prompt_designer
|
>_ git merge pr @key{Tab} → git merge prompt_designer
|
||||||
>_ git checkout b @key{Tab}
|
>_ git checkout b @key{Tab}
|
||||||
<outp><m>b</m>uiltin_list_io_merge <i>(Branch)</i> <m>b</m>uiltin_set_color <i>(Branch)</i> <m>b</m>usted_events <i>(Tag)</i></outp>
|
<outp><mtch>b</outp>uiltin_list_io_merge <i>(Branch)</i> \mtch{b</mtch>uiltin_set_color <i>(Branch)</i> <mtch>b</mtch>usted_events <i>(Tag)</i>}
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
Try hitting tab and see what `fish` can do!
|
Try hitting tab and see what `fish` can do!
|
||||||
@@ -275,7 +275,7 @@ Unlike other shells, `fish` does not have an export command. Instead, a variable
|
|||||||
\fish{cli-dark}
|
\fish{cli-dark}
|
||||||
>_ set -x MyVariable SomeValue
|
>_ set -x MyVariable SomeValue
|
||||||
>_ env | grep MyVariable
|
>_ env | grep MyVariable
|
||||||
<outp><sm>MyVariable</sm>=SomeValue</outp>
|
<outp><m>MyVariablem</outp>=SomeValue</m>
|
||||||
\endfish
|
\endfish
|
||||||
|
|
||||||
You can erase a variable with `-e` or `--erase`
|
You can erase a variable with `-e` or `--erase`
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ html, body {
|
|||||||
color: #111;
|
color: #111;
|
||||||
}
|
}
|
||||||
body {
|
body {
|
||||||
text-rendering: optimizeLegibility;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.logo {
|
.logo {
|
||||||
@@ -96,9 +95,6 @@ a { color: #3d5cb3; }
|
|||||||
.fish_right_bar ul li {
|
.fish_right_bar ul li {
|
||||||
margin-bottom: 0.6rem;
|
margin-bottom: 0.6rem;
|
||||||
}
|
}
|
||||||
.fish_right_bar p > code {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
/* Typography */
|
/* Typography */
|
||||||
p { margin: 1rem 0; }
|
p { margin: 1rem 0; }
|
||||||
h1, h2, h3, h4, h5, h6 {
|
h1, h2, h3, h4, h5, h6 {
|
||||||
@@ -271,5 +267,3 @@ tt, code, pre, .fish {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
left: -2rem;
|
left: -2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ while CONDITION; COMMANDS...; end
|
|||||||
|
|
||||||
If the exit status of `CONDITION` is non-zero on the first iteration, `COMMANDS` will not be executed at all.
|
If the exit status of `CONDITION` is non-zero on the first iteration, `COMMANDS` will not be executed at all.
|
||||||
|
|
||||||
You can use <a href="#and">`and`</a> or <a href="#and">`or`</a> for complex conditions. Even more complex control can be achieved with `while true` containing a <a href="#break">break</a>.
|
You can use <a href="#and">`and`</a> or <a href="#or">`or`</a> for complex conditions. Even more complex control can be achieved with `while true` containing a <a href="#break">break</a>.
|
||||||
|
|
||||||
\subsection while-example Example
|
\subsection while-example Example
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,6 @@
|
|||||||
# ...
|
# ...
|
||||||
# end
|
# end
|
||||||
# To include configuration only for interactive shells, use
|
# To include configuration only for interactive shells, use
|
||||||
# if status --is-interactiv
|
# if status --is-interactive
|
||||||
# ...
|
# ...
|
||||||
# end
|
# end
|
||||||
|
|||||||
16
fish.spec.in
16
fish.spec.in
@@ -11,6 +11,10 @@ URL: http://fishshell.com/
|
|||||||
Source0: %{name}_@VERSION@.orig.tar.gz
|
Source0: %{name}_@VERSION@.orig.tar.gz
|
||||||
BuildRequires: ncurses-devel gettext gcc-c++ autoconf
|
BuildRequires: ncurses-devel gettext gcc-c++ autoconf
|
||||||
|
|
||||||
|
%if 0%{?opensuse_bs} && 0%{?rhel} && 0%{?rhel} < 7
|
||||||
|
BuildRequires: gcc48 gcc48-c++
|
||||||
|
%endif
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
|
||||||
Requires: bc
|
Requires: bc
|
||||||
@@ -34,7 +38,19 @@ is simple but incompatible with other shell languages.
|
|||||||
%setup -q -n %{name}-@VERSION@
|
%setup -q -n %{name}-@VERSION@
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
%if 0%{?opensuse_bs} && 0%{?rhel} && 0%{?rhel} < 7
|
||||||
|
export CC=gcc48
|
||||||
|
export CXX=g++48
|
||||||
|
%if 0%{?rhel} < 6
|
||||||
|
# i686 required for atomic instructions; default is i386
|
||||||
|
export CXXFLAGS="$CXXFLAGS -march=i686"
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
%if 0%{?opensuse_bs}
|
||||||
|
%configure || cat config.log
|
||||||
|
%else
|
||||||
%configure
|
%configure
|
||||||
|
%endif
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
|||||||
@@ -56,6 +56,7 @@
|
|||||||
D01A2C9B16964C8200767098 /* Copy Files */,
|
D01A2C9B16964C8200767098 /* Copy Files */,
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
|
9C7A55801DCD73930049C25D /* PBXTargetDependency */,
|
||||||
D0F01A1315AA36280034B3B1 /* PBXTargetDependency */,
|
D0F01A1315AA36280034B3B1 /* PBXTargetDependency */,
|
||||||
D0F01A1715AA36300034B3B1 /* PBXTargetDependency */,
|
D0F01A1715AA36300034B3B1 /* PBXTargetDependency */,
|
||||||
D0A564EF168D09C000AF6161 /* PBXTargetDependency */,
|
D0A564EF168D09C000AF6161 /* PBXTargetDependency */,
|
||||||
@@ -67,6 +68,72 @@
|
|||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
63A2C0E91CC60F3B00973404 /* pcre2_find_bracket.c in Sources */ = {isa = PBXBuildFile; fileRef = 63A2C0E81CC5F9FB00973404 /* pcre2_find_bracket.c */; };
|
63A2C0E91CC60F3B00973404 /* pcre2_find_bracket.c in Sources */ = {isa = PBXBuildFile; fileRef = 63A2C0E81CC5F9FB00973404 /* pcre2_find_bracket.c */; };
|
||||||
|
9C7A55271DCD651F0049C25D /* fallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853E13B3ACEE0099B651 /* fallback.cpp */; };
|
||||||
|
9C7A55281DCD65540049C25D /* builtin_commandline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853013B3ACEE0099B651 /* builtin_commandline.cpp */; };
|
||||||
|
9C7A55291DCD65540049C25D /* builtin_complete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853113B3ACEE0099B651 /* builtin_complete.cpp */; };
|
||||||
|
9C7A552A1DCD65540049C25D /* builtin_jobs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853213B3ACEE0099B651 /* builtin_jobs.cpp */; };
|
||||||
|
9C7A552B1DCD65540049C25D /* builtin_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853313B3ACEE0099B651 /* builtin_set.cpp */; };
|
||||||
|
9C7A552C1DCD65540049C25D /* builtin_set_color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C861EA16CC7054003B5A04 /* builtin_set_color.cpp */; };
|
||||||
|
9C7A552D1DCD65540049C25D /* builtin_ulimit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853413B3ACEE0099B651 /* builtin_ulimit.cpp */; };
|
||||||
|
9C7A552E1DCD65540049C25D /* builtin_printf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0CA63F316FC275F00093BD4 /* builtin_printf.cpp */; };
|
||||||
|
9C7A552F1DCD65820049C25D /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855E13B3ACEE0099B651 /* util.cpp */; };
|
||||||
|
9C7A55361DCD71330049C25D /* autoload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C6FCC914CFA4B0004CE8AD /* autoload.cpp */; };
|
||||||
|
9C7A55371DCD71330049C25D /* builtin_commandline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853013B3ACEE0099B651 /* builtin_commandline.cpp */; };
|
||||||
|
9C7A55381DCD71330049C25D /* builtin_complete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853113B3ACEE0099B651 /* builtin_complete.cpp */; };
|
||||||
|
9C7A55391DCD71330049C25D /* builtin_jobs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853213B3ACEE0099B651 /* builtin_jobs.cpp */; };
|
||||||
|
9C7A553A1DCD71330049C25D /* builtin_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853313B3ACEE0099B651 /* builtin_set.cpp */; };
|
||||||
|
9C7A553B1DCD71330049C25D /* builtin_set_color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C861EA16CC7054003B5A04 /* builtin_set_color.cpp */; };
|
||||||
|
9C7A553C1DCD71330049C25D /* builtin_ulimit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853413B3ACEE0099B651 /* builtin_ulimit.cpp */; };
|
||||||
|
9C7A553D1DCD71330049C25D /* builtin_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0F3373A1506DE3C00ECEFC0 /* builtin_test.cpp */; };
|
||||||
|
9C7A553E1DCD71330049C25D /* builtin_printf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0CA63F316FC275F00093BD4 /* builtin_printf.cpp */; };
|
||||||
|
9C7A553F1DCD71330049C25D /* builtin_string.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D04F7F7B1BA4BF4000B0F227 /* builtin_string.cpp */; };
|
||||||
|
9C7A55401DCD71330049C25D /* color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0B6B0FE14E88BA400AD6C10 /* color.cpp */; };
|
||||||
|
9C7A55411DCD71330049C25D /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853613B3ACEE0099B651 /* common.cpp */; };
|
||||||
|
9C7A55421DCD71330049C25D /* event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853B13B3ACEE0099B651 /* event.cpp */; };
|
||||||
|
9C7A55431DCD71330049C25D /* input_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854913B3ACEE0099B651 /* input_common.cpp */; };
|
||||||
|
9C7A55441DCD71330049C25D /* io.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854C13B3ACEE0099B651 /* io.cpp */; };
|
||||||
|
9C7A55451DCD71330049C25D /* iothread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854D13B3ACEE0099B651 /* iothread.cpp */; };
|
||||||
|
9C7A55461DCD71330049C25D /* parse_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855213B3ACEE0099B651 /* parse_util.cpp */; };
|
||||||
|
9C7A55471DCD71330049C25D /* path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855513B3ACEE0099B651 /* path.cpp */; };
|
||||||
|
9C7A55481DCD71330049C25D /* parse_execution.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D052D8091868F7FC003ABCBD /* parse_execution.cpp */; };
|
||||||
|
9C7A55491DCD71330049C25D /* postfork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D09B1C1914FC7B5B00F91077 /* postfork.cpp */; };
|
||||||
|
9C7A554A1DCD71330049C25D /* screen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855A13B3ACEE0099B651 /* screen.cpp */; };
|
||||||
|
9C7A554B1DCD71330049C25D /* signal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855C13B3ACEE0099B651 /* signal.cpp */; };
|
||||||
|
9C7A554C1DCD71330049C25D /* utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C9733718DE5449002D7C81 /* utf8.cpp */; };
|
||||||
|
9C7A554D1DCD71330049C25D /* builtin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853513B3ACEE0099B651 /* builtin.cpp */; };
|
||||||
|
9C7A554E1DCD71330049C25D /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854413B3ACEE0099B651 /* function.cpp */; };
|
||||||
|
9C7A554F1DCD71330049C25D /* complete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853713B3ACEE0099B651 /* complete.cpp */; };
|
||||||
|
9C7A55501DCD71330049C25D /* env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853A13B3ACEE0099B651 /* env.cpp */; };
|
||||||
|
9C7A55511DCD71330049C25D /* exec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853C13B3ACEE0099B651 /* exec.cpp */; };
|
||||||
|
9C7A55521DCD71330049C25D /* wcstringutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0F5B46319CFCDE80090665E /* wcstringutil.cpp */; };
|
||||||
|
9C7A55531DCD71330049C25D /* expand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853D13B3ACEE0099B651 /* expand.cpp */; };
|
||||||
|
9C7A55541DCD71330049C25D /* fallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853E13B3ACEE0099B651 /* fallback.cpp */; };
|
||||||
|
9C7A55551DCD71330049C25D /* fish_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D00F63F019137E9D00FCCDEC /* fish_version.cpp */; settings = {COMPILER_FLAGS = "-I$(DERIVED_FILE_DIR)"; }; };
|
||||||
|
9C7A55561DCD71330049C25D /* highlight.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854713B3ACEE0099B651 /* highlight.cpp */; };
|
||||||
|
9C7A55571DCD71330049C25D /* history.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854813B3ACEE0099B651 /* history.cpp */; };
|
||||||
|
9C7A55581DCD71330049C25D /* kill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854F13B3ACEE0099B651 /* kill.cpp */; };
|
||||||
|
9C7A55591DCD71330049C25D /* parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855413B3ACEE0099B651 /* parser.cpp */; };
|
||||||
|
9C7A555A1DCD71330049C25D /* parser_keywords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855313B3ACEE0099B651 /* parser_keywords.cpp */; };
|
||||||
|
9C7A555B1DCD71330049C25D /* proc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855713B3ACEE0099B651 /* proc.cpp */; };
|
||||||
|
9C7A555C1DCD71330049C25D /* reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855813B3ACEE0099B651 /* reader.cpp */; };
|
||||||
|
9C7A555D1DCD71330049C25D /* sanity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855913B3ACEE0099B651 /* sanity.cpp */; };
|
||||||
|
9C7A555E1DCD71330049C25D /* tokenizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855D13B3ACEE0099B651 /* tokenizer.cpp */; };
|
||||||
|
9C7A555F1DCD71330049C25D /* wildcard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0856013B3ACEE0099B651 /* wildcard.cpp */; };
|
||||||
|
9C7A55601DCD71330049C25D /* wgetopt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855F13B3ACEE0099B651 /* wgetopt.cpp */; };
|
||||||
|
9C7A55611DCD71330049C25D /* wutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0856113B3ACEE0099B651 /* wutil.cpp */; };
|
||||||
|
9C7A55621DCD71330049C25D /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854A13B3ACEE0099B651 /* input.cpp */; };
|
||||||
|
9C7A55631DCD71330049C25D /* output.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855113B3ACEE0099B651 /* output.cpp */; };
|
||||||
|
9C7A55641DCD71330049C25D /* intern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854B13B3ACEE0099B651 /* intern.cpp */; };
|
||||||
|
9C7A55651DCD71330049C25D /* env_universal_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853813B3ACEE0099B651 /* env_universal_common.cpp */; };
|
||||||
|
9C7A55661DCD71330049C25D /* pager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D03238891849D1980032CF2C /* pager.cpp */; };
|
||||||
|
9C7A55681DCD71330049C25D /* parse_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C52F351765284C00BFAB82 /* parse_tree.cpp */; };
|
||||||
|
9C7A55691DCD71330049C25D /* parse_productions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0FE8EE7179FB75F008C9F21 /* parse_productions.cpp */; };
|
||||||
|
9C7A556A1DCD71330049C25D /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855E13B3ACEE0099B651 /* util.cpp */; };
|
||||||
|
9C7A556C1DCD71330049C25D /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D0D02A8C15983CFA008E62BD /* libncurses.dylib */; };
|
||||||
|
9C7A556D1DCD71330049C25D /* libpcre2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D04F7FD01BA4E29300B0F227 /* libpcre2.a */; };
|
||||||
|
9C7A557D1DCD71890049C25D /* fish_key_reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C7A557C1DCD717C0049C25D /* fish_key_reader.cpp */; };
|
||||||
|
9C7A557E1DCD71CD0049C25D /* print_help.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855613B3ACEE0099B651 /* print_help.cpp */; };
|
||||||
|
9C7A55811DCD739C0049C25D /* fish_key_reader in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9C7A55721DCD71330049C25D /* fish_key_reader */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||||
D00769121990137800CA4627 /* autoload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C6FCC914CFA4B0004CE8AD /* autoload.cpp */; };
|
D00769121990137800CA4627 /* autoload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C6FCC914CFA4B0004CE8AD /* autoload.cpp */; };
|
||||||
D00769131990137800CA4627 /* builtin_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0F3373A1506DE3C00ECEFC0 /* builtin_test.cpp */; };
|
D00769131990137800CA4627 /* builtin_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0F3373A1506DE3C00ECEFC0 /* builtin_test.cpp */; };
|
||||||
D00769141990137800CA4627 /* color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0B6B0FE14E88BA400AD6C10 /* color.cpp */; };
|
D00769141990137800CA4627 /* color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0B6B0FE14E88BA400AD6C10 /* color.cpp */; };
|
||||||
@@ -112,6 +179,24 @@
|
|||||||
D0076943199013B900CA4627 /* fish_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854113B3ACEE0099B651 /* fish_tests.cpp */; };
|
D0076943199013B900CA4627 /* fish_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854113B3ACEE0099B651 /* fish_tests.cpp */; };
|
||||||
D00F63F119137E9D00FCCDEC /* fish_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D00F63F019137E9D00FCCDEC /* fish_version.cpp */; settings = {COMPILER_FLAGS = "-I$(DERIVED_FILE_DIR)"; }; };
|
D00F63F119137E9D00FCCDEC /* fish_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D00F63F019137E9D00FCCDEC /* fish_version.cpp */; settings = {COMPILER_FLAGS = "-I$(DERIVED_FILE_DIR)"; }; };
|
||||||
D00F63F219137E9D00FCCDEC /* fish_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D00F63F019137E9D00FCCDEC /* fish_version.cpp */; settings = {COMPILER_FLAGS = "-I$(DERIVED_FILE_DIR)"; }; };
|
D00F63F219137E9D00FCCDEC /* fish_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D00F63F019137E9D00FCCDEC /* fish_version.cpp */; settings = {COMPILER_FLAGS = "-I$(DERIVED_FILE_DIR)"; }; };
|
||||||
|
D01243591CD3DAD100C64313 /* builtin_commandline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853013B3ACEE0099B651 /* builtin_commandline.cpp */; };
|
||||||
|
D012435A1CD3DAD100C64313 /* builtin_complete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853113B3ACEE0099B651 /* builtin_complete.cpp */; };
|
||||||
|
D012435B1CD3DAD100C64313 /* builtin_jobs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853213B3ACEE0099B651 /* builtin_jobs.cpp */; };
|
||||||
|
D012435C1CD3DAD100C64313 /* builtin_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853313B3ACEE0099B651 /* builtin_set.cpp */; };
|
||||||
|
D012435D1CD3DAD100C64313 /* builtin_set_color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C861EA16CC7054003B5A04 /* builtin_set_color.cpp */; };
|
||||||
|
D012435E1CD3DAD100C64313 /* builtin_ulimit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853413B3ACEE0099B651 /* builtin_ulimit.cpp */; };
|
||||||
|
D012435F1CD3DAD100C64313 /* builtin_printf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0CA63F316FC275F00093BD4 /* builtin_printf.cpp */; };
|
||||||
|
D01243601CD3DAE200C64313 /* builtin_commandline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853013B3ACEE0099B651 /* builtin_commandline.cpp */; };
|
||||||
|
D01243611CD3DAE200C64313 /* builtin_complete.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853113B3ACEE0099B651 /* builtin_complete.cpp */; };
|
||||||
|
D01243621CD3DAE200C64313 /* builtin_jobs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853213B3ACEE0099B651 /* builtin_jobs.cpp */; };
|
||||||
|
D01243631CD3DAE200C64313 /* builtin_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853313B3ACEE0099B651 /* builtin_set.cpp */; };
|
||||||
|
D01243641CD3DAE200C64313 /* builtin_set_color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0C861EA16CC7054003B5A04 /* builtin_set_color.cpp */; };
|
||||||
|
D01243651CD3DAE200C64313 /* builtin_ulimit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853413B3ACEE0099B651 /* builtin_ulimit.cpp */; };
|
||||||
|
D01243661CD3DAE200C64313 /* builtin_printf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0CA63F316FC275F00093BD4 /* builtin_printf.cpp */; };
|
||||||
|
D01243681CD4015600C64313 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855E13B3ACEE0099B651 /* util.cpp */; };
|
||||||
|
D01243691CD4015C00C64313 /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0855E13B3ACEE0099B651 /* util.cpp */; };
|
||||||
|
D012436A1CD4018100C64313 /* fallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853E13B3ACEE0099B651 /* fallback.cpp */; };
|
||||||
|
D012436B1CD4019700C64313 /* fallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0853E13B3ACEE0099B651 /* fallback.cpp */; };
|
||||||
D01A2D24169B736200767098 /* man1 in Copy Files */ = {isa = PBXBuildFile; fileRef = D01A2D23169B730A00767098 /* man1 */; };
|
D01A2D24169B736200767098 /* man1 in Copy Files */ = {isa = PBXBuildFile; fileRef = D01A2D23169B730A00767098 /* man1 */; };
|
||||||
D01A2D25169B737700767098 /* man1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = D01A2D23169B730A00767098 /* man1 */; };
|
D01A2D25169B737700767098 /* man1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = D01A2D23169B730A00767098 /* man1 */; };
|
||||||
D030FBEF1A4A382000F7ADA0 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854A13B3ACEE0099B651 /* input.cpp */; };
|
D030FBEF1A4A382000F7ADA0 /* input.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0A0854A13B3ACEE0099B651 /* input.cpp */; };
|
||||||
@@ -268,6 +353,27 @@
|
|||||||
/* End PBXBuildRule section */
|
/* End PBXBuildRule section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
9C7A55321DCD71330049C25D /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = D0A084F213B3AC130099B651 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = D008D0C41BC58F8800841177;
|
||||||
|
remoteInfo = "generate-version-header";
|
||||||
|
};
|
||||||
|
9C7A55341DCD71330049C25D /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = D0A084F213B3AC130099B651 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = D04F7FCF1BA4E29300B0F227;
|
||||||
|
remoteInfo = libpcre2.a;
|
||||||
|
};
|
||||||
|
9C7A557F1DCD73930049C25D /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = D0A084F213B3AC130099B651 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = 9C7A55301DCD71330049C25D;
|
||||||
|
remoteInfo = fish_key_reader;
|
||||||
|
};
|
||||||
D008D0CA1BC58FDD00841177 /* PBXContainerItemProxy */ = {
|
D008D0CA1BC58FDD00841177 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = D0A084F213B3AC130099B651 /* Project object */;
|
containerPortal = D0A084F213B3AC130099B651 /* Project object */;
|
||||||
@@ -420,6 +526,7 @@
|
|||||||
dstPath = base/bin;
|
dstPath = base/bin;
|
||||||
dstSubfolderSpec = 1;
|
dstSubfolderSpec = 1;
|
||||||
files = (
|
files = (
|
||||||
|
9C7A55811DCD739C0049C25D /* fish_key_reader in CopyFiles */,
|
||||||
D0F019F115A977140034B3B1 /* fish in CopyFiles */,
|
D0F019F115A977140034B3B1 /* fish in CopyFiles */,
|
||||||
D0F019F315A977290034B3B1 /* fish_indent in CopyFiles */,
|
D0F019F315A977290034B3B1 /* fish_indent in CopyFiles */,
|
||||||
);
|
);
|
||||||
@@ -450,6 +557,17 @@
|
|||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
4E142D731B56B5D7008783C8 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../osx/config.h; sourceTree = "<group>"; };
|
4E142D731B56B5D7008783C8 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../osx/config.h; sourceTree = "<group>"; };
|
||||||
63A2C0E81CC5F9FB00973404 /* pcre2_find_bracket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre2_find_bracket.c; sourceTree = "<group>"; };
|
63A2C0E81CC5F9FB00973404 /* pcre2_find_bracket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pcre2_find_bracket.c; sourceTree = "<group>"; };
|
||||||
|
9C7A55721DCD71330049C25D /* fish_key_reader */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = fish_key_reader; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
9C7A55731DCD716F0049C25D /* builtin_commandline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_commandline.h; sourceTree = "<group>"; };
|
||||||
|
9C7A55741DCD716F0049C25D /* builtin_complete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_complete.h; sourceTree = "<group>"; };
|
||||||
|
9C7A55751DCD716F0049C25D /* builtin_jobs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_jobs.h; sourceTree = "<group>"; };
|
||||||
|
9C7A55761DCD716F0049C25D /* builtin_printf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_printf.h; sourceTree = "<group>"; };
|
||||||
|
9C7A55771DCD716F0049C25D /* builtin_set_color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_set_color.h; sourceTree = "<group>"; };
|
||||||
|
9C7A55781DCD716F0049C25D /* builtin_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_set.h; sourceTree = "<group>"; };
|
||||||
|
9C7A55791DCD716F0049C25D /* builtin_string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_string.h; sourceTree = "<group>"; };
|
||||||
|
9C7A557A1DCD716F0049C25D /* builtin_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_test.h; sourceTree = "<group>"; };
|
||||||
|
9C7A557B1DCD716F0049C25D /* builtin_ulimit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = builtin_ulimit.h; sourceTree = "<group>"; };
|
||||||
|
9C7A557C1DCD717C0049C25D /* fish_key_reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fish_key_reader.cpp; sourceTree = "<group>"; };
|
||||||
D00769421990137800CA4627 /* fish_tests */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = fish_tests; sourceTree = BUILT_PRODUCTS_DIR; };
|
D00769421990137800CA4627 /* fish_tests */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = fish_tests; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
D00F63F019137E9D00FCCDEC /* fish_version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fish_version.cpp; sourceTree = "<group>"; };
|
D00F63F019137E9D00FCCDEC /* fish_version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fish_version.cpp; sourceTree = "<group>"; };
|
||||||
D01A2D23169B730A00767098 /* man1 */ = {isa = PBXFileReference; lastKnownFileType = text; name = man1; path = pages_for_manpath/man1; sourceTree = BUILT_PRODUCTS_DIR; };
|
D01A2D23169B730A00767098 /* man1 */ = {isa = PBXFileReference; lastKnownFileType = text; name = man1; path = pages_for_manpath/man1; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@@ -551,7 +669,6 @@
|
|||||||
D0A0854B13B3ACEE0099B651 /* intern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = intern.cpp; sourceTree = "<group>"; };
|
D0A0854B13B3ACEE0099B651 /* intern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = intern.cpp; sourceTree = "<group>"; };
|
||||||
D0A0854C13B3ACEE0099B651 /* io.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = io.cpp; sourceTree = "<group>"; };
|
D0A0854C13B3ACEE0099B651 /* io.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = io.cpp; sourceTree = "<group>"; };
|
||||||
D0A0854D13B3ACEE0099B651 /* iothread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iothread.cpp; sourceTree = "<group>"; };
|
D0A0854D13B3ACEE0099B651 /* iothread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iothread.cpp; sourceTree = "<group>"; };
|
||||||
D0A0854E13B3ACEE0099B651 /* key_reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = key_reader.cpp; sourceTree = "<group>"; };
|
|
||||||
D0A0854F13B3ACEE0099B651 /* kill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kill.cpp; sourceTree = "<group>"; };
|
D0A0854F13B3ACEE0099B651 /* kill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kill.cpp; sourceTree = "<group>"; };
|
||||||
D0A0855113B3ACEE0099B651 /* output.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = output.cpp; sourceTree = "<group>"; };
|
D0A0855113B3ACEE0099B651 /* output.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = output.cpp; sourceTree = "<group>"; };
|
||||||
D0A0855213B3ACEE0099B651 /* parse_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_util.cpp; sourceTree = "<group>"; };
|
D0A0855213B3ACEE0099B651 /* parse_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_util.cpp; sourceTree = "<group>"; };
|
||||||
@@ -601,6 +718,15 @@
|
|||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
9C7A556B1DCD71330049C25D /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
9C7A556C1DCD71330049C25D /* libncurses.dylib in Frameworks */,
|
||||||
|
9C7A556D1DCD71330049C25D /* libpcre2.a in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
D007693C1990137800CA4627 /* Frameworks */ = {
|
D007693C1990137800CA4627 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -726,6 +852,16 @@
|
|||||||
D0D02A91159845EF008E62BD /* Sources */ = {
|
D0D02A91159845EF008E62BD /* Sources */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9C7A557C1DCD717C0049C25D /* fish_key_reader.cpp */,
|
||||||
|
9C7A55731DCD716F0049C25D /* builtin_commandline.h */,
|
||||||
|
9C7A55741DCD716F0049C25D /* builtin_complete.h */,
|
||||||
|
9C7A55751DCD716F0049C25D /* builtin_jobs.h */,
|
||||||
|
9C7A55761DCD716F0049C25D /* builtin_printf.h */,
|
||||||
|
9C7A55771DCD716F0049C25D /* builtin_set_color.h */,
|
||||||
|
9C7A55781DCD716F0049C25D /* builtin_set.h */,
|
||||||
|
9C7A55791DCD716F0049C25D /* builtin_string.h */,
|
||||||
|
9C7A557A1DCD716F0049C25D /* builtin_test.h */,
|
||||||
|
9C7A557B1DCD716F0049C25D /* builtin_ulimit.h */,
|
||||||
4E142D731B56B5D7008783C8 /* config.h */,
|
4E142D731B56B5D7008783C8 /* config.h */,
|
||||||
D0C6FCCB14CFA4B7004CE8AD /* autoload.h */,
|
D0C6FCCB14CFA4B7004CE8AD /* autoload.h */,
|
||||||
D0C6FCC914CFA4B0004CE8AD /* autoload.cpp */,
|
D0C6FCC914CFA4B0004CE8AD /* autoload.cpp */,
|
||||||
@@ -787,7 +923,6 @@
|
|||||||
D0A0854D13B3ACEE0099B651 /* iothread.cpp */,
|
D0A0854D13B3ACEE0099B651 /* iothread.cpp */,
|
||||||
D0A0851813B3ACEE0099B651 /* kill.h */,
|
D0A0851813B3ACEE0099B651 /* kill.h */,
|
||||||
D0A0854F13B3ACEE0099B651 /* kill.cpp */,
|
D0A0854F13B3ACEE0099B651 /* kill.cpp */,
|
||||||
D0A0854E13B3ACEE0099B651 /* key_reader.cpp */,
|
|
||||||
D03EE83814DF88B200FC7150 /* lru.h */,
|
D03EE83814DF88B200FC7150 /* lru.h */,
|
||||||
D0A0851A13B3ACEE0099B651 /* output.h */,
|
D0A0851A13B3ACEE0099B651 /* output.h */,
|
||||||
D0A0855113B3ACEE0099B651 /* output.cpp */,
|
D0A0855113B3ACEE0099B651 /* output.cpp */,
|
||||||
@@ -872,6 +1007,7 @@
|
|||||||
D0D02AD01598642A008E62BD /* fish_indent */,
|
D0D02AD01598642A008E62BD /* fish_indent */,
|
||||||
D00769421990137800CA4627 /* fish_tests */,
|
D00769421990137800CA4627 /* fish_tests */,
|
||||||
D04F7FD01BA4E29300B0F227 /* libpcre2.a */,
|
D04F7FD01BA4E29300B0F227 /* libpcre2.a */,
|
||||||
|
9C7A55721DCD71330049C25D /* fish_key_reader */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -889,6 +1025,24 @@
|
|||||||
/* End PBXHeadersBuildPhase section */
|
/* End PBXHeadersBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
9C7A55301DCD71330049C25D /* fish_key_reader */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 9C7A556E1DCD71330049C25D /* Build configuration list for PBXNativeTarget "fish_key_reader" */;
|
||||||
|
buildPhases = (
|
||||||
|
9C7A55351DCD71330049C25D /* Sources */,
|
||||||
|
9C7A556B1DCD71330049C25D /* Frameworks */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
9C7A55311DCD71330049C25D /* PBXTargetDependency */,
|
||||||
|
9C7A55331DCD71330049C25D /* PBXTargetDependency */,
|
||||||
|
);
|
||||||
|
name = fish_key_reader;
|
||||||
|
productName = fish_Xcode;
|
||||||
|
productReference = 9C7A55721DCD71330049C25D /* fish_key_reader */;
|
||||||
|
productType = "com.apple.product-type.tool";
|
||||||
|
};
|
||||||
D00769101990137800CA4627 /* fish_tests */ = {
|
D00769101990137800CA4627 /* fish_tests */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = D007693E1990137800CA4627 /* Build configuration list for PBXNativeTarget "fish_tests" */;
|
buildConfigurationList = D007693E1990137800CA4627 /* Build configuration list for PBXNativeTarget "fish_tests" */;
|
||||||
@@ -984,7 +1138,7 @@
|
|||||||
D0A084F213B3AC130099B651 /* Project object */ = {
|
D0A084F213B3AC130099B651 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 0730;
|
LastUpgradeCheck = 0820;
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
D008D0C41BC58F8800841177 = {
|
D008D0C41BC58F8800841177 = {
|
||||||
CreatedOnToolsVersion = 7.0.1;
|
CreatedOnToolsVersion = 7.0.1;
|
||||||
@@ -1015,6 +1169,7 @@
|
|||||||
D00769101990137800CA4627 /* fish_tests */,
|
D00769101990137800CA4627 /* fish_tests */,
|
||||||
D04F7FCF1BA4E29300B0F227 /* pcre2 */,
|
D04F7FCF1BA4E29300B0F227 /* pcre2 */,
|
||||||
D008D0C41BC58F8800841177 /* generate-version-header */,
|
D008D0C41BC58F8800841177 /* generate-version-header */,
|
||||||
|
9C7A55301DCD71330049C25D /* fish_key_reader */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
@@ -1205,15 +1360,85 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "cd \"${SRCROOT}\" ;\n# Run build_documentation.sh\n# Do this in a subshell so that we keep going even if it calls exit\nif [ -f lexicon_filter ] ; then\n export INPUT_FILTER=./lexicon_filter\nelse\n echo \"build_documentation:0: warning: lexicon_filter not found, ignoring it\" >&2\nfi\n\n( . \"./build_tools/build_documentation.sh\" \"./Doxyfile.help\" \"./doc_src\" \"$BUILT_PRODUCTS_DIR\" )\n\n# Copy certain files into man1, destined for share/man/man1 (instead of share/fish/man/man1)\n# These copies will fail if the documentation did not build; that's OK\n# We want to create the directory even if the documentation did not build, so that the Xcode build can still succeed\nmanpathdir=\"${BUILT_PRODUCTS_DIR}/pages_for_manpath/man1\"\necho \"Copying pages destined for manpath into $manpathdir\"\nrm -Rf \"$manpathdir\"\nmkdir -p \"$manpathdir\"\nfor manpage in fish.1 set_color.1 fishd.1 fish_indent.1; do\n manpagepath=\"${BUILT_PRODUCTS_DIR}/man/man1/${manpage}\"\n test -f \"$manpagepath\" && cp \"$manpagepath\" \"${BUILT_PRODUCTS_DIR}/pages_for_manpath/man1/\"\ndone\n\n# Always succeed\ntrue\n";
|
shellScript = "cd \"${SRCROOT}\" ;\n# Run build_documentation.sh\n# Do this in a subshell so that we keep going even if it calls exit\nif [ -f lexicon_filter ] ; then\n export INPUT_FILTER=./lexicon_filter\nelse\n echo \"build_documentation:0: warning: lexicon_filter not found, ignoring it\" >&2\nfi\n\n( . \"./build_tools/build_documentation.sh\" \"./Doxyfile.help\" \"./doc_src\" \"$BUILT_PRODUCTS_DIR\" )\n\n# Copy certain files into man1, destined for share/man/man1 (instead of share/fish/man/man1)\n# These copies will fail if the documentation did not build; that's OK\n# We want to create the directory even if the documentation did not build, so that the Xcode build can still succeed\nmanpathdir=\"${BUILT_PRODUCTS_DIR}/pages_for_manpath/man1\"\necho \"Copying pages destined for manpath into $manpathdir\"\nrm -Rf \"$manpathdir\"\nmkdir -p \"$manpathdir\"\nfor manpage in fish.1 fish_indent.1; do\n manpagepath=\"${BUILT_PRODUCTS_DIR}/man/man1/${manpage}\"\n test -f \"$manpagepath\" && cp \"$manpagepath\" \"${BUILT_PRODUCTS_DIR}/pages_for_manpath/man1/\"\ndone\n\n# Always succeed\ntrue\n";
|
||||||
};
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
9C7A55351DCD71330049C25D /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
9C7A557E1DCD71CD0049C25D /* print_help.cpp in Sources */,
|
||||||
|
9C7A557D1DCD71890049C25D /* fish_key_reader.cpp in Sources */,
|
||||||
|
9C7A55361DCD71330049C25D /* autoload.cpp in Sources */,
|
||||||
|
9C7A55371DCD71330049C25D /* builtin_commandline.cpp in Sources */,
|
||||||
|
9C7A55381DCD71330049C25D /* builtin_complete.cpp in Sources */,
|
||||||
|
9C7A55391DCD71330049C25D /* builtin_jobs.cpp in Sources */,
|
||||||
|
9C7A553A1DCD71330049C25D /* builtin_set.cpp in Sources */,
|
||||||
|
9C7A553B1DCD71330049C25D /* builtin_set_color.cpp in Sources */,
|
||||||
|
9C7A553C1DCD71330049C25D /* builtin_ulimit.cpp in Sources */,
|
||||||
|
9C7A553D1DCD71330049C25D /* builtin_test.cpp in Sources */,
|
||||||
|
9C7A553E1DCD71330049C25D /* builtin_printf.cpp in Sources */,
|
||||||
|
9C7A553F1DCD71330049C25D /* builtin_string.cpp in Sources */,
|
||||||
|
9C7A55401DCD71330049C25D /* color.cpp in Sources */,
|
||||||
|
9C7A55411DCD71330049C25D /* common.cpp in Sources */,
|
||||||
|
9C7A55421DCD71330049C25D /* event.cpp in Sources */,
|
||||||
|
9C7A55431DCD71330049C25D /* input_common.cpp in Sources */,
|
||||||
|
9C7A55441DCD71330049C25D /* io.cpp in Sources */,
|
||||||
|
9C7A55451DCD71330049C25D /* iothread.cpp in Sources */,
|
||||||
|
9C7A55461DCD71330049C25D /* parse_util.cpp in Sources */,
|
||||||
|
9C7A55471DCD71330049C25D /* path.cpp in Sources */,
|
||||||
|
9C7A55481DCD71330049C25D /* parse_execution.cpp in Sources */,
|
||||||
|
9C7A55491DCD71330049C25D /* postfork.cpp in Sources */,
|
||||||
|
9C7A554A1DCD71330049C25D /* screen.cpp in Sources */,
|
||||||
|
9C7A554B1DCD71330049C25D /* signal.cpp in Sources */,
|
||||||
|
9C7A554C1DCD71330049C25D /* utf8.cpp in Sources */,
|
||||||
|
9C7A554D1DCD71330049C25D /* builtin.cpp in Sources */,
|
||||||
|
9C7A554E1DCD71330049C25D /* function.cpp in Sources */,
|
||||||
|
9C7A554F1DCD71330049C25D /* complete.cpp in Sources */,
|
||||||
|
9C7A55501DCD71330049C25D /* env.cpp in Sources */,
|
||||||
|
9C7A55511DCD71330049C25D /* exec.cpp in Sources */,
|
||||||
|
9C7A55521DCD71330049C25D /* wcstringutil.cpp in Sources */,
|
||||||
|
9C7A55531DCD71330049C25D /* expand.cpp in Sources */,
|
||||||
|
9C7A55541DCD71330049C25D /* fallback.cpp in Sources */,
|
||||||
|
9C7A55551DCD71330049C25D /* fish_version.cpp in Sources */,
|
||||||
|
9C7A55561DCD71330049C25D /* highlight.cpp in Sources */,
|
||||||
|
9C7A55571DCD71330049C25D /* history.cpp in Sources */,
|
||||||
|
9C7A55581DCD71330049C25D /* kill.cpp in Sources */,
|
||||||
|
9C7A55591DCD71330049C25D /* parser.cpp in Sources */,
|
||||||
|
9C7A555A1DCD71330049C25D /* parser_keywords.cpp in Sources */,
|
||||||
|
9C7A555B1DCD71330049C25D /* proc.cpp in Sources */,
|
||||||
|
9C7A555C1DCD71330049C25D /* reader.cpp in Sources */,
|
||||||
|
9C7A555D1DCD71330049C25D /* sanity.cpp in Sources */,
|
||||||
|
9C7A555E1DCD71330049C25D /* tokenizer.cpp in Sources */,
|
||||||
|
9C7A555F1DCD71330049C25D /* wildcard.cpp in Sources */,
|
||||||
|
9C7A55601DCD71330049C25D /* wgetopt.cpp in Sources */,
|
||||||
|
9C7A55611DCD71330049C25D /* wutil.cpp in Sources */,
|
||||||
|
9C7A55621DCD71330049C25D /* input.cpp in Sources */,
|
||||||
|
9C7A55631DCD71330049C25D /* output.cpp in Sources */,
|
||||||
|
9C7A55641DCD71330049C25D /* intern.cpp in Sources */,
|
||||||
|
9C7A55651DCD71330049C25D /* env_universal_common.cpp in Sources */,
|
||||||
|
9C7A55661DCD71330049C25D /* pager.cpp in Sources */,
|
||||||
|
9C7A55681DCD71330049C25D /* parse_tree.cpp in Sources */,
|
||||||
|
9C7A55691DCD71330049C25D /* parse_productions.cpp in Sources */,
|
||||||
|
9C7A556A1DCD71330049C25D /* util.cpp in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
D00769111990137800CA4627 /* Sources */ = {
|
D00769111990137800CA4627 /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
9C7A552F1DCD65820049C25D /* util.cpp in Sources */,
|
||||||
|
9C7A55281DCD65540049C25D /* builtin_commandline.cpp in Sources */,
|
||||||
|
9C7A55291DCD65540049C25D /* builtin_complete.cpp in Sources */,
|
||||||
|
9C7A552A1DCD65540049C25D /* builtin_jobs.cpp in Sources */,
|
||||||
|
9C7A552B1DCD65540049C25D /* builtin_set.cpp in Sources */,
|
||||||
|
9C7A552C1DCD65540049C25D /* builtin_set_color.cpp in Sources */,
|
||||||
|
9C7A552D1DCD65540049C25D /* builtin_ulimit.cpp in Sources */,
|
||||||
|
9C7A552E1DCD65540049C25D /* builtin_printf.cpp in Sources */,
|
||||||
|
9C7A55271DCD651F0049C25D /* fallback.cpp in Sources */,
|
||||||
D00769121990137800CA4627 /* autoload.cpp in Sources */,
|
D00769121990137800CA4627 /* autoload.cpp in Sources */,
|
||||||
D00769131990137800CA4627 /* builtin_test.cpp in Sources */,
|
D00769131990137800CA4627 /* builtin_test.cpp in Sources */,
|
||||||
D00769141990137800CA4627 /* color.cpp in Sources */,
|
D00769141990137800CA4627 /* color.cpp in Sources */,
|
||||||
@@ -1298,8 +1523,15 @@
|
|||||||
files = (
|
files = (
|
||||||
D030FBF41A4A38F300F7ADA0 /* autoload.cpp in Sources */,
|
D030FBF41A4A38F300F7ADA0 /* autoload.cpp in Sources */,
|
||||||
D030FBF51A4A38F300F7ADA0 /* builtin.cpp in Sources */,
|
D030FBF51A4A38F300F7ADA0 /* builtin.cpp in Sources */,
|
||||||
D04F7FF01BA4E5B900B0F227 /* builtin_string.cpp in Sources */,
|
D01243591CD3DAD100C64313 /* builtin_commandline.cpp in Sources */,
|
||||||
|
D012435A1CD3DAD100C64313 /* builtin_complete.cpp in Sources */,
|
||||||
|
D012435B1CD3DAD100C64313 /* builtin_jobs.cpp in Sources */,
|
||||||
|
D012435C1CD3DAD100C64313 /* builtin_set.cpp in Sources */,
|
||||||
|
D012435D1CD3DAD100C64313 /* builtin_set_color.cpp in Sources */,
|
||||||
|
D012435E1CD3DAD100C64313 /* builtin_ulimit.cpp in Sources */,
|
||||||
D030FC151A4A391900F7ADA0 /* builtin_test.cpp in Sources */,
|
D030FC151A4A391900F7ADA0 /* builtin_test.cpp in Sources */,
|
||||||
|
D012435F1CD3DAD100C64313 /* builtin_printf.cpp in Sources */,
|
||||||
|
D04F7FF01BA4E5B900B0F227 /* builtin_string.cpp in Sources */,
|
||||||
D030FBF61A4A38F300F7ADA0 /* color.cpp in Sources */,
|
D030FBF61A4A38F300F7ADA0 /* color.cpp in Sources */,
|
||||||
D0D02AD81598649E008E62BD /* common.cpp in Sources */,
|
D0D02AD81598649E008E62BD /* common.cpp in Sources */,
|
||||||
D030FBF71A4A38F300F7ADA0 /* complete.cpp in Sources */,
|
D030FBF71A4A38F300F7ADA0 /* complete.cpp in Sources */,
|
||||||
@@ -1311,6 +1543,7 @@
|
|||||||
D030FBFC1A4A38F300F7ADA0 /* parse_productions.cpp in Sources */,
|
D030FBFC1A4A38F300F7ADA0 /* parse_productions.cpp in Sources */,
|
||||||
D030FBFD1A4A38F300F7ADA0 /* parse_tree.cpp in Sources */,
|
D030FBFD1A4A38F300F7ADA0 /* parse_tree.cpp in Sources */,
|
||||||
D030FBFE1A4A38F300F7ADA0 /* parse_execution.cpp in Sources */,
|
D030FBFE1A4A38F300F7ADA0 /* parse_execution.cpp in Sources */,
|
||||||
|
D012436B1CD4019700C64313 /* fallback.cpp in Sources */,
|
||||||
D030FC001A4A38F300F7ADA0 /* function.cpp in Sources */,
|
D030FC001A4A38F300F7ADA0 /* function.cpp in Sources */,
|
||||||
D030FC011A4A38F300F7ADA0 /* highlight.cpp in Sources */,
|
D030FC011A4A38F300F7ADA0 /* highlight.cpp in Sources */,
|
||||||
D030FC021A4A38F300F7ADA0 /* history.cpp in Sources */,
|
D030FC021A4A38F300F7ADA0 /* history.cpp in Sources */,
|
||||||
@@ -1339,6 +1572,7 @@
|
|||||||
D030FC131A4A38F300F7ADA0 /* wgetopt.cpp in Sources */,
|
D030FC131A4A38F300F7ADA0 /* wgetopt.cpp in Sources */,
|
||||||
D030FC141A4A38F300F7ADA0 /* wildcard.cpp in Sources */,
|
D030FC141A4A38F300F7ADA0 /* wildcard.cpp in Sources */,
|
||||||
D0D02ADA159864AB008E62BD /* wutil.cpp in Sources */,
|
D0D02ADA159864AB008E62BD /* wutil.cpp in Sources */,
|
||||||
|
D01243691CD4015C00C64313 /* util.cpp in Sources */,
|
||||||
D0D02AD615986492008E62BD /* fish_indent.cpp in Sources */,
|
D0D02AD615986492008E62BD /* fish_indent.cpp in Sources */,
|
||||||
D00F63F219137E9D00FCCDEC /* fish_version.cpp in Sources */,
|
D00F63F219137E9D00FCCDEC /* fish_version.cpp in Sources */,
|
||||||
);
|
);
|
||||||
@@ -1349,7 +1583,15 @@
|
|||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
D0D02A7C159839D5008E62BD /* autoload.cpp in Sources */,
|
D0D02A7C159839D5008E62BD /* autoload.cpp in Sources */,
|
||||||
|
D01243601CD3DAE200C64313 /* builtin_commandline.cpp in Sources */,
|
||||||
|
D01243611CD3DAE200C64313 /* builtin_complete.cpp in Sources */,
|
||||||
|
D01243621CD3DAE200C64313 /* builtin_jobs.cpp in Sources */,
|
||||||
|
D01243631CD3DAE200C64313 /* builtin_set.cpp in Sources */,
|
||||||
|
D01243641CD3DAE200C64313 /* builtin_set_color.cpp in Sources */,
|
||||||
|
D01243651CD3DAE200C64313 /* builtin_ulimit.cpp in Sources */,
|
||||||
D0D02A7D159839D5008E62BD /* builtin_test.cpp in Sources */,
|
D0D02A7D159839D5008E62BD /* builtin_test.cpp in Sources */,
|
||||||
|
D01243661CD3DAE200C64313 /* builtin_printf.cpp in Sources */,
|
||||||
|
D04F7F7C1BA4BF4000B0F227 /* builtin_string.cpp in Sources */,
|
||||||
D0D02A7E159839D5008E62BD /* color.cpp in Sources */,
|
D0D02A7E159839D5008E62BD /* color.cpp in Sources */,
|
||||||
D0D02A7F159839D5008E62BD /* common.cpp in Sources */,
|
D0D02A7F159839D5008E62BD /* common.cpp in Sources */,
|
||||||
D0D02A80159839D5008E62BD /* event.cpp in Sources */,
|
D0D02A80159839D5008E62BD /* event.cpp in Sources */,
|
||||||
@@ -1370,6 +1612,7 @@
|
|||||||
D0D02A6A1598381A008E62BD /* exec.cpp in Sources */,
|
D0D02A6A1598381A008E62BD /* exec.cpp in Sources */,
|
||||||
D0F5B46519CFCDE80090665E /* wcstringutil.cpp in Sources */,
|
D0F5B46519CFCDE80090665E /* wcstringutil.cpp in Sources */,
|
||||||
D0D02A6B1598381F008E62BD /* expand.cpp in Sources */,
|
D0D02A6B1598381F008E62BD /* expand.cpp in Sources */,
|
||||||
|
D012436A1CD4018100C64313 /* fallback.cpp in Sources */,
|
||||||
D00F63F119137E9D00FCCDEC /* fish_version.cpp in Sources */,
|
D00F63F119137E9D00FCCDEC /* fish_version.cpp in Sources */,
|
||||||
D0D02A6C15983829008E62BD /* highlight.cpp in Sources */,
|
D0D02A6C15983829008E62BD /* highlight.cpp in Sources */,
|
||||||
D0D02A6D1598382C008E62BD /* history.cpp in Sources */,
|
D0D02A6D1598382C008E62BD /* history.cpp in Sources */,
|
||||||
@@ -1384,7 +1627,6 @@
|
|||||||
D0D02A751598385E008E62BD /* wgetopt.cpp in Sources */,
|
D0D02A751598385E008E62BD /* wgetopt.cpp in Sources */,
|
||||||
D0D02A7615983869008E62BD /* wutil.cpp in Sources */,
|
D0D02A7615983869008E62BD /* wutil.cpp in Sources */,
|
||||||
D0D02A7715983875008E62BD /* input.cpp in Sources */,
|
D0D02A7715983875008E62BD /* input.cpp in Sources */,
|
||||||
D04F7F7C1BA4BF4000B0F227 /* builtin_string.cpp in Sources */,
|
|
||||||
D0D02A781598387E008E62BD /* output.cpp in Sources */,
|
D0D02A781598387E008E62BD /* output.cpp in Sources */,
|
||||||
D0D02A7915983888008E62BD /* intern.cpp in Sources */,
|
D0D02A7915983888008E62BD /* intern.cpp in Sources */,
|
||||||
D0D02A7B15983928008E62BD /* env_universal_common.cpp in Sources */,
|
D0D02A7B15983928008E62BD /* env_universal_common.cpp in Sources */,
|
||||||
@@ -1392,6 +1634,7 @@
|
|||||||
D0D02A89159839DF008E62BD /* fish.cpp in Sources */,
|
D0D02A89159839DF008E62BD /* fish.cpp in Sources */,
|
||||||
D0C52F371765284C00BFAB82 /* parse_tree.cpp in Sources */,
|
D0C52F371765284C00BFAB82 /* parse_tree.cpp in Sources */,
|
||||||
D0FE8EE8179FB760008C9F21 /* parse_productions.cpp in Sources */,
|
D0FE8EE8179FB760008C9F21 /* parse_productions.cpp in Sources */,
|
||||||
|
D01243681CD4015600C64313 /* util.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -1406,6 +1649,21 @@
|
|||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXTargetDependency section */
|
/* Begin PBXTargetDependency section */
|
||||||
|
9C7A55311DCD71330049C25D /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = D008D0C41BC58F8800841177 /* generate-version-header */;
|
||||||
|
targetProxy = 9C7A55321DCD71330049C25D /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
9C7A55331DCD71330049C25D /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = D04F7FCF1BA4E29300B0F227 /* pcre2 */;
|
||||||
|
targetProxy = 9C7A55341DCD71330049C25D /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
9C7A55801DCD73930049C25D /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = 9C7A55301DCD71330049C25D /* fish_key_reader */;
|
||||||
|
targetProxy = 9C7A557F1DCD73930049C25D /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
D008D0CB1BC58FDD00841177 /* PBXTargetDependency */ = {
|
D008D0CB1BC58FDD00841177 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = D008D0C41BC58F8800841177 /* generate-version-header */;
|
target = D008D0C41BC58F8800841177 /* generate-version-header */;
|
||||||
@@ -1469,6 +1727,30 @@
|
|||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
|
9C7A556F1DCD71330049C25D /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = NO;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
9C7A55701DCD71330049C25D /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COPY_PHASE_STRIP = YES;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = YES_THIN;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
D007693F1990137800CA4627 /* Debug */ = {
|
D007693F1990137800CA4627 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
@@ -1477,6 +1759,7 @@
|
|||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = NO;
|
||||||
PRODUCT_NAME = fish_tests;
|
PRODUCT_NAME = fish_tests;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -1489,123 +1772,11 @@
|
|||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = YES_THIN;
|
||||||
PRODUCT_NAME = fish_tests;
|
PRODUCT_NAME = fish_tests;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
D00769411990137800CA4627 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
COPY_PHASE_STRIP = YES;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
|
||||||
PRODUCT_NAME = fish_tests;
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D007FDDA17136EAA00A52BE6 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
DEAD_CODE_STRIPPING = YES;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
|
||||||
GCC_ENABLE_CPP_RTTI = NO;
|
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
"LOCALEDIR=\\\"/usr/local/share/locale\\\"",
|
|
||||||
"PREFIX=L\\\"/usr/local\\\"",
|
|
||||||
"DATADIR=L\\\"/usr/local/share\\\"",
|
|
||||||
"SYSCONFDIR=L\\\"/usr/local/etc\\\"",
|
|
||||||
"BINDIR=L\\\"/usr/local/bin\\\"",
|
|
||||||
"DOCDIR=L\\\"/usr/local/share/doc\\\"",
|
|
||||||
);
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
GCC_WARN_UNUSED_LABEL = YES;
|
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
|
||||||
SDKROOT = macosx;
|
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx $(SRCROOT)/osx/shared_headers $(SHARED_DERIVED_FILE_DIR)";
|
|
||||||
WARNING_CFLAGS = (
|
|
||||||
"-Wall",
|
|
||||||
"-Wunused-macros",
|
|
||||||
);
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D007FDDB17136EAA00A52BE6 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
|
||||||
INSTALL_PATH = /usr/local;
|
|
||||||
PRODUCT_NAME = "base copy";
|
|
||||||
SKIP_INSTALL = NO;
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D007FDDC17136EAA00A52BE6 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
|
||||||
INSTALL_PATH = /usr/local;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
SKIP_INSTALL = NO;
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D007FDDD17136EAA00A52BE6 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
|
||||||
COPY_PHASE_STRIP = YES;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
EXECUTABLE_NAME = fish_launcher;
|
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
|
||||||
INFOPLIST_FILE = osx/Info.plist;
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ridiculousfish.fish-shell";
|
|
||||||
PRODUCT_NAME = fish;
|
|
||||||
WRAPPER_EXTENSION = app;
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D007FDDE17136EAA00A52BE6 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
COPY_PHASE_STRIP = YES;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
|
||||||
PRODUCT_NAME = fish;
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D007FDE017136EAA00A52BE6 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
COPY_PHASE_STRIP = YES;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D007FDE217136EAA00A52BE6 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D008D0C51BC58F8800841177 /* Debug */ = {
|
D008D0C51BC58F8800841177 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
@@ -1620,13 +1791,6 @@
|
|||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
D008D0C71BC58F8800841177 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D04F7FD21BA4E29300B0F227 /* Debug */ = {
|
D04F7FD21BA4E29300B0F227 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
@@ -1644,11 +1808,12 @@
|
|||||||
);
|
);
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||||
GCC_WARN_UNUSED_VARIABLE = NO;
|
GCC_WARN_UNUSED_VARIABLE = NO;
|
||||||
|
LLVM_LTO = NO;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx/pcre2 $(SRCROOT)/osx/shared_headers/";
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx/pcre2 $(SRCROOT)/osx/shared_headers/";
|
||||||
USE_HEADERMAP = NO;
|
USE_HEADERMAP = NO;
|
||||||
WARNING_CFLAGS = "";
|
WARNING_CFLAGS = "-Wno-unreachable-code";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@@ -1669,39 +1834,15 @@
|
|||||||
);
|
);
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||||
GCC_WARN_UNUSED_VARIABLE = NO;
|
GCC_WARN_UNUSED_VARIABLE = NO;
|
||||||
|
LLVM_LTO = YES_THIN;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx/pcre2 $(SRCROOT)/osx/shared_headers/";
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx/pcre2 $(SRCROOT)/osx/shared_headers/";
|
||||||
USE_HEADERMAP = NO;
|
USE_HEADERMAP = NO;
|
||||||
WARNING_CFLAGS = "";
|
WARNING_CFLAGS = "-Wno-unreachable-code";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
D04F7FD41BA4E29300B0F227 /* Release_C++11 */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
GCC_INPUT_FILETYPE = sourcecode.c.c;
|
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
"LOCALEDIR=\\\"/usr/local/share/locale\\\"",
|
|
||||||
"PREFIX=L\\\"/usr/local\\\"",
|
|
||||||
"DATADIR=L\\\"/usr/local/share\\\"",
|
|
||||||
"SYSCONFDIR=L\\\"/usr/local/etc\\\"",
|
|
||||||
"BINDIR=L\\\"/usr/local/bin\\\"",
|
|
||||||
"DOCDIR=L\\\"/usr/local/share/doc\\\"",
|
|
||||||
"PCRE2_CODE_UNIT_WIDTH=32",
|
|
||||||
"HAVE_CONFIG_H=1",
|
|
||||||
);
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
|
||||||
GCC_WARN_UNUSED_VARIABLE = NO;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
SKIP_INSTALL = YES;
|
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx/pcre2 $(SRCROOT)/osx/shared_headers/";
|
|
||||||
USE_HEADERMAP = NO;
|
|
||||||
WARNING_CFLAGS = "";
|
|
||||||
};
|
|
||||||
name = "Release_C++11";
|
|
||||||
};
|
|
||||||
D07D267015E33B86009E43F6 /* Debug */ = {
|
D07D267015E33B86009E43F6 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
@@ -1726,9 +1867,25 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||||
GCC_ENABLE_CPP_RTTI = YES;
|
GCC_ENABLE_CPP_RTTI = YES;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"LOCALEDIR=\\\"/usr/local/share/locale\\\"",
|
"LOCALEDIR=\\\"/usr/local/share/locale\\\"",
|
||||||
@@ -1740,11 +1897,14 @@
|
|||||||
);
|
);
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_LABEL = YES;
|
GCC_WARN_UNUSED_LABEL = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx $(SRCROOT)/osx/shared_headers $(SHARED_DERIVED_FILE_DIR)";
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx $(SRCROOT)/osx/shared_headers $(SHARED_DERIVED_FILE_DIR)";
|
||||||
@@ -1759,10 +1919,25 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
GCC_ENABLE_CPP_EXCEPTIONS = NO;
|
||||||
GCC_ENABLE_CPP_RTTI = YES;
|
GCC_ENABLE_CPP_RTTI = YES;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"LOCALEDIR=\\\"/usr/local/share/locale\\\"",
|
"LOCALEDIR=\\\"/usr/local/share/locale\\\"",
|
||||||
"PREFIX=L\\\"/usr/local\\\"",
|
"PREFIX=L\\\"/usr/local\\\"",
|
||||||
@@ -1772,11 +1947,14 @@
|
|||||||
"DOCDIR=L\\\"/usr/local/share/doc\\\"",
|
"DOCDIR=L\\\"/usr/local/share/doc\\\"",
|
||||||
);
|
);
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_LABEL = YES;
|
GCC_WARN_UNUSED_LABEL = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx $(SRCROOT)/osx/shared_headers $(SHARED_DERIVED_FILE_DIR)";
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/osx $(SRCROOT)/osx/shared_headers $(SHARED_DERIVED_FILE_DIR)";
|
||||||
WARNING_CFLAGS = (
|
WARNING_CFLAGS = (
|
||||||
@@ -1817,6 +1995,7 @@
|
|||||||
);
|
);
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
INFOPLIST_FILE = osx/Info.plist;
|
INFOPLIST_FILE = osx/Info.plist;
|
||||||
|
LLVM_LTO = NO;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ridiculousfish.fish-shell";
|
PRODUCT_BUNDLE_IDENTIFIER = "com.ridiculousfish.fish-shell";
|
||||||
PRODUCT_NAME = fish;
|
PRODUCT_NAME = fish;
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
@@ -1834,6 +2013,7 @@
|
|||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
INFOPLIST_FILE = osx/Info.plist;
|
INFOPLIST_FILE = osx/Info.plist;
|
||||||
|
LLVM_LTO = YES_THIN;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ridiculousfish.fish-shell";
|
PRODUCT_BUNDLE_IDENTIFIER = "com.ridiculousfish.fish-shell";
|
||||||
PRODUCT_NAME = fish;
|
PRODUCT_NAME = fish;
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
@@ -1852,6 +2032,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = NO;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -1864,6 +2045,7 @@
|
|||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = YES_THIN;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@@ -1875,6 +2057,7 @@
|
|||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = NO;
|
||||||
PRODUCT_NAME = fish;
|
PRODUCT_NAME = fish;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -1886,6 +2069,7 @@
|
|||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
LLVM_LTO = YES_THIN;
|
||||||
PRODUCT_NAME = fish;
|
PRODUCT_NAME = fish;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@@ -1913,12 +2097,20 @@
|
|||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
|
9C7A556E1DCD71330049C25D /* Build configuration list for PBXNativeTarget "fish_key_reader" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
9C7A556F1DCD71330049C25D /* Debug */,
|
||||||
|
9C7A55701DCD71330049C25D /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
D007693E1990137800CA4627 /* Build configuration list for PBXNativeTarget "fish_tests" */ = {
|
D007693E1990137800CA4627 /* Build configuration list for PBXNativeTarget "fish_tests" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D007693F1990137800CA4627 /* Debug */,
|
D007693F1990137800CA4627 /* Debug */,
|
||||||
D00769401990137800CA4627 /* Release */,
|
D00769401990137800CA4627 /* Release */,
|
||||||
D00769411990137800CA4627 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1928,7 +2120,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D008D0C51BC58F8800841177 /* Debug */,
|
D008D0C51BC58F8800841177 /* Debug */,
|
||||||
D008D0C61BC58F8800841177 /* Release */,
|
D008D0C61BC58F8800841177 /* Release */,
|
||||||
D008D0C71BC58F8800841177 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1938,7 +2129,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D04F7FD21BA4E29300B0F227 /* Debug */,
|
D04F7FD21BA4E29300B0F227 /* Debug */,
|
||||||
D04F7FD31BA4E29300B0F227 /* Release */,
|
D04F7FD31BA4E29300B0F227 /* Release */,
|
||||||
D04F7FD41BA4E29300B0F227 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1948,7 +2138,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D07D267015E33B86009E43F6 /* Debug */,
|
D07D267015E33B86009E43F6 /* Debug */,
|
||||||
D07D267115E33B86009E43F6 /* Release */,
|
D07D267115E33B86009E43F6 /* Release */,
|
||||||
D007FDDB17136EAA00A52BE6 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1958,7 +2147,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D0A084F813B3AC130099B651 /* Debug */,
|
D0A084F813B3AC130099B651 /* Debug */,
|
||||||
D0A084F913B3AC130099B651 /* Release */,
|
D0A084F913B3AC130099B651 /* Release */,
|
||||||
D007FDDA17136EAA00A52BE6 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1968,7 +2156,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D0A564E7168CFDD800AF6161 /* Debug */,
|
D0A564E7168CFDD800AF6161 /* Debug */,
|
||||||
D0A564E8168CFDD800AF6161 /* Release */,
|
D0A564E8168CFDD800AF6161 /* Release */,
|
||||||
D007FDE217136EAA00A52BE6 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1978,7 +2165,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D0D02AA515985A75008E62BD /* Debug */,
|
D0D02AA515985A75008E62BD /* Debug */,
|
||||||
D0D02AA615985A75008E62BD /* Release */,
|
D0D02AA615985A75008E62BD /* Release */,
|
||||||
D007FDDD17136EAA00A52BE6 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1988,7 +2174,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D0D02AD41598642A008E62BD /* Debug */,
|
D0D02AD41598642A008E62BD /* Debug */,
|
||||||
D0D02AD51598642A008E62BD /* Release */,
|
D0D02AD51598642A008E62BD /* Release */,
|
||||||
D007FDE017136EAA00A52BE6 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -1998,7 +2183,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D0D26944159835CA005D9B9C /* Debug */,
|
D0D26944159835CA005D9B9C /* Debug */,
|
||||||
D0D26945159835CA005D9B9C /* Release */,
|
D0D26945159835CA005D9B9C /* Release */,
|
||||||
D007FDDE17136EAA00A52BE6 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
@@ -2008,7 +2192,6 @@
|
|||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D0F019EE15A976F30034B3B1 /* Debug */,
|
D0F019EE15A976F30034B3B1 /* Debug */,
|
||||||
D0F019EF15A976F30034B3B1 /* Release */,
|
D0F019EF15A976F30034B3B1 /* Release */,
|
||||||
D007FDDC17136EAA00A52BE6 /* Release_C++11 */,
|
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0730"
|
LastUpgradeVersion = "0820"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0730"
|
LastUpgradeVersion = "0820"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0730"
|
LastUpgradeVersion = "0820"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0730"
|
LastUpgradeVersion = "0820"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0730"
|
LastUpgradeVersion = "0820"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|||||||
354
install-sh
354
install-sh
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# install - install a program, script, or datafile
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
scriptversion=2011-11-20.07; # UTC
|
scriptversion=2013-12-25.23; # UTC
|
||||||
|
|
||||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
|
|||||||
# This script is compatible with the BSD install script, but was written
|
# This script is compatible with the BSD install script, but was written
|
||||||
# from scratch.
|
# from scratch.
|
||||||
|
|
||||||
|
tab=' '
|
||||||
nl='
|
nl='
|
||||||
'
|
'
|
||||||
IFS=" "" $nl"
|
IFS=" $tab$nl"
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
# Set DOITPROG to "echo" to test this script.
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit=${DOITPROG-}
|
doit=${DOITPROG-}
|
||||||
if test -z "$doit"; then
|
doit_exec=${doit:-exec}
|
||||||
doit_exec=exec
|
|
||||||
else
|
|
||||||
doit_exec=$doit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put in absolute file names if you don't have them in your path;
|
# Put in absolute file names if you don't have them in your path;
|
||||||
# or use environment vars.
|
# or use environment vars.
|
||||||
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
|
|||||||
rmprog=${RMPROG-rm}
|
rmprog=${RMPROG-rm}
|
||||||
stripprog=${STRIPPROG-strip}
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
posix_glob='?'
|
|
||||||
initialize_posix_glob='
|
|
||||||
test "$posix_glob" != "?" || {
|
|
||||||
if (set -f) 2>/dev/null; then
|
|
||||||
posix_glob=
|
|
||||||
else
|
|
||||||
posix_glob=:
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
'
|
|
||||||
|
|
||||||
posix_mkdir=
|
posix_mkdir=
|
||||||
|
|
||||||
# Desired mode of installed file.
|
# Desired mode of installed file.
|
||||||
@@ -97,7 +82,7 @@ dir_arg=
|
|||||||
dst_arg=
|
dst_arg=
|
||||||
|
|
||||||
copy_on_change=false
|
copy_on_change=false
|
||||||
no_target_directory=
|
is_target_a_directory=possibly
|
||||||
|
|
||||||
usage="\
|
usage="\
|
||||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
@@ -137,46 +122,57 @@ while test $# -ne 0; do
|
|||||||
-d) dir_arg=true;;
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
-g) chgrpcmd="$chgrpprog $2"
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
--help) echo "$usage"; exit $?;;
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
-m) mode=$2
|
-m) mode=$2
|
||||||
case $mode in
|
case $mode in
|
||||||
*' '* | *' '* | *'
|
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||||
'* | *'*'* | *'?'* | *'['*)
|
echo "$0: invalid mode: $mode" >&2
|
||||||
echo "$0: invalid mode: $mode" >&2
|
exit 1;;
|
||||||
exit 1;;
|
esac
|
||||||
esac
|
shift;;
|
||||||
shift;;
|
|
||||||
|
|
||||||
-o) chowncmd="$chownprog $2"
|
-o) chowncmd="$chownprog $2"
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
-s) stripcmd=$stripprog;;
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
-t) dst_arg=$2
|
-t)
|
||||||
# Protect names problematic for 'test' and other utilities.
|
is_target_a_directory=always
|
||||||
case $dst_arg in
|
dst_arg=$2
|
||||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
# Protect names problematic for 'test' and other utilities.
|
||||||
esac
|
case $dst_arg in
|
||||||
shift;;
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
-T) no_target_directory=true;;
|
-T) is_target_a_directory=never;;
|
||||||
|
|
||||||
--version) echo "$0 $scriptversion"; exit $?;;
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
--) shift
|
--) shift
|
||||||
break;;
|
break;;
|
||||||
|
|
||||||
-*) echo "$0: invalid option: $1" >&2
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
exit 1;;
|
exit 1;;
|
||||||
|
|
||||||
*) break;;
|
*) break;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# We allow the use of options -d and -T together, by making -d
|
||||||
|
# take the precedence; this is for compatibility with GNU install.
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
echo "$0: target directory not allowed when installing a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
# When -d is used, all remaining arguments are directories to create.
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
# When -t is used, the destination is already specified.
|
# When -t is used, the destination is already specified.
|
||||||
@@ -207,6 +203,15 @@ if test $# -eq 0; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||||
|
if test ! -d "$dst_arg"; then
|
||||||
|
echo "$0: $dst_arg: Is not a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "$dir_arg"; then
|
if test -z "$dir_arg"; then
|
||||||
do_exit='(exit $ret); exit $ret'
|
do_exit='(exit $ret); exit $ret'
|
||||||
trap "ret=129; $do_exit" 1
|
trap "ret=129; $do_exit" 1
|
||||||
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
|
|||||||
|
|
||||||
*[0-7])
|
*[0-7])
|
||||||
if test -z "$stripcmd"; then
|
if test -z "$stripcmd"; then
|
||||||
u_plus_rw=
|
u_plus_rw=
|
||||||
else
|
else
|
||||||
u_plus_rw='% 200'
|
u_plus_rw='% 200'
|
||||||
fi
|
fi
|
||||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
*)
|
*)
|
||||||
if test -z "$stripcmd"; then
|
if test -z "$stripcmd"; then
|
||||||
u_plus_rw=
|
u_plus_rw=
|
||||||
else
|
else
|
||||||
u_plus_rw=,u+rw
|
u_plus_rw=,u+rw
|
||||||
fi
|
fi
|
||||||
cp_umask=$mode$u_plus_rw;;
|
cp_umask=$mode$u_plus_rw;;
|
||||||
esac
|
esac
|
||||||
@@ -269,41 +274,15 @@ do
|
|||||||
# If destination is a directory, append the input filename; won't work
|
# If destination is a directory, append the input filename; won't work
|
||||||
# if double slashes aren't ignored.
|
# if double slashes aren't ignored.
|
||||||
if test -d "$dst"; then
|
if test -d "$dst"; then
|
||||||
if test -n "$no_target_directory"; then
|
if test "$is_target_a_directory" = never; then
|
||||||
echo "$0: $dst_arg: Is a directory" >&2
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
dstdir=$dst
|
dstdir=$dst
|
||||||
dst=$dstdir/`basename "$src"`
|
dst=$dstdir/`basename "$src"`
|
||||||
dstdir_status=0
|
dstdir_status=0
|
||||||
else
|
else
|
||||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
dstdir=`dirname "$dst"`
|
||||||
dstdir=`
|
|
||||||
(dirname "$dst") 2>/dev/null ||
|
|
||||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
|
||||||
X"$dst" : 'X\(//\)[^/]' \| \
|
|
||||||
X"$dst" : 'X\(//\)$' \| \
|
|
||||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
|
||||||
echo X"$dst" |
|
|
||||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)[^/].*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\).*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
s/.*/./; q'
|
|
||||||
`
|
|
||||||
|
|
||||||
test -d "$dstdir"
|
test -d "$dstdir"
|
||||||
dstdir_status=$?
|
dstdir_status=$?
|
||||||
fi
|
fi
|
||||||
@@ -314,74 +293,74 @@ do
|
|||||||
if test $dstdir_status != 0; then
|
if test $dstdir_status != 0; then
|
||||||
case $posix_mkdir in
|
case $posix_mkdir in
|
||||||
'')
|
'')
|
||||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
umask=`umask`
|
umask=`umask`
|
||||||
case $stripcmd.$umask in
|
case $stripcmd.$umask in
|
||||||
# Optimize common cases.
|
# Optimize common cases.
|
||||||
*[2367][2367]) mkdir_umask=$umask;;
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
*[0-7])
|
*[0-7])
|
||||||
mkdir_umask=`expr $umask + 22 \
|
mkdir_umask=`expr $umask + 22 \
|
||||||
- $umask % 100 % 40 + $umask % 20 \
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
- $umask % 10 % 4 + $umask % 2
|
- $umask % 10 % 4 + $umask % 2
|
||||||
`;;
|
`;;
|
||||||
*) mkdir_umask=$umask,go-w;;
|
*) mkdir_umask=$umask,go-w;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# With -d, create the new directory with the user-specified mode.
|
# With -d, create the new directory with the user-specified mode.
|
||||||
# Otherwise, rely on $mkdir_umask.
|
# Otherwise, rely on $mkdir_umask.
|
||||||
if test -n "$dir_arg"; then
|
if test -n "$dir_arg"; then
|
||||||
mkdir_mode=-m$mode
|
mkdir_mode=-m$mode
|
||||||
else
|
else
|
||||||
mkdir_mode=
|
mkdir_mode=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
posix_mkdir=false
|
posix_mkdir=false
|
||||||
case $umask in
|
case $umask in
|
||||||
*[123567][0-7][0-7])
|
*[123567][0-7][0-7])
|
||||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
if (umask $mkdir_umask &&
|
if (umask $mkdir_umask &&
|
||||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
if test -z "$dir_arg" || {
|
if test -z "$dir_arg" || {
|
||||||
# Check for POSIX incompatibilities with -m.
|
# Check for POSIX incompatibilities with -m.
|
||||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
# other-writable bit of parent directory when it shouldn't.
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
case $ls_ld_tmpdir in
|
case $ls_ld_tmpdir in
|
||||||
d????-?r-*) different_mode=700;;
|
d????-?r-*) different_mode=700;;
|
||||||
d????-?--*) different_mode=755;;
|
d????-?--*) different_mode=755;;
|
||||||
*) false;;
|
*) false;;
|
||||||
esac &&
|
esac &&
|
||||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
then posix_mkdir=:
|
then posix_mkdir=:
|
||||||
fi
|
fi
|
||||||
rmdir "$tmpdir/d" "$tmpdir"
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
else
|
else
|
||||||
# Remove any dirs left behind by ancient mkdir implementations.
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||||
fi
|
fi
|
||||||
trap '' 0;;
|
trap '' 0;;
|
||||||
esac;;
|
esac;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if
|
if
|
||||||
$posix_mkdir && (
|
$posix_mkdir && (
|
||||||
umask $mkdir_umask &&
|
umask $mkdir_umask &&
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
)
|
)
|
||||||
then :
|
then :
|
||||||
else
|
else
|
||||||
@@ -391,53 +370,51 @@ do
|
|||||||
# directory the slow way, step by step, checking for races as we go.
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
case $dstdir in
|
case $dstdir in
|
||||||
/*) prefix='/';;
|
/*) prefix='/';;
|
||||||
[-=\(\)!]*) prefix='./';;
|
[-=\(\)!]*) prefix='./';;
|
||||||
*) prefix='';;
|
*) prefix='';;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
eval "$initialize_posix_glob"
|
|
||||||
|
|
||||||
oIFS=$IFS
|
oIFS=$IFS
|
||||||
IFS=/
|
IFS=/
|
||||||
$posix_glob set -f
|
set -f
|
||||||
set fnord $dstdir
|
set fnord $dstdir
|
||||||
shift
|
shift
|
||||||
$posix_glob set +f
|
set +f
|
||||||
IFS=$oIFS
|
IFS=$oIFS
|
||||||
|
|
||||||
prefixes=
|
prefixes=
|
||||||
|
|
||||||
for d
|
for d
|
||||||
do
|
do
|
||||||
test X"$d" = X && continue
|
test X"$d" = X && continue
|
||||||
|
|
||||||
prefix=$prefix$d
|
prefix=$prefix$d
|
||||||
if test -d "$prefix"; then
|
if test -d "$prefix"; then
|
||||||
prefixes=
|
prefixes=
|
||||||
else
|
else
|
||||||
if $posix_mkdir; then
|
if $posix_mkdir; then
|
||||||
(umask=$mkdir_umask &&
|
(umask=$mkdir_umask &&
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
# Don't fail if two instances are running concurrently.
|
# Don't fail if two instances are running concurrently.
|
||||||
test -d "$prefix" || exit 1
|
test -d "$prefix" || exit 1
|
||||||
else
|
else
|
||||||
case $prefix in
|
case $prefix in
|
||||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
*) qprefix=$prefix;;
|
*) qprefix=$prefix;;
|
||||||
esac
|
esac
|
||||||
prefixes="$prefixes '$qprefix'"
|
prefixes="$prefixes '$qprefix'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
prefix=$prefix/
|
prefix=$prefix/
|
||||||
done
|
done
|
||||||
|
|
||||||
if test -n "$prefixes"; then
|
if test -n "$prefixes"; then
|
||||||
# Don't fail if two instances are running concurrently.
|
# Don't fail if two instances are running concurrently.
|
||||||
(umask $mkdir_umask &&
|
(umask $mkdir_umask &&
|
||||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
test -d "$dstdir" || exit 1
|
test -d "$dstdir" || exit 1
|
||||||
obsolete_mkdir_used=true
|
obsolete_mkdir_used=true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -472,15 +449,12 @@ do
|
|||||||
|
|
||||||
# If -C, don't bother to copy if it wouldn't change the file.
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
if $copy_on_change &&
|
if $copy_on_change &&
|
||||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
set -f &&
|
||||||
eval "$initialize_posix_glob" &&
|
|
||||||
$posix_glob set -f &&
|
|
||||||
set X $old && old=:$2:$4:$5:$6 &&
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
set X $new && new=:$2:$4:$5:$6 &&
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
$posix_glob set +f &&
|
set +f &&
|
||||||
|
|
||||||
test "$old" = "$new" &&
|
test "$old" = "$new" &&
|
||||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
@@ -493,24 +467,24 @@ do
|
|||||||
# to itself, or perhaps because mv is so ancient that it does not
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
# support -f.
|
# support -f.
|
||||||
{
|
{
|
||||||
# Now remove or move aside any old file at destination location.
|
# Now remove or move aside any old file at destination location.
|
||||||
# We try this two ways since rm can't unlink itself on some
|
# We try this two ways since rm can't unlink itself on some
|
||||||
# systems and the destination file might be busy for other
|
# systems and the destination file might be busy for other
|
||||||
# reasons. In this case, the final cleanup might fail but the new
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
# file should still install successfully.
|
# file should still install successfully.
|
||||||
{
|
{
|
||||||
test ! -f "$dst" ||
|
test ! -f "$dst" ||
|
||||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
} ||
|
} ||
|
||||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
(exit 1); exit 1
|
(exit 1); exit 1
|
||||||
}
|
}
|
||||||
} &&
|
} &&
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
# Now rename the file to the real destination.
|
||||||
$doit $mvcmd "$dsttmp" "$dst"
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
}
|
}
|
||||||
fi || exit 1
|
fi || exit 1
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
# art text processor from the 70's. Who's sed? sed's dead, baby, sed's dead.*
|
# art text processor from the 70's. Who's sed? sed's dead, baby, sed's dead.*
|
||||||
# by Mark Griffiths <mark@thebespokepixel.com> *but quite portable
|
# by Mark Griffiths <mark@thebespokepixel.com> *but quite portable
|
||||||
#.
|
#.
|
||||||
# Finds /fish../endfish blocks in documentation source files and enhances
|
# Finds \fish..\endfish blocks in documentation source files and enhances
|
||||||
# markup. Requires that the four character word 'classes' declared here are
|
# markup. Requires that the four character word 'classes' declared here are
|
||||||
# added to Doxyfiles as aliases i.e.:
|
# added to Doxyfiles as aliases i.e.:
|
||||||
#.
|
#.
|
||||||
|
|||||||
562
m4/ax_cxx_compile_stdcxx.m4
Normal file
562
m4/ax_cxx_compile_stdcxx.m4
Normal file
@@ -0,0 +1,562 @@
|
|||||||
|
# ===========================================================================
|
||||||
|
# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
|
||||||
|
# ===========================================================================
|
||||||
|
#
|
||||||
|
# SYNOPSIS
|
||||||
|
#
|
||||||
|
# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
|
||||||
|
#
|
||||||
|
# DESCRIPTION
|
||||||
|
#
|
||||||
|
# Check for baseline language coverage in the compiler for the specified
|
||||||
|
# version of the C++ standard. If necessary, add switches to CXX and
|
||||||
|
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
|
||||||
|
# or '14' (for the C++14 standard).
|
||||||
|
#
|
||||||
|
# The second argument, if specified, indicates whether you insist on an
|
||||||
|
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
|
||||||
|
# -std=c++11). If neither is specified, you get whatever works, with
|
||||||
|
# preference for an extended mode.
|
||||||
|
#
|
||||||
|
# The third argument, if specified 'mandatory' or if left unspecified,
|
||||||
|
# indicates that baseline support for the specified C++ standard is
|
||||||
|
# required and that the macro should error out if no mode with that
|
||||||
|
# support is found. If specified 'optional', then configuration proceeds
|
||||||
|
# regardless, after defining HAVE_CXX${VERSION} if and only if a
|
||||||
|
# supporting mode is found.
|
||||||
|
#
|
||||||
|
# LICENSE
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
|
||||||
|
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
|
||||||
|
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
|
||||||
|
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
|
||||||
|
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
|
||||||
|
#
|
||||||
|
# Copying and distribution of this file, with or without modification, are
|
||||||
|
# permitted in any medium without royalty provided the copyright notice
|
||||||
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
|
# warranty.
|
||||||
|
|
||||||
|
#serial 4
|
||||||
|
|
||||||
|
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
|
||||||
|
dnl (serial version number 13).
|
||||||
|
|
||||||
|
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
||||||
|
m4_if([$1], [11], [],
|
||||||
|
[$1], [14], [],
|
||||||
|
[$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
|
||||||
|
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
|
||||||
|
m4_if([$2], [], [],
|
||||||
|
[$2], [ext], [],
|
||||||
|
[$2], [noext], [],
|
||||||
|
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
|
||||||
|
m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
|
||||||
|
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
|
||||||
|
[$3], [optional], [ax_cxx_compile_cxx$1_required=false],
|
||||||
|
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
|
||||||
|
AC_LANG_PUSH([C++])dnl
|
||||||
|
ac_success=no
|
||||||
|
AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
|
||||||
|
ax_cv_cxx_compile_cxx$1,
|
||||||
|
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
||||||
|
[ax_cv_cxx_compile_cxx$1=yes],
|
||||||
|
[ax_cv_cxx_compile_cxx$1=no])])
|
||||||
|
if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
|
||||||
|
ac_success=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
m4_if([$2], [noext], [], [dnl
|
||||||
|
if test x$ac_success = xno; then
|
||||||
|
for switch in -std=gnu++$1 -std=gnu++0x; do
|
||||||
|
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
||||||
|
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
||||||
|
$cachevar,
|
||||||
|
[ac_save_CXX="$CXX"
|
||||||
|
CXX="$CXX $switch"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
||||||
|
[eval $cachevar=yes],
|
||||||
|
[eval $cachevar=no])
|
||||||
|
CXX="$ac_save_CXX"])
|
||||||
|
if eval test x\$$cachevar = xyes; then
|
||||||
|
CXX="$CXX $switch"
|
||||||
|
if test -n "$CXXCPP" ; then
|
||||||
|
CXXCPP="$CXXCPP $switch"
|
||||||
|
fi
|
||||||
|
ac_success=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi])
|
||||||
|
|
||||||
|
m4_if([$2], [ext], [], [dnl
|
||||||
|
if test x$ac_success = xno; then
|
||||||
|
dnl HP's aCC needs +std=c++11 according to:
|
||||||
|
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
|
||||||
|
dnl Cray's crayCC needs "-h std=c++11"
|
||||||
|
for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
|
||||||
|
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
||||||
|
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
||||||
|
$cachevar,
|
||||||
|
[ac_save_CXX="$CXX"
|
||||||
|
CXX="$CXX $switch"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
||||||
|
[eval $cachevar=yes],
|
||||||
|
[eval $cachevar=no])
|
||||||
|
CXX="$ac_save_CXX"])
|
||||||
|
if eval test x\$$cachevar = xyes; then
|
||||||
|
CXX="$CXX $switch"
|
||||||
|
if test -n "$CXXCPP" ; then
|
||||||
|
CXXCPP="$CXXCPP $switch"
|
||||||
|
fi
|
||||||
|
ac_success=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi])
|
||||||
|
AC_LANG_POP([C++])
|
||||||
|
if test x$ax_cxx_compile_cxx$1_required = xtrue; then
|
||||||
|
if test x$ac_success = xno; then
|
||||||
|
AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test x$ac_success = xno; then
|
||||||
|
HAVE_CXX$1=0
|
||||||
|
AC_MSG_NOTICE([No compiler with C++$1 support was found])
|
||||||
|
else
|
||||||
|
HAVE_CXX$1=1
|
||||||
|
AC_DEFINE(HAVE_CXX$1,1,
|
||||||
|
[define if the compiler supports basic C++$1 syntax])
|
||||||
|
fi
|
||||||
|
AC_SUBST(HAVE_CXX$1)
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Test body for checking C++11 support
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
dnl Test body for checking C++14 support
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
||||||
|
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
dnl Tests for new features in C++11
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
|
||||||
|
|
||||||
|
// If the compiler admits that it is not ready for C++11, why torture it?
|
||||||
|
// Hopefully, this will speed up the test.
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
|
||||||
|
#error "This is not a C++ compiler"
|
||||||
|
|
||||||
|
#elif __cplusplus < 201103L
|
||||||
|
|
||||||
|
#error "This is not a C++11 compiler"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
namespace cxx11
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace test_static_assert
|
||||||
|
{
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct check
|
||||||
|
{
|
||||||
|
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_final_override
|
||||||
|
{
|
||||||
|
|
||||||
|
struct Base
|
||||||
|
{
|
||||||
|
virtual void f() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Derived : public Base
|
||||||
|
{
|
||||||
|
virtual void f() override {}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_double_right_angle_brackets
|
||||||
|
{
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
struct check {};
|
||||||
|
|
||||||
|
typedef check<void> single_type;
|
||||||
|
typedef check<check<void>> double_type;
|
||||||
|
typedef check<check<check<void>>> triple_type;
|
||||||
|
typedef check<check<check<check<void>>>> quadruple_type;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_decltype
|
||||||
|
{
|
||||||
|
|
||||||
|
int
|
||||||
|
f()
|
||||||
|
{
|
||||||
|
int a = 1;
|
||||||
|
decltype(a) b = 2;
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_type_deduction
|
||||||
|
{
|
||||||
|
|
||||||
|
template < typename T1, typename T2 >
|
||||||
|
struct is_same
|
||||||
|
{
|
||||||
|
static const bool value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
struct is_same<T, T>
|
||||||
|
{
|
||||||
|
static const bool value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
template < typename T1, typename T2 >
|
||||||
|
auto
|
||||||
|
add(T1 a1, T2 a2) -> decltype(a1 + a2)
|
||||||
|
{
|
||||||
|
return a1 + a2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
test(const int c, volatile int v)
|
||||||
|
{
|
||||||
|
static_assert(is_same<int, decltype(0)>::value == true, "");
|
||||||
|
static_assert(is_same<int, decltype(c)>::value == false, "");
|
||||||
|
static_assert(is_same<int, decltype(v)>::value == false, "");
|
||||||
|
auto ac = c;
|
||||||
|
auto av = v;
|
||||||
|
auto sumi = ac + av + 'x';
|
||||||
|
auto sumf = ac + av + 1.0;
|
||||||
|
static_assert(is_same<int, decltype(ac)>::value == true, "");
|
||||||
|
static_assert(is_same<int, decltype(av)>::value == true, "");
|
||||||
|
static_assert(is_same<int, decltype(sumi)>::value == true, "");
|
||||||
|
static_assert(is_same<int, decltype(sumf)>::value == false, "");
|
||||||
|
static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
|
||||||
|
return (sumf > 0.0) ? sumi : add(c, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_noexcept
|
||||||
|
{
|
||||||
|
|
||||||
|
int f() { return 0; }
|
||||||
|
int g() noexcept { return 0; }
|
||||||
|
|
||||||
|
static_assert(noexcept(f()) == false, "");
|
||||||
|
static_assert(noexcept(g()) == true, "");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_constexpr
|
||||||
|
{
|
||||||
|
|
||||||
|
template < typename CharT >
|
||||||
|
unsigned long constexpr
|
||||||
|
strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
|
||||||
|
{
|
||||||
|
return *s ? strlen_c_r(s + 1, acc + 1) : acc;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename CharT >
|
||||||
|
unsigned long constexpr
|
||||||
|
strlen_c(const CharT *const s) noexcept
|
||||||
|
{
|
||||||
|
return strlen_c_r(s, 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static_assert(strlen_c("") == 0UL, "");
|
||||||
|
static_assert(strlen_c("1") == 1UL, "");
|
||||||
|
static_assert(strlen_c("example") == 7UL, "");
|
||||||
|
static_assert(strlen_c("another\0example") == 7UL, "");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_rvalue_references
|
||||||
|
{
|
||||||
|
|
||||||
|
template < int N >
|
||||||
|
struct answer
|
||||||
|
{
|
||||||
|
static constexpr int value = N;
|
||||||
|
};
|
||||||
|
|
||||||
|
answer<1> f(int&) { return answer<1>(); }
|
||||||
|
answer<2> f(const int&) { return answer<2>(); }
|
||||||
|
answer<3> f(int&&) { return answer<3>(); }
|
||||||
|
|
||||||
|
void
|
||||||
|
test()
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
const int c = 0;
|
||||||
|
static_assert(decltype(f(i))::value == 1, "");
|
||||||
|
static_assert(decltype(f(c))::value == 2, "");
|
||||||
|
static_assert(decltype(f(0))::value == 3, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_uniform_initialization
|
||||||
|
{
|
||||||
|
|
||||||
|
struct test
|
||||||
|
{
|
||||||
|
static const int zero {};
|
||||||
|
static const int one {1};
|
||||||
|
};
|
||||||
|
|
||||||
|
static_assert(test::zero == 0, "");
|
||||||
|
static_assert(test::one == 1, "");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_lambdas
|
||||||
|
{
|
||||||
|
|
||||||
|
void
|
||||||
|
test1()
|
||||||
|
{
|
||||||
|
auto lambda1 = [](){};
|
||||||
|
auto lambda2 = lambda1;
|
||||||
|
lambda1();
|
||||||
|
lambda2();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
test2()
|
||||||
|
{
|
||||||
|
auto a = [](int i, int j){ return i + j; }(1, 2);
|
||||||
|
auto b = []() -> int { return '0'; }();
|
||||||
|
auto c = [=](){ return a + b; }();
|
||||||
|
auto d = [&](){ return c; }();
|
||||||
|
auto e = [a, &b](int x) mutable {
|
||||||
|
const auto identity = [](int y){ return y; };
|
||||||
|
for (auto i = 0; i < a; ++i)
|
||||||
|
a += b--;
|
||||||
|
return x + identity(a + b);
|
||||||
|
}(0);
|
||||||
|
return a + b + c + d + e;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
test3()
|
||||||
|
{
|
||||||
|
const auto nullary = [](){ return 0; };
|
||||||
|
const auto unary = [](int x){ return x; };
|
||||||
|
using nullary_t = decltype(nullary);
|
||||||
|
using unary_t = decltype(unary);
|
||||||
|
const auto higher1st = [](nullary_t f){ return f(); };
|
||||||
|
const auto higher2nd = [unary](nullary_t f1){
|
||||||
|
return [unary, f1](unary_t f2){ return f2(unary(f1())); };
|
||||||
|
};
|
||||||
|
return higher1st(nullary) + higher2nd(nullary)(unary);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_variadic_templates
|
||||||
|
{
|
||||||
|
|
||||||
|
template <int...>
|
||||||
|
struct sum;
|
||||||
|
|
||||||
|
template <int N0, int... N1toN>
|
||||||
|
struct sum<N0, N1toN...>
|
||||||
|
{
|
||||||
|
static constexpr auto value = N0 + sum<N1toN...>::value;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct sum<>
|
||||||
|
{
|
||||||
|
static constexpr auto value = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
static_assert(sum<>::value == 0, "");
|
||||||
|
static_assert(sum<1>::value == 1, "");
|
||||||
|
static_assert(sum<23>::value == 23, "");
|
||||||
|
static_assert(sum<1, 2>::value == 3, "");
|
||||||
|
static_assert(sum<5, 5, 11>::value == 21, "");
|
||||||
|
static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
|
||||||
|
// Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
|
||||||
|
// because of this.
|
||||||
|
namespace test_template_alias_sfinae
|
||||||
|
{
|
||||||
|
|
||||||
|
struct foo {};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
using member = typename T::member_type;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void func(...) {}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void func(member<T>*) {}
|
||||||
|
|
||||||
|
void test();
|
||||||
|
|
||||||
|
void test() { func<foo>(0); }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace cxx11
|
||||||
|
|
||||||
|
#endif // __cplusplus >= 201103L
|
||||||
|
|
||||||
|
]])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Tests for new features in C++14
|
||||||
|
|
||||||
|
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
|
||||||
|
|
||||||
|
// If the compiler admits that it is not ready for C++14, why torture it?
|
||||||
|
// Hopefully, this will speed up the test.
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
|
||||||
|
#error "This is not a C++ compiler"
|
||||||
|
|
||||||
|
#elif __cplusplus < 201402L
|
||||||
|
|
||||||
|
#error "This is not a C++14 compiler"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
namespace cxx14
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace test_polymorphic_lambdas
|
||||||
|
{
|
||||||
|
|
||||||
|
int
|
||||||
|
test()
|
||||||
|
{
|
||||||
|
const auto lambda = [](auto&&... args){
|
||||||
|
const auto istiny = [](auto x){
|
||||||
|
return (sizeof(x) == 1UL) ? 1 : 0;
|
||||||
|
};
|
||||||
|
const int aretiny[] = { istiny(args)... };
|
||||||
|
return aretiny[0];
|
||||||
|
};
|
||||||
|
return lambda(1, 1L, 1.0f, '1');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_binary_literals
|
||||||
|
{
|
||||||
|
|
||||||
|
constexpr auto ivii = 0b0000000000101010;
|
||||||
|
static_assert(ivii == 42, "wrong value");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_generalized_constexpr
|
||||||
|
{
|
||||||
|
|
||||||
|
template < typename CharT >
|
||||||
|
constexpr unsigned long
|
||||||
|
strlen_c(const CharT *const s) noexcept
|
||||||
|
{
|
||||||
|
auto length = 0UL;
|
||||||
|
for (auto p = s; *p; ++p)
|
||||||
|
++length;
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
static_assert(strlen_c("") == 0UL, "");
|
||||||
|
static_assert(strlen_c("x") == 1UL, "");
|
||||||
|
static_assert(strlen_c("test") == 4UL, "");
|
||||||
|
static_assert(strlen_c("another\0test") == 7UL, "");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_lambda_init_capture
|
||||||
|
{
|
||||||
|
|
||||||
|
int
|
||||||
|
test()
|
||||||
|
{
|
||||||
|
auto x = 0;
|
||||||
|
const auto lambda1 = [a = x](int b){ return a + b; };
|
||||||
|
const auto lambda2 = [a = lambda1(x)](){ return a; };
|
||||||
|
return lambda2();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_digit_seperators
|
||||||
|
{
|
||||||
|
|
||||||
|
constexpr auto ten_million = 100'000'000;
|
||||||
|
static_assert(ten_million == 100000000, "");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace test_return_type_deduction
|
||||||
|
{
|
||||||
|
|
||||||
|
auto f(int& x) { return x; }
|
||||||
|
decltype(auto) g(int& x) { return x; }
|
||||||
|
|
||||||
|
template < typename T1, typename T2 >
|
||||||
|
struct is_same
|
||||||
|
{
|
||||||
|
static constexpr auto value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
struct is_same<T, T>
|
||||||
|
{
|
||||||
|
static constexpr auto value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
test()
|
||||||
|
{
|
||||||
|
auto x = 0;
|
||||||
|
static_assert(is_same<int, decltype(f(x))>::value, "");
|
||||||
|
static_assert(is_same<int&, decltype(g(x))>::value, "");
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace cxx14
|
||||||
|
|
||||||
|
#endif // __cplusplus >= 201402L
|
||||||
|
|
||||||
|
]])
|
||||||
39
m4/ax_cxx_compile_stdcxx_11.m4
Normal file
39
m4/ax_cxx_compile_stdcxx_11.m4
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# ============================================================================
|
||||||
|
# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
|
||||||
|
# ============================================================================
|
||||||
|
#
|
||||||
|
# SYNOPSIS
|
||||||
|
#
|
||||||
|
# AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional])
|
||||||
|
#
|
||||||
|
# DESCRIPTION
|
||||||
|
#
|
||||||
|
# Check for baseline language coverage in the compiler for the C++11
|
||||||
|
# standard; if necessary, add switches to CXX and CXXCPP to enable
|
||||||
|
# support.
|
||||||
|
#
|
||||||
|
# This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
|
||||||
|
# macro with the version set to C++11. The two optional arguments are
|
||||||
|
# forwarded literally as the second and third argument respectively.
|
||||||
|
# Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
|
||||||
|
# more information. If you want to use this macro, you also need to
|
||||||
|
# download the ax_cxx_compile_stdcxx.m4 file.
|
||||||
|
#
|
||||||
|
# LICENSE
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
|
||||||
|
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
|
||||||
|
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
|
||||||
|
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
|
||||||
|
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
|
||||||
|
#
|
||||||
|
# Copying and distribution of this file, with or without modification, are
|
||||||
|
# permitted in any medium without royalty provided the copyright notice
|
||||||
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
|
# warranty.
|
||||||
|
|
||||||
|
#serial 17
|
||||||
|
|
||||||
|
AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX])
|
||||||
|
AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])])
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.3.0</string>
|
<string>2.5.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>0.1</string>
|
<string>0.1</string>
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
|
|||||||
104
osx/config.h
104
osx/config.h
@@ -1,14 +1,8 @@
|
|||||||
/* config.h. Generated from config.h.in by configure. */
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
/* Define to 1 if you have the `backtrace' function. */
|
/* Define to 1 if you have the `backtrace_symbols' function. */
|
||||||
#define HAVE_BACKTRACE 1
|
#define HAVE_BACKTRACE_SYMBOLS 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `backtrace_symbols_fd' function. */
|
|
||||||
#define HAVE_BACKTRACE_SYMBOLS_FD 1
|
|
||||||
|
|
||||||
/* Define to 1 one if the implemented fwprintf is broken */
|
|
||||||
/* #undef HAVE_BROKEN_FWPRINTF */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `clock_gettime' function. */
|
/* Define to 1 if you have the `clock_gettime' function. */
|
||||||
/* #undef HAVE_CLOCK_GETTIME */
|
/* #undef HAVE_CLOCK_GETTIME */
|
||||||
@@ -16,21 +10,21 @@
|
|||||||
/* Define to 1 if you have the <curses.h> header file. */
|
/* Define to 1 if you have the <curses.h> header file. */
|
||||||
#define HAVE_CURSES_H 1
|
#define HAVE_CURSES_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `dcgettext' function. */
|
/* define if the compiler supports basic C++11 syntax */
|
||||||
/* #undef HAVE_DCGETTEXT */
|
#define HAVE_CXX11 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
||||||
*/
|
*/
|
||||||
#define HAVE_DIRENT_H 1
|
#define HAVE_DIRENT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `dirfd' function. */
|
||||||
|
#define HAVE_DIRFD 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||||
#define HAVE_EXECINFO_H 1
|
#define HAVE_EXECINFO_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `fgetwc' function. */
|
/* Define to 1 if you have the `flock' function. */
|
||||||
#define HAVE_FGETWC 1
|
#define HAVE_FLOCK 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `fputwc' function. */
|
|
||||||
#define HAVE_FPUTWC 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `futimens' function. */
|
/* Define to 1 if you have the `futimens' function. */
|
||||||
/* #undef HAVE_FUTIMENS */
|
/* #undef HAVE_FUTIMENS */
|
||||||
@@ -38,15 +32,15 @@
|
|||||||
/* Define to 1 if you have the `futimes' function. */
|
/* Define to 1 if you have the `futimes' function. */
|
||||||
#define HAVE_FUTIMES 1
|
#define HAVE_FUTIMES 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `fwprintf' function. */
|
|
||||||
#define HAVE_FWPRINTF 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `getifaddrs' function. */
|
/* Define to 1 if you have the `getifaddrs' function. */
|
||||||
#define HAVE_GETIFADDRS 1
|
#define HAVE_GETIFADDRS 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <getopt.h> header file. */
|
/* Define to 1 if you have the <getopt.h> header file. */
|
||||||
#define HAVE_GETOPT_H 1
|
#define HAVE_GETOPT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getpwent' function. */
|
||||||
|
#define HAVE_GETPWENT 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `gettext' function. */
|
/* Define to 1 if you have the `gettext' function. */
|
||||||
/* #undef HAVE_GETTEXT */
|
/* #undef HAVE_GETTEXT */
|
||||||
|
|
||||||
@@ -68,9 +62,6 @@
|
|||||||
/* Define to 1 if you have the `mkostemp' function. */
|
/* Define to 1 if you have the `mkostemp' function. */
|
||||||
/* #undef HAVE_MKOSTEMP */
|
/* #undef HAVE_MKOSTEMP */
|
||||||
|
|
||||||
/* Define to 1 if you have the nan function */
|
|
||||||
#define HAVE_NAN 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <ncurses/curses.h> header file. */
|
/* Define to 1 if you have the <ncurses/curses.h> header file. */
|
||||||
/* #undef HAVE_NCURSES_CURSES_H */
|
/* #undef HAVE_NCURSES_CURSES_H */
|
||||||
|
|
||||||
@@ -83,8 +74,8 @@
|
|||||||
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
||||||
/* #undef HAVE_NDIR_H */
|
/* #undef HAVE_NDIR_H */
|
||||||
|
|
||||||
/* Define to 1 if realpath accepts null for its second argument. */
|
/* Define to 1 if the shm_open() function exists */
|
||||||
#define HAVE_REALPATH_NULL 1
|
#define HAVE_SHM_OPEN 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <siginfo.h> header file. */
|
/* Define to 1 if you have the <siginfo.h> header file. */
|
||||||
/* #undef HAVE_SIGINFO_H */
|
/* #undef HAVE_SIGINFO_H */
|
||||||
@@ -98,6 +89,15 @@
|
|||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
#define HAVE_STDLIB_H 1
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `std::wcscasecmp' function. */
|
||||||
|
/* #undef HAVE_STD__WCSCASECMP */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `std::wcsdup' function. */
|
||||||
|
/* #undef HAVE_STD__WCSDUP */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `std::wcsncasecmp' function. */
|
||||||
|
/* #undef HAVE_STD__WCSNCASECMP */
|
||||||
|
|
||||||
/* Define to 1 if you have the <strings.h> header file. */
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
#define HAVE_STRINGS_H 1
|
#define HAVE_STRINGS_H 1
|
||||||
|
|
||||||
@@ -110,15 +110,15 @@
|
|||||||
/* Define to 1 if `d_type' is a member of `struct dirent'. */
|
/* Define to 1 if `d_type' is a member of `struct dirent'. */
|
||||||
#define HAVE_STRUCT_DIRENT_D_TYPE 1
|
#define HAVE_STRUCT_DIRENT_D_TYPE 1
|
||||||
|
|
||||||
|
/* Define to 1 if `st_ctime_nsec' is a member of `struct stat'. */
|
||||||
|
/* #undef HAVE_STRUCT_STAT_ST_CTIME_NSEC */
|
||||||
|
|
||||||
/* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */
|
/* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */
|
||||||
#define HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1
|
#define HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1
|
||||||
|
|
||||||
/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */
|
/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */
|
||||||
/* #undef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC */
|
/* #undef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC */
|
||||||
|
|
||||||
/* Define to 1 if you have the `sysconf' function. */
|
|
||||||
#define HAVE_SYSCONF 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
||||||
*/
|
*/
|
||||||
/* #undef HAVE_SYS_DIR_H */
|
/* #undef HAVE_SYS_DIR_H */
|
||||||
@@ -154,10 +154,6 @@
|
|||||||
/* Define to 1 if you have the <term.h> header file. */
|
/* Define to 1 if you have the <term.h> header file. */
|
||||||
#define HAVE_TERM_H 1
|
#define HAVE_TERM_H 1
|
||||||
|
|
||||||
/* Define to 1 if the wgettext function should be used for translating
|
|
||||||
strings. */
|
|
||||||
#define HAVE_TRANSLATE_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <unistd.h> header file. */
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
#define HAVE_UNISTD_H 1
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
@@ -167,33 +163,15 @@
|
|||||||
/* Define to 1 if you have the `wcsdup' function. */
|
/* Define to 1 if you have the `wcsdup' function. */
|
||||||
#define HAVE_WCSDUP 1
|
#define HAVE_WCSDUP 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcslcat' function. */
|
|
||||||
#define HAVE_WCSLCAT 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcslcpy' function. */
|
/* Define to 1 if you have the `wcslcpy' function. */
|
||||||
#define HAVE_WCSLCPY 1
|
#define HAVE_WCSLCPY 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcslen' function. */
|
|
||||||
#define HAVE_WCSLEN 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcsncasecmp' function. */
|
/* Define to 1 if you have the `wcsncasecmp' function. */
|
||||||
#define HAVE_WCSNCASECMP 1
|
#define HAVE_WCSNCASECMP 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcsndup' function. */
|
/* Define to 1 if you have the `wcsndup' function. */
|
||||||
/* #undef HAVE_WCSNDUP */
|
/* #undef HAVE_WCSNDUP */
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcstok' function. */
|
|
||||||
#define HAVE_WCSTOK 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcstol' function. */
|
|
||||||
#define HAVE_WCSTOL 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcswidth' function. */
|
|
||||||
#define HAVE_WCSWIDTH 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `wcwidth' function. */
|
|
||||||
#define HAVE_WCWIDTH 1
|
|
||||||
|
|
||||||
/* Define to 1 if the winsize struct and TIOCGWINSZ macro exist */
|
/* Define to 1 if the winsize struct and TIOCGWINSZ macro exist */
|
||||||
#define HAVE_WINSIZE 1
|
#define HAVE_WINSIZE 1
|
||||||
|
|
||||||
@@ -206,9 +184,6 @@
|
|||||||
/* Define to 1 if the _sys_errs array is available. */
|
/* Define to 1 if the _sys_errs array is available. */
|
||||||
/* #undef HAVE__SYS__ERRS */
|
/* #undef HAVE__SYS__ERRS */
|
||||||
|
|
||||||
/* Define to 1 if the __environ symbol is exported. */
|
|
||||||
/* #undef HAVE___ENVIRON */
|
|
||||||
|
|
||||||
/* Define to 1 to disable ncurses macros that conflict with the STL */
|
/* Define to 1 to disable ncurses macros that conflict with the STL */
|
||||||
#define NCURSES_NOMACROS 1
|
#define NCURSES_NOMACROS 1
|
||||||
|
|
||||||
@@ -222,7 +197,7 @@
|
|||||||
#define PACKAGE_NAME "fish"
|
#define PACKAGE_NAME "fish"
|
||||||
|
|
||||||
/* Define to the full name and version of this package. */
|
/* Define to the full name and version of this package. */
|
||||||
#define PACKAGE_STRING "fish 2.3.0"
|
#define PACKAGE_STRING "fish 2.5.0"
|
||||||
|
|
||||||
/* Define to the one symbol short name of this package. */
|
/* Define to the one symbol short name of this package. */
|
||||||
#define PACKAGE_TARNAME "fish"
|
#define PACKAGE_TARNAME "fish"
|
||||||
@@ -231,7 +206,7 @@
|
|||||||
#define PACKAGE_URL ""
|
#define PACKAGE_URL ""
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
/* Define to the version of this package. */
|
||||||
#define PACKAGE_VERSION "2.3.0"
|
#define PACKAGE_VERSION "2.5.0"
|
||||||
|
|
||||||
/* The size of `wchar_t', as computed by sizeof. */
|
/* The size of `wchar_t', as computed by sizeof. */
|
||||||
#define SIZEOF_WCHAR_T 4
|
#define SIZEOF_WCHAR_T 4
|
||||||
@@ -242,9 +217,6 @@
|
|||||||
/* Define to 1 if tparm accepts a fixed amount of paramters. */
|
/* Define to 1 if tparm accepts a fixed amount of paramters. */
|
||||||
/* #undef TPARM_SOLARIS_KLUDGE */
|
/* #undef TPARM_SOLARIS_KLUDGE */
|
||||||
|
|
||||||
/* Evil kludge to get Power based machines to work */
|
|
||||||
/* #undef TPUTS_KLUDGE */
|
|
||||||
|
|
||||||
/* Perform string translations with gettext */
|
/* Perform string translations with gettext */
|
||||||
/* #undef USE_GETTEXT */
|
/* #undef USE_GETTEXT */
|
||||||
|
|
||||||
@@ -273,12 +245,20 @@
|
|||||||
/* The size of wchar_t in bits. */
|
/* The size of wchar_t in bits. */
|
||||||
#define WCHAR_T_BITS 32
|
#define WCHAR_T_BITS 32
|
||||||
|
|
||||||
|
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||||
|
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||||
|
# define _DARWIN_USE_64_BIT_INODE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
|
/* #undef _FILE_OFFSET_BITS */
|
||||||
|
|
||||||
|
/* Define for large files, on AIX-style hosts. */
|
||||||
|
/* #undef _LARGE_FILES */
|
||||||
|
|
||||||
/* Define to 1 if on MINIX. */
|
/* Define to 1 if on MINIX. */
|
||||||
/* #undef _MINIX */
|
/* #undef _MINIX */
|
||||||
|
|
||||||
/* Macro to enable additional prototypes under BSD */
|
|
||||||
/* #undef _NETBSD_SOURCE */
|
|
||||||
|
|
||||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||||
this defined. */
|
this defined. */
|
||||||
/* #undef _POSIX_1_SOURCE */
|
/* #undef _POSIX_1_SOURCE */
|
||||||
@@ -286,12 +266,6 @@
|
|||||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||||
/* #undef _POSIX_SOURCE */
|
/* #undef _POSIX_SOURCE */
|
||||||
|
|
||||||
/* Macro to enable additional prototypes under BSD */
|
|
||||||
/* #undef __BSD_VISIBLE */
|
|
||||||
|
|
||||||
/* Macro to enable additional prototypes under Solaris */
|
|
||||||
#define __EXTENSIONS__ 1
|
|
||||||
|
|
||||||
#if __GNUC__ >= 3
|
#if __GNUC__ >= 3
|
||||||
#ifndef __warn_unused
|
#ifndef __warn_unused
|
||||||
#define __warn_unused __attribute__ ((warn_unused_result))
|
#define __warn_unused __attribute__ ((warn_unused_result))
|
||||||
|
|||||||
Binary file not shown.
@@ -87,7 +87,8 @@ int main(void) {
|
|||||||
|
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
/* Get the fish executable. Make sure it's absolute. */
|
/* Get the fish executable. Make sure it's absolute. */
|
||||||
NSURL *fish_executable = [[NSBundle mainBundle] URLForResource:@"fish" withExtension:@"" subdirectory:@"base/bin"];
|
NSURL *fish_executable = [[NSBundle mainBundle] URLForResource:@"fish" withExtension:@""
|
||||||
|
subdirectory:@"base/bin"];
|
||||||
if (! fish_executable)
|
if (! fish_executable)
|
||||||
die("Could not find fish executable in bundle");
|
die("Could not find fish executable in bundle");
|
||||||
|
|
||||||
|
|||||||
524
pcre2-10.21/RunTest.bat
vendored
524
pcre2-10.21/RunTest.bat
vendored
@@ -1,524 +0,0 @@
|
|||||||
@echo off
|
|
||||||
@rem
|
|
||||||
@rem MS Windows batch file to run pcre2test on testfiles with the correct
|
|
||||||
@rem options. This file must use CRLF linebreaks to function properly,
|
|
||||||
@rem and requires both pcre2test and pcre2grep.
|
|
||||||
@rem
|
|
||||||
@rem ------------------------ HISTORY ----------------------------------
|
|
||||||
@rem This file was originally contributed to PCRE1 by Ralf Junker, and touched
|
|
||||||
@rem up by Daniel Richard G. Tests 10-12 added by Philip H.
|
|
||||||
@rem Philip H also changed test 3 to use "wintest" files.
|
|
||||||
@rem
|
|
||||||
@rem Updated by Tom Fortmann to support explicit test numbers on the command
|
|
||||||
@rem line. Added argument validation and added error reporting.
|
|
||||||
@rem
|
|
||||||
@rem Sheri Pierce added logic to skip feature dependent tests
|
|
||||||
@rem tests 4 5 7 10 12 14 19 and 22 require Unicode support
|
|
||||||
@rem 8 requires Unicode and link size 2
|
|
||||||
@rem 16 requires absence of jit support
|
|
||||||
@rem 17 requires presence of jit support
|
|
||||||
@rem Sheri P also added override tests for study and jit testing
|
|
||||||
@rem Zoltan Herczeg added libpcre16 support
|
|
||||||
@rem Zoltan Herczeg added libpcre32 support
|
|
||||||
@rem -------------------------------------------------------------------
|
|
||||||
@rem
|
|
||||||
@rem The file was converted for PCRE2 by PH, February 2015.
|
|
||||||
@rem Updated for new test 14 (moving others up a number), August 2015.
|
|
||||||
@rem Tidied and updated for new tests 21, 22, 23 by PH, October 2015.
|
|
||||||
|
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
|
||||||
if [%srcdir%]==[] (
|
|
||||||
if exist testdata\ set srcdir=.)
|
|
||||||
if [%srcdir%]==[] (
|
|
||||||
if exist ..\testdata\ set srcdir=..)
|
|
||||||
if [%srcdir%]==[] (
|
|
||||||
if exist ..\..\testdata\ set srcdir=..\..)
|
|
||||||
if NOT exist %srcdir%\testdata\ (
|
|
||||||
Error: echo distribution testdata folder not found!
|
|
||||||
call :conferror
|
|
||||||
exit /b 1
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
|
|
||||||
if [%pcre2test%]==[] set pcre2test=.\pcre2test.exe
|
|
||||||
|
|
||||||
echo source dir is %srcdir%
|
|
||||||
echo pcre2test=%pcre2test%
|
|
||||||
|
|
||||||
if NOT exist %pcre2test% (
|
|
||||||
echo Error: %pcre2test% not found!
|
|
||||||
echo.
|
|
||||||
call :conferror
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
%pcre2test% -C linksize >NUL
|
|
||||||
set link_size=%ERRORLEVEL%
|
|
||||||
%pcre2test% -C pcre2-8 >NUL
|
|
||||||
set support8=%ERRORLEVEL%
|
|
||||||
%pcre2test% -C pcre2-16 >NUL
|
|
||||||
set support16=%ERRORLEVEL%
|
|
||||||
%pcre2test% -C pcre2-32 >NUL
|
|
||||||
set support32=%ERRORLEVEL%
|
|
||||||
%pcre2test% -C unicode >NUL
|
|
||||||
set unicode=%ERRORLEVEL%
|
|
||||||
%pcre2test% -C jit >NUL
|
|
||||||
set jit=%ERRORLEVEL%
|
|
||||||
%pcre2test% -C backslash-C >NUL
|
|
||||||
set supportBSC=%ERRORLEVEL%
|
|
||||||
|
|
||||||
if %support8% EQU 1 (
|
|
||||||
if not exist testout8 md testout8
|
|
||||||
if not exist testoutjit8 md testoutjit8
|
|
||||||
)
|
|
||||||
|
|
||||||
if %support16% EQU 1 (
|
|
||||||
if not exist testout16 md testout16
|
|
||||||
if not exist testoutjit16 md testoutjit16
|
|
||||||
)
|
|
||||||
|
|
||||||
if %support16% EQU 1 (
|
|
||||||
if not exist testout32 md testout32
|
|
||||||
if not exist testoutjit32 md testoutjit32
|
|
||||||
)
|
|
||||||
|
|
||||||
set do1=no
|
|
||||||
set do2=no
|
|
||||||
set do3=no
|
|
||||||
set do4=no
|
|
||||||
set do5=no
|
|
||||||
set do6=no
|
|
||||||
set do7=no
|
|
||||||
set do8=no
|
|
||||||
set do9=no
|
|
||||||
set do10=no
|
|
||||||
set do11=no
|
|
||||||
set do12=no
|
|
||||||
set do13=no
|
|
||||||
set do14=no
|
|
||||||
set do15=no
|
|
||||||
set do16=no
|
|
||||||
set do17=no
|
|
||||||
set do18=no
|
|
||||||
set do19=no
|
|
||||||
set do20=no
|
|
||||||
set do21=no
|
|
||||||
set do22=no
|
|
||||||
set do23=no
|
|
||||||
set all=yes
|
|
||||||
|
|
||||||
for %%a in (%*) do (
|
|
||||||
set valid=no
|
|
||||||
for %%v in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23) do if %%v == %%a set valid=yes
|
|
||||||
if "!valid!" == "yes" (
|
|
||||||
set do%%a=yes
|
|
||||||
set all=no
|
|
||||||
) else (
|
|
||||||
echo Invalid test number - %%a!
|
|
||||||
echo Usage %0 [ test_number ] ...
|
|
||||||
echo Where test_number is one or more optional test numbers 1 through 23, default is all tests.
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
set failed="no"
|
|
||||||
|
|
||||||
if "%all%" == "yes" (
|
|
||||||
set do1=yes
|
|
||||||
set do2=yes
|
|
||||||
set do3=yes
|
|
||||||
set do4=yes
|
|
||||||
set do5=yes
|
|
||||||
set do6=yes
|
|
||||||
set do7=yes
|
|
||||||
set do8=yes
|
|
||||||
set do9=yes
|
|
||||||
set do10=yes
|
|
||||||
set do11=yes
|
|
||||||
set do12=yes
|
|
||||||
set do13=yes
|
|
||||||
set do14=yes
|
|
||||||
set do15=yes
|
|
||||||
set do16=yes
|
|
||||||
set do17=yes
|
|
||||||
set do18=yes
|
|
||||||
set do19=yes
|
|
||||||
set do20=yes
|
|
||||||
set do21=yes
|
|
||||||
set do22=yes
|
|
||||||
set do23=yes
|
|
||||||
)
|
|
||||||
|
|
||||||
@echo RunTest.bat's pcre2test output is written to newly created subfolders
|
|
||||||
@echo named testout{8,16,32} and testoutjit{8,16,32}.
|
|
||||||
@echo.
|
|
||||||
|
|
||||||
set mode=
|
|
||||||
set bits=8
|
|
||||||
|
|
||||||
:nextMode
|
|
||||||
if "%mode%" == "" (
|
|
||||||
if %support8% EQU 0 goto modeSkip
|
|
||||||
echo.
|
|
||||||
echo ---- Testing 8-bit library ----
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
if "%mode%" == "-16" (
|
|
||||||
if %support16% EQU 0 goto modeSkip
|
|
||||||
echo.
|
|
||||||
echo ---- Testing 16-bit library ----
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
if "%mode%" == "-32" (
|
|
||||||
if %support32% EQU 0 goto modeSkip
|
|
||||||
echo.
|
|
||||||
echo ---- Testing 32-bit library ----
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
if "%do1%" == "yes" call :do1
|
|
||||||
if "%do2%" == "yes" call :do2
|
|
||||||
if "%do3%" == "yes" call :do3
|
|
||||||
if "%do4%" == "yes" call :do4
|
|
||||||
if "%do5%" == "yes" call :do5
|
|
||||||
if "%do6%" == "yes" call :do6
|
|
||||||
if "%do7%" == "yes" call :do7
|
|
||||||
if "%do8%" == "yes" call :do8
|
|
||||||
if "%do9%" == "yes" call :do9
|
|
||||||
if "%do10%" == "yes" call :do10
|
|
||||||
if "%do11%" == "yes" call :do11
|
|
||||||
if "%do12%" == "yes" call :do12
|
|
||||||
if "%do13%" == "yes" call :do13
|
|
||||||
if "%do14%" == "yes" call :do14
|
|
||||||
if "%do15%" == "yes" call :do15
|
|
||||||
if "%do16%" == "yes" call :do16
|
|
||||||
if "%do17%" == "yes" call :do17
|
|
||||||
if "%do18%" == "yes" call :do18
|
|
||||||
if "%do19%" == "yes" call :do19
|
|
||||||
if "%do20%" == "yes" call :do20
|
|
||||||
if "%do21%" == "yes" call :do21
|
|
||||||
if "%do22%" == "yes" call :do22
|
|
||||||
if "%do23%" == "yes" call :do23
|
|
||||||
:modeSkip
|
|
||||||
if "%mode%" == "" (
|
|
||||||
set mode=-16
|
|
||||||
set bits=16
|
|
||||||
goto nextMode
|
|
||||||
)
|
|
||||||
if "%mode%" == "-16" (
|
|
||||||
set mode=-32
|
|
||||||
set bits=32
|
|
||||||
goto nextMode
|
|
||||||
)
|
|
||||||
|
|
||||||
@rem If mode is -32, testing is finished
|
|
||||||
if %failed% == "yes" (
|
|
||||||
echo In above output, one or more of the various tests failed!
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
echo All OK
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:runsub
|
|
||||||
@rem Function to execute pcre2test and compare the output
|
|
||||||
@rem Arguments are as follows:
|
|
||||||
@rem
|
|
||||||
@rem 1 = test number
|
|
||||||
@rem 2 = outputdir
|
|
||||||
@rem 3 = test name use double quotes
|
|
||||||
@rem 4 - 9 = pcre2test options
|
|
||||||
|
|
||||||
if [%1] == [] (
|
|
||||||
echo Missing test number argument!
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
if [%2] == [] (
|
|
||||||
echo Missing outputdir!
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
if [%3] == [] (
|
|
||||||
echo Missing test name argument!
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
set testinput=testinput%1
|
|
||||||
set testoutput=testoutput%1
|
|
||||||
if exist %srcdir%\testdata\win%testinput% (
|
|
||||||
set testinput=wintestinput%1
|
|
||||||
set testoutput=wintestoutput%1
|
|
||||||
)
|
|
||||||
|
|
||||||
echo Test %1: %3
|
|
||||||
%pcre2test% %mode% %4 %5 %6 %7 %8 %9 %srcdir%\testdata\%testinput% >%2%bits%\%testoutput%
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo. failed executing command-line:
|
|
||||||
echo. %pcre2test% %mode% %4 %5 %6 %7 %8 %9 %srcdir%\testdata\%testinput% ^>%2%bits%\%testoutput%
|
|
||||||
set failed="yes"
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
|
|
||||||
set type=
|
|
||||||
if [%1]==[8] (
|
|
||||||
set type=-%bits%
|
|
||||||
)
|
|
||||||
if [%1]==[11] (
|
|
||||||
set type=-%bits%
|
|
||||||
)
|
|
||||||
if [%1]==[12] (
|
|
||||||
set type=-%bits%
|
|
||||||
)
|
|
||||||
if [%1]==[14] (
|
|
||||||
set type=-%bits%
|
|
||||||
)
|
|
||||||
|
|
||||||
fc /n %srcdir%\testdata\%testoutput%%type% %2%bits%\%testoutput% >NUL
|
|
||||||
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo. failed comparison: fc /n %srcdir%\testdata\%testoutput% %2%bits%\%testoutput%
|
|
||||||
if [%1]==[2] (
|
|
||||||
echo.
|
|
||||||
echo ** Test 2 requires a lot of stack. PCRE2 can be configured to
|
|
||||||
echo ** use heap for recursion. Otherwise, to pass Test 2
|
|
||||||
echo ** you generally need to allocate 8 mb stack to PCRE2.
|
|
||||||
echo ** See the 'pcre2stack' page for a discussion of PCRE2's
|
|
||||||
echo ** stack usage.
|
|
||||||
echo.
|
|
||||||
)
|
|
||||||
if [%1]==[3] (
|
|
||||||
echo.
|
|
||||||
echo ** Test 3 failure usually means french locale is not
|
|
||||||
echo ** available on the system, rather than a bug or problem with PCRE2.
|
|
||||||
echo.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
|
|
||||||
set failed="yes"
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
|
|
||||||
echo. Passed.
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do1
|
|
||||||
call :runsub 1 testout "Main non-UTF, non-UCP functionality (Compatible with Perl >= 5.10)" -q
|
|
||||||
if %jit% EQU 1 call :runsub 1 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do2
|
|
||||||
call :runsub 2 testout "API, errors, internals, and non-Perl stuff" -q
|
|
||||||
if %jit% EQU 1 call :runsub 2 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do3
|
|
||||||
call :runsub 3 testout "Locale-specific features" -q
|
|
||||||
if %jit% EQU 1 call :runsub 3 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do4
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 4 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 4 testout "UTF-%bits% and Unicode property support - (Compatible with Perl >= 5.10)" -q
|
|
||||||
if %jit% EQU 1 call :runsub 4 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do5
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 5 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 5 testout "API, internals, and non-Perl stuff for UTF-%bits% and UCP" -q
|
|
||||||
if %jit% EQU 1 call :runsub 5 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do6
|
|
||||||
call :runsub 6 testout "DFA matching main non-UTF, non-UCP functionality" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do7
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 7 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 7 testout "DFA matching with UTF-%bits% and Unicode property support" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do8
|
|
||||||
if NOT %link_size% EQU 2 (
|
|
||||||
echo Test 8 Skipped because link size is not 2.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 8 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 8 testout "Internal offsets and code size tests" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do9
|
|
||||||
if NOT %bits% EQU 8 (
|
|
||||||
echo Test 9 Skipped when running 16/32-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 9 testout "Specials for the basic 8-bit library" -q
|
|
||||||
if %jit% EQU 1 call :runsub 9 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do10
|
|
||||||
if NOT %bits% EQU 8 (
|
|
||||||
echo Test 10 Skipped when running 16/32-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 10 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 10 testout "Specials for the 8-bit library with Unicode support" -q
|
|
||||||
if %jit% EQU 1 call :runsub 10 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do11
|
|
||||||
if %bits% EQU 8 (
|
|
||||||
echo Test 11 Skipped when running 8-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 11 testout "Specials for the basic 16/32-bit library" -q
|
|
||||||
if %jit% EQU 1 call :runsub 11 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do12
|
|
||||||
if %bits% EQU 8 (
|
|
||||||
echo Test 12 Skipped when running 8-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 12 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 12 testout "Specials for the 16/32-bit library with Unicode support" -q
|
|
||||||
if %jit% EQU 1 call :runsub 12 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do13
|
|
||||||
if %bits% EQU 8 (
|
|
||||||
echo Test 13 Skipped when running 8-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 13 testout "DFA specials for the basic 16/32-bit library" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do14
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 14 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 14 testout "DFA specials for UTF and UCP support" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do15
|
|
||||||
call :runsub 15 testout "Non-JIT limits and other non_JIT tests" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do16
|
|
||||||
if %jit% EQU 1 (
|
|
||||||
echo Test 16 Skipped due to presence of JIT support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 16 testout "JIT-specific features when JIT is not available" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do17
|
|
||||||
if %jit% EQU 0 (
|
|
||||||
echo Test 17 Skipped due to absence of JIT support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 17 testout "JIT-specific features when JIT is available" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do18
|
|
||||||
if %bits% EQU 16 (
|
|
||||||
echo Test 18 Skipped when running 16-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
if %bits% EQU 32 (
|
|
||||||
echo Test 18 Skipped when running 32-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 18 testout "POSIX interface, excluding UTF-8 and UCP" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do19
|
|
||||||
if %bits% EQU 16 (
|
|
||||||
echo Test 19 Skipped when running 16-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
if %bits% EQU 32 (
|
|
||||||
echo Test 19 Skipped when running 32-bit tests.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 19 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 19 testout "POSIX interface with UTF-8 and UCP" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do20
|
|
||||||
call :runsub 20 testout "Serialization tests" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do21
|
|
||||||
if %supportBSC% EQU 0 (
|
|
||||||
echo Test 21 Skipped due to absence of backslash-C support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 21 testout "Backslash-C tests without UTF" -q
|
|
||||||
call :runsub 21 testout "Backslash-C tests without UTF (DFA)" -q -dfa
|
|
||||||
if %jit% EQU 1 call :runsub 21 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do22
|
|
||||||
if %supportBSC% EQU 0 (
|
|
||||||
echo Test 22 Skipped due to absence of backslash-C support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
if %unicode% EQU 0 (
|
|
||||||
echo Test 22 Skipped due to absence of Unicode support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 22 testout "Backslash-C tests with UTF" -q
|
|
||||||
if %jit% EQU 1 call :runsub 22 testoutjit "Test with JIT Override" -q -jit
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:do23
|
|
||||||
if %supportBSC% EQU 1 (
|
|
||||||
echo Test 23 Skipped due to presence of backslash-C support.
|
|
||||||
goto :eof
|
|
||||||
)
|
|
||||||
call :runsub 23 testout "Backslash-C disabled test" -q
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:conferror
|
|
||||||
@echo.
|
|
||||||
@echo Either your build is incomplete or you have a configuration error.
|
|
||||||
@echo.
|
|
||||||
@echo If configured with cmake and executed via "make test" or the MSVC "RUN_TESTS"
|
|
||||||
@echo project, pcre2_test.bat defines variables and automatically calls RunTest.bat.
|
|
||||||
@echo For manual testing of all available features, after configuring with cmake
|
|
||||||
@echo and building, you can run the built pcre2_test.bat. For best results with
|
|
||||||
@echo cmake builds and tests avoid directories with full path names that include
|
|
||||||
@echo spaces for source or build.
|
|
||||||
@echo.
|
|
||||||
@echo Otherwise, if the build dir is in a subdir of the source dir, testdata needed
|
|
||||||
@echo for input and verification should be found automatically when (from the
|
|
||||||
@echo location of the the built exes) you call RunTest.bat. By default RunTest.bat
|
|
||||||
@echo runs all tests compatible with the linked pcre2 library but it can be given
|
|
||||||
@echo a test number as an argument.
|
|
||||||
@echo.
|
|
||||||
@echo If the build dir is not under the source dir you can either copy your exes
|
|
||||||
@echo to the source folder or copy RunTest.bat and the testdata folder to the
|
|
||||||
@echo location of your built exes and then run RunTest.bat.
|
|
||||||
@echo.
|
|
||||||
goto :eof
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user