mirror of
https://github.com/sharkdp/bat
synced 2026-08-03 18:51:44 +00:00
Compare commits
1153 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b739f7d1e8 | |||
| 7fcab0616a | |||
| e157ac911b | |||
| b29e1d55c4 | |||
| 12ee94f530 | |||
| cbe7919451 | |||
| 10b4f07a87 | |||
| ebf469b99a | |||
| 8fbc96a5f2 | |||
| 54bfc33248 | |||
| 91aac95db2 | |||
| 5977245a23 | |||
| 3f98e6f10f | |||
| 78963986e0 | |||
| de64d3a0eb | |||
| 78cb14af05 | |||
| 8c8ed90d6d | |||
| 492c387ce7 | |||
| bceb260e91 | |||
| 8cadefb5cb | |||
| 64567c4819 | |||
| de2f21562a | |||
| 5722311b2e | |||
| f39d63b85d | |||
| 4144059e7a | |||
| 044d445adc | |||
| c3df0e6a88 | |||
| 71c894e843 | |||
| 93c52a4f88 | |||
| ea7fafca1e | |||
| e782ec125c | |||
| 0ecdeb28d4 | |||
| 77ea750e66 | |||
| cafad6b036 | |||
| e070d105b5 | |||
| 1f89178fce | |||
| 52763e0205 | |||
| f822bd05ce | |||
| e89c515e9a | |||
| a36b02d90f | |||
| 6876a782da | |||
| db647c9813 | |||
| 33045c3558 | |||
| 01174b31f5 | |||
| a9137fab05 | |||
| a995764d23 | |||
| b3aec318cf | |||
| 2459aa9404 | |||
| 111aa2e10e | |||
| c64b6761fe | |||
| 11efacbe64 | |||
| 204ca18d71 | |||
| a158f12106 | |||
| 956f0aeb08 | |||
| 1a6073d2e8 | |||
| 57e99e9bcd | |||
| 68eaa96e06 | |||
| de9ca4ef7b | |||
| 7bb905436b | |||
| f820ad1050 | |||
| 259e1266a8 | |||
| 31b0a35719 | |||
| 3e4169b8c3 | |||
| ba223289ce | |||
| abab6533e4 | |||
| 7d9884d6d2 | |||
| 652489251b | |||
| 89f3d2d31a | |||
| 5c3b8040db | |||
| 7ff1fb3278 | |||
| 3ee9ea9a8d | |||
| b511b928f4 | |||
| 3e789f5241 | |||
| a500fb236a | |||
| 515b9d62db | |||
| 62907b1da5 | |||
| eef7107407 | |||
| 87e043b91c | |||
| b8d462ba87 | |||
| ca3ef28d56 | |||
| 0b4c886efc | |||
| 780fdeb888 | |||
| 7a9c6e0de5 | |||
| a1e7c0ab4a | |||
| 1e36873704 | |||
| e86797fbf4 | |||
| e60875ac12 | |||
| 66eece4e2c | |||
| a19593b383 | |||
| 7a6f442c86 | |||
| 3767f15c2a | |||
| 1932d1da39 | |||
| b0e5590864 | |||
| f2daa1eb6e | |||
| 1f540752ef | |||
| fc94a0ec49 | |||
| 169dc7c45b | |||
| 5e140558b1 | |||
| 99c8e15c27 | |||
| 2a3ed948ec | |||
| 618d7340bb | |||
| 4a38eab3ea | |||
| 9fccdbc484 | |||
| c6e661d80b | |||
| 031ba0953a | |||
| 2a29802dd5 | |||
| 31e30a2e97 | |||
| ffed52f6eb | |||
| a4e853c4fa | |||
| f11374535d | |||
| de209f8a23 | |||
| 22c38b6fcb | |||
| 63d5796f8f | |||
| a1917275cd | |||
| 884765bdeb | |||
| 56fe0fa226 | |||
| d9adfe90fc | |||
| b1f04995a6 | |||
| ea6d2ac911 | |||
| ac97356930 | |||
| 23abbdcea9 | |||
| 927873392b | |||
| 91965d28a6 | |||
| 88ff40f93e | |||
| 0dcdcb678a | |||
| f49641a6c3 | |||
| fc4f12b390 | |||
| 9cce9e04d2 | |||
| 844bfded50 | |||
| ab80bd9717 | |||
| a1a10c777f | |||
| cc5f782d28 | |||
| 1424f9d6bf | |||
| fd67095cff | |||
| 908b1f22d1 | |||
| 17a70d9b8c | |||
| 49d77a469a | |||
| fa35495888 | |||
| 8a858b19dc | |||
| 397252d2cc | |||
| 5e59957349 | |||
| 90f8e00e0c | |||
| 673929c189 | |||
| e36bb8cc66 | |||
| 7d7e202bd5 | |||
| 74de075748 | |||
| 594069581d | |||
| 62b0388236 | |||
| 16d041492c | |||
| 22ee03ff00 | |||
| 790bed3a2d | |||
| bc84854d4b | |||
| 319811df01 | |||
| 2c1a8caadd | |||
| a240aa4afd | |||
| 00e38cd056 | |||
| 335eff51f3 | |||
| d04b960c05 | |||
| fbc05da785 | |||
| a71d16fa1b | |||
| 5bd08845a3 | |||
| 3ebfbb7ac5 | |||
| 2b47f3c5eb | |||
| 9f8ac934ab | |||
| ab393a0281 | |||
| 990b2fc06f | |||
| 0c883d6f28 | |||
| 167dda63a8 | |||
| cb8b637574 | |||
| 391e7ff072 | |||
| 2b517199a2 | |||
| a0f326aa22 | |||
| a4a7692134 | |||
| 3df9d581b7 | |||
| eb724f2dc4 | |||
| c491488140 | |||
| 3f12b1c1ab | |||
| 2c682ff6a6 | |||
| 36b37e1aa5 | |||
| d19c80a7c1 | |||
| eff57943c9 | |||
| 5a4a7de933 | |||
| ba97230b98 | |||
| 8664cc9df9 | |||
| 3b34b47d55 | |||
| 9a5519057c | |||
| 93411a96e4 | |||
| bd461afd75 | |||
| 55306c15a6 | |||
| afd804ebea | |||
| 3d0a7ed0a0 | |||
| 8f6f5dfbd2 | |||
| 43ab174d42 | |||
| b396ab865f | |||
| 8a82847121 | |||
| c3c19c8018 | |||
| 0d2078b32b | |||
| cddfad83e4 | |||
| 2e355ffa4e | |||
| fa66d8e3ef | |||
| cb83b8fb9a | |||
| adfdcf4c6d | |||
| 593cf76811 | |||
| 3aaec8cb3b | |||
| 2030ffa664 | |||
| edb8342eab | |||
| 6a7936a26f | |||
| 26118afde0 | |||
| 783acbc83d | |||
| 6f0a61cef9 | |||
| 53a10e0b0a | |||
| 626154317f | |||
| 885ae1dc81 | |||
| f6f1f18e9c | |||
| 69a2ffbdac | |||
| 6b8decf2a4 | |||
| cd06fe46e0 | |||
| 099d716455 | |||
| 298e1f5321 | |||
| 3cb55e85d0 | |||
| 981f25989a | |||
| 57bf8ff7da | |||
| 31f982e736 | |||
| 0a97a1edd7 | |||
| 6c75acfffc | |||
| 4e84e838a3 | |||
| d48bf240a7 | |||
| 7dc180eefb | |||
| 3276e9469a | |||
| 60902c796f | |||
| c12cdcace3 | |||
| 823fd9f5c6 | |||
| 88d6fd0248 | |||
| 32047346e3 | |||
| 56678dc771 | |||
| b34a1e0cc2 | |||
| 41f55bf902 | |||
| c8514543af | |||
| ad608014d9 | |||
| 782ce71247 | |||
| 8c7fccc8a5 | |||
| fca5502f21 | |||
| 9bf344f760 | |||
| 4db185834b | |||
| 4549ab3f22 | |||
| 629a8968fc | |||
| de414ed631 | |||
| 59c5896902 | |||
| b22fc5db6b | |||
| f97f9ebf03 | |||
| 64a4b204a2 | |||
| 5fb8a25c30 | |||
| 80ef6832d3 | |||
| 51bdaa5f88 | |||
| eb2a8e29c7 | |||
| b7dd88eafd | |||
| 79fe5fea63 | |||
| d15e399fce | |||
| 4d188e45fe | |||
| abce6ac0d1 | |||
| 566595f0eb | |||
| 1796324531 | |||
| 2371077352 | |||
| 7e7ab8a860 | |||
| c054541776 | |||
| d6ffe3a9be | |||
| 4a1ceb3ce0 | |||
| 45a6ee95d5 | |||
| 3eeaf29675 | |||
| 58d1fa83e9 | |||
| 9d4ca3bc22 | |||
| 9b23b05841 | |||
| f3e8ffc276 | |||
| 9b73911f2c | |||
| 25bfa9fa81 | |||
| 979ba22628 | |||
| 19ab724a73 | |||
| def49e19a7 | |||
| 1fb269a0fb | |||
| 0e469634a3 | |||
| 6dfe471686 | |||
| 2c7fc5f926 | |||
| 579d371378 | |||
| c74ca27075 | |||
| e8f7b12bb1 | |||
| e7006b53e3 | |||
| a6e0057c12 | |||
| 1ffed0c039 | |||
| 602df893de | |||
| 3755f788ca | |||
| abc7261488 | |||
| f9c33971d9 | |||
| 7d37325c19 | |||
| d17481575a | |||
| 1ee1d8fdff | |||
| af8f0626ac | |||
| c88353b386 | |||
| 961f367ca8 | |||
| 8bf3be5e61 | |||
| f8b6a009cb | |||
| efa9f0e63d | |||
| a4212e99b0 | |||
| 6884a8e7e0 | |||
| a1b1feb247 | |||
| 70ec3fc24e | |||
| 1e4a4b765f | |||
| cfe49779fa | |||
| c51cff8961 | |||
| 1abecd2c93 | |||
| 3217a7e667 | |||
| 015cafdbdc | |||
| f5a934c213 | |||
| 24813db49f | |||
| ce856dbba7 | |||
| 8b09724420 | |||
| 2af7be1b65 | |||
| dac98da526 | |||
| 9456f7d8cd | |||
| 3ecbd18e56 | |||
| 61fbc3fc0c | |||
| 5bcbd91943 | |||
| cfe32fa219 | |||
| f0f4af864a | |||
| 8bace0e808 | |||
| 2f5cba7f8f | |||
| 528aa4fedd | |||
| 490e1580ad | |||
| cbfbfc8ff3 | |||
| b6edf7ab0b | |||
| 65e6b4de69 | |||
| 2ca62e25f1 | |||
| 1b2a814478 | |||
| e33967aa39 | |||
| a1adefce36 | |||
| 6e87e02e96 | |||
| ab9cc674d5 | |||
| 8e0e13a899 | |||
| 5371426588 | |||
| 1852dea96a | |||
| a8140f91cc | |||
| 2fac9b2740 | |||
| 6a99915afe | |||
| 4e13c3eb5b | |||
| 7e55608975 | |||
| 4bd5cbca8e | |||
| 7c3fa7e1ce | |||
| 3188a147d8 | |||
| 926fbc4b13 | |||
| 006d77fa39 | |||
| 52a792d46f | |||
| 20db989fb1 | |||
| 2c63d3c792 | |||
| c734087e1d | |||
| 3331a306c9 | |||
| 83ffd1ea09 | |||
| 200924772f | |||
| 7eedc0f854 | |||
| f1a0d8b3f7 | |||
| a730eaae0a | |||
| 8920c738c5 | |||
| 0139c9d9ae | |||
| b0fa9e1dfe | |||
| e6a1d40f8d | |||
| d3cf75a36e | |||
| 8221554865 | |||
| a2eaa6c22c | |||
| 5863a57921 | |||
| af365d762f | |||
| 640369d4a1 | |||
| 7a13516d21 | |||
| 01b7ac62c5 | |||
| aa1c4fb48f | |||
| c0389b0e5c | |||
| 3e816f08c7 | |||
| 6c8929128f | |||
| 98b75db115 | |||
| 2badaf5d99 | |||
| 588ff32d18 | |||
| 1838e25d2f | |||
| 0e931aadde | |||
| 8e90efb2b4 | |||
| e3f92c0975 | |||
| da23939561 | |||
| d478ba2923 | |||
| f558902ad2 | |||
| 3ae23cc57b | |||
| 7b67981fb9 | |||
| 7ee6ee385e | |||
| 28ab873a3f | |||
| d392cea348 | |||
| 6ece3063ab | |||
| 839bfded39 | |||
| 2c87b9480f | |||
| 2ae4253577 | |||
| 0d468b023a | |||
| 60096d9971 | |||
| e879f532a7 | |||
| c8b8132228 | |||
| 9d003dd1b9 | |||
| c36dbf86f5 | |||
| c29f1875d3 | |||
| a470cebf32 | |||
| 929669728c | |||
| 4f912fca16 | |||
| 93b020bf93 | |||
| d7f11869ab | |||
| fe4754e9cd | |||
| ff8cd39620 | |||
| 8d65d4591b | |||
| b4dcc155f0 | |||
| f754f43e84 | |||
| d291b3e5fa | |||
| 6772225477 | |||
| 339e7df0bc | |||
| 297e8280d9 | |||
| d397bea6dc | |||
| 3d174b8c09 | |||
| d9dd9729b8 | |||
| c657b18efd | |||
| c9b41b1df7 | |||
| 45efc4117e | |||
| 6a74283289 | |||
| 120c39429f | |||
| 1c6ad4d514 | |||
| 36d25c8642 | |||
| caf6fa369f | |||
| 503c50b1ec | |||
| d9fbd18541 | |||
| 9824090654 | |||
| bdaf25793d | |||
| 96ce80d0e2 | |||
| 40c4c8e542 | |||
| 6675153460 | |||
| 76e6a49a2e | |||
| 1bcf760d90 | |||
| 94f1035c08 | |||
| 3516a3311a | |||
| f79adaf607 | |||
| d9ac757b6a | |||
| 58bfcd9051 | |||
| 67e3e42531 | |||
| 3fd3f1def8 | |||
| 6d849e53d2 | |||
| 7fc3d6b588 | |||
| 1a931224eb | |||
| 60833ae5ec | |||
| 183def9569 | |||
| 77cfca1aff | |||
| d9cc01b50c | |||
| 466087156f | |||
| a8d610c6e8 | |||
| 30b42149aa | |||
| c25e005c87 | |||
| c4d7451841 | |||
| d4fc07a347 | |||
| 0238473868 | |||
| 4363ddf0fb | |||
| 43c5fef70a | |||
| 7e436e307d | |||
| b4d529402a | |||
| b47338ec75 | |||
| bd782ab228 | |||
| 4c2b20fedd | |||
| 9d3245eebe | |||
| 369ea67ad3 | |||
| c56ce6ad36 | |||
| 4f0a3f5766 | |||
| bac58be1ee | |||
| 20caaf26c8 | |||
| 3574118e17 | |||
| 847b717cdf | |||
| 3dfb51b25d | |||
| d0b5dd8977 | |||
| 23d97eb4a8 | |||
| 8bc4e76e47 | |||
| 38762724f5 | |||
| feb0bc1ae6 | |||
| 872d0baafb | |||
| 35c3f065a3 | |||
| 8b12191bda | |||
| 90b2c57951 | |||
| f484a9dfce | |||
| b97c275de5 | |||
| 91c95d8ba7 | |||
| 2015c99e65 | |||
| eadf15d9c0 | |||
| bb8c5657e1 | |||
| dc2eae08a6 | |||
| 6c13a98f01 | |||
| 1ad294dcd3 | |||
| 806df574e7 | |||
| 9b580c7a98 | |||
| 7c8e2324ab | |||
| 555933315d | |||
| 9121746f05 | |||
| f1d45da676 | |||
| cf147a440e | |||
| a3a23e5759 | |||
| bc7d1cd44a | |||
| 735fb7be0e | |||
| 4661f22e81 | |||
| bfd8776042 | |||
| e8ff13cd53 | |||
| 1771f6da8d | |||
| e888e968b6 | |||
| 68df079c0e | |||
| 563c4c290d | |||
| ffbcfd53f9 | |||
| fd12328293 | |||
| b387abea6b | |||
| efdd038fa4 | |||
| 94b699d8df | |||
| 226efecdd6 | |||
| a0b4397ddf | |||
| c18f5e054e | |||
| 360d43dd4d | |||
| e0165a2d6a | |||
| 9776ebfa0f | |||
| eda3ecb0b3 | |||
| cf7631d469 | |||
| 185a2f3437 | |||
| bdc971eca3 | |||
| 288b7e9ca3 | |||
| a9d5880dc8 | |||
| 0918984249 | |||
| e2aa4bc33c | |||
| 9d3db318e3 | |||
| 5aa123b4f0 | |||
| f11d34997a | |||
| 510814410c | |||
| e4bae61393 | |||
| 4cfc50c358 | |||
| 6886cdaace | |||
| 17e6952ab8 | |||
| 0da4084064 | |||
| 4c9a51990c | |||
| 36a86d34e8 | |||
| fb514ca90f | |||
| aa5e28bef5 | |||
| 5dc3d8c936 | |||
| a4ffe2fdbf | |||
| c32fa662d5 | |||
| 0a9588a866 | |||
| 861b868416 | |||
| b7f9662097 | |||
| 79ecb11ce2 | |||
| 4e9bb610b3 | |||
| c88faf8cfa | |||
| 0b48eab7a6 | |||
| ccfbd1ee31 | |||
| 98c9a5d948 | |||
| 96ea42e5f4 | |||
| 2ff2a818ef | |||
| dd694c266e | |||
| c4461f7d78 | |||
| 77de5160ac | |||
| b9fcc5ae2d | |||
| e42883bf2c | |||
| 5c41a45931 | |||
| ba49ba0acd | |||
| 5d75632c8e | |||
| e202a33ea1 | |||
| 93be82ebc9 | |||
| 0bf4753ff1 | |||
| fbb07a1494 | |||
| debb66f8b0 | |||
| 45185b36fb | |||
| e761d79512 | |||
| 14064dd987 | |||
| 3eef8590f4 | |||
| 3e7ad18fe3 | |||
| 80a38590b8 | |||
| 44a6e29da7 | |||
| a6e847e267 | |||
| 2f70906665 | |||
| c4c919aa31 | |||
| 51491c3c08 | |||
| ea17f6ad28 | |||
| 3691c9945a | |||
| 57629bcaca | |||
| b38ee77628 | |||
| b5413cc015 | |||
| 5edaa96164 | |||
| 12a2a451b4 | |||
| fc7dff50b0 | |||
| 9272e09058 | |||
| b13c4d5f8d | |||
| d7b10b4352 | |||
| 05cddff72d | |||
| a55d23aaa4 | |||
| 18b71743c8 | |||
| f761ff6824 | |||
| 8e2d233445 | |||
| 59b1f362f6 | |||
| a73c641a0f | |||
| 3d4c72da0b | |||
| 71547b3fb3 | |||
| ad8da94d2a | |||
| 5ea762a46c | |||
| bbb5829ad9 | |||
| c00b382f13 | |||
| 964e2bdac3 | |||
| 2e7ab99099 | |||
| 4175f28979 | |||
| 207f90f01b | |||
| 5c43ddb56c | |||
| 3838766dd4 | |||
| a006457a72 | |||
| 0449107230 | |||
| 75313d886b | |||
| 4998f58847 | |||
| ffc094bd91 | |||
| 343326eacf | |||
| d31bc4347a | |||
| adfb951e51 | |||
| 2843a2c0e8 | |||
| 94d3dc254e | |||
| 915eb55779 | |||
| 547bc38118 | |||
| 93fd013aa1 | |||
| 512bfde7ce | |||
| 27ba45ded7 | |||
| c0898dedb1 | |||
| b82b920420 | |||
| ac40f7cfd8 | |||
| 330c51de9f | |||
| 0ed527f0d1 | |||
| 7df1dec65c | |||
| 61d42ee87b | |||
| a95e65eea1 | |||
| 71dce0e7f3 | |||
| 53af1dc32d | |||
| 52252b15d6 | |||
| bc24ce9ad4 | |||
| 625e986552 | |||
| 095442191c | |||
| cc46282866 | |||
| cbc9c3629d | |||
| 2c49d905e4 | |||
| f0e2f642e0 | |||
| 3d0f0c0565 | |||
| 3d442cdf98 | |||
| b009fee5ea | |||
| 6cf747678c | |||
| db812e1179 | |||
| 995f23b58f | |||
| ef3830234d | |||
| 4fc55cfcec | |||
| 487ac3bc48 | |||
| d6cb3ba747 | |||
| a9a2dceb72 | |||
| bee08e48ae | |||
| b14fb9db24 | |||
| 91acb0d16f | |||
| 4f161705a3 | |||
| f8c6e90647 | |||
| dd9dc4f76b | |||
| 94f49fd99b | |||
| 498df11a50 | |||
| db7da314e7 | |||
| 33aabc696a | |||
| 648bedf290 | |||
| dd3d1b8cdb | |||
| b39a156d57 | |||
| b6158c09b4 | |||
| 8a11a46f66 | |||
| 4d73c1e511 | |||
| 280f3eeb4e | |||
| 1321160203 | |||
| 01680e444b | |||
| 2435453c33 | |||
| 6e466e5ab4 | |||
| 25f4f96ea3 | |||
| 5cfd22ee8b | |||
| ae07586fef | |||
| 96e4882b5c | |||
| a0a090c307 | |||
| bc61d84408 | |||
| de8bb79a6f | |||
| 7bf459f0ff | |||
| 18ed69aff4 | |||
| c9431933e5 | |||
| 2d3581e8c4 | |||
| 8453bc93cc | |||
| d1418a9ab0 | |||
| 09bdcde6c5 | |||
| 0d2afe79af | |||
| 5a12f187fa | |||
| 753bfaff49 | |||
| 9744971b19 | |||
| c8f7787281 | |||
| 26f19703d3 | |||
| b7b05a3553 | |||
| caba54efc9 | |||
| e2528dff6d | |||
| ad11fb815f | |||
| 305e8a4d84 | |||
| 7e804b27a0 | |||
| 18d963f423 | |||
| 9d91d22e29 | |||
| 3fa9044029 | |||
| 8a9821fa9a | |||
| 75fadb8d1c | |||
| 63560c4733 | |||
| d660cca8a9 | |||
| be62a4cea4 | |||
| 874448c112 | |||
| 004d2d5122 | |||
| 3e07483f7a | |||
| 9859077306 | |||
| 0cde7167d6 | |||
| 7eff8b687c | |||
| 04c7d15084 | |||
| dbe25ba5e6 | |||
| f81d4dc321 | |||
| f1c5c02713 | |||
| 6c25c693a8 | |||
| 4be55ead4d | |||
| 8df326aeed | |||
| f87157d009 | |||
| 0b4fe03ec3 | |||
| 1063264d88 | |||
| 4bee858c78 | |||
| d832367d95 | |||
| d89a20f8b4 | |||
| 41ef01f25d | |||
| 7b797fd830 | |||
| d27064cea5 | |||
| c9aa8d59ef | |||
| 57a8b10883 | |||
| e608b33142 | |||
| 6598442d41 | |||
| 822eff6028 | |||
| da4defad07 | |||
| 9bed8adb16 | |||
| 2e836e9822 | |||
| 07554b0c1d | |||
| 022574314f | |||
| 8a4701f93f | |||
| 08047a6a2e | |||
| 2caeaef14b | |||
| d00e05643f | |||
| 60693db73f | |||
| 15f2553a3d | |||
| dbe352d8b8 | |||
| 517ddd8e00 | |||
| 558b487c91 | |||
| f8f12a7db5 | |||
| d725443116 | |||
| dbaa0a6d9e | |||
| 6b2c5645d2 | |||
| e7bef716c9 | |||
| c627526f8c | |||
| 95cb705ac0 | |||
| ca43c7a8f8 | |||
| 0a8bfc52a6 | |||
| d0ae2e6826 | |||
| 9090fb75e0 | |||
| 50fa25db60 | |||
| bd3c49d234 | |||
| ce7a3d9f7d | |||
| 3b71837174 | |||
| 2be3a14a7e | |||
| 8d82402d74 | |||
| 1942d40863 | |||
| 5042844342 | |||
| 649fb05c58 | |||
| c533a4aa14 | |||
| b93a41a9a3 | |||
| 937c59fca9 | |||
| a80d5ea9f7 | |||
| c11a7d9e41 | |||
| ac082ab64b | |||
| c9fd0f3cf0 | |||
| e667415def | |||
| fd6c7637e4 | |||
| 9a816c9c68 | |||
| 431344ba67 | |||
| eca6b8a376 | |||
| b01ed8d773 | |||
| 3e5f4266ce | |||
| 61c9f312c9 | |||
| c59dad0cae | |||
| 16a79d38c2 | |||
| 9d635627dc | |||
| bc69ffb0f0 | |||
| a0226f5670 | |||
| ed7789d9b7 | |||
| b747184788 | |||
| 02ae6ef348 | |||
| 0ebb9cbfe2 | |||
| f6cbee9e27 | |||
| 10e823c4b7 | |||
| 60e4027332 | |||
| e075fee5bf | |||
| 16d9b99f6c | |||
| ffa74a7f49 | |||
| c1772b7793 | |||
| 5be9d19500 | |||
| 0603f0b844 | |||
| 50958472e5 | |||
| 89ce060183 | |||
| bc42149a72 | |||
| 0c3b22e0f0 | |||
| a769a3d813 | |||
| 7cc231b82b | |||
| 7f089ead62 | |||
| b9b981f657 | |||
| abf9dada04 | |||
| 5c6974703e | |||
| 1b0a6da4be | |||
| 06b645435a | |||
| c3b190d45b | |||
| 594b1417f1 | |||
| e8ca6ec7c3 | |||
| 6498615f5f | |||
| 30b0143ccf | |||
| ff81cfd584 | |||
| 14ce668a1d | |||
| 9a1bfe946d | |||
| cea45e05f3 | |||
| cda363a3f7 | |||
| de796392cf | |||
| 1423dd9440 | |||
| 60b3428ad7 | |||
| 571970f8ff | |||
| 18a0653ce8 | |||
| 569286055c | |||
| b662fec214 | |||
| d8d0b77568 | |||
| 13317b0a3b | |||
| 2616296183 | |||
| 39684b85ad | |||
| aa3ec109b7 | |||
| 180a77ee99 | |||
| 93b25d75a0 | |||
| 6e91ba83b7 | |||
| b74c125c43 | |||
| fd1e0d5876 | |||
| 9a650e8279 | |||
| d5aa9d8e05 | |||
| b1cdc06430 | |||
| 83a15ac05f | |||
| 43a77a42f8 | |||
| 44ca1e7df1 | |||
| 23fd200482 | |||
| 9f1c62b013 | |||
| 319b8868fc | |||
| 7bd6cdbebc | |||
| 1488a4a006 | |||
| 56d2823b0e | |||
| 1a11ba11e3 | |||
| c34bdb5e66 | |||
| 10456e1d51 | |||
| bbdadc7e38 | |||
| ff71e32c0f | |||
| 50b01ea8da | |||
| de697f7717 | |||
| 575457c944 | |||
| 6fc58821a5 | |||
| 7873b473e8 | |||
| 609005a225 | |||
| b9c74ab859 | |||
| cee5584daf | |||
| b265b20721 | |||
| a7a9727c11 | |||
| 90dfa7f18d | |||
| 3f8d62e7d6 | |||
| 3f22311ec8 | |||
| 9e8176b1c6 | |||
| 70ff93d238 | |||
| c264ecd26b | |||
| 10a1b24191 | |||
| 243819ecdc | |||
| 9c76b72825 | |||
| b4fe182960 | |||
| b7e44c76dc | |||
| f3cc69733f | |||
| 3625f0ea1c | |||
| e6e2d4c65d | |||
| 340e873eff | |||
| 3407bf4bf6 | |||
| 25cd4991d2 | |||
| 503b2c5126 | |||
| 026bc05d70 | |||
| 61005f19fa | |||
| 8f8c953ab6 | |||
| f82487daf8 | |||
| 3a9d574770 | |||
| b4e3a84e1a | |||
| f7c39e8353 | |||
| 37d9f0533c | |||
| d560f2a515 | |||
| bb4d1cbd2e | |||
| 23ec433167 | |||
| 9eaed3e3f0 | |||
| d5bd4aa93f | |||
| 66b70dd8ed | |||
| 01731478a6 | |||
| f8c5429a6c | |||
| f71226adbb | |||
| e8d777b73a | |||
| 3cff44b652 | |||
| 26302a8b08 | |||
| adc5bd0402 | |||
| e3c3be950a | |||
| 8d92dc2083 | |||
| a1f85b9e06 | |||
| 424c02dfa7 | |||
| 018a482621 | |||
| 4790def1ef | |||
| 07c26adc35 | |||
| f29f9387b5 | |||
| c290bfff1e | |||
| 42153f2b99 | |||
| 6d7537d3ec | |||
| b30ec9f975 | |||
| a7074f10d4 | |||
| d185f0973b | |||
| 071874ea8f | |||
| 46a2c004a2 | |||
| 26ac179548 | |||
| 4c85483486 | |||
| 487bed2d95 | |||
| 6f69682552 | |||
| bc5beaec5d | |||
| 83b00bc653 | |||
| f041ff8c5f | |||
| 1fbdbfc4b2 | |||
| 2323aa0def | |||
| 6c2ce63101 | |||
| 13204c46e2 | |||
| 9bb0271e7d | |||
| 0e4e10edb6 | |||
| 0c7e5299bf | |||
| c36ed32816 | |||
| e1a3fc5529 | |||
| 1ae9e843ed | |||
| dbe4cfb763 | |||
| 4549f83689 | |||
| e6e8f847be | |||
| b9e249f782 | |||
| 3ffa3648cf | |||
| 5c2cc53882 | |||
| a6f01af8de | |||
| 85a549e293 | |||
| b718889ba2 | |||
| 708c74f6af | |||
| 74d666f5c0 | |||
| 7604fe5567 | |||
| 0080b043c4 | |||
| c7bce46622 | |||
| 2b4339663c | |||
| 6a6b02117b | |||
| 511cd30105 | |||
| 92915e22e7 | |||
| d499191b0a | |||
| 152d69fe98 | |||
| 81aa24310c | |||
| 75cdabaf13 | |||
| 1f628203e5 | |||
| 1b9fc1d5af | |||
| bc1ca1a346 | |||
| f735120978 | |||
| 25b5a41189 | |||
| c94cf4e14e | |||
| 84d80eebd0 | |||
| 915dd9fbf8 | |||
| 9d77c1373c | |||
| c3f2ddf509 | |||
| 8a51172b11 | |||
| 875046e4cd | |||
| a5bd9f51be | |||
| 5a2a20af42 | |||
| 61029c8bd2 | |||
| 1023399c5e | |||
| 6549e26f5d | |||
| 165c495e75 | |||
| 6b9b085be3 | |||
| 2d46d54ae3 | |||
| 3d04699710 | |||
| 054421268f | |||
| 414403b062 | |||
| c29bf2ff28 | |||
| ab4e5ed52e | |||
| 1a54c9bf6d | |||
| 02077db53e | |||
| 7ce010d9ed | |||
| 95993cf37e | |||
| 3761df9112 | |||
| adfaef19da | |||
| f7bea6de5b | |||
| 65aae5d0a1 | |||
| e3866b1f7e | |||
| 23de8e093b | |||
| 196a4cb18f | |||
| 695cf1f387 | |||
| 0af1df5258 | |||
| a8d07333e9 | |||
| 7f12989127 | |||
| 60e32cf823 | |||
| e9a6aaa30f | |||
| 9be2a36a01 | |||
| 22254936a2 | |||
| f6d76e0104 | |||
| c911829771 | |||
| b33e33fe26 | |||
| 9239b125b1 | |||
| 2086cd2668 | |||
| 1b88267320 | |||
| e586751208 | |||
| e7256a624b | |||
| 5c1f47359e | |||
| 45ee2dc4c7 | |||
| db66e4459b | |||
| 55e02e101d | |||
| 230abfd2bc | |||
| c0f2d6f934 | |||
| 9f36a7a284 | |||
| e4d637a3d8 | |||
| 98a2b6bc17 | |||
| 8e66bc8722 | |||
| cd81c7fa6b | |||
| b4fdb5dc36 | |||
| c76ed99db2 | |||
| 06aef22943 | |||
| 128b0d6dd3 | |||
| 15dc20109f | |||
| 5c4bcd6611 | |||
| ecf4029dc7 | |||
| c261b41578 | |||
| 6f1cc80d68 | |||
| 3b0ade9cb8 | |||
| 57016f4e04 | |||
| 497342fabb | |||
| bf56cd90f0 | |||
| 0acb979e9e | |||
| d7503bfc09 | |||
| b89dc15be1 | |||
| 15ab4478c9 | |||
| 5b4ce684a1 | |||
| 0027055a83 | |||
| 321b3ec81b | |||
| 1679460f42 | |||
| 907af9e35f | |||
| 12b74dfb4e | |||
| fd84e4f49f | |||
| f0a6fe216d | |||
| d792dc5804 | |||
| 8a08025091 | |||
| 586c804b1e | |||
| e30161ac3c | |||
| 3865908439 | |||
| 9474b4cf8b | |||
| b48bda21a3 | |||
| daf33709a0 | |||
| 36073a3d95 | |||
| 12fa2cb1eb | |||
| 1f10d846a3 | |||
| 22531eab90 | |||
| 0c1b80faab | |||
| 2c9bf229e1 | |||
| 822e81bb24 | |||
| ad628c0471 | |||
| f483d2df42 | |||
| 4ad3002543 | |||
| cfd622d6e1 | |||
| 1c7c9a6b6d | |||
| 0c93ca80f4 | |||
| de6d418d42 | |||
| c016b462c0 | |||
| 7e1fbcfe95 | |||
| 4815b6155e | |||
| 075b5b288a | |||
| 7cfd1e0d78 | |||
| 9f7d70f642 | |||
| 0fea82cff9 | |||
| 64840fbbae | |||
| 827b3eca2f | |||
| 9478d2dfe8 | |||
| d24501ab5e | |||
| 9f4259721a | |||
| 77e491161c | |||
| 97780f987e | |||
| d1bc0ef0d4 | |||
| 52f94b4623 | |||
| 37fd050100 | |||
| 83286975ff | |||
| f705fcb984 | |||
| 9ca1f20f43 | |||
| 6ad800e43a | |||
| 069318b139 | |||
| b9b554248d | |||
| 4863d428dd | |||
| 2e103ee6b3 | |||
| 28990bc451 | |||
| 748e2a681f | |||
| bfa0b5241f | |||
| 4af4bfc0f1 | |||
| 51203ff750 | |||
| 96cef9a24e | |||
| b43d31b75a | |||
| ad3ff26960 | |||
| 86b40993c3 | |||
| 31bed250ba | |||
| 7658334645 | |||
| 491ae70aa9 | |||
| d64c568196 | |||
| b5982a6174 | |||
| 04e7d2a313 | |||
| bcc2de86b4 | |||
| 1296aea836 | |||
| 5498c24c33 | |||
| 79a03b4299 | |||
| f3a5e9a73c | |||
| 2710a19ecb | |||
| 6d0ef259f6 | |||
| b1577cc083 | |||
| 28d947fd8b | |||
| b000db8f32 | |||
| 116a6cc9a8 | |||
| c8291a36b7 | |||
| 8180c76890 | |||
| a0f33b1cdc | |||
| 8b60dae81c | |||
| 4b33093f9e | |||
| 3d87b25b19 | |||
| f2f6902279 | |||
| c0b17e73e1 | |||
| 94544d963b | |||
| 72abbd22de | |||
| 64e10ffb21 | |||
| 35d8146bba | |||
| a5a7ede698 | |||
| b551049706 | |||
| 99cfc13eab | |||
| 4b0b5afa13 | |||
| d343428441 | |||
| 16e409ec87 | |||
| 94d059f258 | |||
| c8b9de889d | |||
| 75340d54f9 | |||
| b28383e0fa | |||
| 8e866db281 | |||
| 0eb157e090 | |||
| 85636c28bc | |||
| a70e5c6c65 | |||
| 32e01f740b | |||
| 7b20f8fc7b | |||
| 86ac48d68e | |||
| c42fc810ea | |||
| 6baebd79fa | |||
| c6cae09f99 |
@@ -0,0 +1,2 @@
|
|||||||
|
[advisories]
|
||||||
|
ignore = ["RUSTSEC-2024-0320", "RUSTSEC-2024-0421"]
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# On Windows MSVC, statically link the C runtime so that the resulting EXE does
|
||||||
|
# not depend on the vcruntime DLL.
|
||||||
|
#
|
||||||
|
# See: https://github.com/sharkdp/bat/issues/3634
|
||||||
|
|
||||||
|
[target.x86_64-pc-windows-msvc]
|
||||||
|
rustflags = ["-C", "target-feature=+crt-static"]
|
||||||
|
[target.i686-pc-windows-msvc]
|
||||||
|
rustflags = ["-C", "target-feature=+crt-static"]
|
||||||
|
[target.aarch64-pc-windows-msvc]
|
||||||
|
rustflags = ["-C", "target-feature=+crt-static"]
|
||||||
@@ -26,4 +26,4 @@ guidelines for adding new syntaxes:
|
|||||||
[Name or description of the syntax/language here]
|
[Name or description of the syntax/language here]
|
||||||
|
|
||||||
**Guideline Criteria:**
|
**Guideline Criteria:**
|
||||||
[packagecontro.io link here]
|
[packagecontrol.io link here]
|
||||||
|
|||||||
+39
-50
@@ -20,7 +20,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
needs:
|
||||||
- crate_metadata
|
- crate_metadata
|
||||||
- ensure_cargo_fmt
|
- lint
|
||||||
- min_version
|
- min_version
|
||||||
- license_checks
|
- license_checks
|
||||||
- test_with_new_syntaxes_and_themes
|
- test_with_new_syntaxes_and_themes
|
||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
name: Extract crate metadata
|
name: Extract crate metadata
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Extract crate information
|
- name: Extract crate information
|
||||||
id: crate_metadata
|
id: crate_metadata
|
||||||
run: |
|
run: |
|
||||||
@@ -51,49 +51,46 @@ jobs:
|
|||||||
homepage: ${{ steps.crate_metadata.outputs.homepage }}
|
homepage: ${{ steps.crate_metadata.outputs.homepage }}
|
||||||
msrv: ${{ steps.crate_metadata.outputs.msrv }}
|
msrv: ${{ steps.crate_metadata.outputs.msrv }}
|
||||||
|
|
||||||
ensure_cargo_fmt:
|
lint:
|
||||||
name: Ensure 'cargo fmt' has been run
|
name: Ensure code quality
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: dtolnay/rust-toolchain@stable
|
- uses: dtolnay/rust-toolchain@stable
|
||||||
with:
|
with:
|
||||||
components: rustfmt
|
components: rustfmt,clippy
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- run: cargo fmt -- --check
|
- run: cargo fmt -- --check
|
||||||
|
- run: cargo clippy --locked --all-targets --all-features -- -D warnings
|
||||||
|
|
||||||
min_version:
|
min_version:
|
||||||
name: Minimum supported rust version
|
name: Minimum supported rust version
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-latest
|
||||||
needs: crate_metadata
|
needs: crate_metadata
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source code
|
- name: Checkout source code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install rust toolchain (v${{ needs.crate_metadata.outputs.msrv }})
|
- name: Install rust toolchain (v${{ needs.crate_metadata.outputs.msrv }})
|
||||||
uses: dtolnay/rust-toolchain@master
|
uses: dtolnay/rust-toolchain@master
|
||||||
with:
|
with:
|
||||||
toolchain: ${{ needs.crate_metadata.outputs.msrv }}
|
toolchain: ${{ needs.crate_metadata.outputs.msrv }}
|
||||||
components: clippy
|
|
||||||
- name: Run clippy (on minimum supported rust version to prevent warnings we can't fix)
|
|
||||||
run: cargo clippy --locked --all-targets ${{ env.MSRV_FEATURES }}
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: cargo test --locked ${{ env.MSRV_FEATURES }}
|
run: cargo test --locked ${{ env.MSRV_FEATURES }}
|
||||||
|
|
||||||
license_checks:
|
license_checks:
|
||||||
name: License checks
|
name: License checks
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: true # we especially want to perform license checks on submodules
|
submodules: true # we especially want to perform license checks on submodules
|
||||||
- run: tests/scripts/license-checks.sh
|
- run: tests/scripts/license-checks.sh
|
||||||
|
|
||||||
test_with_new_syntaxes_and_themes:
|
test_with_new_syntaxes_and_themes:
|
||||||
name: Run tests with updated syntaxes and themes
|
name: Run tests with updated syntaxes and themes
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Git checkout
|
- name: Git checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: true # we need all syntax and theme submodules
|
submodules: true # we need all syntax and theme submodules
|
||||||
- name: Install Rust toolchain
|
- name: Install Rust toolchain
|
||||||
@@ -119,10 +116,10 @@ jobs:
|
|||||||
|
|
||||||
test_with_system_config:
|
test_with_system_config:
|
||||||
name: Run tests with system wide configuration
|
name: Run tests with system wide configuration
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Git checkout
|
- name: Git checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
- name: Prepare environment variables
|
- name: Prepare environment variables
|
||||||
run: |
|
run: |
|
||||||
echo "BAT_SYSTEM_CONFIG_PREFIX=$GITHUB_WORKSPACE/tests/examples/system_config" >> $GITHUB_ENV
|
echo "BAT_SYSTEM_CONFIG_PREFIX=$GITHUB_WORKSPACE/tests/examples/system_config" >> $GITHUB_ENV
|
||||||
@@ -135,10 +132,10 @@ jobs:
|
|||||||
|
|
||||||
documentation:
|
documentation:
|
||||||
name: Documentation
|
name: Documentation
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Git checkout
|
- name: Git checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
- name: Install Rust toolchain
|
- name: Install Rust toolchain
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@stable
|
||||||
- name: Check documentation
|
- name: Check documentation
|
||||||
@@ -152,7 +149,8 @@ jobs:
|
|||||||
name: cargo audit
|
name: cargo audit
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- run: cargo install cargo-audit --locked
|
||||||
|
- uses: actions/checkout@v6
|
||||||
- run: cargo audit
|
- run: cargo audit
|
||||||
|
|
||||||
build:
|
build:
|
||||||
@@ -163,22 +161,24 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
job:
|
job:
|
||||||
- { target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
- { target: aarch64-unknown-linux-musl , os: ubuntu-latest , dpkg_arch: musl-linux-arm64, use-cross: true }
|
||||||
- { target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true }
|
- { target: aarch64-unknown-linux-gnu , os: ubuntu-latest , dpkg_arch: arm64, use-cross: true }
|
||||||
- { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
|
- { target: arm-unknown-linux-gnueabihf , os: ubuntu-latest , dpkg_arch: armhf, use-cross: true }
|
||||||
- { target: i686-pc-windows-msvc , os: windows-2019 }
|
- { target: arm-unknown-linux-musleabihf, os: ubuntu-latest , dpkg_arch: musl-linux-armhf, use-cross: true }
|
||||||
- { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
- { target: i686-pc-windows-msvc , os: windows-2025 , }
|
||||||
- { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
- { target: i686-unknown-linux-gnu , os: ubuntu-latest , dpkg_arch: i386, use-cross: true }
|
||||||
- { target: x86_64-apple-darwin , os: macos-12 }
|
- { target: i686-unknown-linux-musl , os: ubuntu-latest , dpkg_arch: musl-linux-i686, use-cross: true }
|
||||||
- { target: x86_64-pc-windows-gnu , os: windows-2019 }
|
- { target: x86_64-apple-darwin , os: macos-15-intel, }
|
||||||
- { target: x86_64-pc-windows-msvc , os: windows-2019 }
|
- { target: aarch64-apple-darwin , os: macos-latest , }
|
||||||
- { target: x86_64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
- { target: x86_64-pc-windows-msvc , os: windows-2025 , }
|
||||||
- { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
- { target: aarch64-pc-windows-msvc , os: windows-11-arm, }
|
||||||
|
- { target: x86_64-unknown-linux-gnu , os: ubuntu-latest , dpkg_arch: amd64, use-cross: true }
|
||||||
|
- { target: x86_64-unknown-linux-musl , os: ubuntu-latest , dpkg_arch: musl-linux-amd64, use-cross: true }
|
||||||
env:
|
env:
|
||||||
BUILD_CMD: cargo
|
BUILD_CMD: cargo
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source code
|
- name: Checkout source code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install prerequisites
|
- name: Install prerequisites
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -195,9 +195,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install cross
|
- name: Install cross
|
||||||
if: matrix.job.use-cross
|
if: matrix.job.use-cross
|
||||||
uses: taiki-e/install-action@v2
|
run: cargo install cross --git https://github.com/cross-rs/cross --rev 588b3c99db52b5a9c5906fab96cfadcf1bde7863
|
||||||
with:
|
|
||||||
tool: cross
|
|
||||||
|
|
||||||
- name: Overwrite build command env variable
|
- name: Overwrite build command env variable
|
||||||
if: matrix.job.use-cross
|
if: matrix.job.use-cross
|
||||||
@@ -335,18 +333,9 @@ jobs:
|
|||||||
|
|
||||||
DPKG_BASENAME=${{ needs.crate_metadata.outputs.name }}
|
DPKG_BASENAME=${{ needs.crate_metadata.outputs.name }}
|
||||||
DPKG_CONFLICTS=${{ needs.crate_metadata.outputs.name }}-musl
|
DPKG_CONFLICTS=${{ needs.crate_metadata.outputs.name }}-musl
|
||||||
case ${{ matrix.job.target }} in *-musl) DPKG_BASENAME=${{ needs.crate_metadata.outputs.name }}-musl ; DPKG_CONFLICTS=${{ needs.crate_metadata.outputs.name }} ;; esac;
|
case ${{ matrix.job.target }} in *-musl*) DPKG_BASENAME=${{ needs.crate_metadata.outputs.name }}-musl ; DPKG_CONFLICTS=${{ needs.crate_metadata.outputs.name }} ;; esac;
|
||||||
DPKG_VERSION=${{ needs.crate_metadata.outputs.version }}
|
DPKG_VERSION=${{ needs.crate_metadata.outputs.version }}
|
||||||
|
DPKG_ARCH="${{ matrix.job.dpkg_arch }}"
|
||||||
unset DPKG_ARCH
|
|
||||||
case ${{ matrix.job.target }} in
|
|
||||||
aarch64-*-linux-*) DPKG_ARCH=arm64 ;;
|
|
||||||
arm-*-linux-*hf) DPKG_ARCH=armhf ;;
|
|
||||||
i686-*-linux-*) DPKG_ARCH=i686 ;;
|
|
||||||
x86_64-*-linux-*) DPKG_ARCH=amd64 ;;
|
|
||||||
*) DPKG_ARCH=notset ;;
|
|
||||||
esac;
|
|
||||||
|
|
||||||
DPKG_NAME="${DPKG_BASENAME}_${DPKG_VERSION}_${DPKG_ARCH}.deb"
|
DPKG_NAME="${DPKG_BASENAME}_${DPKG_VERSION}_${DPKG_ARCH}.deb"
|
||||||
echo "DPKG_NAME=${DPKG_NAME}" >> $GITHUB_OUTPUT
|
echo "DPKG_NAME=${DPKG_NAME}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
@@ -453,7 +442,7 @@ jobs:
|
|||||||
echo "IS_RELEASE=${IS_RELEASE}" >> $GITHUB_OUTPUT
|
echo "IS_RELEASE=${IS_RELEASE}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Publish archives and packages
|
- name: Publish archives and packages
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v3
|
||||||
if: steps.is-release.outputs.IS_RELEASE
|
if: steps.is-release.outputs.IS_RELEASE
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
@@ -468,7 +457,7 @@ jobs:
|
|||||||
needs: build
|
needs: build
|
||||||
if: startsWith(github.ref, 'refs/tags/v')
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
steps:
|
steps:
|
||||||
- uses: vedantmgoyal2009/winget-releaser@v2
|
- uses: vedantmgoyal9/winget-releaser@19e706d4c9121098010096f9c495a70a7518b30f
|
||||||
with:
|
with:
|
||||||
identifier: sharkdp.bat
|
identifier: sharkdp.bat
|
||||||
installers-regex: '-pc-windows-msvc\.zip$'
|
installers-regex: '-pc-windows-msvc\.zip$'
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
name: Changelog
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-changelog:
|
||||||
|
name: Check for changelog entry
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# dependabot PRs are automerged if CI passes; we shouldn't block these
|
||||||
|
if: github.actor != 'dependabot[bot]'
|
||||||
|
env:
|
||||||
|
PR_NUMBER: ${{ github.event.number }}
|
||||||
|
PR_BASE: ${{ github.base_ref }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- name: Fetch PR base
|
||||||
|
run: git fetch --no-tags --prune --depth=1 origin
|
||||||
|
|
||||||
|
# cannot use `github.actor`: the triggering commit may be authored by a maintainer
|
||||||
|
- name: Get PR submitter
|
||||||
|
id: get-submitter
|
||||||
|
run: curl -sSfL https://api.github.com/repos/sharkdp/bat/pulls/${PR_NUMBER} | jq -r '"submitter=" + .user.login' | tee -a $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Search for added line in changelog
|
||||||
|
env:
|
||||||
|
PR_SUBMITTER: ${{ steps.get-submitter.outputs.submitter }}
|
||||||
|
run: |
|
||||||
|
ADDED=$(git diff -U0 "origin/${PR_BASE}" HEAD -- CHANGELOG.md | grep -P '^\+[^\+].+$')
|
||||||
|
echo "Added lines in CHANGELOG.md:"
|
||||||
|
echo "$ADDED"
|
||||||
|
echo "Grepping for PR info (see CONTRIBUTING.md):"
|
||||||
|
grep "#${PR_NUMBER}\\b.*${PR_SUBMITTER}\\b" <<< "$ADDED"
|
||||||
@@ -1,9 +1,17 @@
|
|||||||
|
.direnv/
|
||||||
/target/
|
/target/
|
||||||
**/*.rs.bk
|
**/*.rs.bk
|
||||||
|
|
||||||
|
# Editors
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
|
||||||
# Generated files
|
# Generated files
|
||||||
|
/assets/completions/_bat.ps1
|
||||||
/assets/completions/bat.bash
|
/assets/completions/bat.bash
|
||||||
/assets/completions/bat.fish
|
/assets/completions/bat.fish
|
||||||
/assets/completions/bat.zsh
|
/assets/completions/bat.zsh
|
||||||
/assets/manual/bat.1
|
/assets/manual/bat.1
|
||||||
/assets/metadata.yaml
|
/assets/metadata.yaml
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+42
-21
@@ -49,9 +49,6 @@
|
|||||||
[submodule "assets/themes/zenburn"]
|
[submodule "assets/themes/zenburn"]
|
||||||
path = assets/themes/zenburn
|
path = assets/themes/zenburn
|
||||||
url = https://github.com/colinta/zenburn.git
|
url = https://github.com/colinta/zenburn.git
|
||||||
[submodule "assets/syntaxes/Kotlin"]
|
|
||||||
path = assets/syntaxes/02_Extra/Kotlin
|
|
||||||
url = https://github.com/vkostyukov/kotlin-sublime-package
|
|
||||||
[submodule "assets/syntaxes/Elm"]
|
[submodule "assets/syntaxes/Elm"]
|
||||||
path = assets/syntaxes/02_Extra/Elm
|
path = assets/syntaxes/02_Extra/Elm
|
||||||
url = https://github.com/elm-community/SublimeElmLanguageSupport
|
url = https://github.com/elm-community/SublimeElmLanguageSupport
|
||||||
@@ -65,7 +62,7 @@
|
|||||||
path = assets/themes/onehalf
|
path = assets/themes/onehalf
|
||||||
url = https://github.com/sonph/onehalf
|
url = https://github.com/sonph/onehalf
|
||||||
[submodule "assets/syntaxes/JavaScript (Babel)"]
|
[submodule "assets/syntaxes/JavaScript (Babel)"]
|
||||||
path = assets/syntaxes/02_Extra/JavaScript (Babel)
|
path = assets/syntaxes/02_Extra/JavaScript_(Babel)
|
||||||
url = https://github.com/babel/babel-sublime
|
url = https://github.com/babel/babel-sublime
|
||||||
[submodule "assets/syntaxes/FSharp"]
|
[submodule "assets/syntaxes/FSharp"]
|
||||||
path = assets/syntaxes/02_Extra/FSharp
|
path = assets/syntaxes/02_Extra/FSharp
|
||||||
@@ -89,7 +86,7 @@
|
|||||||
path = assets/themes/sublime-snazzy
|
path = assets/themes/sublime-snazzy
|
||||||
url = https://github.com/greggb/sublime-snazzy
|
url = https://github.com/greggb/sublime-snazzy
|
||||||
[submodule "assets/syntaxes/Assembly (ARM)"]
|
[submodule "assets/syntaxes/Assembly (ARM)"]
|
||||||
path = assets/syntaxes/02_Extra/Assembly (ARM)
|
path = assets/syntaxes/02_Extra/Assembly_(ARM)
|
||||||
url = https://github.com/tvi/Sublime-ARM-Assembly
|
url = https://github.com/tvi/Sublime-ARM-Assembly
|
||||||
[submodule "assets/syntaxes/protobuf-syntax-highlighting"]
|
[submodule "assets/syntaxes/protobuf-syntax-highlighting"]
|
||||||
path = assets/syntaxes/02_Extra/Protobuf
|
path = assets/syntaxes/02_Extra/Protobuf
|
||||||
@@ -108,14 +105,11 @@
|
|||||||
path = assets/syntaxes/02_Extra/Fish
|
path = assets/syntaxes/02_Extra/Fish
|
||||||
url = https://github.com/Phidica/sublime-fish.git
|
url = https://github.com/Phidica/sublime-fish.git
|
||||||
[submodule "assets/syntaxes/Org mode"]
|
[submodule "assets/syntaxes/Org mode"]
|
||||||
path = assets/syntaxes/02_Extra/Org mode
|
path = assets/syntaxes/02_Extra/Org_mode
|
||||||
url = https://github.com/jezcope/Org.tmbundle.git
|
url = https://github.com/jezcope/Org.tmbundle.git
|
||||||
[submodule "assets/syntaxes/DotENV"]
|
[submodule "assets/syntaxes/DotENV"]
|
||||||
path = assets/syntaxes/02_Extra/DotENV
|
path = assets/syntaxes/02_Extra/DotENV
|
||||||
url = https://github.com/zaynali53/DotENV
|
url = https://github.com/zaynali53/DotENV
|
||||||
[submodule "assets/syntaxes/hosts"]
|
|
||||||
path = assets/syntaxes/02_Extra/hosts
|
|
||||||
url = https://github.com/brandonwamboldt/sublime-hosts
|
|
||||||
[submodule "assets/syntaxes/ssh-config"]
|
[submodule "assets/syntaxes/ssh-config"]
|
||||||
path = assets/syntaxes/02_Extra/ssh-config
|
path = assets/syntaxes/02_Extra/ssh-config
|
||||||
url = https://github.com/robballou/sublimetext-sshconfig.git
|
url = https://github.com/robballou/sublimetext-sshconfig.git
|
||||||
@@ -133,7 +127,7 @@
|
|||||||
url = https://github.com/djuretic/SublimeStrace
|
url = https://github.com/djuretic/SublimeStrace
|
||||||
[submodule "assets/syntaxes/Jinja2"]
|
[submodule "assets/syntaxes/Jinja2"]
|
||||||
path = assets/syntaxes/02_Extra/Jinja2
|
path = assets/syntaxes/02_Extra/Jinja2
|
||||||
url = https://github.com/Martin819/sublime-jinja2
|
url = https://github.com/ltrzesniewski/sublime-jinja2.git
|
||||||
[submodule "assets/syntaxes/SLS"]
|
[submodule "assets/syntaxes/SLS"]
|
||||||
path = assets/syntaxes/02_Extra/SLS
|
path = assets/syntaxes/02_Extra/SLS
|
||||||
url = https://github.com/saltstack/sublime-text
|
url = https://github.com/saltstack/sublime-text
|
||||||
@@ -142,7 +136,7 @@
|
|||||||
path = assets/themes/dracula-sublime
|
path = assets/themes/dracula-sublime
|
||||||
url = https://github.com/dracula/sublime.git
|
url = https://github.com/dracula/sublime.git
|
||||||
[submodule "assets/syntaxes/HTML (Twig)"]
|
[submodule "assets/syntaxes/HTML (Twig)"]
|
||||||
path = assets/syntaxes/02_Extra/HTML (Twig)
|
path = assets/syntaxes/02_Extra/HTML_(Twig)
|
||||||
url = https://github.com/Anomareh/PHP-Twig.tmbundle.git
|
url = https://github.com/Anomareh/PHP-Twig.tmbundle.git
|
||||||
[submodule "assets/themes/Nord-sublime"]
|
[submodule "assets/themes/Nord-sublime"]
|
||||||
path = assets/themes/Nord-sublime
|
path = assets/themes/Nord-sublime
|
||||||
@@ -177,7 +171,7 @@
|
|||||||
url = https://github.com/euler0/sublime-glsl
|
url = https://github.com/euler0/sublime-glsl
|
||||||
[submodule "assets/syntaxes/02_Extra/Nginx"]
|
[submodule "assets/syntaxes/02_Extra/Nginx"]
|
||||||
path = assets/syntaxes/02_Extra/Nginx
|
path = assets/syntaxes/02_Extra/Nginx
|
||||||
url = https://github.com/brandonwamboldt/sublime-nginx
|
url = https://github.com/SublimeText/nginx
|
||||||
[submodule "assets/syntaxes/02_Extra/Apache"]
|
[submodule "assets/syntaxes/02_Extra/Apache"]
|
||||||
path = assets/syntaxes/02_Extra/Apache
|
path = assets/syntaxes/02_Extra/Apache
|
||||||
url = https://github.com/colinta/ApacheConf.tmLanguage
|
url = https://github.com/colinta/ApacheConf.tmLanguage
|
||||||
@@ -196,22 +190,16 @@
|
|||||||
branch = bat-source
|
branch = bat-source
|
||||||
[submodule "assets/syntaxes/02_Extra/Lean"]
|
[submodule "assets/syntaxes/02_Extra/Lean"]
|
||||||
path = assets/syntaxes/02_Extra/Lean
|
path = assets/syntaxes/02_Extra/Lean
|
||||||
url = https://github.com/leanprover/vscode-lean.git
|
url = https://github.com/leanprover/vscode-lean4.git
|
||||||
[submodule "assets/syntaxes/02_Extra/LiveScript"]
|
|
||||||
path = assets/syntaxes/02_Extra/LiveScript
|
|
||||||
url = https://github.com/paulmillr/LiveScript.tmbundle
|
|
||||||
[submodule "assets/syntaxes/02_Extra/Zig"]
|
[submodule "assets/syntaxes/02_Extra/Zig"]
|
||||||
path = assets/syntaxes/02_Extra/Zig
|
path = assets/syntaxes/02_Extra/Zig
|
||||||
url = https://github.com/ziglang/sublime-zig-language.git
|
url = https://codeberg.org/ziglang/sublime-zig-language.git
|
||||||
[submodule "assets/syntaxes/02_Extra/gnuplot"]
|
[submodule "assets/syntaxes/02_Extra/gnuplot"]
|
||||||
path = assets/syntaxes/02_Extra/gnuplot
|
path = assets/syntaxes/02_Extra/gnuplot
|
||||||
url = https://github.com/hesstobi/sublime_gnuplot
|
url = https://github.com/hesstobi/sublime_gnuplot
|
||||||
[submodule "assets/syntaxes/02_Extra/SystemVerilog"]
|
[submodule "assets/syntaxes/02_Extra/SystemVerilog"]
|
||||||
path = assets/syntaxes/02_Extra/SystemVerilog
|
path = assets/syntaxes/02_Extra/SystemVerilog
|
||||||
url = https://github.com/TheClams/SystemVerilog.git
|
url = https://github.com/TheClams/SystemVerilog.git
|
||||||
[submodule "assets/themes/visual-studio-dark-plus"]
|
|
||||||
path = assets/themes/visual-studio-dark-plus
|
|
||||||
url = https://github.com/vidann1/visual-studio-dark-plus.git
|
|
||||||
[submodule "assets/syntaxes/02_Extra/SublimeEthereum"]
|
[submodule "assets/syntaxes/02_Extra/SublimeEthereum"]
|
||||||
path = assets/syntaxes/02_Extra/SublimeEthereum
|
path = assets/syntaxes/02_Extra/SublimeEthereum
|
||||||
url = https://github.com/davidhq/SublimeEthereum.git
|
url = https://github.com/davidhq/SublimeEthereum.git
|
||||||
@@ -249,7 +237,7 @@
|
|||||||
url = https://github.com/dertuxmalwieder/SublimeTodoTxt
|
url = https://github.com/dertuxmalwieder/SublimeTodoTxt
|
||||||
[submodule "assets/syntaxes/02_Extra/Ada"]
|
[submodule "assets/syntaxes/02_Extra/Ada"]
|
||||||
path = assets/syntaxes/02_Extra/Ada
|
path = assets/syntaxes/02_Extra/Ada
|
||||||
url = https://github.com/wiremoons/ada-sublime-syntax
|
url = https://github.com/AldanTanneo/ada-sublime-syntax
|
||||||
|
|
||||||
[submodule "assets/syntaxes/02_Extra/Crontab"]
|
[submodule "assets/syntaxes/02_Extra/Crontab"]
|
||||||
path = assets/syntaxes/02_Extra/Crontab
|
path = assets/syntaxes/02_Extra/Crontab
|
||||||
@@ -260,3 +248,36 @@
|
|||||||
[submodule "assets/syntaxes/02_Extra/vscode-wgsl"]
|
[submodule "assets/syntaxes/02_Extra/vscode-wgsl"]
|
||||||
path = assets/syntaxes/02_Extra/vscode-wgsl
|
path = assets/syntaxes/02_Extra/vscode-wgsl
|
||||||
url = https://github.com/PolyMeilex/vscode-wgsl.git
|
url = https://github.com/PolyMeilex/vscode-wgsl.git
|
||||||
|
[submodule "assets/syntaxes/02_Extra/CFML"]
|
||||||
|
path = assets/syntaxes/02_Extra/CFML
|
||||||
|
url = https://github.com/jcberquist/sublimetext-cfml.git
|
||||||
|
[submodule "assets/syntaxes/02_Extra/Idris2"]
|
||||||
|
path = assets/syntaxes/02_Extra/Idris2
|
||||||
|
url = https://github.com/buzden/sublime-syntax-idris2
|
||||||
|
[submodule "assets/syntaxes/02_Extra/GDScript-sublime"]
|
||||||
|
path = assets/syntaxes/02_Extra/GDScript-sublime
|
||||||
|
url = https://github.com/beefsack/GDScript-sublime
|
||||||
|
[submodule "assets/syntaxes/02_Extra/sublime-odin"]
|
||||||
|
path = assets/syntaxes/02_Extra/sublime-odin
|
||||||
|
url = https://github.com/odin-lang/sublime-odin
|
||||||
|
[submodule "assets/syntaxes/02_Extra/typst-syntax-highlight"]
|
||||||
|
path = assets/syntaxes/02_Extra/typst-syntax-highlight
|
||||||
|
url = https://github.com/hyrious/typst-syntax-highlight
|
||||||
|
[submodule "assets/themes/Catppuccin"]
|
||||||
|
path = assets/themes/Catppuccin
|
||||||
|
url = https://github.com/SchweGELBin/catppuccin-bat-sub.git
|
||||||
|
[submodule "assets/syntaxes/02_Extra/SmartVHDL"]
|
||||||
|
path = assets/syntaxes/02_Extra/SmartVHDL
|
||||||
|
url = https://github.com/TheClams/SmartVHDL
|
||||||
|
[submodule "assets/syntaxes/02_Extra/hosts"]
|
||||||
|
path = assets/syntaxes/02_Extra/hosts
|
||||||
|
url = https://github.com/tijn/hosts.tmLanguage
|
||||||
|
[submodule "assets/syntaxes/02_Extra/Gomod"]
|
||||||
|
path = assets/syntaxes/02_Extra/Gomod
|
||||||
|
url = https://github.com/mitranim/sublime-gomod
|
||||||
|
[submodule "assets/syntaxes/02_Extra/COBOL"]
|
||||||
|
path = assets/syntaxes/02_Extra/COBOL
|
||||||
|
url = https://github.com/adukhan99/sublime_cobol.git
|
||||||
|
[submodule "assets/syntaxes/02_Extra/Kotlin"]
|
||||||
|
path = assets/syntaxes/02_Extra/Kotlin
|
||||||
|
url = https://github.com/guille/sublime-kotlin
|
||||||
|
|||||||
+269
@@ -1,3 +1,271 @@
|
|||||||
|
# unreleased
|
||||||
|
|
||||||
|
|
||||||
|
## Other
|
||||||
|
|
||||||
|
- Add instructions for removing fish help abbreviations to README, see #3655 (@claw-explorer). Closes #3536
|
||||||
|
- Add .NET slnx extension, see #3682 (@ltrzesniewski)
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Preserve `--diff` change markers and snip separators when `--plain` is set. Closes #3630, see #3643 (@mvanhorn)
|
||||||
|
- Added support for `hidden_file_extensions` from `.sublime-syntax` files, see #3613 (@Matei02355)
|
||||||
|
- Add word wrapping mode via `--wrap=word`, see #3597 (@veeceey)
|
||||||
|
- Support configuring `--terminal-width` via `BAT_WIDTH`, see #3679 (@officialasishkumar)
|
||||||
|
- Implement `--unbuffered` mode for streaming input, allowing partial lines to display immediately (e.g. `tail -f | bat -u`). Closes #3555, see #3583 (@mainnebula)
|
||||||
|
- Added an initial `flake.nix` for a ready made development environment; see #3578 (@vorburger)
|
||||||
|
- Add `--quiet-empty` (`-E`) flag to suppress output when input is empty. Closes #1936, see #3563 (@NORMAL-EX)
|
||||||
|
- Improve native man pages and command help syntax highlighting by stripping overstriking, see #3517 (@akirk)
|
||||||
|
- Add `--fallback-syntax`/`--fallback-language` to apply syntax highlighting only when auto-detection fails, see #1341 (@Xavrir)
|
||||||
|
- Map `BUILD` case sensitively to Python (Starlark) for Bazel, see #3576 (@vorburger)
|
||||||
|
- Syntax highlighting for Python files using uv as script runner in shebang #3689 (@janlarres)
|
||||||
|
|
||||||
|
## Bugfixes
|
||||||
|
- Fix `--list-themes` unconditionally probing the terminal via OSC 10/11 even when `--theme` was set to an explicit value, see #3700 (regression introduced in bc42149a). (@optimistiCli)
|
||||||
|
- Fix inverted `$LESSCLOSE` warning so bat warns on nonzero exit, not on success. See #3654 (@cuiweixie)
|
||||||
|
- Sanitize control characters in filenames before displaying them in the file header, error messages, and the terminal title, preventing ANSI escape injection via crafted filenames. Closes #3054, see #3691 (@curious-rabbit)
|
||||||
|
- Report initial input read errors instead of treating them as empty input. Closes #3002, see #3706 (@lawrence3699)
|
||||||
|
- Treat ZIP archives as binary content based on their magic header, see #3686 (@officialasishkumar)
|
||||||
|
- Fix i686 `.deb` package using incorrect architecture name (`i686` instead of `i386`), preventing installation on Debian. Closes #3611, see #3650 (@Sim-hu)
|
||||||
|
- Fix inconsistent `.deb` MUSL package names (aarch64-musl used `arm64` instead of `musl-linux-arm64`, and `musleabihf` target missed `bat-musl` prefix). Closes #3482, see #3642 (@mvanhorn)
|
||||||
|
- Fix incorrect text width computation when using `--binary=as-text` with non-printable characters in caret notation, see #3640 and #3631 (@eyupcanakman)
|
||||||
|
- Fix `BAT_CONFIG_DIR` pointing at system config directory causing duplicate flag errors. Closes #3589, see #3620 (@Xavrir)
|
||||||
|
- Fix syntax highlighting for symlinked files when the symlink name has no extension but the target does. Closes #1001, see #3621 (@Xavrir)
|
||||||
|
- Report error when pager is missing instead of silently falling back, see #3588 (@IMaloney)
|
||||||
|
- Fix `--wrap=never` and `-S` flags being ignored when piping to pager, see #3592 (@IMaloney)
|
||||||
|
- Fix crash with BusyBox `less` on Windows, see #3527 (@Anchal-T)
|
||||||
|
- Fix `bat cache --help` failing with 'unexpected argument' error, see #3580 and #3560 (@NORMAL-EX)
|
||||||
|
- `--help` now correctly honors `--pager=builtin`. See #3516 (@keith-hall)
|
||||||
|
- `--help` now correctly honors custom themes. See #3524 (@keith-hall)
|
||||||
|
- Fixed test compatibility with future Cargo build directory changes, see #3550 (@nmacl)
|
||||||
|
- Fixed bug caused by using `--plain` and `--terminal-width=N` flags simultaneously, see #3529 (@H4k1l)
|
||||||
|
- Fixed syntax tests path, see #3610 (@foxfromworld)
|
||||||
|
- Fix zsh tab completion word-splitting language names containing spaces (e.g. `HTML (Jinja2)`, `Apache Conf`), see #3693 (@YoshKoz)
|
||||||
|
|
||||||
|
## Other
|
||||||
|
- Use git version of cross. See #3533 (@OctopusET)
|
||||||
|
- Bump MSRV to 1.88, update `time` crate to 0.3.47 to fix RUSTSEC-2026-0009, see #3581 (@NORMAL-EX)
|
||||||
|
- Allow home and end keys to be used with builtin pager, see #3651 (@keith-hall)
|
||||||
|
- Builtin syntax mapping: cleanup matcher glob parsing logic #3652 (@cyqsimon)
|
||||||
|
- Statically link the CRT for MSVC builds via Cargo config to avoid runtime DLL dependencies. Closes #3634, see #3692 (@barry3406)
|
||||||
|
|
||||||
|
## Syntaxes
|
||||||
|
|
||||||
|
- Add shebang-based detection for Tcl (`tclsh`, `wish`) and Expect (`expect`) scripts, see #3647 (@mvanhorn)
|
||||||
|
- Change the URL of Zig submodule from GitHub to Codeberg, see #3519 (@sorairolake)
|
||||||
|
- Don't color strings inside CSV files, to make it easier to tell which column they belong to, see #3521 (@keith-hall)
|
||||||
|
- Add syntax highlighting support for COBOL, see #3584 (@adukhan99)
|
||||||
|
- Fixed manpage syntax so that ANSI escape codes don't get incorrectly highlighted and thus broken, see #3586 (@BlueElectivire)
|
||||||
|
- Map several Google Cloud CLI config files to their appropriate syntax #3635 (@victor-gp)
|
||||||
|
- Map all ignore dotfiles to Git Ignore syntax #3636 (@victor-gp)
|
||||||
|
- Improved Kotlin syntax, see #3699 (@guille)
|
||||||
|
|
||||||
|
## Themes
|
||||||
|
|
||||||
|
- Remove the Visual Studio Dark+ theme, see #3552 (@CosmicHorrorDev)
|
||||||
|
|
||||||
|
## `bat` as a library
|
||||||
|
|
||||||
|
# v0.26.1
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Add paging to '-h' and '--help' see PR #3478 (@MuntasirSZN)
|
||||||
|
|
||||||
|
## Bugfixes
|
||||||
|
|
||||||
|
- Fix hang when using `--list-themes` with an explicit pager, see #3457 (@abhinavcool42)
|
||||||
|
- Fix negative values of N not being parsed in <N:M> line ranges without `=` flag value separator, see #3442 (@lmmx)
|
||||||
|
- Fix broken Docker syntax preventing use of custom assets, see #3476 (@keith-hall)
|
||||||
|
- Fix decorations being applied unexpectedly when piping. Now only line numbers explicitly required on the command line should be applied in auto decorations mode for `cat` compatibility. See #3496 (@keith-hall)
|
||||||
|
- Fix diagnostics attempting to find the version of an executable named builtin when builtin pager is used. See #3498 (@keith-hall)
|
||||||
|
- `--help` now correctly reads the config file for theme information etc. See #3507 (@keith-hall)
|
||||||
|
|
||||||
|
## Other
|
||||||
|
- Improve README documentation on pager options passed to less, see #3443 (@injust)
|
||||||
|
- Make PowerShell completions compatible with PowerShell v5.1, see #3495 (@keith-hall)
|
||||||
|
- Use more robust approach to escaping in Bash completions, see #3448 (@akinomyoga)
|
||||||
|
|
||||||
|
## Syntaxes
|
||||||
|
|
||||||
|
- Update quadlet syntax mapping to include *.{build,pod} files #3484 (@cyqsimon)
|
||||||
|
- Fix inconsistencies in Ada syntax, see #3481 (@AldanTanneo)
|
||||||
|
- Add syntax mapping for podman's `artifact` quadlet files, see #3497 (@xduugu)
|
||||||
|
- Highlight Korn Shell scripts (i.e. with a shebang of ...`ksh`) using Bash syntax, see #3509 (@keith-hall)
|
||||||
|
|
||||||
|
## Themes
|
||||||
|
|
||||||
|
## `bat` as a library
|
||||||
|
|
||||||
|
# v0.26.0
|
||||||
|
|
||||||
|
## Features
|
||||||
|
- Add build for windows/ARM64 platform. #3190 (@alcroito)
|
||||||
|
- Add paging to `--list-themes`, see PR #3239 (@einfachIrgendwer0815)
|
||||||
|
- Support negative relative line ranges, e.g. `bat -r :-10` / `bat -r='-10:'`, see #3068 (@ajesipow)
|
||||||
|
- Support context in line ranges, e.g. `bat -r 30::5` / `bat -r 30:40:5`, see #3345 (@cavanaug)
|
||||||
|
- Add built-in 'minus' pager, e.g. `bat --pager=builtin` see PR #3402 (@academician)
|
||||||
|
|
||||||
|
## Bugfixes
|
||||||
|
|
||||||
|
- Fix UTF-8 BOM not being stripped for syntax detection, see #3314 (@krikera)
|
||||||
|
- Fix `BAT_THEME_DARK` and `BAT_THEME_LIGHT` being ignored, see issue #3171 and PR #3168 (@bash)
|
||||||
|
- Prevent `--list-themes` from outputting default theme info to stdout when it is piped, see #3189 (@einfachIrgendwer0815)
|
||||||
|
- Rename some submodules to fix Dependabot submodule updates, see issue #3198 and PR #3201 (@victor-gp)
|
||||||
|
- Make highlight tests fail when new syntaxes don't have fixtures PR #3255 (@dan-hipschman)
|
||||||
|
- Fix crash for multibyte characters in file path, see issue #3230 and PR #3245 (@HSM95)
|
||||||
|
- Add missing mappings for various bash/zsh files, see PR #3262 (@AdamGaskins)
|
||||||
|
- Send all bat errors to stderr by default, see #3336 (@JerryImMouse)
|
||||||
|
- Make --map-syntax target case insensitive to match --language, see #3206 (@keith-hall)
|
||||||
|
- Correctly determine the end of the line in UTF16LE/BE input #3369 (@keith-hall)
|
||||||
|
- `--style=changes` no longer prints a two-space indent when the file is unmodified, see issue #2710 and PR #3406 (@jyn514)
|
||||||
|
- Add missing shell completions, see #3411 (@keith-hall)
|
||||||
|
- Execute help/version/diagnostic commands even with invalid config/arguments present, see #3414 (@keith-hall)
|
||||||
|
- Fixed line numbers (`-n`) and style components not printing when piping output, see issue #2935 and PR #3438 (@lmmx)
|
||||||
|
|
||||||
|
## Other
|
||||||
|
|
||||||
|
- Update base16 README links to community driven base16 work #2871 (@JamyGolden)
|
||||||
|
- Work around build failures when building `bat` from vendored sources #3179 (@dtolnay)
|
||||||
|
- CICD: Stop building for x86_64-pc-windows-gnu which fails #3261 (Enselic)
|
||||||
|
- CICD: replace windows-2019 runners with windows-2025 #3339 (@cyqsimon)
|
||||||
|
- Build script: replace string-based codegen with quote-based codegen #3340 (@cyqsimon)
|
||||||
|
- Improve code coverage of `--list-languages` parameter #2942 (@sblondon)
|
||||||
|
- Only start offload worker thread when there's more than 1 core #2956 (@cyqsimon)
|
||||||
|
- Update terminal-colorsaurus (the library used for dark/light detection) to 1.0, see #3347 (@bash)
|
||||||
|
- Update console dependency to 0.16, see #3351 (@musicinmybrain)
|
||||||
|
- Fixed some typos #3244 (@ssbarnea)
|
||||||
|
- Update onig_sys dependency to 69.9.1 to fix a gcc build failure #3400 (@CosmicHorrorDev)
|
||||||
|
- Add a cargo feature (`vendored-libgit2`) to build with vendored libgit2 version without depending on the system's one #3426 (@0x61nas)
|
||||||
|
- Update syntect dependency to v5.3.0 to fix a few minor bugs, see #3410 (@keith-hall)
|
||||||
|
|
||||||
|
## Syntaxes
|
||||||
|
|
||||||
|
- Add syntax mapping for `paru` configuration files #3182 (@cyqsimon)
|
||||||
|
- Add support for [Idris 2 programming language](https://www.idris-lang.org/) #3150 (@buzden)
|
||||||
|
- Add syntax mapping for `nix`'s '`flake.lock` lockfiles #3196 (@odilf)
|
||||||
|
- Improvements to CSV/TSV highlighting, with autodetection of delimiter and support for TSV files, see #3186 (@keith-
|
||||||
|
- Improve (Sys)log error highlighting, see #3205 (@keith-hall)
|
||||||
|
- Map `ndjson` extension to JSON syntax, see #3209 (@keith-hall)
|
||||||
|
- Map files with `csproj`, `vbproj`, `props` and `targets` extensions to XML syntax, see #3213 (@keith-hall)
|
||||||
|
- Add debsources syntax to highlight `/etc/apt/sources.list` files, see #3215 (@keith-hall)
|
||||||
|
- Add syntax definition and test file for GDScript highlighting, see #3236 (@chetanjangir0)
|
||||||
|
- Add syntax test file for Odin highlighting, see #3241 (@chetanjangir0)
|
||||||
|
- Update quadlet syntax mapping rules to cover quadlets in subdirectories #3299 (@cyqsimon)
|
||||||
|
- Add syntax Typst #3300 (@cskeeters)
|
||||||
|
- Map `.mill` files to Scala syntax for Mill build tool configuration files #3311 (@krikera)
|
||||||
|
- Add syntax highlighting for VHDL, see #3337 (@JerryImMouse)
|
||||||
|
- Add syntax mapping for certbot certificate configuration #3338 (@cyqsimon)
|
||||||
|
- Update Lean syntax from Lean 3 to Lean 4 #3322 (@YDX-2147483647)
|
||||||
|
- Map `.flatpakref` and `.flatpakrepo` files to INI syntax #3353 (@Ferenc-)
|
||||||
|
- Update hosts syntax #3368 (@keith-hall)
|
||||||
|
- Map `.kshrc` files to Bash syntax #3364 (@ritoban23)
|
||||||
|
- Map `/var/log/dmesg` files to Syslog syntax #3412 (@keith-hall)
|
||||||
|
- Add syntax definition and test file for Go modules(`go.mod` and `go.sum`) highlighting, see #3424 (@DarkMatter-999)
|
||||||
|
- Syntax highlighting for typescript code blocks within Markdown files, see #3435 (@MuntasirSZN)
|
||||||
|
|
||||||
|
## Themes
|
||||||
|
|
||||||
|
- Add Catppuccin, see #3317 (@SchweGELBin)
|
||||||
|
- Updated Catppuccin, see #3333 (@SchweGELBin)
|
||||||
|
- Updated gruvbox, see #3372 (@Nicholas42)
|
||||||
|
- Updated GitHub theme, see #3382 (@CosmicHorrorDev)
|
||||||
|
- Updated ANSI theme to highlight JSON object keys differently from values, see #3413 (@keith-hall)
|
||||||
|
|
||||||
|
# v0.25.0
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Set terminal title to file names when Paging is not Paging::Never #2807 (@Oliver-Looney)
|
||||||
|
- `bat --squeeze-blank`/`bat -s` will now squeeze consecutive empty lines, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815)
|
||||||
|
- `bat --squeeze-limit` to set the maximum number of empty consecutive when using `--squeeze-blank`, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815)
|
||||||
|
- `PrettyPrinter::squeeze_empty_lines` to support line squeezing for bat as a library, see #1441 (@eth-p) and #2665 (@einfachIrgendwer0815)
|
||||||
|
- Syntax highlighting for JavaScript files that start with `#!/usr/bin/env bun` #2913 (@sharunkumar)
|
||||||
|
- `bat --strip-ansi={never,always,auto}` to remove ANSI escape sequences from bat's input, see #2999 (@eth-p)
|
||||||
|
- Add or remove individual style components without replacing all styles #2929 (@eth-p)
|
||||||
|
- Automatically choose theme based on the terminal's color scheme, see #2896 (@bash)
|
||||||
|
- Add option `--binary=as-text` for printing binary content, see issue #2974 and PR #2976 (@einfachIrgendwer0815)
|
||||||
|
- Make shell completions available via `--completion <shell>`, see issue #2057 and PR #3126 (@einfachIrgendwer0815)
|
||||||
|
- Syntax highlighting for puppet code blocks within Markdown files, see #3152 (@liliwilson)
|
||||||
|
|
||||||
|
## Bugfixes
|
||||||
|
|
||||||
|
- Fix long file name wrapping in header, see #2835 (@FilipRazek)
|
||||||
|
- Fix `NO_COLOR` support, see #2767 (@acuteenvy)
|
||||||
|
- Fix handling of inputs with OSC ANSI escape sequences, see #2541 and #2544 (@eth-p)
|
||||||
|
- Fix handling of inputs with combined ANSI color and attribute sequences, see #2185 and #2856 (@eth-p)
|
||||||
|
- Fix panel width when line 10000 wraps, see #2854 (@eth-p)
|
||||||
|
- Fix compile issue of `time` dependency caused by standard library regression #3045 (@cyqsimon)
|
||||||
|
- Fix override behavior of --plain and --paging, see issue #2731 and PR #3108 (@einfachIrgendwer0815)
|
||||||
|
- Fix bugs in `$LESSOPEN` support, see #2805 (@Anomalocaridid)
|
||||||
|
|
||||||
|
## Other
|
||||||
|
|
||||||
|
- Upgrade to Rust 2021 edition #2748 (@cyqsimon)
|
||||||
|
- Refactor and cleanup build script #2756 (@cyqsimon)
|
||||||
|
- Checks changelog has been written to for PRs in CI #2766 (@cyqsimon)
|
||||||
|
- Use GitHub API to get correct PR submitter #2791 (@cyqsimon)
|
||||||
|
- Minor benchmark script improvements #2768 (@cyqsimon)
|
||||||
|
- Update Arch Linux package URL in README files #2779 (@brunobell)
|
||||||
|
- Update and improve `zsh` completion, see #2772 (@okapia)
|
||||||
|
- More extensible syntax mapping mechanism #2755 (@cyqsimon)
|
||||||
|
- Use proper Architecture for Debian packages built for musl, see #2811 (@Enselic)
|
||||||
|
- Pull in fix for unsafe-libyaml security advisory, see #2812 (@dtolnay)
|
||||||
|
- Update git-version dependency to use Syn v2, see #2816 (@dtolnay)
|
||||||
|
- Update git2 dependency to v0.18.2, see #2852 (@eth-p)
|
||||||
|
- Improve performance when color output disabled, see #2397 and #2857 (@eth-p)
|
||||||
|
- Relax syntax mapping rule restrictions to allow brace expansion #2865 (@cyqsimon)
|
||||||
|
- Apply clippy fixes #2864 (@cyqsimon)
|
||||||
|
- Faster startup by offloading glob matcher building to a worker thread #2868 (@cyqsimon)
|
||||||
|
- Display which theme is the default one in basic output (no colors), see #2937 (@sblondon)
|
||||||
|
- Display which theme is the default one in colored output, see #2838 (@sblondon)
|
||||||
|
- Add aarch64-apple-darwin ("Apple Silicon") binary tarballs to releases, see #2967 (@someposer)
|
||||||
|
- Update the Lisp syntax, see #2970 (@ccqpein)
|
||||||
|
- Use bat's ANSI iterator during tab expansion, see #2998 (@eth-p)
|
||||||
|
- Support 'statically linked binary' for aarch64 in 'Release' page, see #2992 (@tzq0301)
|
||||||
|
- Update options in shell completions and the man page of `bat`, see #2995 (@akinomyoga)
|
||||||
|
- Update nix dev-dependency to v0.29.0, see #3112 (@decathorpe)
|
||||||
|
- Bump MSRV to [1.74](https://blog.rust-lang.org/2023/11/16/Rust-1.74.0.html), see #3154 (@keith-hall)
|
||||||
|
- Update clircle dependency to remove winapi transitive dependency, see #3113 (@niklasmohrin)
|
||||||
|
|
||||||
|
## Syntaxes
|
||||||
|
|
||||||
|
- `cmd-help`: scope subcommands followed by other terms, and other misc improvements, see #2819 (@victor-gp)
|
||||||
|
- Upgrade JQ syntax, see #2820 (@dependabot[bot])
|
||||||
|
- Add syntax mapping for quadman quadlets #2866 (@cyqsimon)
|
||||||
|
- Map containers .conf files to TOML syntax #2867 (@cyqsimon)
|
||||||
|
- Associate `.xsh` files with `xonsh` syntax that is Python, see #2840 (@anki-code)
|
||||||
|
- Associate JSON with Comments `.jsonc` with `json` syntax, see #2795 (@mxaddict)
|
||||||
|
- Associate JSON-LD `.jsonld` files with `json` syntax, see #3037 (@vorburger)
|
||||||
|
- Associate `.textproto` files with `ProtoBuf` syntax, see #3038 (@vorburger)
|
||||||
|
- Associate GeoJSON `.geojson` files with `json` syntax, see #3084 (@mvaaltola)
|
||||||
|
- Associate `.aws/{config,credentials}`, see #2795 (@mxaddict)
|
||||||
|
- Associate Wireguard config `/etc/wireguard/*.conf`, see #2874 (@cyqsimon)
|
||||||
|
- Add support for [CFML](https://www.adobe.com/products/coldfusion-family.html), see #3031 (@brenton-at-pieces)
|
||||||
|
- Map `*.mkd` files to `Markdown` syntax, see issue #3060 and PR #3061 (@einfachIrgendwer0815)
|
||||||
|
- Add syntax mapping for CITATION.cff, see #3103 (@Ugzuzg)
|
||||||
|
- Add syntax mapping for kubernetes config files #3049 (@cyqsimon)
|
||||||
|
- Adds support for pipe delimiter for CSV #3115 (@pratik-m)
|
||||||
|
- Add syntax mapping for `/etc/pacman.conf` #2961 (@cyqsimon)
|
||||||
|
- Associate `uv.lock` with `TOML` syntax, see #3132 (@fepegar)
|
||||||
|
|
||||||
|
## Themes
|
||||||
|
|
||||||
|
- Patched/improved themes for better Manpage syntax highlighting support, see #2994 (@keith-hall).
|
||||||
|
|
||||||
|
## `bat` as a library
|
||||||
|
|
||||||
|
- Changes to `syntax_mapping::SyntaxMapping` #2755 (@cyqsimon)
|
||||||
|
- `SyntaxMapping::get_syntax_for` is now correctly public
|
||||||
|
- [BREAKING] `SyntaxMapping::{empty,builtin}` are removed; use `SyntaxMapping::new` instead
|
||||||
|
- [BREAKING] `SyntaxMapping::mappings` is replaced by `SyntaxMapping::{builtin,custom,all}_mappings`
|
||||||
|
- Make `Controller::run_with_error_handler`'s error handler `FnMut`, see #2831 (@rhysd)
|
||||||
|
- Improve compile time by 20%, see #2815 (@dtolnay)
|
||||||
|
- Add `theme::theme` for choosing an appropriate theme based on the
|
||||||
|
terminal's color scheme, see #2896 (@bash)
|
||||||
|
- [BREAKING] Remove `HighlightingAssets::default_theme`. Use `theme::default_theme` instead.
|
||||||
|
- Add `PrettyPrinter::print_with_writer` for custom output destinations, see #3070 (@kojix2)
|
||||||
|
|
||||||
# v0.24.0
|
# v0.24.0
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
@@ -35,6 +303,7 @@
|
|||||||
- Update `Julia` syntax, see #2553 (@dependabot)
|
- Update `Julia` syntax, see #2553 (@dependabot)
|
||||||
- add `NSIS` support, see #2577 (@idleberg)
|
- add `NSIS` support, see #2577 (@idleberg)
|
||||||
- Update `ssh-config`, see #2697 (@mrmeszaros)
|
- Update `ssh-config`, see #2697 (@mrmeszaros)
|
||||||
|
- Add syntax mapping `*.debdiff` => `diff`, see #2947 (@jacg)
|
||||||
|
|
||||||
## `bat` as a library
|
## `bat` as a library
|
||||||
|
|
||||||
|
|||||||
+59
-8
@@ -6,21 +6,42 @@ Thank you for considering to contribute to `bat`!
|
|||||||
|
|
||||||
## Add an entry to the changelog
|
## Add an entry to the changelog
|
||||||
|
|
||||||
If your contribution changes the behavior of `bat` (as opposed to a typo-fix
|
Keeping the [`CHANGELOG.md`](CHANGELOG.md) file up-to-date makes the release
|
||||||
in the documentation), please update the [`CHANGELOG.md`](CHANGELOG.md) file
|
process much easier and therefore helps to get your changes into a new `bat`
|
||||||
and describe your changes. This makes the release process much easier and
|
release faster. However, not every change to the repository requires a
|
||||||
therefore helps to get your changes into a new `bat` release faster.
|
changelog entry. Below are a few examples of that.
|
||||||
|
|
||||||
|
Please update the changelog if your contribution contains changes regarding
|
||||||
|
any of the following:
|
||||||
|
- the behavior of `bat`
|
||||||
|
- syntax mappings
|
||||||
|
- syntax definitions
|
||||||
|
- themes
|
||||||
|
- the build system, linting, or CI workflows
|
||||||
|
|
||||||
|
A changelog entry is not necessary when:
|
||||||
|
- updating documentation
|
||||||
|
- fixing typos
|
||||||
|
|
||||||
|
>[!NOTE]
|
||||||
|
> For PRs, a CI workflow verifies that a suitable changelog entry is
|
||||||
|
> added. If such an entry is missing, the workflow will fail. If your
|
||||||
|
> changes do not need an entry to the changelog (see above), that
|
||||||
|
> workflow failure can be disregarded.
|
||||||
|
|
||||||
|
|
||||||
|
### Changelog entry format
|
||||||
|
|
||||||
The top of the `CHANGELOG` contains a *"unreleased"* section with a few
|
The top of the `CHANGELOG` contains a *"unreleased"* section with a few
|
||||||
subsections (Features, Bugfixes, …). Please add your entry to the subsection
|
subsections (Features, Bugfixes, …). Please add your entry to the subsection
|
||||||
that best describes your change.
|
that best describes your change.
|
||||||
|
|
||||||
Entries follow this format:
|
Entries must follow this format:
|
||||||
```
|
```
|
||||||
- Short description of what has been changed, see #123 (@user)
|
- Short description of what has been changed, see #123 (@user)
|
||||||
```
|
```
|
||||||
Here, `#123` is the number of the original issue and/or your pull request.
|
Please replace `#123` with the number of your pull request (not issue) and
|
||||||
Please replace `@user` by your GitHub username.
|
`@user` by your GitHub username.
|
||||||
|
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
@@ -42,11 +63,15 @@ Before you make a pull request that adds a new syntax or theme, please read
|
|||||||
the [Customization](https://github.com/sharkdp/bat#customization) section
|
the [Customization](https://github.com/sharkdp/bat#customization) section
|
||||||
in the README first.
|
in the README first.
|
||||||
|
|
||||||
If you really think that a particular syntax or theme should be added for all
|
If you really think that a particular syntax should be added for all
|
||||||
users, please read the corresponding
|
users, please read the corresponding
|
||||||
[documentation](https://github.com/sharkdp/bat/blob/master/doc/assets.md)
|
[documentation](https://github.com/sharkdp/bat/blob/master/doc/assets.md)
|
||||||
first.
|
first.
|
||||||
|
|
||||||
|
To map a file name pattern to an existing syntax, read [the documentation here](https://github.com/sharkdp/bat/blob/master/src/syntax_mapping/builtins/README.md).
|
||||||
|
|
||||||
|
Note: We are currently not accepting new default themes.
|
||||||
|
|
||||||
|
|
||||||
## Regression tests
|
## Regression tests
|
||||||
|
|
||||||
@@ -68,3 +93,29 @@ To learn how to write regression tests for theme and syntax changes, read the
|
|||||||
[Syntax
|
[Syntax
|
||||||
tests](https://github.com/sharkdp/bat/blob/master/doc/assets.md#syntax-tests)
|
tests](https://github.com/sharkdp/bat/blob/master/doc/assets.md#syntax-tests)
|
||||||
section in `assets.md`.
|
section in `assets.md`.
|
||||||
|
|
||||||
|
### Ensuring bat is available for Syntax tests
|
||||||
|
|
||||||
|
The syntax test script (`tests/syntax-tests/update.sh`) calls `bat` from your PATH and regenerates the highlighted output files under
|
||||||
|
`tests/syntax-tests/highlighted/`. These files are used to verify that syntax highlighting works as expected.
|
||||||
|
|
||||||
|
- If you only built the binaries with:
|
||||||
|
```bash
|
||||||
|
cargo build --bins
|
||||||
|
```
|
||||||
|
|
||||||
|
you need to add the debug build to your PATH from the bat project root before running the tests.
|
||||||
|
See also step 5 in [Syntax
|
||||||
|
tests](https://github.com/sharkdp/bat/blob/master/doc/assets.md#syntax-tests) for related instructions.
|
||||||
|
```bash
|
||||||
|
export PATH="$PATH:$(pwd)/target/debug"
|
||||||
|
```
|
||||||
|
Otherwise, you will see:
|
||||||
|
```bash
|
||||||
|
Error: Could not execute 'bat'. Please make sure that the executable is available on the PATH.
|
||||||
|
```
|
||||||
|
- If you installed bat with:
|
||||||
|
```bash
|
||||||
|
cargo install --path . --locked
|
||||||
|
```
|
||||||
|
then bat will be available in ~/.cargo/bin (usually already in PATH), and the tests will run without issues.
|
||||||
Generated
+1229
-542
File diff suppressed because it is too large
Load Diff
+63
-39
@@ -6,20 +6,20 @@ homepage = "https://github.com/sharkdp/bat"
|
|||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
name = "bat"
|
name = "bat"
|
||||||
repository = "https://github.com/sharkdp/bat"
|
repository = "https://github.com/sharkdp/bat"
|
||||||
version = "0.24.0"
|
version = "0.26.1"
|
||||||
exclude = ["assets/syntaxes/*", "assets/themes/*"]
|
exclude = ["assets/syntaxes/*", "assets/themes/*"]
|
||||||
build = "build.rs"
|
build = "build/main.rs"
|
||||||
edition = '2018'
|
edition = '2021'
|
||||||
rust-version = "1.70"
|
# You are free to bump MSRV as soon as a reason for bumping emerges.
|
||||||
|
rust-version = "1.88"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["application"]
|
default = ["application", "git"]
|
||||||
# Feature required for bat the application. Should be disabled when depending on
|
# Feature required for bat the application. Should be disabled when depending on
|
||||||
# bat as a library.
|
# bat as a library.
|
||||||
application = [
|
application = [
|
||||||
"bugreport",
|
"bugreport",
|
||||||
"build-assets",
|
"build-assets",
|
||||||
"git",
|
|
||||||
"minimal-application",
|
"minimal-application",
|
||||||
]
|
]
|
||||||
# Mainly for developers that want to iterate quickly
|
# Mainly for developers that want to iterate quickly
|
||||||
@@ -32,8 +32,9 @@ minimal-application = [
|
|||||||
"wild",
|
"wild",
|
||||||
]
|
]
|
||||||
git = ["git2"] # Support indicating git modifications
|
git = ["git2"] # Support indicating git modifications
|
||||||
paging = ["shell-words", "grep-cli"] # Support applying a pager on the output
|
vendored-libgit2 = ["git2/vendored-libgit2"]
|
||||||
lessopen = ["run_script", "os_str_bytes"] # Support $LESSOPEN preprocessor
|
paging = [ "shell-words", "grep-cli", "minus"] # Support applying a pager on the output
|
||||||
|
lessopen = ["execute"] # Support $LESSOPEN preprocessor
|
||||||
build-assets = ["syntect/yaml-load", "syntect/plist-load", "regex", "walkdir"]
|
build-assets = ["syntect/yaml-load", "syntect/plist-load", "regex", "walkdir"]
|
||||||
|
|
||||||
# You need to use one of these if you depend on bat as a library:
|
# You need to use one of these if you depend on bat as a library:
|
||||||
@@ -41,65 +42,88 @@ regex-onig = ["syntect/regex-onig"] # Use the "oniguruma" regex engine
|
|||||||
regex-fancy = ["syntect/regex-fancy"] # Use the rust-only "fancy-regex" engine
|
regex-fancy = ["syntect/regex-fancy"] # Use the rust-only "fancy-regex" engine
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
nu-ansi-term = "0.49.0"
|
nu-ansi-term = "0.50.3"
|
||||||
ansi_colours = "^1.2"
|
ansi_colours = "^1.2"
|
||||||
bincode = "1.0"
|
bincode = "1.0"
|
||||||
console = "0.15.5"
|
console = "0.16.2"
|
||||||
flate2 = "1.0"
|
flate2 = "1.1"
|
||||||
once_cell = "1.18"
|
once_cell = "1.20"
|
||||||
thiserror = "1.0"
|
thiserror = "2.0"
|
||||||
wild = { version = "2.1", optional = true }
|
wild = { version = "2.2", optional = true }
|
||||||
content_inspector = "0.2.4"
|
content_inspector = "0.2.4"
|
||||||
shell-words = { version = "1.1.0", optional = true }
|
shell-words = { version = "1.1.1", optional = true }
|
||||||
unicode-width = "0.1.10"
|
minus = { version = "5.6", optional = true, features = [
|
||||||
|
"dynamic_output",
|
||||||
|
"search",
|
||||||
|
] }
|
||||||
|
unicode-width = "0.2.2"
|
||||||
globset = "0.4"
|
globset = "0.4"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = "1.0"
|
||||||
serde_yaml = "0.9"
|
serde_derive = "1.0"
|
||||||
|
serde_yaml = "0.9.28"
|
||||||
semver = "1.0"
|
semver = "1.0"
|
||||||
path_abs = { version = "0.5", default-features = false }
|
path_abs = { version = "0.5", default-features = false }
|
||||||
clircle = "0.4"
|
clircle = { version = "0.6.1", default-features = false }
|
||||||
bugreport = { version = "0.5.0", optional = true }
|
bugreport = { version = "0.5.0", optional = true }
|
||||||
etcetera = { version = "0.8.0", optional = true }
|
etcetera = { version = "0.11.0", optional = true }
|
||||||
grep-cli = { version = "0.1.9", optional = true }
|
grep-cli = { version = "0.1.12", optional = true }
|
||||||
regex = { version = "1.8.3", optional = true }
|
regex = { version = "1.12.2", optional = true }
|
||||||
walkdir = { version = "2.3", optional = true }
|
walkdir = { version = "2.5", optional = true }
|
||||||
bytesize = { version = "1.3.0" }
|
bytesize = { version = "2.3.1" }
|
||||||
encoding_rs = "0.8.33"
|
encoding_rs = "0.8.35"
|
||||||
os_str_bytes = { version = "~6.4", optional = true }
|
execute = { version = "0.2.15", optional = true }
|
||||||
run_script = { version = "^0.10.0", optional = true}
|
terminal-colorsaurus = "1.0"
|
||||||
|
unicode-segmentation = "1.13.2"
|
||||||
|
itertools = "0.14.0"
|
||||||
|
|
||||||
[dependencies.git2]
|
[dependencies.git2]
|
||||||
version = "0.18"
|
version = "0.20"
|
||||||
optional = true
|
optional = true
|
||||||
default-features = false
|
default-features = false
|
||||||
|
|
||||||
[dependencies.syntect]
|
[dependencies.syntect]
|
||||||
version = "5.0.0"
|
version = "5.3.0"
|
||||||
default-features = false
|
default-features = false
|
||||||
features = ["parsing"]
|
features = ["parsing"]
|
||||||
|
|
||||||
[dependencies.clap]
|
[dependencies.clap]
|
||||||
version = "4.4.6"
|
version = "4.5.60"
|
||||||
optional = true
|
optional = true
|
||||||
features = ["wrap_help", "cargo"]
|
features = ["wrap_help", "cargo"]
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
[target.'cfg(target_os = "macos")'.dependencies]
|
||||||
home = "0.5.4"
|
plist = "1.7.0"
|
||||||
plist = "1.4.3"
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
assert_cmd = "2.0.10"
|
assert_cmd = "2.0.16"
|
||||||
expect-test = "1.4.1"
|
expect-test = "1.5.0"
|
||||||
serial_test = { version = "2.0.0", default-features = false }
|
serial_test = { version = "2.0.0", default-features = false }
|
||||||
predicates = "3.0.3"
|
predicates = "3.1.3"
|
||||||
wait-timeout = "0.2.0"
|
wait-timeout = "0.2.1"
|
||||||
tempfile = "3.8.0"
|
tempfile = "3.27.0"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
|
||||||
[target.'cfg(unix)'.dev-dependencies]
|
[target.'cfg(unix)'.dev-dependencies]
|
||||||
nix = { version = "0.26.2", default-features = false, features = ["term"] }
|
nix = { version = "0.31", default-features = false, features = ["term"] }
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
anyhow = "1.0.97"
|
||||||
|
indexmap = { version = "2.13.0", features = ["serde"] }
|
||||||
|
itertools = "0.14.0"
|
||||||
|
once_cell = "1.20"
|
||||||
|
prettyplease = "0.2.37"
|
||||||
|
proc-macro2 = "1.0.106"
|
||||||
|
quote = "1.0.45"
|
||||||
|
regex = "1.12.2"
|
||||||
|
serde = "1.0"
|
||||||
|
serde_derive = "1.0"
|
||||||
|
serde_with = { version = "3.17.0", default-features = false, features = ["macros"] }
|
||||||
|
syn = { version = "2.0.104", features = ["full"] }
|
||||||
|
toml = { version = "1.1.1", features = ["preserve_order"] }
|
||||||
|
walkdir = "2.5"
|
||||||
|
|
||||||
[build-dependencies.clap]
|
[build-dependencies.clap]
|
||||||
version = "4.4.6"
|
version = "4.5.60"
|
||||||
optional = true
|
optional = true
|
||||||
features = ["wrap_help", "cargo"]
|
features = ["wrap_help", "cargo"]
|
||||||
|
|
||||||
|
|||||||
@@ -19,29 +19,6 @@
|
|||||||
[<a href="doc/README-ru.md">Русский</a>]
|
[<a href="doc/README-ru.md">Русский</a>]
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
### Sponsors
|
|
||||||
|
|
||||||
A special *thank you* goes to our biggest <a href="doc/sponsors.md">sponsors</a>:<br>
|
|
||||||
<a href="https://workos.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=bat&utm_source=github">
|
|
||||||
<img src="doc/sponsors/workos-logo-white-bg.svg" width="200" alt="WorkOS">
|
|
||||||
<br>
|
|
||||||
<strong>Your app, enterprise-ready.</strong>
|
|
||||||
<br>
|
|
||||||
<sub>Start selling to enterprise customers with just a few lines of code.</sub>
|
|
||||||
<br>
|
|
||||||
<sup>Add Single Sign-On (and more) in minutes instead of months.</sup>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://www.warp.dev/?utm_source=github&utm_medium=referral&utm_campaign=bat_20231001">
|
|
||||||
<img src="doc/sponsors/warp-logo.png" width="200" alt="Warp">
|
|
||||||
<br>
|
|
||||||
<strong>Warp is a modern, Rust-based terminal with AI built in<br>so you and your team can build great software, faster.</strong>
|
|
||||||
<br>
|
|
||||||
<sub>Feel more productive on the command line with parameterized commands,</sub>
|
|
||||||
<br>
|
|
||||||
<sup>autosuggestions, and an IDE-like text editor.</sup>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
### Syntax highlighting
|
### Syntax highlighting
|
||||||
|
|
||||||
`bat` supports syntax highlighting for a large number of programming and markup
|
`bat` supports syntax highlighting for a large number of programming and markup
|
||||||
@@ -52,7 +29,7 @@ languages:
|
|||||||
### Git integration
|
### Git integration
|
||||||
|
|
||||||
`bat` communicates with `git` to show modifications with respect to the index
|
`bat` communicates with `git` to show modifications with respect to the index
|
||||||
(see left side bar):
|
(see left sidebar):
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -79,13 +56,13 @@ Whenever `bat` detects a non-interactive terminal (i.e. when you pipe into anoth
|
|||||||
Display a single file on the terminal
|
Display a single file on the terminal
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> bat README.md
|
bat README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
Display multiple files at once
|
Display multiple files at once
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> bat src/*.rs
|
bat src/*.rs
|
||||||
```
|
```
|
||||||
|
|
||||||
Read from stdin, determine the syntax automatically (note, highlighting will
|
Read from stdin, determine the syntax automatically (note, highlighting will
|
||||||
@@ -93,18 +70,18 @@ only work if the syntax can be determined from the first line of the file,
|
|||||||
usually through a shebang such as `#!/bin/sh`)
|
usually through a shebang such as `#!/bin/sh`)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> curl -s https://sh.rustup.rs | bat
|
curl -s https://sh.rustup.rs | bat
|
||||||
```
|
```
|
||||||
|
|
||||||
Read from stdin, specify the language explicitly
|
Read from stdin, specify the language explicitly
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> yaml2json .travis.yml | json_pp | bat -l json
|
yaml2json .travis.yml | json_pp | bat -l json
|
||||||
```
|
```
|
||||||
|
|
||||||
Show and highlight non-printable characters:
|
Show and highlight non-printable characters:
|
||||||
```bash
|
```bash
|
||||||
> bat -A /etc/hosts
|
bat -A /etc/hosts
|
||||||
```
|
```
|
||||||
|
|
||||||
Use it as a `cat` replacement:
|
Use it as a `cat` replacement:
|
||||||
@@ -124,7 +101,7 @@ bat f - g # output 'f', then stdin, then 'g'.
|
|||||||
#### `fzf`
|
#### `fzf`
|
||||||
|
|
||||||
You can use `bat` as a previewer for [`fzf`](https://github.com/junegunn/fzf). To do this,
|
You can use `bat` as a previewer for [`fzf`](https://github.com/junegunn/fzf). To do this,
|
||||||
use `bat`s `--color=always` option to force colorized output. You can also use `--line-range`
|
use `bat`'s `--color=always` option to force colorized output. You can also use `--line-range`
|
||||||
option to restrict the load times for long files:
|
option to restrict the load times for long files:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -181,7 +158,7 @@ You can combine `bat` with `git diff` to view lines around code changes with pro
|
|||||||
highlighting:
|
highlighting:
|
||||||
```bash
|
```bash
|
||||||
batdiff() {
|
batdiff() {
|
||||||
git diff --name-only --relative --diff-filter=d | xargs bat --diff
|
git diff --name-only --relative --diff-filter=d -z | xargs -0 bat --diff
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
If you prefer to use this as a separate tool, check out `batdiff` in [`bat-extras`](https://github.com/eth-p/bat-extras).
|
If you prefer to use this as a separate tool, check out `batdiff` in [`bat-extras`](https://github.com/eth-p/bat-extras).
|
||||||
@@ -204,20 +181,15 @@ bat main.cpp | xclip
|
|||||||
`MANPAGER` environment variable:
|
`MANPAGER` environment variable:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
export MANPAGER="bat -plman"
|
||||||
man 2 select
|
man 2 select
|
||||||
```
|
```
|
||||||
(replace `bat` with `batcat` if you are on Debian or Ubuntu)
|
(on some older Debian or Ubuntu releases, the executable is named `batcat` instead of `bat`)
|
||||||
|
|
||||||
It might also be necessary to set `MANROFFOPT="-c"` if you experience
|
|
||||||
formatting problems.
|
|
||||||
|
|
||||||
If you prefer to have this bundled in a new command, you can also use [`batman`](https://github.com/eth-p/bat-extras/blob/master/doc/batman.md).
|
If you prefer to have this bundled in a new command, you can also use [`batman`](https://github.com/eth-p/bat-extras/blob/master/doc/batman.md).
|
||||||
|
|
||||||
Note that the [Manpage syntax](assets/syntaxes/02_Extra/Manpage.sublime-syntax) is developed in this repository and still needs some work.
|
Note that the [Manpage syntax](assets/syntaxes/02_Extra/Manpage.sublime-syntax) is developed in this repository and still needs some work.
|
||||||
|
|
||||||
Also, note that this will [not work](https://github.com/sharkdp/bat/issues/1145) with Mandocs `man` implementation.
|
|
||||||
|
|
||||||
#### `prettier` / `shfmt` / `rustfmt`
|
#### `prettier` / `shfmt` / `rustfmt`
|
||||||
|
|
||||||
The [`prettybat`](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md) script is a wrapper that will format code and print it with `bat`.
|
The [`prettybat`](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md) script is a wrapper that will format code and print it with `bat`.
|
||||||
@@ -245,16 +217,41 @@ alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
|
|||||||
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
|
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For `fish`, you can use abbreviations:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
abbr -a --position anywhere -- --help '--help | bat -plhelp'
|
||||||
|
abbr -a --position anywhere -- -h '-h | bat -plhelp'
|
||||||
|
```
|
||||||
|
|
||||||
This way, you can keep on using `cp --help`, but get colorized help pages.
|
This way, you can keep on using `cp --help`, but get colorized help pages.
|
||||||
|
|
||||||
Be aware that in some cases, `-h` may not be a shorthand of `--help` (for example with `ls`).
|
> [!TIP]
|
||||||
|
> To remove these abbreviations later, run:
|
||||||
|
> ```fish
|
||||||
|
> abbr -e -- --help
|
||||||
|
> abbr -e -- -h
|
||||||
|
> ```
|
||||||
|
> The `--` before the abbreviation name is required because `--help` and `-h` start with dashes, which would otherwise be interpreted as flags to `abbr` itself.
|
||||||
|
|
||||||
|
Be aware that in some cases, `-h` may not be a shorthand of `--help` (for example with `ls`). In cases where you need to use `-h`
|
||||||
|
as a command argument you can prepend `\` to the argument (eg. `ls \-h`) to escape the aliasing defined above.
|
||||||
|
|
||||||
Please report any issues with the help syntax in [this repository](https://github.com/victor-gp/cmd-help-sublime-syntax).
|
Please report any issues with the help syntax in [this repository](https://github.com/victor-gp/cmd-help-sublime-syntax).
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
[](https://repology.org/project/bat-cat/versions)
|
<!--
|
||||||
|
|
||||||
|
Installation instructions need to:
|
||||||
|
* be for widely used systems
|
||||||
|
* be non-obvious
|
||||||
|
* be from somewhat official sources
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
[](https://repology.org/project/bat-cat/versions)
|
||||||
|
|
||||||
### On Ubuntu (using `apt`)
|
### On Ubuntu (using `apt`)
|
||||||
*... and other Debian-based Linux distributions.*
|
*... and other Debian-based Linux distributions.*
|
||||||
@@ -267,13 +264,18 @@ If your Ubuntu/Debian installation is new enough you can simply run:
|
|||||||
sudo apt install bat
|
sudo apt install bat
|
||||||
```
|
```
|
||||||
|
|
||||||
**Important**: If you install `bat` this way, please note that the executable may be installed as `batcat` instead of `bat` (due to [a name
|
**Important**: On some older Ubuntu/Debian releases, the executable is installed as `batcat` instead of `bat` (due to [a name
|
||||||
clash with another package](https://github.com/sharkdp/bat/issues/982)). You can set up a `bat -> batcat` symlink or alias to prevent any issues that may come up because of this and to be consistent with other distributions:
|
clash with another package](https://github.com/sharkdp/bat/issues/982)). On newer releases, the executable is available as `bat`. If `bat --version` does not work after installation, try `batcat --version` instead. You can set up a `bat -> batcat` symlink or alias to prevent any issues that may come up because of this and to be consistent with other distributions:
|
||||||
``` bash
|
``` bash
|
||||||
mkdir -p ~/.local/bin
|
mkdir -p ~/.local/bin
|
||||||
ln -s /usr/bin/batcat ~/.local/bin/bat
|
ln -s /usr/bin/batcat ~/.local/bin/bat
|
||||||
```
|
```
|
||||||
|
|
||||||
|
an example alias for `batcat` as `bat`:
|
||||||
|
```bash
|
||||||
|
alias bat="batcat"
|
||||||
|
```
|
||||||
|
|
||||||
### On Ubuntu (using most recent `.deb` packages)
|
### On Ubuntu (using most recent `.deb` packages)
|
||||||
*... and other Debian-based Linux distributions.*
|
*... and other Debian-based Linux distributions.*
|
||||||
|
|
||||||
@@ -296,7 +298,7 @@ apk add bat
|
|||||||
|
|
||||||
### On Arch Linux
|
### On Arch Linux
|
||||||
|
|
||||||
You can install [the `bat` package](https://www.archlinux.org/packages/community/x86_64/bat/)
|
You can install [the `bat` package](https://www.archlinux.org/packages/extra/x86_64/bat/)
|
||||||
from the official sources:
|
from the official sources:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -311,14 +313,6 @@ You can install [the `bat` package](https://koji.fedoraproject.org/koji/packagei
|
|||||||
dnf install bat
|
dnf install bat
|
||||||
```
|
```
|
||||||
|
|
||||||
### On Funtoo Linux
|
|
||||||
|
|
||||||
You can install [the `bat` package](https://github.com/funtoo/dev-kit/tree/1.4-release/sys-apps/bat) from dev-kit.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
emerge sys-apps/bat
|
|
||||||
```
|
|
||||||
|
|
||||||
### On Gentoo Linux
|
### On Gentoo Linux
|
||||||
|
|
||||||
You can install [the `bat` package](https://packages.gentoo.org/packages/sys-apps/bat)
|
You can install [the `bat` package](https://packages.gentoo.org/packages/sys-apps/bat)
|
||||||
@@ -328,20 +322,6 @@ from the official sources:
|
|||||||
emerge sys-apps/bat
|
emerge sys-apps/bat
|
||||||
```
|
```
|
||||||
|
|
||||||
### On Void Linux
|
|
||||||
|
|
||||||
You can install `bat` via xbps-install:
|
|
||||||
```bash
|
|
||||||
xbps-install -S bat
|
|
||||||
```
|
|
||||||
|
|
||||||
### On Termux
|
|
||||||
|
|
||||||
You can install `bat` via pkg:
|
|
||||||
```bash
|
|
||||||
pkg install bat
|
|
||||||
```
|
|
||||||
|
|
||||||
### On FreeBSD
|
### On FreeBSD
|
||||||
|
|
||||||
You can install a precompiled [`bat` package](https://www.freshports.org/textproc/bat) with pkg:
|
You can install a precompiled [`bat` package](https://www.freshports.org/textproc/bat) with pkg:
|
||||||
@@ -409,7 +389,7 @@ take a look at the ["Using `bat` on Windows"](#using-bat-on-windows) section.
|
|||||||
|
|
||||||
#### Prerequisites
|
#### Prerequisites
|
||||||
|
|
||||||
You will need to install the [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) package.
|
You will need to install the [Visual C++ Redistributable](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist#latest-microsoft-visual-c-redistributable-version)
|
||||||
|
|
||||||
#### With WinGet
|
#### With WinGet
|
||||||
|
|
||||||
@@ -447,26 +427,44 @@ binaries are also available: look for archives with `musl` in the file name.
|
|||||||
|
|
||||||
### From source
|
### From source
|
||||||
|
|
||||||
If you want to build `bat` from source, you need Rust 1.70.0 or
|
If you want to build `bat` from source, you need Rust 1.79.0 or
|
||||||
higher. You can then use `cargo` to build everything:
|
higher. You can then use `cargo` to build everything:
|
||||||
|
|
||||||
|
#### From local source
|
||||||
|
```bash
|
||||||
|
cargo install --path . --locked
|
||||||
|
```
|
||||||
|
> [!NOTE]
|
||||||
|
> The `--path .` above specifies the directory of the source code and NOT where `bat` will be installed.
|
||||||
|
> For more information see the docs for [`cargo install`](https://doc.rust-lang.org/cargo/commands/cargo-install.html).
|
||||||
|
|
||||||
|
#### From `crates.io`
|
||||||
```bash
|
```bash
|
||||||
cargo install --locked bat
|
cargo install --locked bat
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that additional files like the man page or shell completion
|
Note that additional files like the man page or shell completion
|
||||||
files can not be installed in this way. They will be generated by `cargo` and should be available in the cargo target folder (under `build`).
|
files can not be installed automatically in both these ways.
|
||||||
|
If installing from a local source, they will be generated by `cargo`
|
||||||
|
and should be available in the cargo target folder under `build`.
|
||||||
|
|
||||||
|
Furthermore, shell completions are also available by running:
|
||||||
|
```bash
|
||||||
|
bat --completion <shell>
|
||||||
|
# see --help for supported shells
|
||||||
|
```
|
||||||
|
|
||||||
## Customization
|
## Customization
|
||||||
|
|
||||||
### Highlighting theme
|
### Highlighting theme
|
||||||
|
|
||||||
Use `bat --list-themes` to get a list of all available themes for syntax
|
Use `bat --list-themes` to get a list of all available themes for syntax
|
||||||
highlighting. To select the `TwoDark` theme, call `bat` with the
|
highlighting. By default, `bat` uses `Monokai Extended` or `Monokai Extended Light`
|
||||||
`--theme=TwoDark` option or set the `BAT_THEME` environment variable to
|
for dark and light themes respectively. To select the `TwoDark` theme, call `bat`
|
||||||
|
with the `--theme=TwoDark` option or set the `BAT_THEME` environment variable to
|
||||||
`TwoDark`. Use `export BAT_THEME="TwoDark"` in your shell's startup file to
|
`TwoDark`. Use `export BAT_THEME="TwoDark"` in your shell's startup file to
|
||||||
make the change permanent. Alternatively, use `bat`s
|
make the change permanent. Alternatively, use `bat`'s
|
||||||
[configuration file](https://github.com/sharkdp/bat#configuration-file).
|
[configuration file](#configuration-file).
|
||||||
|
|
||||||
If you want to preview the different themes on a custom file, you can use
|
If you want to preview the different themes on a custom file, you can use
|
||||||
the following command (you need [`fzf`](https://github.com/junegunn/fzf) for this):
|
the following command (you need [`fzf`](https://github.com/junegunn/fzf) for this):
|
||||||
@@ -474,10 +472,12 @@ the following command (you need [`fzf`](https://github.com/junegunn/fzf) for thi
|
|||||||
bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
|
bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
|
||||||
```
|
```
|
||||||
|
|
||||||
`bat` looks good on a dark background by default. However, if your terminal uses a
|
`bat` automatically picks a fitting theme depending on your terminal's background color.
|
||||||
light background, some themes like `GitHub` or `OneHalfLight` will work better for you.
|
You can use the `--theme-dark` / `--theme-light` options or the `BAT_THEME_DARK` / `BAT_THEME_LIGHT` environment variables
|
||||||
|
to customize the themes used. This is especially useful if you frequently switch between dark and light mode.
|
||||||
|
|
||||||
You can also use a custom theme by following the
|
You can also use a custom theme by following the
|
||||||
['Adding new themes' section below](https://github.com/sharkdp/bat#adding-new-themes).
|
['Adding new themes' section below](#adding-new-themes).
|
||||||
|
|
||||||
### 8-bit themes
|
### 8-bit themes
|
||||||
|
|
||||||
@@ -486,12 +486,12 @@ even when truecolor support is available:
|
|||||||
|
|
||||||
- `ansi` looks decent on any terminal. It uses 3-bit colors: black, red, green,
|
- `ansi` looks decent on any terminal. It uses 3-bit colors: black, red, green,
|
||||||
yellow, blue, magenta, cyan, and white.
|
yellow, blue, magenta, cyan, and white.
|
||||||
- `base16` is designed for [base16](https://github.com/chriskempson/base16) terminal themes. It uses
|
- `base16` is designed for [base16](https://github.com/tinted-theming/home) terminal themes. It uses
|
||||||
4-bit colors (3-bit colors plus bright variants) in accordance with the
|
4-bit colors (3-bit colors plus bright variants) in accordance with the
|
||||||
[base16 styling guidelines](https://github.com/chriskempson/base16/blob/master/styling.md).
|
[base16 styling guidelines](https://github.com/tinted-theming/home/blob/main/styling.md).
|
||||||
- `base16-256` is designed for [base16-shell](https://github.com/chriskempson/base16-shell).
|
- `base16-256` is designed for [tinted-shell](https://github.com/tinted-theming/tinted-shell).
|
||||||
It replaces certain bright colors with 8-bit colors from 16 to 21. **Do not** use this simply
|
It replaces certain bright colors with 8-bit colors from 16 to 21. **Do not** use this simply
|
||||||
because you have a 256-color terminal but are not using base16-shell.
|
because you have a 256-color terminal but are not using tinted-shell.
|
||||||
|
|
||||||
Although these themes are more restricted, they have three advantages over truecolor themes. They:
|
Although these themes are more restricted, they have three advantages over truecolor themes. They:
|
||||||
|
|
||||||
@@ -501,11 +501,51 @@ Although these themes are more restricted, they have three advantages over truec
|
|||||||
|
|
||||||
### Output style
|
### Output style
|
||||||
|
|
||||||
You can use the `--style` option to control the appearance of `bat`s output.
|
You can use the `--style` option to control the appearance of `bat`'s output.
|
||||||
You can use `--style=numbers,changes`, for example, to show only Git changes
|
You can use `--style=numbers,changes`, for example, to show only Git changes
|
||||||
and line numbers but no grid and no file header. Set the `BAT_STYLE` environment
|
and line numbers but no grid and no file header. Set the `BAT_STYLE` environment
|
||||||
variable to make these changes permanent or use `bat`s
|
variable to make these changes permanent or use `bat`'s
|
||||||
[configuration file](https://github.com/sharkdp/bat#configuration-file).
|
[configuration file](#configuration-file).
|
||||||
|
|
||||||
|
By default, `bat` enables `changes`, `grid`, `header-filename`, `numbers`, and `snip`.
|
||||||
|
|
||||||
|
The available pre-defined styles are:
|
||||||
|
|
||||||
|
| Style | Description |
|
||||||
|
|-------|-------------|
|
||||||
|
| `default` | Enables the recommended style components listed above. |
|
||||||
|
| `full` | Enables all available components. |
|
||||||
|
| `auto` | Same as `default`, unless the output is piped. |
|
||||||
|
| `plain` | Disables all available components. |
|
||||||
|
|
||||||
|
The available individual components are:
|
||||||
|
|
||||||
|
| Component | Description |
|
||||||
|
|-----------|-------------|
|
||||||
|
| `changes` | Show Git modification markers. |
|
||||||
|
| `header` | Alias for `header-filename`. |
|
||||||
|
| `header-filename` | Show filenames before the content. |
|
||||||
|
| `header-filesize` | Show file sizes before the content. |
|
||||||
|
| `grid` | Vertical/horizontal lines to separate the side bar and header from the content. |
|
||||||
|
| `rule` | Horizontal lines to delimit files. |
|
||||||
|
| `numbers` | Show line numbers in the side bar. |
|
||||||
|
| `snip` | Draw separation lines between distinct line ranges. |
|
||||||
|
|
||||||
|
>[!tip]
|
||||||
|
> If you specify a default style in `bat`'s config file, you can change which components
|
||||||
|
> are displayed during a single run of `bat` using the `--style` command-line argument.
|
||||||
|
> By prefixing a component with `+` or `-`, it can be added or removed from the current style.
|
||||||
|
>
|
||||||
|
> For example, if your config contains `--style=full,-snip`, you can run bat with
|
||||||
|
> `--style=-grid,+snip` to remove the grid and add back the `snip` component.
|
||||||
|
> Or, if you want to override the styles completely, you use `--style=numbers` to
|
||||||
|
> only show the line numbers.
|
||||||
|
|
||||||
|
### Decorations
|
||||||
|
|
||||||
|
By default, `bat` only shows decorations (such as line numbers, file headers, grid borders, etc.) when outputting to an interactive terminal. You can control this behavior with the `--decorations` option. Use `--decorations=always` to show decorations even when piping output to another command, or `--decorations=never` to disable them entirely. Possible values are `auto` (default), `never`, and `always`.
|
||||||
|
|
||||||
|
There is also the `--force-colorization` option, which is an alias for `--decorations=always --color=always`. This is useful if you want to keep colorization and decorations when piping `bat`'s output to another program.
|
||||||
|
|
||||||
### Adding new syntaxes / language definitions
|
### Adding new syntaxes / language definitions
|
||||||
|
|
||||||
@@ -552,6 +592,9 @@ syntax:
|
|||||||
### Adding new themes
|
### Adding new themes
|
||||||
|
|
||||||
This works very similar to how we add new syntax definitions.
|
This works very similar to how we add new syntax definitions.
|
||||||
|
> [!NOTE]
|
||||||
|
> Custom themes must be stored in [`.tmTheme` files](https://www.sublimetext.com/docs/color_schemes_tmtheme.html).
|
||||||
|
> Newer `.sublime-color-scheme` files are currently not supported.
|
||||||
|
|
||||||
First, create a folder with the new syntax highlighting themes:
|
First, create a folder with the new syntax highlighting themes:
|
||||||
```bash
|
```bash
|
||||||
@@ -566,6 +609,8 @@ bat cache --build
|
|||||||
```
|
```
|
||||||
|
|
||||||
Finally, use `bat --list-themes` to check if the new themes are available.
|
Finally, use `bat --list-themes` to check if the new themes are available.
|
||||||
|
> [!NOTE]
|
||||||
|
> `bat` uses the name of the `.tmTheme` file for the theme's name.
|
||||||
|
|
||||||
### Adding or changing file type associations
|
### Adding or changing file type associations
|
||||||
|
|
||||||
@@ -598,35 +643,58 @@ syntax, use (this mapping is already built in):
|
|||||||
### Using a different pager
|
### Using a different pager
|
||||||
|
|
||||||
`bat` uses the pager that is specified in the `PAGER` environment variable. If this variable is not
|
`bat` uses the pager that is specified in the `PAGER` environment variable. If this variable is not
|
||||||
set, `less` is used by default. If you want to use a different pager, you can either modify the
|
set, `less` is used by default. You can also use bat's built-in pager with `--pager=builtin` or
|
||||||
`PAGER` variable or set the `BAT_PAGER` environment variable to override what is specified in
|
by setting the `BAT_PAGER` environment variable to "builtin".
|
||||||
`PAGER`.
|
|
||||||
|
|
||||||
**Note**: If `PAGER` is `more` or `most`, `bat` will silently use `less` instead to ensure support for colors.
|
If you want to use a different pager, you can either modify the `PAGER` variable or set the
|
||||||
|
`BAT_PAGER` environment variable to override what is specified in `PAGER`.
|
||||||
|
|
||||||
|
>[!NOTE]
|
||||||
|
> If `PAGER` is `more` or `most`, `bat` will silently use `less` instead to ensure support for colors.
|
||||||
|
|
||||||
If you want to pass command-line arguments to the pager, you can also set them via the
|
If you want to pass command-line arguments to the pager, you can also set them via the
|
||||||
`PAGER`/`BAT_PAGER` variables:
|
`PAGER`/`BAT_PAGER` variables:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export BAT_PAGER="less -RF"
|
export BAT_PAGER="less -RFK"
|
||||||
```
|
```
|
||||||
|
|
||||||
Instead of using environment variables, you can also use `bat`s [configuration file](https://github.com/sharkdp/bat#configuration-file) to configure the pager (`--pager` option).
|
Instead of using environment variables, you can also use `bat`'s [configuration file](#configuration-file) to configure the pager (`--pager` option).
|
||||||
|
|
||||||
**Note**: By default, if the pager is set to `less` (and no command-line options are specified),
|
|
||||||
`bat` will pass the following command line options to the pager: `-R`/`--RAW-CONTROL-CHARS`,
|
|
||||||
`-F`/`--quit-if-one-screen` and `-X`/`--no-init`. The last option (`-X`) is only used for `less`
|
|
||||||
versions older than 530.
|
|
||||||
|
|
||||||
The `-R` option is needed to interpret ANSI colors correctly. The second option (`-F`) instructs
|
### Using `less` as a pager
|
||||||
less to exit immediately if the output size is smaller than the vertical size of the terminal.
|
|
||||||
This is convenient for small files because you do not have to press `q` to quit the pager. The
|
|
||||||
third option (`-X`) is needed to fix a bug with the `--quit-if-one-screen` feature in old versions
|
|
||||||
of `less`. Unfortunately, it also breaks mouse-wheel support in `less`.
|
|
||||||
|
|
||||||
If you want to enable mouse-wheel scrolling on older versions of `less`, you can pass just `-R` (as
|
When using `less` as a pager, `bat` will automatically pass extra options along to `less`
|
||||||
in the example above, this will disable the quit-if-one-screen feature). For less 530 or newer,
|
to improve the experience. Specifically, `-R`/`--RAW-CONTROL-CHARS`, `-F`/`--quit-if-one-screen`,
|
||||||
it should work out of the box.
|
`-K`/`--quit-on-intr` and under certain conditions, `-X`/`--no-init` and/or `-S`/`--chop-long-lines`.
|
||||||
|
|
||||||
|
>[!IMPORTANT]
|
||||||
|
> These options will not be added if:
|
||||||
|
> - The pager is not named `less`.
|
||||||
|
> - The `--pager` argument contains any command-line arguments (e.g. `--pager="less -R"`).
|
||||||
|
> - The `BAT_PAGER` environment variable contains any command-line arguments (e.g. `export BAT_PAGER="less -R"`)
|
||||||
|
>
|
||||||
|
> The `--quit-if-one-screen` option will not be added when:
|
||||||
|
> - The `--paging=always` argument is used.
|
||||||
|
> - The `BAT_PAGING` environment is set to `always`.
|
||||||
|
|
||||||
|
The `-R`/`--RAW-CONTROL-CHARS` option is needed to interpret ANSI colors correctly.
|
||||||
|
|
||||||
|
The `-F`/`--quit-if-one-screen` option instructs `less` to exit immediately if the output size is smaller than
|
||||||
|
the vertical size of the terminal. This is convenient for small files because you do not
|
||||||
|
have to press `q` to quit the pager.
|
||||||
|
|
||||||
|
The `-K`/`--quit-on-intr` option instructs `less` to exit immediately when an interrupt signal is received.
|
||||||
|
This is useful to ensure that `less` quits together with `bat` on SIGINT.
|
||||||
|
|
||||||
|
The `-X`/`--no-init` option is added to versions of `less` older than version 530 (older than 558 on Windows) to
|
||||||
|
fix a bug with the `-F`/`--quit-if-one-screen` feature. Unfortunately, it also breaks mouse-wheel support in `less`.
|
||||||
|
If you want to enable mouse-wheel scrolling on older versions of `less` and do not mind losing
|
||||||
|
the quit-if-one-screen feature, you can set the pager (via `--pager` or `BAT_PAGER`) to `less -R`.
|
||||||
|
For `less` 530 or newer, it should work out of the box.
|
||||||
|
|
||||||
|
The `-S`/`--chop-long-lines` option is added when `bat`'s `-S`/`--chop-long-lines` option is used. This tells `less`
|
||||||
|
to truncate any lines larger than the terminal width.
|
||||||
|
|
||||||
### Indentation
|
### Indentation
|
||||||
|
|
||||||
@@ -640,12 +708,40 @@ sidebar. Calling `bat` with `--tabs=0` will override it and let tabs be consumed
|
|||||||
|
|
||||||
### Dark mode
|
### Dark mode
|
||||||
|
|
||||||
If you make use of the dark mode feature in macOS, you might want to configure `bat` to use a different
|
If you make use of the dark mode feature in **macOS**, you might want to configure `bat` to use a different
|
||||||
theme based on the OS theme. The following snippet uses the `default` theme when in the _dark mode_
|
theme based on the OS theme. The following snippet uses the `default` theme when in the _dark mode_
|
||||||
and the `GitHub` theme when in the _light mode_.
|
and the `GitHub` theme when in the _light mode_.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub)"
|
alias cat="bat --theme auto:system --theme-dark default --theme-light GitHub"
|
||||||
|
```
|
||||||
|
|
||||||
|
The same dark mode feature is now available in **GNOME** and affects the `org.gnome.desktop.interface color-scheme` setting. The following code converts the above to use said setting.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# .bashrc
|
||||||
|
sys_color_scheme_is_dark() {
|
||||||
|
condition=$(gsettings get org.gnome.desktop.interface color-scheme)
|
||||||
|
condition=$(echo "$condition" | tr -d "[:space:]'")
|
||||||
|
if [ $condition == "prefer-dark" ]; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bat_alias_wrapper() {
|
||||||
|
#get color scheme
|
||||||
|
sys_color_scheme_is_dark
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
# bat command with dark color scheme
|
||||||
|
bat --theme=default "$@"
|
||||||
|
else
|
||||||
|
# bat command with light color scheme
|
||||||
|
bat --theme=GitHub "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
alias cat='bat_alias_wrapper'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -657,10 +753,11 @@ on your operating system. To get the default path for your system, call
|
|||||||
bat --config-file
|
bat --config-file
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, you can use the `BAT_CONFIG_PATH` environment variable to point `bat` to a
|
Alternatively, you can use `BAT_CONFIG_PATH` or `BAT_CONFIG_DIR` environment variables to point `bat`
|
||||||
non-default location of the configuration file:
|
to a non-default location of the configuration file or the configuration directory respectively:
|
||||||
```bash
|
```bash
|
||||||
export BAT_CONFIG_PATH="/path/to/bat.conf"
|
export BAT_CONFIG_PATH="/path/to/bat/bat.conf"
|
||||||
|
export BAT_CONFIG_DIR="/path/to/bat"
|
||||||
```
|
```
|
||||||
|
|
||||||
A default configuration file can be created with the `--generate-config-file` option.
|
A default configuration file can be created with the `--generate-config-file` option.
|
||||||
@@ -711,7 +808,7 @@ your `PATH` or [define an environment variable](#using-a-different-pager). The [
|
|||||||
Windows 10 natively supports colors in both `conhost.exe` (Command Prompt) and PowerShell since
|
Windows 10 natively supports colors in both `conhost.exe` (Command Prompt) and PowerShell since
|
||||||
[v1511](https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1511_(November_Update)), as
|
[v1511](https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1511_(November_Update)), as
|
||||||
well as in newer versions of bash. On earlier versions of Windows, you can use
|
well as in newer versions of bash. On earlier versions of Windows, you can use
|
||||||
[Cmder](http://cmder.net/), which includes [ConEmu](https://conemu.github.io/).
|
[Cmder](http://cmder.app/), which includes [ConEmu](https://conemu.github.io/).
|
||||||
|
|
||||||
**Note:** Old versions of `less` do not correctly interpret colors on Windows. To fix this, you can add the optional Unix tools to your PATH when installing Git. If you don’t have any other pagers installed, you can disable paging entirely by passing `--paging=never` or by setting `BAT_PAGER` to an empty string.
|
**Note:** Old versions of `less` do not correctly interpret colors on Windows. To fix this, you can add the optional Unix tools to your PATH when installing Git. If you don’t have any other pagers installed, you can disable paging entirely by passing `--paging=never` or by setting `BAT_PAGER` to an empty string.
|
||||||
|
|
||||||
@@ -741,9 +838,14 @@ bat() {
|
|||||||
|
|
||||||
If an input file contains color codes or other ANSI escape sequences or control characters, `bat` will have problems
|
If an input file contains color codes or other ANSI escape sequences or control characters, `bat` will have problems
|
||||||
performing syntax highlighting and text wrapping, and thus the output can become garbled.
|
performing syntax highlighting and text wrapping, and thus the output can become garbled.
|
||||||
When displaying such files it is recommended to disable both syntax highlighting and wrapping by
|
|
||||||
|
If your version of `bat` supports the `--strip-ansi=auto` option, it can be used to remove such sequences
|
||||||
|
before syntax highlighting. Alternatively, you may disable both syntax highlighting and wrapping by
|
||||||
passing the `--color=never --wrap=never` options to `bat`.
|
passing the `--color=never --wrap=never` options to `bat`.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> The `auto` option of `--strip-ansi` avoids removing escape sequences when the syntax is plain text.
|
||||||
|
|
||||||
### Terminals & colors
|
### Terminals & colors
|
||||||
|
|
||||||
`bat` handles terminals *with* and *without* truecolor support. However, the colors in most syntax
|
`bat` handles terminals *with* and *without* truecolor support. However, the colors in most syntax
|
||||||
@@ -795,7 +897,7 @@ bash assets/create.sh
|
|||||||
cargo install --path . --locked --force
|
cargo install --path . --locked --force
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to build an application that uses `bat`s pretty-printing
|
If you want to build an application that uses `bat`'s pretty-printing
|
||||||
features as a library, check out the [the API documentation](https://docs.rs/bat/).
|
features as a library, check out the [the API documentation](https://docs.rs/bat/).
|
||||||
Note that you have to use either `regex-onig` or `regex-fancy` as a feature
|
Note that you have to use either `regex-onig` or `regex-fancy` as a feature
|
||||||
when you depend on `bat` as a library.
|
when you depend on `bat` as a library.
|
||||||
@@ -813,7 +915,7 @@ Take a look at the [`CONTRIBUTING.md`](CONTRIBUTING.md) guide.
|
|||||||
|
|
||||||
## Security vulnerabilities
|
## Security vulnerabilities
|
||||||
|
|
||||||
Please contact [David Peter](https://david-peter.de/) via email if you want to report a vulnerability in `bat`.
|
See [`SECURITY.md`](SECURITY.md).
|
||||||
|
|
||||||
## Project goals and alternatives
|
## Project goals and alternatives
|
||||||
|
|
||||||
@@ -828,7 +930,7 @@ There are a lot of alternatives, if you are looking for similar programs. See
|
|||||||
[this document](doc/alternatives.md) for a comparison.
|
[this document](doc/alternatives.md) for a comparison.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
Copyright (c) 2018-2023 [bat-developers](https://github.com/sharkdp/bat).
|
Copyright (c) 2018-2025 [bat-developers](https://github.com/sharkdp/bat).
|
||||||
|
|
||||||
`bat` is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
|
`bat` is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Security Vulnerabilities
|
||||||
|
|
||||||
|
To report a security vulnerability, please contact [David Peter](https://david-peter.de/) via email.
|
||||||
Vendored
BIN
Binary file not shown.
Vendored
+172
-67
@@ -5,6 +5,24 @@ using namespace System.Management.Automation.Language
|
|||||||
Register-ArgumentCompleter -Native -CommandName '{{PROJECT_EXECUTABLE}}' -ScriptBlock {
|
Register-ArgumentCompleter -Native -CommandName '{{PROJECT_EXECUTABLE}}' -ScriptBlock {
|
||||||
param($wordToComplete, $commandAst, $cursorPosition)
|
param($wordToComplete, $commandAst, $cursorPosition)
|
||||||
|
|
||||||
|
$ArrayStyle = @('default', 'auto', 'full', 'plain', 'changes', 'header', 'header-filename', 'header-filesize', 'grid', 'rule', 'numbers', 'snip')
|
||||||
|
$ArrayCompletion = @('bash', 'fish', 'zsh', 'ps1')
|
||||||
|
$ArrayWhen = @('auto', 'never', 'always')
|
||||||
|
$ArrayYesNo = @('never', 'always')
|
||||||
|
$ArrayWrap = @('always', 'never', 'character', 'word')
|
||||||
|
$ArrayBinary = @('no-printing', 'as-text')
|
||||||
|
$ArrayPrint = @('unicode', 'caret')
|
||||||
|
|
||||||
|
function Get-MyThemes(){
|
||||||
|
$themes = {{PROJECT_EXECUTABLE}} --list-themes | ForEach-Object {$_ -replace "^(.*)$", '''$1'''} | select-object
|
||||||
|
return $themes
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-MyLanguages(){
|
||||||
|
$themes = {{PROJECT_EXECUTABLE}} --list-languages | ForEach-Object{[pscustomobject]@{MyParameter=$_.Substring(0,$_.IndexOf(":")).Trim();MyDescription=$_.Substring($_.IndexOf(":")+1)}} | select-object
|
||||||
|
return $themes
|
||||||
|
}
|
||||||
|
|
||||||
$commandElements = $commandAst.CommandElements
|
$commandElements = $commandAst.CommandElements
|
||||||
$command = @(
|
$command = @(
|
||||||
'{{PROJECT_EXECUTABLE}}'
|
'{{PROJECT_EXECUTABLE}}'
|
||||||
@@ -12,84 +30,171 @@ Register-ArgumentCompleter -Native -CommandName '{{PROJECT_EXECUTABLE}}' -Script
|
|||||||
$element = $commandElements[$i]
|
$element = $commandElements[$i]
|
||||||
if ($element -isnot [StringConstantExpressionAst] -or
|
if ($element -isnot [StringConstantExpressionAst] -or
|
||||||
$element.StringConstantType -ne [StringConstantType]::BareWord -or
|
$element.StringConstantType -ne [StringConstantType]::BareWord -or
|
||||||
$element.Value.StartsWith('-')) {
|
#$element.Value.StartsWith('-') -or
|
||||||
|
$element.Value -eq $wordToComplete) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
$element.Value
|
$element.Value
|
||||||
}) -join ';'
|
}) -join ';'
|
||||||
|
|
||||||
$completions = @(switch ($command) {
|
$completions = @(switch -Wildcard ($command) {
|
||||||
'{{PROJECT_EXECUTABLE}}' {
|
'*;--help' {
|
||||||
[CompletionResult]::new('-l', 'l', [CompletionResultType]::ParameterName, 'Set the language for syntax highlighting.')
|
break
|
||||||
[CompletionResult]::new('--language', 'language', [CompletionResultType]::ParameterName, 'Set the language for syntax highlighting.')
|
}
|
||||||
[CompletionResult]::new('-H', 'H', [CompletionResultType]::ParameterName, 'Highlight lines N through M.')
|
'*;--version' {
|
||||||
[CompletionResult]::new('--highlight-line', 'highlight-line', [CompletionResultType]::ParameterName, 'Highlight lines N through M.')
|
break
|
||||||
[CompletionResult]::new('--file-name', 'file-name', [CompletionResultType]::ParameterName, 'Specify the name to display for a file.')
|
}
|
||||||
[CompletionResult]::new('--diff-context', 'diff-context', [CompletionResultType]::ParameterName, 'diff-context')
|
'*;--acknowledgements' {
|
||||||
[CompletionResult]::new('--tabs', 'tabs', [CompletionResultType]::ParameterName, 'Set the tab width to T spaces.')
|
break
|
||||||
[CompletionResult]::new('--wrap', 'wrap', [CompletionResultType]::ParameterName, 'Specify the text-wrapping mode (*auto*, never, character).')
|
}
|
||||||
[CompletionResult]::new('--terminal-width', 'terminal-width', [CompletionResultType]::ParameterName, 'Explicitly set the width of the terminal instead of determining it automatically. If prefixed with ''+'' or ''-'', the value will be treated as an offset to the actual terminal width. See also: ''--wrap''.')
|
'*;--language' {
|
||||||
[CompletionResult]::new('--color', 'color', [CompletionResultType]::ParameterName, 'When to use colors (*auto*, never, always).')
|
Get-MyLanguages |
|
||||||
[CompletionResult]::new('--italic-text', 'italic-text', [CompletionResultType]::ParameterName, 'Use italics in output (always, *never*)')
|
ForEach-Object {
|
||||||
[CompletionResult]::new('--decorations', 'decorations', [CompletionResultType]::ParameterName, 'When to show the decorations (*auto*, never, always).')
|
$desc = if ($null -eq $_.MyDescription) { '_no value_' } else { $_.MyDescription }
|
||||||
[CompletionResult]::new('--paging', 'paging', [CompletionResultType]::ParameterName, 'Specify when to use the pager, or use `-P` to disable (*auto*, never, always).')
|
[CompletionResult]::new(($_.MyParameter -replace "^(.*)$", '''$1'''), $_.MyParameter, [CompletionResultType]::ParameterName, $desc)
|
||||||
[CompletionResult]::new('--pager', 'pager', [CompletionResultType]::ParameterName, 'Determine which pager to use.')
|
}
|
||||||
[CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
break
|
||||||
[CompletionResult]::new('--map-syntax', 'map-syntax', [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
}
|
||||||
[CompletionResult]::new('--theme', 'theme', [CompletionResultType]::ParameterName, 'Set the color theme for syntax highlighting.')
|
'*;--theme' {
|
||||||
[CompletionResult]::new('--style', 'style', [CompletionResultType]::ParameterName, 'Comma-separated list of style elements to display (*default*, auto, full, plain, changes, header, header-filename, header-filesize, grid, rule, numbers, snip).')
|
Get-MyThemes |
|
||||||
[CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterName, $_)}
|
||||||
[CompletionResult]::new('--line-range', 'line-range', [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
break
|
||||||
[CompletionResult]::new('-A', 'A', [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
|
}
|
||||||
[CompletionResult]::new('--show-all', 'show-all', [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
|
'*;--binary' {
|
||||||
[CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Show plain style (alias for ''--style=plain'').')
|
$ArrayBinary |
|
||||||
[CompletionResult]::new('--plain', 'plain', [CompletionResultType]::ParameterName, 'Show plain style (alias for ''--style=plain'').')
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
[CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'Only show lines that have been added/removed/modified.')
|
break
|
||||||
[CompletionResult]::new('--diff', 'diff', [CompletionResultType]::ParameterName, 'Only show lines that have been added/removed/modified.')
|
}
|
||||||
[CompletionResult]::new('-n', 'n', [CompletionResultType]::ParameterName, 'Show line numbers (alias for ''--style=numbers'').')
|
'*;--style' {
|
||||||
[CompletionResult]::new('--number', 'number', [CompletionResultType]::ParameterName, 'Show line numbers (alias for ''--style=numbers'').')
|
$ArrayStyle |
|
||||||
[CompletionResult]::new('-f', 'f', [CompletionResultType]::ParameterName, 'f')
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
[CompletionResult]::new('--force-colorization', 'force-colorization', [CompletionResultType]::ParameterName, 'force-colorization')
|
break
|
||||||
[CompletionResult]::new('-P', 'P', [CompletionResultType]::ParameterName, 'Alias for ''--paging=never''')
|
}
|
||||||
[CompletionResult]::new('--no-paging', 'no-paging', [CompletionResultType]::ParameterName, 'Alias for ''--paging=never''')
|
'*;--wrap' {
|
||||||
[CompletionResult]::new('--list-themes', 'list-themes', [CompletionResultType]::ParameterName, 'Display all supported highlighting themes.')
|
$ArrayWrap |
|
||||||
[CompletionResult]::new('-L', 'L', [CompletionResultType]::ParameterName, 'Display all supported languages.')
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
[CompletionResult]::new('--list-languages', 'list-languages', [CompletionResultType]::ParameterName, 'Display all supported languages.')
|
break
|
||||||
[CompletionResult]::new('-u', 'u', [CompletionResultType]::ParameterName, 'u')
|
}
|
||||||
[CompletionResult]::new('--unbuffered', 'unbuffered', [CompletionResultType]::ParameterName, 'unbuffered')
|
'*;--color' {
|
||||||
[CompletionResult]::new('--no-config', 'no-config', [CompletionResultType]::ParameterName, 'Do not use the configuration file')
|
$ArrayWhen |
|
||||||
[CompletionResult]::new('--no-custom-assets', 'no-custom-assets', [CompletionResultType]::ParameterName, 'Do not load custom assets')
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
[CompletionResult]::new('--lessopen', 'lessopen', [CompletionResultType]::ParameterName, 'Enable the $LESSOPEN preprocessor')
|
break
|
||||||
[CompletionResult]::new('--no-lessopen', 'no-lessopen', [CompletionResultType]::ParameterName, 'Disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)')
|
}
|
||||||
[CompletionResult]::new('--config-file', 'config-file', [CompletionResultType]::ParameterName, 'Show path to the configuration file.')
|
'*;--italic-text' {
|
||||||
[CompletionResult]::new('--generate-config-file', 'generate-config-file', [CompletionResultType]::ParameterName, 'Generates a default configuration file.')
|
$ArrayYesNo |
|
||||||
[CompletionResult]::new('--config-dir', 'config-dir', [CompletionResultType]::ParameterName, 'Show bat''s configuration directory.')
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
[CompletionResult]::new('--cache-dir', 'cache-dir', [CompletionResultType]::ParameterName, 'Show bat''s cache directory.')
|
break
|
||||||
[CompletionResult]::new('--diagnostic', 'diagnostic', [CompletionResultType]::ParameterName, 'Show diagnostic information for bug reports.')
|
}
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Print this help message.')
|
'*;--paging' {
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Print this help message.')
|
$ArrayWhen |
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Show version information.')
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Show version information.')
|
break
|
||||||
## Completion of the 'cache' command itself is removed for better UX
|
}
|
||||||
## See https://github.com/sharkdp/bat/issues/2085#issuecomment-1271646802
|
'*;--decorations' {
|
||||||
|
$ArrayWhen |
|
||||||
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'*;--completion' {
|
||||||
|
$ArrayCompletion |
|
||||||
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'*;--strip-ansi' {
|
||||||
|
$ArrayWhen |
|
||||||
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'*;--nonprintable-notation' {
|
||||||
|
$ArrayPrint |
|
||||||
|
ForEach-Object {[System.Management.Automation.CompletionResult]::new($_, $_, [CompletionResultType]::ParameterValue, $_)}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
'*;--generate-config-file' {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
'{{PROJECT_EXECUTABLE}};cache' {
|
'{{PROJECT_EXECUTABLE}};cache' {
|
||||||
[CompletionResult]::new('--source', 'source', [CompletionResultType]::ParameterName, 'Use a different directory to load syntaxes and themes from.')
|
[CompletionResult]::new('--source' , 'source' , [CompletionResultType]::ParameterName, 'Use a different directory to load syntaxes and themes from.')
|
||||||
[CompletionResult]::new('--target', 'target', [CompletionResultType]::ParameterName, 'Use a different directory to store the cached syntax and theme set.')
|
[CompletionResult]::new('--target' , 'target' , [CompletionResultType]::ParameterName, 'Use a different directory to store the cached syntax and theme set.')
|
||||||
[CompletionResult]::new('-b', 'b', [CompletionResultType]::ParameterName, 'Initialize (or update) the syntax/theme cache.')
|
# [CompletionResult]::new('-b' , 'b' , [CompletionResultType]::ParameterName, 'Initialize (or update) the syntax/theme cache.')
|
||||||
[CompletionResult]::new('--build', 'build', [CompletionResultType]::ParameterName, 'Initialize (or update) the syntax/theme cache.')
|
[CompletionResult]::new('--build' , 'build' , [CompletionResultType]::ParameterName, 'Initialize (or update) the syntax/theme cache.')
|
||||||
[CompletionResult]::new('-c', 'c', [CompletionResultType]::ParameterName, 'Remove the cached syntax definitions and themes.')
|
# [CompletionResult]::new('-c' , 'c' , [CompletionResultType]::ParameterName, 'Remove the cached syntax definitions and themes.')
|
||||||
[CompletionResult]::new('--clear', 'clear', [CompletionResultType]::ParameterName, 'Remove the cached syntax definitions and themes.')
|
[CompletionResult]::new('--clear' , 'clear' , [CompletionResultType]::ParameterName, 'Remove the cached syntax definitions and themes.')
|
||||||
[CompletionResult]::new('--blank', 'blank', [CompletionResultType]::ParameterName, 'Create completely new syntax and theme sets (instead of appending to the default sets).')
|
[CompletionResult]::new('--blank' , 'blank' , [CompletionResultType]::ParameterName, 'Create completely new syntax and theme sets (instead of appending to the default sets).')
|
||||||
[CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Prints help information')
|
# [CompletionResult]::new('-h' , 'h' , [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
[CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Prints help information')
|
[CompletionResult]::new('--help' , 'help' , [CompletionResultType]::ParameterName, 'Prints help information')
|
||||||
[CompletionResult]::new('-V', 'V', [CompletionResultType]::ParameterName, 'Prints version information')
|
# [CompletionResult]::new('-V' , 'V' , [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
[CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Prints version information')
|
# [CompletionResult]::new('--version' , 'version' , [CompletionResultType]::ParameterName, 'Prints version information')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
# [CompletionResult]::new('-l' , 'l' , [CompletionResultType]::ParameterName, 'Set the language for syntax highlighting.')
|
||||||
|
[CompletionResult]::new('--language' , 'language' , [CompletionResultType]::ParameterName, 'Set the language for syntax highlighting.')
|
||||||
|
# [CompletionResult]::new('-H' , 'H' , [CompletionResultType]::ParameterName, 'Highlight lines N through M.')
|
||||||
|
[CompletionResult]::new('--highlight-line' , 'highlight-line' , [CompletionResultType]::ParameterName, 'Highlight lines N through M.')
|
||||||
|
[CompletionResult]::new('--file-name' , 'file-name' , [CompletionResultType]::ParameterName, 'Specify the name to display for a file.')
|
||||||
|
[CompletionResult]::new('--diff-context' , 'diff-context' , [CompletionResultType]::ParameterName, 'diff-context')
|
||||||
|
[CompletionResult]::new('--tabs' , 'tabs' , [CompletionResultType]::ParameterName, 'Set the tab width to T spaces.')
|
||||||
|
[CompletionResult]::new('--wrap' , 'wrap' , [CompletionResultType]::ParameterName, 'Specify the text-wrapping mode (*auto*, never, character, word).')
|
||||||
|
[CompletionResult]::new('--terminal-width' , 'terminal-width' , [CompletionResultType]::ParameterName, 'Explicitly set the width of the terminal instead of determining it automatically. If prefixed with ''+'' or ''-'', the value will be treated as an offset to the actual terminal width. See also: ''--wrap''.')
|
||||||
|
[CompletionResult]::new('--color' , 'color' , [CompletionResultType]::ParameterName, 'When to use colors (*auto*, never, always).')
|
||||||
|
[CompletionResult]::new('--italic-text' , 'italic-text' , [CompletionResultType]::ParameterName, 'Use italics in output (always, *never*)')
|
||||||
|
[CompletionResult]::new('--decorations' , 'decorations' , [CompletionResultType]::ParameterName, 'When to show the decorations (*auto*, never, always).')
|
||||||
|
[CompletionResult]::new('--paging' , 'paging' , [CompletionResultType]::ParameterName, 'Specify when to use the pager, or use ''-P'' to disable (*auto*, never, always).')
|
||||||
|
[CompletionResult]::new('--pager' , 'pager' , [CompletionResultType]::ParameterName, 'Determine which pager to use.')
|
||||||
|
# [CompletionResult]::new('-m' , 'm' , [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
||||||
|
[CompletionResult]::new('--map-syntax' , 'map-syntax' , [CompletionResultType]::ParameterName, 'Use the specified syntax for files matching the glob pattern (''*.cpp:C++'').')
|
||||||
|
[CompletionResult]::new('--theme' , 'theme' , [CompletionResultType]::ParameterName, 'Set the color theme for syntax highlighting.')
|
||||||
|
[CompletionResult]::new('--theme-dark' , 'themedark' , [CompletionResultType]::ParameterName, 'Set the color theme for syntax highlighting for dark backgrounds.')
|
||||||
|
[CompletionResult]::new('--theme-light' , 'themelight' , [CompletionResultType]::ParameterName, 'Set the color theme for syntax highlighting for light backgrounds.')
|
||||||
|
[CompletionResult]::new('--style' , 'style' , [CompletionResultType]::ParameterName, 'Comma-separated list of style elements to display (*default*, auto, full, plain, changes, header, header-filename, header-filesize, grid, rule, numbers, snip).')
|
||||||
|
# [CompletionResult]::new('-r' , 'r' , [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
||||||
|
[CompletionResult]::new('--line-range' , 'line-range' , [CompletionResultType]::ParameterName, 'Only print the lines from N to M.')
|
||||||
|
# [CompletionResult]::new('-A' , 'A' , [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
|
||||||
|
[CompletionResult]::new('--show-all' , 'show-all' , [CompletionResultType]::ParameterName, 'Show non-printable characters (space, tab, newline, ..).')
|
||||||
|
[CompletionResult]::new('--nonprintable-notation' , 'nonprintable-notation' , [CompletionResultType]::ParameterName, 'Set notation for non-printable characters. (unicode, caret)')
|
||||||
|
[CompletionResult]::new('--chop-long-lines' , 'chop-long-lines' , [CompletionResultType]::ParameterName, 'Truncate all lines longer than screen width. Alias for ''--wrap=never''.')
|
||||||
|
[CompletionResult]::new('--binary' , 'binary' , [CompletionResultType]::ParameterName, 'How to treat binary content. (*no-printing*, as-text)')
|
||||||
|
[CompletionResult]::new('--ignored-suffix' , 'ignored-suffix' , [CompletionResultType]::ParameterName, 'Ignore extension. For example: ''bat --ignored-suffix ".dev" my_file.json.dev'' will use JSON syntax, and ignore ''.dev''')
|
||||||
|
[CompletionResult]::new('--squeeze-blank' , 'squeeze-blank' , [CompletionResultType]::ParameterName, 'Squeeze consecutive empty lines into a single empty line.')
|
||||||
|
[CompletionResult]::new('--squeeze-limit' , 'squeeze-limit' , [CompletionResultType]::ParameterName, 'Set the maximum number of consecutive empty lines to be printed.')
|
||||||
|
[CompletionResult]::new('--strip-ansi' , 'strip-ansi' , [CompletionResultType]::ParameterName, 'Specify when to strip ANSI escape sequences from the input. The automatic mode will remove escape sequences unless the syntax highlighting language is plain text. (auto, always, *never*).')
|
||||||
|
# [CompletionResult]::new('-p' , 'p' , [CompletionResultType]::ParameterName, 'Show plain style (alias for ''--style=plain'').')
|
||||||
|
[CompletionResult]::new('--plain' , 'plain' , [CompletionResultType]::ParameterName, 'Show plain style (alias for ''--style=plain'').')
|
||||||
|
# [CompletionResult]::new('-d' , 'd' , [CompletionResultType]::ParameterName, 'Only show lines that have been added/removed/modified.')
|
||||||
|
[CompletionResult]::new('--diff' , 'diff' , [CompletionResultType]::ParameterName, 'Only show lines that have been added/removed/modified.')
|
||||||
|
# [CompletionResult]::new('-n' , 'n' , [CompletionResultType]::ParameterName, 'Show line numbers (alias for ''--style=numbers'').')
|
||||||
|
[CompletionResult]::new('--number' , 'number' , [CompletionResultType]::ParameterName, 'Show line numbers (alias for ''--style=numbers'').')
|
||||||
|
# [CompletionResult]::new('-f' , 'f' , [CompletionResultType]::ParameterName, 'f')
|
||||||
|
[CompletionResult]::new('--force-colorization' , 'force-colorization' , [CompletionResultType]::ParameterName, 'force-colorization')
|
||||||
|
# [CompletionResult]::new('-P' , 'P' , [CompletionResultType]::ParameterName, 'Alias for ''--paging=never''')
|
||||||
|
[CompletionResult]::new('--no-paging' , 'no-paging' , [CompletionResultType]::ParameterName, 'Alias for ''--paging=never''')
|
||||||
|
[CompletionResult]::new('--list-themes' , 'list-themes' , [CompletionResultType]::ParameterName, 'Display all supported highlighting themes.')
|
||||||
|
# [CompletionResult]::new('-L' , 'L' , [CompletionResultType]::ParameterName, 'Display all supported languages.')
|
||||||
|
[CompletionResult]::new('--list-languages' , 'list-languages' , [CompletionResultType]::ParameterName, 'Display all supported languages.')
|
||||||
|
# [CompletionResult]::new('-u' , 'u' , [CompletionResultType]::ParameterName, 'u')
|
||||||
|
[CompletionResult]::new('--unbuffered' , 'unbuffered' , [CompletionResultType]::ParameterName, 'Enable unbuffered input reading for streaming use cases')
|
||||||
|
[CompletionResult]::new('--completion' , 'completion' , [CompletionResultType]::ParameterName, 'Show shell completion for a certain shell. [possible values: bash, fish, zsh, ps1]')
|
||||||
|
[CompletionResult]::new('--no-config' , 'no-config' , [CompletionResultType]::ParameterName, 'Do not use the configuration file')
|
||||||
|
[CompletionResult]::new('--no-custom-assets' , 'no-custom-assets' , [CompletionResultType]::ParameterName, 'Do not load custom assets')
|
||||||
|
[CompletionResult]::new('--lessopen' , 'lessopen' , [CompletionResultType]::ParameterName, 'Enable the $LESSOPEN preprocessor')
|
||||||
|
[CompletionResult]::new('--no-lessopen' , 'no-lessopen' , [CompletionResultType]::ParameterName, 'Disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)')
|
||||||
|
[CompletionResult]::new('--config-file' , 'config-file' , [CompletionResultType]::ParameterName, 'Show path to the configuration file.')
|
||||||
|
[CompletionResult]::new('--generate-config-file' , 'generate-config-file' , [CompletionResultType]::ParameterName, 'Generates a default configuration file.')
|
||||||
|
[CompletionResult]::new('--config-dir' , 'config-dir' , [CompletionResultType]::ParameterName, 'Show bat''s configuration directory.')
|
||||||
|
[CompletionResult]::new('--cache-dir' , 'cache-dir' , [CompletionResultType]::ParameterName, 'Show bat''s cache directory.')
|
||||||
|
[CompletionResult]::new('--acknowledgements' , 'acknowledgements' , [CompletionResultType]::ParameterName, 'Show acknowledgements.')
|
||||||
|
[CompletionResult]::new('--set-terminal-title' , 'set-terminal-title' , [CompletionResultType]::ParameterName, 'Sets terminal title to filenames when using a pager.')
|
||||||
|
[CompletionResult]::new('--diagnostic' , 'diagnostic' , [CompletionResultType]::ParameterName, 'Show diagnostic information for bug reports.')
|
||||||
|
[CompletionResult]::new('--quiet-empty' , 'quiet-empty' , [CompletionResultType]::ParameterName, 'Do not produce any output when the input is empty.')
|
||||||
|
# [CompletionResult]::new('-h' , 'h' , [CompletionResultType]::ParameterName, 'Print this help message.')
|
||||||
|
[CompletionResult]::new('--help' , 'help' , [CompletionResultType]::ParameterName, 'Print this help message.')
|
||||||
|
# [CompletionResult]::new('-V' , 'V' , [CompletionResultType]::ParameterName, 'Show version information.')
|
||||||
|
[CompletionResult]::new('--version' , 'version' , [CompletionResultType]::ParameterName, 'Show version information.')
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$completions.Where{ $_.CompletionText -like "$wordToComplete*" } |
|
$completions.Where{ $_.CompletionText -like "$wordToComplete*" } |
|
||||||
Sort-Object -Property ListItemText
|
Sort-Object -Property CompletionText
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+68
-9
@@ -14,18 +14,36 @@ __bat_escape_completions()
|
|||||||
{
|
{
|
||||||
# Do not escape if completing a quoted value.
|
# Do not escape if completing a quoted value.
|
||||||
[[ $cur == [\"\']* ]] && return 0
|
[[ $cur == [\"\']* ]] && return 0
|
||||||
# printf -v to an array index is available in bash >= 4.1.
|
|
||||||
# Use it if available, as -o filenames is semantically incorrect if
|
|
||||||
# we are not actually completing filenames, and it has side effects
|
|
||||||
# (e.g. adds trailing slash to candidates matching present dirs).
|
|
||||||
if ((
|
if ((
|
||||||
|
BASH_VERSINFO[0] > 5 || \
|
||||||
|
BASH_VERSINFO[0] == 5 && BASH_VERSINFO[1] >= 3
|
||||||
|
)); then
|
||||||
|
# bash >= 5.3 has "compopt -o fullquote", which exactly does
|
||||||
|
# what this function tries to do.
|
||||||
|
compopt -o fullquote
|
||||||
|
elif ((
|
||||||
BASH_VERSINFO[0] > 4 || \
|
BASH_VERSINFO[0] > 4 || \
|
||||||
BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] > 0
|
BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] > 0
|
||||||
)); then
|
)); then
|
||||||
|
# printf -v to an array index is available in bash >= 4.1.
|
||||||
|
# Use it if available, as -o filenames is semantically
|
||||||
|
# incorrect if we are not actually completing filenames, and it
|
||||||
|
# has side effects (e.g. adds trailing slash to candidates
|
||||||
|
# matching present dirs).
|
||||||
local i
|
local i
|
||||||
for i in ${!COMPREPLY[*]}; do
|
for i in ${!COMPREPLY[*]}; do
|
||||||
printf -v "COMPREPLY[i]" %q "${COMPREPLY[i]}"
|
printf -v "COMPREPLY[i]" %q "${COMPREPLY[i]}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# We can use "compopt -o noquote" available in bash >= 4.3 to
|
||||||
|
# prevent further quoting by the shell, which would be
|
||||||
|
# unexpectedly applied when a quoted result matches a filename.
|
||||||
|
if ((
|
||||||
|
BASH_VERSINFO[0] > 4 || \
|
||||||
|
BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 3
|
||||||
|
)); then
|
||||||
|
compopt -o noquote
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
compopt -o filenames
|
compopt -o filenames
|
||||||
fi
|
fi
|
||||||
@@ -66,7 +84,7 @@ _bat() {
|
|||||||
printf "%s\n" "$lang"
|
printf "%s\n" "$lang"
|
||||||
done
|
done
|
||||||
)" -- "$cur"))
|
)" -- "$cur"))
|
||||||
__bat_escape_completions
|
__bat_escape_completions
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-H | --highlight-line | \
|
-H | --highlight-line | \
|
||||||
@@ -76,10 +94,13 @@ _bat() {
|
|||||||
-m | --map-syntax | \
|
-m | --map-syntax | \
|
||||||
--ignored-suffix | \
|
--ignored-suffix | \
|
||||||
--list-themes | \
|
--list-themes | \
|
||||||
|
--squeeze-limit | \
|
||||||
--line-range | \
|
--line-range | \
|
||||||
-L | --list-languages | \
|
-L | --list-languages | \
|
||||||
--lessopen | \
|
--lessopen | \
|
||||||
|
--no-paging | \
|
||||||
--diagnostic | \
|
--diagnostic | \
|
||||||
|
--quiet-empty | \
|
||||||
--acknowledgements | \
|
--acknowledgements | \
|
||||||
-h | --help | \
|
-h | --help | \
|
||||||
-V | --version | \
|
-V | --version | \
|
||||||
@@ -96,7 +117,23 @@ _bat() {
|
|||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--wrap)
|
--wrap)
|
||||||
COMPREPLY=($(compgen -W "auto never character" -- "$cur"))
|
COMPREPLY=($(compgen -W "auto never character word" -- "$cur"))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--binary)
|
||||||
|
COMPREPLY=($(compgen -W "no-printing as-text" -- "$cur"))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--nonprintable-notation)
|
||||||
|
COMPREPLY=($(compgen -W "unicode caret" -- "$cur"))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--strip-ansi)
|
||||||
|
COMPREPLY=($(compgen -W "auto never always" -- "$cur"))
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--completion)
|
||||||
|
COMPREPLY=($(compgen -W "bash fish zsh ps1" -- "$cur"))
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--color | --decorations | --paging)
|
--color | --decorations | --paging)
|
||||||
@@ -112,9 +149,16 @@ _bat() {
|
|||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--theme)
|
--theme)
|
||||||
|
local IFS=$'\n'
|
||||||
|
COMPREPLY=($(compgen -W "auto${IFS}auto:always${IFS}auto:system${IFS}dark${IFS}light${IFS}$("$1" --list-themes)" -- "$cur"))
|
||||||
|
__bat_escape_completions
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--theme-dark | \
|
||||||
|
--theme-light)
|
||||||
local IFS=$'\n'
|
local IFS=$'\n'
|
||||||
COMPREPLY=($(compgen -W "$("$1" --list-themes)" -- "$cur"))
|
COMPREPLY=($(compgen -W "$("$1" --list-themes)" -- "$cur"))
|
||||||
__bat_escape_completions
|
__bat_escape_completions
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
--style)
|
--style)
|
||||||
@@ -133,7 +177,7 @@ _bat() {
|
|||||||
numbers
|
numbers
|
||||||
snip
|
snip
|
||||||
)
|
)
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
if declare -F _comp_delimited >/dev/null 2>&1; then
|
if declare -F _comp_delimited >/dev/null 2>&1; then
|
||||||
# bash-completion > 2.11
|
# bash-completion > 2.11
|
||||||
_comp_delimited , -W '"${styles[@]}"'
|
_comp_delimited , -W '"${styles[@]}"'
|
||||||
@@ -146,9 +190,11 @@ _bat() {
|
|||||||
$split && return 0
|
$split && return 0
|
||||||
|
|
||||||
if [[ $cur == -* ]]; then
|
if [[ $cur == -* ]]; then
|
||||||
# --unbuffered excluded intentionally (no-op)
|
|
||||||
COMPREPLY=($(compgen -W "
|
COMPREPLY=($(compgen -W "
|
||||||
|
--unbuffered
|
||||||
--show-all
|
--show-all
|
||||||
|
--nonprintable-notation
|
||||||
|
--binary
|
||||||
--plain
|
--plain
|
||||||
--language
|
--language
|
||||||
--highlight-line
|
--highlight-line
|
||||||
@@ -157,6 +203,7 @@ _bat() {
|
|||||||
--diff-context
|
--diff-context
|
||||||
--tabs
|
--tabs
|
||||||
--wrap
|
--wrap
|
||||||
|
--chop-long-lines
|
||||||
--terminal-width
|
--terminal-width
|
||||||
--number
|
--number
|
||||||
--color
|
--color
|
||||||
@@ -164,23 +211,35 @@ _bat() {
|
|||||||
--decorations
|
--decorations
|
||||||
--force-colorization
|
--force-colorization
|
||||||
--paging
|
--paging
|
||||||
|
--no-paging
|
||||||
--pager
|
--pager
|
||||||
--map-syntax
|
--map-syntax
|
||||||
--ignored-suffix
|
--ignored-suffix
|
||||||
--theme
|
--theme
|
||||||
|
--theme-dark
|
||||||
|
--theme-light
|
||||||
--list-themes
|
--list-themes
|
||||||
|
--squeeze-blank
|
||||||
|
--squeeze-limit
|
||||||
|
--strip-ansi
|
||||||
--style
|
--style
|
||||||
--line-range
|
--line-range
|
||||||
--list-languages
|
--list-languages
|
||||||
--lessopen
|
--lessopen
|
||||||
|
--completion
|
||||||
--diagnostic
|
--diagnostic
|
||||||
|
--quiet-empty
|
||||||
--acknowledgements
|
--acknowledgements
|
||||||
|
--set-terminal-title
|
||||||
--help
|
--help
|
||||||
--version
|
--version
|
||||||
--cache-dir
|
--cache-dir
|
||||||
--config-dir
|
--config-dir
|
||||||
--config-file
|
--config-file
|
||||||
--generate-config-file
|
--generate-config-file
|
||||||
|
--no-config
|
||||||
|
--no-custom-assets
|
||||||
|
--no-lessopen
|
||||||
" -- "$cur"))
|
" -- "$cur"))
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|||||||
Vendored
+51
-4
@@ -61,7 +61,7 @@ function __bat_no_excl_args
|
|||||||
-s V -l version \
|
-s V -l version \
|
||||||
-l acknowledgements \
|
-l acknowledgements \
|
||||||
-l config-dir -l config-file \
|
-l config-dir -l config-file \
|
||||||
-l diagnostic \
|
-l diagnostic -l quiet-empty \
|
||||||
-l list-languages -l list-themes
|
-l list-languages -l list-themes
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -106,6 +106,7 @@ set -l pager_opts '
|
|||||||
less\ -FR\t
|
less\ -FR\t
|
||||||
more\t
|
more\t
|
||||||
vimpager\t
|
vimpager\t
|
||||||
|
builtin\t
|
||||||
'
|
'
|
||||||
|
|
||||||
set -l italic_text_opts '
|
set -l italic_text_opts '
|
||||||
@@ -117,6 +118,7 @@ set -l wrap_opts '
|
|||||||
auto\tdefault
|
auto\tdefault
|
||||||
never\t
|
never\t
|
||||||
character\t
|
character\t
|
||||||
|
word\t
|
||||||
'
|
'
|
||||||
|
|
||||||
# While --tabs theoretically takes any number, most people should be OK with these.
|
# While --tabs theoretically takes any number, most people should be OK with these.
|
||||||
@@ -129,12 +131,28 @@ set -l tabs_opts '
|
|||||||
8\t
|
8\t
|
||||||
'
|
'
|
||||||
|
|
||||||
|
set -l special_themes '
|
||||||
|
auto\tdefault,\ Choose\ a\ theme\ based\ on\ dark\ or\ light\ mode
|
||||||
|
auto:always\tChoose\ a\ theme\ based\ on\ dark\ or\ light\ mode
|
||||||
|
auto:system\tChoose\ a\ theme\ based\ on\ dark\ or\ light\ mode
|
||||||
|
dark\tUse\ the\ theme\ specified\ by\ --theme-dark
|
||||||
|
light\tUse\ the\ theme\ specified\ by\ --theme-light
|
||||||
|
'
|
||||||
|
|
||||||
# Completions:
|
# Completions:
|
||||||
|
|
||||||
complete -c $bat -l acknowledgements -d "Print acknowledgements" -n __fish_is_first_arg
|
complete -c $bat -l acknowledgements -d "Print acknowledgements" -n __fish_is_first_arg
|
||||||
|
|
||||||
|
complete -c $bat -l binary -x -a "no-printing as-text" -d "How to treat binary content" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l cache-dir -f -d "Show bat's cache directory" -n __fish_is_first_arg
|
||||||
|
|
||||||
|
complete -c $bat -s c -l chop-long-lines -d "Truncate all lines longer than screen width" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l color -x -a "$color_opts" -d "When to use colored output" -n __bat_no_excl_args
|
complete -c $bat -l color -x -a "$color_opts" -d "When to use colored output" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l completion -x -a "bash fish zsh ps1" -d "Show shell completion for a certain shell" -n __fish_is_first_arg
|
||||||
|
|
||||||
complete -c $bat -l config-dir -f -d "Display location of configuration directory" -n __fish_is_first_arg
|
complete -c $bat -l config-dir -f -d "Display location of configuration directory" -n __fish_is_first_arg
|
||||||
|
|
||||||
complete -c $bat -l config-file -f -d "Display location of configuration file" -n __fish_is_first_arg
|
complete -c $bat -l config-file -f -d "Display location of configuration file" -n __fish_is_first_arg
|
||||||
@@ -142,11 +160,14 @@ complete -c $bat -l config-file -f -d "Display location of configuration file" -
|
|||||||
complete -c $bat -l decorations -x -a "$decorations_opts" -d "When to use --style decorations" -n __bat_no_excl_args
|
complete -c $bat -l decorations -x -a "$decorations_opts" -d "When to use --style decorations" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l diagnostic -d "Print diagnostic info for bug reports" -n __fish_is_first_arg
|
complete -c $bat -l diagnostic -d "Print diagnostic info for bug reports" -n __fish_is_first_arg
|
||||||
|
complete -c $bat -l quiet-empty -d "Do not produce any output when the input is empty" -n __fish_is_first_arg
|
||||||
|
|
||||||
complete -c $bat -s d -l diff -d "Only show lines with Git changes" -n __bat_no_excl_args
|
complete -c $bat -s d -l diff -d "Only show lines with Git changes" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l diff-context -x -d "Show N context lines around Git changes" -n "__fish_seen_argument -s d -l diff"
|
complete -c $bat -l diff-context -x -d "Show N context lines around Git changes" -n "__fish_seen_argument -s d -l diff"
|
||||||
|
|
||||||
|
complete -c $bat -l generate-config-file -f -d "Generates a default configuration file" -n __fish_is_first_arg
|
||||||
|
|
||||||
complete -c $bat -l file-name -x -d "Specify the display name" -n __bat_no_excl_args
|
complete -c $bat -l file-name -x -d "Specify the display name" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -s f -l force-colorization -d "Force color and decorations" -n __bat_no_excl_args
|
complete -c $bat -s f -l force-colorization -d "Force color and decorations" -n __bat_no_excl_args
|
||||||
@@ -173,27 +194,53 @@ complete -c $bat -l list-themes -f -d "List syntax highlighting themes" -n __fis
|
|||||||
|
|
||||||
complete -c $bat -s m -l map-syntax -x -a "(__bat_complete_map_syntax)" -d "Map <glob pattern>:<language syntax>" -n __bat_no_excl_args
|
complete -c $bat -s m -l map-syntax -x -a "(__bat_complete_map_syntax)" -d "Map <glob pattern>:<language syntax>" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l no-config -d "Do not use the configuration file"
|
||||||
|
|
||||||
|
complete -c $bat -l no-custom-assets -d "Do not load custom assets"
|
||||||
|
|
||||||
|
complete -c $bat -l no-lessopen -d "Disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)"
|
||||||
|
|
||||||
|
complete -c $bat -l nonprintable-notation -x -a "unicode caret" -d "Set notation for non-printable characters" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -s n -l number -d "Only show line numbers, no other decorations" -n __bat_no_excl_args
|
complete -c $bat -s n -l number -d "Only show line numbers, no other decorations" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l no-paging -d "Alias for --paging=never" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l pager -x -a "$pager_opts" -d "Which pager to use" -n __bat_no_excl_args
|
complete -c $bat -l pager -x -a "$pager_opts" -d "Which pager to use" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l paging -x -a "$paging_opts" -d "When to use the pager" -n __bat_no_excl_args
|
complete -c $bat -l paging -x -a "$paging_opts" -d "When to use the pager" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -s p -l plain -d "Show plain style" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l set-terminal-title -d "Sets terminal title to filenames when using a pager" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -s A -l show-all -d "Show non-printable characters" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -s s -l squeeze-blank -d "Squeeze consecutive empty lines into a single empty line" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l squeeze-limit -x -d "Set the maximum number of consecutive empty lines to be printed" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l strip-ansi -x -a "auto never always" -d "Specify when to strip ANSI escape sequences from the input" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -s p -l plain -d "Disable decorations" -n __bat_no_excl_args
|
complete -c $bat -s p -l plain -d "Disable decorations" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -o pp -d "Disable decorations and paging" -n __bat_no_excl_args
|
complete -c $bat -o pp -d "Disable decorations and paging" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -s P -d "Disable paging" -n __bat_no_excl_args
|
complete -c $bat -s P -d "Disable paging" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -s A -l show-all -d "Show non-printable characters" -n __bat_no_excl_args
|
|
||||||
|
|
||||||
complete -c $bat -l style -x -k -a "(__fish_complete_list , __bat_style_opts)" -d "Specify which non-content elements to display" -n __bat_no_excl_args
|
complete -c $bat -l style -x -k -a "(__fish_complete_list , __bat_style_opts)" -d "Specify which non-content elements to display" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l tabs -x -a "$tabs_opts" -d "Set tab width" -n __bat_no_excl_args
|
complete -c $bat -l tabs -x -a "$tabs_opts" -d "Set tab width" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l terminal-width -x -d "Set terminal <width>, +<offset>, or -<offset>" -n __bat_no_excl_args
|
complete -c $bat -l terminal-width -x -d "Set terminal <width>, +<offset>, or -<offset>" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -l theme -x -a "(command $bat --list-themes | command cat)" -d "Set the syntax highlighting theme" -n __bat_no_excl_args
|
complete -c $bat -l theme -x -a "$special_themes(command $bat --list-themes | command cat)" -d "Set the syntax highlighting theme" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l theme-dark -x -a "(command $bat --list-themes | command cat)" -d "Set the syntax highlighting theme for dark backgrounds" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -l theme-light -x -a "(command $bat --list-themes | command cat)" -d "Set the syntax highlighting theme for light backgrounds" -n __bat_no_excl_args
|
||||||
|
|
||||||
|
complete -c $bat -s u -l unbuffered -d "Enable unbuffered input reading for streaming use cases" -n __bat_no_excl_args
|
||||||
|
|
||||||
complete -c $bat -s V -l version -f -d "Show version information" -n __fish_is_first_arg
|
complete -c $bat -s V -l version -f -d "Show version information" -n __fish_is_first_arg
|
||||||
|
|
||||||
|
|||||||
Vendored
+84
-51
@@ -1,19 +1,20 @@
|
|||||||
#compdef {{PROJECT_EXECUTABLE}}
|
#compdef {{PROJECT_EXECUTABLE}}
|
||||||
|
|
||||||
local context state state_descr line
|
local curcontext="$curcontext" ret=1
|
||||||
|
local -a state state_descr line
|
||||||
typeset -A opt_args
|
typeset -A opt_args
|
||||||
|
|
||||||
(( $+functions[_{{PROJECT_EXECUTABLE}}_cache_subcommand] )) ||
|
(( $+functions[_{{PROJECT_EXECUTABLE}}_cache_subcommand] )) ||
|
||||||
_{{PROJECT_EXECUTABLE}}_cache_subcommand() {
|
_{{PROJECT_EXECUTABLE}}_cache_subcommand() {
|
||||||
local -a args
|
local -a args
|
||||||
args=(
|
args=(
|
||||||
'(-b --build -c --clear)'{-b,--build}'[Initialize or update the syntax/theme cache]'
|
'(-b --build -c --clear)'{-b,--build}'[initialize or update the syntax/theme cache]'
|
||||||
'(-b --build -c --clear)'{-c,--clear}'[Remove the cached syntax definitions and themes]'
|
'(-b --build -c --clear)'{-c,--clear}'[remove the cached syntax definitions and themes]'
|
||||||
'(--source)'--source='[Use a different directory to load syntaxes and themes from]:directory:_files -/'
|
--source='[specify directory to load syntaxes and themes from]:directory:_files -/'
|
||||||
'(--target)'--target='[Use a different directory to store the cached syntax and theme set]:directory:_files -/'
|
--target='[specify directory to store the cached syntax and theme set in]:directory:_files -/'
|
||||||
'(--blank)'--blank'[Create completely new syntax and theme sets]'
|
--blank'[create completely new syntax and theme sets]'
|
||||||
'(: -)'{-h,--help}'[Prints help information]'
|
--acknowledgements'[build acknowledgements.bin]'
|
||||||
'*: :'
|
'(: -)'{-h,--help}'[show help information]'
|
||||||
)
|
)
|
||||||
|
|
||||||
_arguments -S -s $args
|
_arguments -S -s $args
|
||||||
@@ -23,69 +24,101 @@ _{{PROJECT_EXECUTABLE}}_cache_subcommand() {
|
|||||||
_{{PROJECT_EXECUTABLE}}_main() {
|
_{{PROJECT_EXECUTABLE}}_main() {
|
||||||
local -a args
|
local -a args
|
||||||
args=(
|
args=(
|
||||||
'(-A --show-all)'{-A,--show-all}'[Show non-printable characters (space, tab, newline, ..)]'
|
'(-A --show-all)'{-A,--show-all}'[show non-printable characters (space, tab, newline, ..)]'
|
||||||
'*'{-p,--plain}'[Show plain style (alias for `--style=plain`), repeat twice to disable disable automatic paging (alias for `--paging=never`)]'
|
--nonprintable-notation='[specify how to display non-printable characters when using --show-all]:notation:(caret unicode)'
|
||||||
'(-l --language)'{-l+,--language=}'[Set the language for syntax highlighting]:<language>:->language'
|
--binary='[specify how to treat binary content]:behavior:(no-printing as-text)'
|
||||||
'(-H --highlight-line)'{-H,--highlight-line}'[Highlight lines N through M]:<N\:M>...'
|
\*{-p,--plain}'[show plain style (alias for `--style=plain`), repeat twice to disable automatic paging (alias for `--paging=never`)]'
|
||||||
'(--file-name)'--file-name'[Specify the name to display for a file]:<name>...:_files'
|
'(-l --language)'{-l+,--language=}'[set the language for syntax highlighting]:language:->languages'
|
||||||
'(-d --diff)'--diff'[Only show lines that have been added/removed/modified]'
|
\*{-H+,--highlight-line=}'[highlight specified block of lines]:start\:end'
|
||||||
'(--diff-context)'--diff-context'[Include N lines of context around added/removed/modified lines when using `--diff`]:<N> (lines):()'
|
\*--file-name='[specify the name to display for a file]:name:_files'
|
||||||
'(--tabs)'--tabs'[Set the tab width to T spaces]:<T> (tab width):()'
|
'(-d --diff)'--diff'[only show lines that have been added/removed/modified]'
|
||||||
'(--wrap)'--wrap='[Specify the text-wrapping mode]:<when>:(auto never character)'
|
--diff-context='[specify lines of context around added/removed/modified lines when using `--diff`]:lines'
|
||||||
'(--terminal-width)'--terminal-width'[Explicitly set the width of the terminal instead of determining it automatically]:<width>'
|
--tabs='[set the tab width]:tab width [4]'
|
||||||
'(-n --number)'{-n,--number}'[Show line numbers]'
|
--wrap='[specify the text-wrapping mode]:mode [auto]:(auto never character word)'
|
||||||
'(--color)'--color='[When to use colors]:<when>:(auto never always)'
|
'!(--wrap)'{-S,--chop-long-lines}
|
||||||
'(--italic-text)'--italic-text='[Use italics in output]:<when>:(always never)'
|
--terminal-width='[explicitly set the width of the terminal instead of determining it automatically]:width'
|
||||||
'(--decorations)'--decorations='[When to show the decorations]:<when>:(auto never always)'
|
'(-n --number --diff --diff-context)'{-n,--number}'[show line numbers]'
|
||||||
'(--paging)'--paging='[Specify when to use the pager]:<when>:(auto never always)'
|
--color='[specify when to use colors]:when:(auto never always)'
|
||||||
'(-m --map-syntax)'{-m+,--map-syntax=}'[Use the specified syntax for files matching the glob pattern]:<glob\:syntax>...'
|
--italic-text='[use italics in output]:when:(always never)'
|
||||||
'(--theme)'--theme='[Set the color theme for syntax highlighting]:<theme>:->theme'
|
--decorations='[specify when to show the decorations]:when:(auto never always)'
|
||||||
'(: --list-themes --list-languages -L)'--list-themes'[Display all supported highlighting themes]'
|
'(-f --force-colorization)'--force-colorization'[force colorization and decorations]'
|
||||||
'(--style)'--style='[Comma-separated list of style elements to display]:<components>:->style'
|
--paging='[specify when to use the pager]:when:(auto never always)'
|
||||||
'(-r --line-range)'{-r+,--line-range=}'[Only print the lines from N to M]:<N\:M>...'
|
'(-P --no-paging)'--no-paging'[alias for --paging=never]'
|
||||||
'(: --list-themes --list-languages -L)'{-L,--list-languages}'[Display all supported languages]'
|
--pager='[determine which pager to use]:command:'
|
||||||
'(: --no-config)'--no-config'[Do not use the configuration file]'
|
'(-m --map-syntax)'{-m+,--map-syntax=}'[map a glob pattern to an existing syntax name]: :->syntax-maps'
|
||||||
'(: --no-custom-assets)'--no-custom-assets'[Do not load custom assets]'
|
--ignored-suffix='[ignore extension]:suffix:'
|
||||||
'(: --lessopen)'--lessopen'[Enable the $LESSOPEN preprocessor]'
|
'(--theme)'--theme='[set the color theme for syntax highlighting]:theme:->theme_preferences'
|
||||||
'(: --no-lessopen)'--no-lessopen'[Disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)]'
|
'(--theme-dark)'--theme-dark='[set the color theme for syntax highlighting for dark backgrounds]:theme:->themes'
|
||||||
'(: --config-dir)'--config-dir'[Show bat'"'"'s configuration directory]'
|
'(--theme-light)'--theme-light='[set the color theme for syntax highlighting for light backgrounds]:theme:->themes'
|
||||||
'(: --config-file)'--config-file'[Show path to the configuration file]'
|
'(: --list-themes --list-languages -L)'--list-themes'[show all supported highlighting themes]'
|
||||||
'(: --generate-config-file)'--generate-config-file'[Generates a default configuration file]'
|
--squeeze-blank'[squeeze consecutive empty lines into a single empty line]'
|
||||||
'(: --cache-dir)'--cache-dir'[Show bat'"'"'s cache directory]'
|
--squeeze-limit='[set the maximum number of consecutive empty lines]:limit:'
|
||||||
'(: -)'{-h,--help}'[Print this help message]'
|
--strip-ansi='[specify when to strip ANSI escape sequences]:when:(auto never always)'
|
||||||
'(: -)'{-V,--version}'[Show version information]'
|
--style='[comma-separated list of style elements to display]: : _values "style [default]"
|
||||||
'*: :_files'
|
default auto full plain changes header header-filename header-filesize grid rule numbers snip'
|
||||||
|
\*{-r+,--line-range=}'[only print the specified line range]:start\:end'
|
||||||
|
'(* -)'{-L,--list-languages}'[display all supported languages]'
|
||||||
|
'(-u --unbuffered)'--unbuffered'[enable unbuffered input reading for streaming use cases]'
|
||||||
|
--completion='[show shell completion for a certain shell]:shell:(bash fish zsh ps1)'
|
||||||
|
--set-terminal-title'[sets terminal title to filenames when using a pager]'
|
||||||
|
--diagnostic'[show diagnostic information for bug reports]'
|
||||||
|
--quiet-empty'[do not produce any output when the input is empty]'
|
||||||
|
-P'[disable paging]'
|
||||||
|
"--no-config[don't use the configuration file]"
|
||||||
|
"--no-custom-assets[don't load custom assets]"
|
||||||
|
'(--no-lessopen)'--lessopen'[enable the $LESSOPEN preprocessor]'
|
||||||
|
'(--lessopen)'--no-lessopen'[disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)]'
|
||||||
|
'(* -)'--config-dir"[show bat's configuration directory]"
|
||||||
|
'(* -)'--config-file'[show path to the configuration file]'
|
||||||
|
'(* -)'--generate-config-file'[generate a default configuration file]'
|
||||||
|
'(* -)'--cache-dir"[show bat's cache directory]"
|
||||||
|
'(* -)'{-h,--help}'[show help information]'
|
||||||
|
'(* -)'{-V,--version}'[show version information]'
|
||||||
|
'*: :{ _files || compadd cache }'
|
||||||
)
|
)
|
||||||
|
|
||||||
_arguments -S -s $args
|
_arguments -S -s $args && ret=0
|
||||||
|
|
||||||
case "$state" in
|
case "$state" in
|
||||||
language)
|
syntax-maps)
|
||||||
|
if ! compset -P '*:'; then
|
||||||
|
_message -e patterns 'glob pattern:language'
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
;& # fall-through
|
||||||
|
|
||||||
|
languages)
|
||||||
local IFS=$'\n'
|
local IFS=$'\n'
|
||||||
local -a languages
|
local -a languages
|
||||||
languages=( $({{PROJECT_EXECUTABLE}} --list-languages | awk -F':|,' '{ for (i = 1; i <= NF; ++i) printf("%s:%s\n", $i, $1) }') )
|
languages=( ${(f)"$({{PROJECT_EXECUTABLE}} --list-languages | awk -F':|,' '{ for (i = 1; i <= NF; ++i) printf("%s:%s\n", $i, $1) }')"} )
|
||||||
|
|
||||||
_describe 'language' languages
|
_describe 'language' languages && ret=0
|
||||||
;;
|
;;
|
||||||
|
|
||||||
theme)
|
themes)
|
||||||
local IFS=$'\n'
|
local -a themes expl
|
||||||
local -a themes
|
themes=(${(f)"$(_call_program themes {{PROJECT_EXECUTABLE}} --list-themes)"} )
|
||||||
themes=( $({{PROJECT_EXECUTABLE}} --list-themes | sort) )
|
|
||||||
|
|
||||||
_values 'theme' $themes
|
_wanted themes expl 'theme' compadd -a themes && ret=0
|
||||||
;;
|
;;
|
||||||
|
theme_preferences)
|
||||||
|
local -a themes expl
|
||||||
|
themes=(auto dark light auto:always auto:system ${(f)"$(_call_program themes {{PROJECT_EXECUTABLE}} --list-themes)"} )
|
||||||
|
|
||||||
style)
|
_wanted themes expl 'theme' compadd -a themes && ret=0
|
||||||
_values -s , 'style' default auto full plain changes header header-filename header-filesize grid rule numbers snip
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
case $words[2] in
|
case $words[2] in
|
||||||
cache)
|
cache)
|
||||||
## Completion of the 'cache' command itself is removed for better UX
|
## Completion of the 'cache' command itself is removed for better UX
|
||||||
## See https://github.com/sharkdp/bat/issues/2085#issuecomment-1271646802
|
## See https://github.com/sharkdp/bat/issues/2085#issuecomment-1271646802
|
||||||
|
shift words
|
||||||
|
(( CURRENT-- ))
|
||||||
|
curcontext="${curcontext%:*}-${words[1]}:"
|
||||||
_{{PROJECT_EXECUTABLE}}_cache_subcommand
|
_{{PROJECT_EXECUTABLE}}_cache_subcommand
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
Vendored
+153
-15
@@ -14,7 +14,8 @@ It also communicates with git(1) to show modifications with respect to the git i
|
|||||||
|
|
||||||
Whenever the output of {{PROJECT_EXECUTABLE}} goes to a non-interactive terminal, i.e. when the
|
Whenever the output of {{PROJECT_EXECUTABLE}} goes to a non-interactive terminal, i.e. when the
|
||||||
output is piped into another process or into a file, {{PROJECT_EXECUTABLE}} will act as a drop-in
|
output is piped into another process or into a file, {{PROJECT_EXECUTABLE}} will act as a drop-in
|
||||||
replacement for cat(1) and fall back to printing the plain file contents.
|
replacement for cat(1) and fall back to printing the plain file contents,
|
||||||
|
unless an explicit style is requested.
|
||||||
|
|
||||||
.SH "OPTIONS"
|
.SH "OPTIONS"
|
||||||
General remarks: Command-line options like '-l'/'--language' that take values can be specified as
|
General remarks: Command-line options like '-l'/'--language' that take values can be specified as
|
||||||
@@ -37,6 +38,23 @@ Use character sequences like ^G, ^J, ^@, .. to identify non-printable characters
|
|||||||
Use special Unicode code points to identify non-printable characters
|
Use special Unicode code points to identify non-printable characters
|
||||||
.RE
|
.RE
|
||||||
.HP
|
.HP
|
||||||
|
\fB\-\-binary\fR <behavior>
|
||||||
|
.IP
|
||||||
|
How to treat binary content.
|
||||||
|
|
||||||
|
Possible values:
|
||||||
|
.RS
|
||||||
|
.IP "no\-printing"
|
||||||
|
Do not print any binary content (default)
|
||||||
|
.IP "as\-text"
|
||||||
|
Treat binary content as normal text
|
||||||
|
.RE
|
||||||
|
.HP
|
||||||
|
\fB\-\-completion\fR <SHELL>
|
||||||
|
.IP
|
||||||
|
Show shell completion for a certain shell.
|
||||||
|
Possible values: bash, fish, zsh, ps1
|
||||||
|
.HP
|
||||||
\fB\-p\fR, \fB\-\-plain\fR
|
\fB\-p\fR, \fB\-\-plain\fR
|
||||||
.IP
|
.IP
|
||||||
Only show plain style, no decorations. This is an alias for
|
Only show plain style, no decorations. This is an alias for
|
||||||
@@ -84,8 +102,14 @@ Set the tab width to T spaces. Use a width of 0 to pass tabs through directly
|
|||||||
.HP
|
.HP
|
||||||
\fB\-\-wrap\fR <mode>
|
\fB\-\-wrap\fR <mode>
|
||||||
.IP
|
.IP
|
||||||
Specify the text\-wrapping mode (*auto*, never, character). The '\-\-terminal\-width' option
|
Specify the text\-wrapping mode (*auto*, never, character, word). The '\-\-terminal\-width' option
|
||||||
can be used in addition to control the output width.
|
can be used in addition to control the output width. In \fBword\fR mode, lines are broken at
|
||||||
|
whitespace boundaries. If a single word exceeds the terminal width, it falls back to
|
||||||
|
character wrapping.
|
||||||
|
.HP
|
||||||
|
\fB\-S\fR, \fB\-\-chop\-long\-lines\fR
|
||||||
|
.IP
|
||||||
|
Truncate all lines longer than screen width. Alias for '\-\-wrap=never'.
|
||||||
.HP
|
.HP
|
||||||
\fB\-\-terminal\-width\fR <width>
|
\fB\-\-terminal\-width\fR <width>
|
||||||
.IP
|
.IP
|
||||||
@@ -110,7 +134,8 @@ always, *never*.
|
|||||||
\fB\-\-decorations\fR <when>
|
\fB\-\-decorations\fR <when>
|
||||||
.IP
|
.IP
|
||||||
Specify when to use the decorations that have been specified via '\-\-style'. The
|
Specify when to use the decorations that have been specified via '\-\-style'. The
|
||||||
automatic mode only enables decorations if an interactive terminal is detected. Possible
|
automatic mode only enables decorations if an interactive terminal is detected. The
|
||||||
|
always mode will show decorations even when piping output. Possible
|
||||||
values: *auto*, never, always.
|
values: *auto*, never, always.
|
||||||
.HP
|
.HP
|
||||||
\fB\-f\fR, \fB\-\-force\-colorization\fR
|
\fB\-f\fR, \fB\-\-force\-colorization\fR
|
||||||
@@ -128,8 +153,9 @@ which pager is used, see the '\-\-pager' option. Possible values: *auto*, never,
|
|||||||
\fB\-\-pager\fR <command>
|
\fB\-\-pager\fR <command>
|
||||||
.IP
|
.IP
|
||||||
Determine which pager is used. This option will override the PAGER and BAT_PAGER
|
Determine which pager is used. This option will override the PAGER and BAT_PAGER
|
||||||
environment variables. The default pager is 'less'. To control when the pager is used, see
|
environment variables. The default pager is 'less'. If you provide '\-\-pager=builtin', use
|
||||||
the '\-\-paging' option. Example: '\-\-pager "less \fB\-RF\fR"'.
|
the built-in 'minus' pager. To control when the pager is used, see the '\-\-paging' option.
|
||||||
|
Example: '\-\-pager "less \fB\-RF\fR"'.
|
||||||
|
|
||||||
Note: By default, if the pager is set to 'less' (and no command-line options are specified), 'bat' will pass the following command line options to the pager: '-R'/'--RAW-CONTROL-CHARS', '-F'/'--quit-if-one-screen' and '-X'/'--no-init'. The last option ('-X') is only used for 'less' versions older than 530. The '-R' option is needed to interpret ANSI colors correctly. The second option ('-F') instructs less to exit immediately if the output size is smaller than the vertical size of the terminal. This is convenient for small files because you do not have to press 'q' to quit the pager. The third option ('-X') is needed to fix a bug with the '--quit-if-one-screen' feature in old versions of 'less'. Unfortunately, it also breaks mouse-wheel support in 'less'. If you want to enable mouse-wheel scrolling on older versions of 'less', you can pass just '-R' (as in the example above, this will disable the quit-if-one-screen feature). For less 530 or newer, it should work out of the box.
|
Note: By default, if the pager is set to 'less' (and no command-line options are specified), 'bat' will pass the following command line options to the pager: '-R'/'--RAW-CONTROL-CHARS', '-F'/'--quit-if-one-screen' and '-X'/'--no-init'. The last option ('-X') is only used for 'less' versions older than 530. The '-R' option is needed to interpret ANSI colors correctly. The second option ('-F') instructs less to exit immediately if the output size is smaller than the vertical size of the terminal. This is convenient for small files because you do not have to press 'q' to quit the pager. The third option ('-X') is needed to fix a bug with the '--quit-if-one-screen' feature in old versions of 'less'. Unfortunately, it also breaks mouse-wheel support in 'less'. If you want to enable mouse-wheel scrolling on older versions of 'less', you can pass just '-R' (as in the example above, this will disable the quit-if-one-screen feature). For less 530 or newer, it should work out of the box.
|
||||||
.HP
|
.HP
|
||||||
@@ -141,24 +167,82 @@ use -m '*.build:Python'. To highlight files named '.myignore' with the Git Ignor
|
|||||||
syntax, use -m '.myignore:Git Ignore'.
|
syntax, use -m '.myignore:Git Ignore'.
|
||||||
Note that the right-hand side is the *name* of the syntax, not a file extension.
|
Note that the right-hand side is the *name* of the syntax, not a file extension.
|
||||||
.HP
|
.HP
|
||||||
|
\fB\-\-ignored\-suffix\fR <ignored-suffix>
|
||||||
|
.IP
|
||||||
|
Ignore extension. For example: 'bat \-\-ignored-suffix ".dev" my_file.json.dev'
|
||||||
|
will use JSON syntax, and ignore '.dev'
|
||||||
|
.HP
|
||||||
\fB\-\-theme\fR <theme>
|
\fB\-\-theme\fR <theme>
|
||||||
.IP
|
.IP
|
||||||
Set the theme for syntax highlighting. Use '\-\-list\-themes' to see all available themes.
|
Set the theme for syntax highlighting. Use \fB\-\-list\-themes\fP to see all available themes.
|
||||||
To set a default theme, add the '\-\-theme="..."' option to the configuration file or
|
To set a default theme, add the \fB\-\-theme="..."\fP option to the configuration file or
|
||||||
export the BAT_THEME environment variable (e.g.: export BAT_THEME="...").
|
export the \fBBAT_THEME\fP environment variable (e.g.: \fBexport BAT_THEME="..."\fP).
|
||||||
|
|
||||||
|
Special values:
|
||||||
|
.RS
|
||||||
|
.IP "auto (\fIdefault\fR)"
|
||||||
|
Picks a dark or light theme depending on the terminal's colors.
|
||||||
|
Use \fB-\-theme\-light\fR and \fB-\-theme\-dark\fR to customize the selected theme.
|
||||||
|
.IP "auto:always"
|
||||||
|
Variation of \fBauto\fR where where the terminal's colors are detected even when the output is redirected.
|
||||||
|
.IP "auto:system (macOS only)"
|
||||||
|
Variation of \fBauto\fR where the color scheme is detected from the system-wide preference instead.
|
||||||
|
.IP "dark"
|
||||||
|
Use the dark theme specified by \fB-\-theme-dark\fR.
|
||||||
|
.IP "light"
|
||||||
|
Use the light theme specified by \fB-\-theme-light\fR.
|
||||||
|
.RE
|
||||||
|
.HP
|
||||||
|
\fB\-\-theme\-dark\fR <theme>
|
||||||
|
.IP
|
||||||
|
Sets the theme name for syntax highlighting used when the terminal uses a dark background.
|
||||||
|
To set a default theme, add the \fB\-\-theme-dark="..."\fP option to the configuration file or
|
||||||
|
export the \fBBAT_THEME_DARK\fP environment variable (e.g. \fBexport BAT_THEME_DARK="..."\fP).
|
||||||
|
This option only has an effect when \fB\-\-theme\fP option is set to \fBauto\fR or \fBdark\fR.
|
||||||
|
.HP
|
||||||
|
\fB\-\-theme\-light\fR <theme>
|
||||||
|
.IP
|
||||||
|
Sets the theme name for syntax highlighting used when the terminal uses a light background.
|
||||||
|
To set a default theme, add the \fB\-\-theme-light="..."\fP option to the configuration file or
|
||||||
|
export the \fBBAT_THEME_LIGHT\fP environment variable (e.g. \fBexport BAT_THEME_LIGHT="..."\fP).
|
||||||
|
This option only has an effect when \fB\-\-theme\fP option is set to \fBauto\fR or \fBlight\fR.
|
||||||
.HP
|
.HP
|
||||||
\fB\-\-list\-themes\fR
|
\fB\-\-list\-themes\fR
|
||||||
.IP
|
.IP
|
||||||
Display a list of supported themes for syntax highlighting.
|
Display a list of supported themes for syntax highlighting.
|
||||||
.HP
|
.HP
|
||||||
|
\fB\-s\fR, \fB\-\-squeeze\-blank\fR
|
||||||
|
.IP
|
||||||
|
Squeeze consecutive empty lines into a single empty line.
|
||||||
|
.HP
|
||||||
|
\fB\-\-squeeze\-limit\fR <squeeze-limit>
|
||||||
|
.IP
|
||||||
|
Set the maximum number of consecutive empty lines to be printed.
|
||||||
|
.HP
|
||||||
|
\fB\-\-strip\-ansi\fR <when>
|
||||||
|
.IP
|
||||||
|
Specify when to strip ANSI escape sequences from the input. The automatic mode will remove
|
||||||
|
escape sequences unless the syntax highlighting language is plain text. Possible values:
|
||||||
|
auto, always, *never*.
|
||||||
|
.HP
|
||||||
\fB\-\-style\fR <style\-components>
|
\fB\-\-style\fR <style\-components>
|
||||||
.IP
|
.IP
|
||||||
Configure which elements (line numbers, file headers, grid borders, Git modifications,
|
Configure which elements (line numbers, file headers, grid borders, Git modifications,
|
||||||
\&..) to display in addition to the file contents. The argument is a comma\-separated list
|
\&..) to display in addition to the file contents. The argument is a comma\-separated list
|
||||||
of components to display (e.g. 'numbers,changes,grid') or a pre\-defined style ('full').
|
of components to display (e.g. 'numbers,changes,grid') or a pre\-defined style ('full').
|
||||||
To set a default style, add the '\-\-style=".."' option to the configuration file or
|
To set a default style, add the '\-\-style=".."' option to the configuration file or
|
||||||
export the BAT_STYLE environment variable (e.g.: export BAT_STYLE=".."). Possible
|
export the BAT_STYLE environment variable (e.g.: export BAT_STYLE="..").
|
||||||
values: *default*, full, auto, plain, changes, header, header-filename, header-filesize, grid,
|
.IP
|
||||||
|
When styles are specified in multiple places, the "nearest" set of styles take precedence.
|
||||||
|
The command\-line arguments are the highest priority, followed by the BAT_STYLE environment
|
||||||
|
variable, and then the configuration file. If any set of styles consists entirely of
|
||||||
|
components prefixed with "+" or "\-", it will modify the previous set of styles instead of
|
||||||
|
replacing them.
|
||||||
|
.IP
|
||||||
|
By default, the following components are enabled:
|
||||||
|
changes, grid, header\-filename, numbers, snip
|
||||||
|
.IP
|
||||||
|
Possible values: *default*, full, auto, plain, changes, header, header-filename, header-filesize, grid,
|
||||||
rule, numbers, snip.
|
rule, numbers, snip.
|
||||||
.HP
|
.HP
|
||||||
\fB\-r\fR, \fB\-\-line\-range\fR <N:M>...
|
\fB\-r\fR, \fB\-\-line\-range\fR <N:M>...
|
||||||
@@ -181,8 +265,38 @@ Display a list of supported languages for syntax highlighting.
|
|||||||
.HP
|
.HP
|
||||||
\fB\-u\fR, \fB\-\-unbuffered\fR
|
\fB\-u\fR, \fB\-\-unbuffered\fR
|
||||||
.IP
|
.IP
|
||||||
This option exists for POSIX\-compliance reasons ('u' is for 'unbuffered'). The output is
|
Enable unbuffered input reading. When this flag is set, bat will display data as soon as it
|
||||||
always unbuffered \- this option is simply ignored.
|
is available, without waiting for a complete line. This is useful for streaming use cases like
|
||||||
|
\&'tail \-f logfile | bat \-u \-\-paging=never'. Note that line numbers are automatically disabled
|
||||||
|
in unbuffered mode, and syntax highlighting may be imperfect on partial lines.
|
||||||
|
.HP
|
||||||
|
\fB\-\-no\-custom\-assets\fR
|
||||||
|
.IP
|
||||||
|
Do not load custom assets.
|
||||||
|
.HP
|
||||||
|
\fB\-\-config\-dir\fR
|
||||||
|
.IP
|
||||||
|
Show bat's configuration directory.
|
||||||
|
.HP
|
||||||
|
\fB\-\-cache\-dir\fR
|
||||||
|
.IP
|
||||||
|
Show bat's cache directory.
|
||||||
|
.HP
|
||||||
|
\fB\-\-diagnostic\fR
|
||||||
|
.IP
|
||||||
|
Show diagnostic information for bug reports.
|
||||||
|
.HP
|
||||||
|
\fB\-\-quiet\-empty\fR
|
||||||
|
.IP
|
||||||
|
Do not produce any output when the input is empty (e.g. an empty file or empty stdin). This is useful in scripts where silent behavior is preferred for empty input.
|
||||||
|
.HP
|
||||||
|
\fB\-\-acknowledgements\fR
|
||||||
|
.IP
|
||||||
|
Show acknowledgements.
|
||||||
|
.HP
|
||||||
|
\fB\-\-set\-terminal\-title\fR
|
||||||
|
.IP
|
||||||
|
Sets terminal title to filenames when using a pager.
|
||||||
.HP
|
.HP
|
||||||
\fB\-h\fR, \fB\-\-help\fR
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
.IP
|
.IP
|
||||||
@@ -212,6 +326,20 @@ location of the configuration file.
|
|||||||
To generate a default configuration file, call:
|
To generate a default configuration file, call:
|
||||||
|
|
||||||
\fB{{PROJECT_EXECUTABLE}} --generate-config-file\fR
|
\fB{{PROJECT_EXECUTABLE}} --generate-config-file\fR
|
||||||
|
|
||||||
|
These are related options:
|
||||||
|
.HP
|
||||||
|
\fB\-\-config\-file\fR
|
||||||
|
.IP
|
||||||
|
Show path to the configuration file.
|
||||||
|
.HP
|
||||||
|
\fB\-\-generate-config\-file\fR
|
||||||
|
.IP
|
||||||
|
Generates a default configuration file.
|
||||||
|
.HP
|
||||||
|
\fB\-\-no\-config\fR
|
||||||
|
.IP
|
||||||
|
Do not use the configuration file.
|
||||||
.SH "ADDING CUSTOM LANGUAGES"
|
.SH "ADDING CUSTOM LANGUAGES"
|
||||||
{{PROJECT_EXECUTABLE}} supports Sublime Text \fB.sublime-syntax\fR language files, and can be
|
{{PROJECT_EXECUTABLE}} supports Sublime Text \fB.sublime-syntax\fR language files, and can be
|
||||||
customized to add additional languages to your local installation. To do this, add the \fB.sublime-syntax\fR language
|
customized to add additional languages to your local installation. To do this, add the \fB.sublime-syntax\fR language
|
||||||
@@ -252,13 +380,23 @@ To use the preprocessor, call:
|
|||||||
|
|
||||||
\fB{{PROJECT_EXECUTABLE}} --lessopen\fR
|
\fB{{PROJECT_EXECUTABLE}} --lessopen\fR
|
||||||
|
|
||||||
Alternatively, the preprocessor may be enabled by default by adding the '\-\-lessopen' option to the configuration file.
|
Alternatively, the preprocessor may be enabled by default by adding the '\-\-lessopen' option to the configuration file.
|
||||||
|
|
||||||
To temporarily disable the preprocessor if it is enabled by default, call:
|
To temporarily disable the preprocessor if it is enabled by default, call:
|
||||||
|
|
||||||
\fB{{PROJECT_EXECUTABLE}} --no-lessopen\fR
|
\fB{{PROJECT_EXECUTABLE}} --no-lessopen\fR
|
||||||
|
|
||||||
For more information, see the "INPUT PREPROCESSOR" section of less(1).
|
These are related options:
|
||||||
|
.HP
|
||||||
|
\fB\-\-lessopen\fR
|
||||||
|
.IP
|
||||||
|
Enable the $LESSOPEN preprocessor.
|
||||||
|
.HP
|
||||||
|
\fB\-\-no\-lessopen\fR
|
||||||
|
.IP
|
||||||
|
Disable the $LESSOPEN preprocessor if enabled (overrides --lessopen)
|
||||||
|
.PP
|
||||||
|
For more information, see the "INPUT PREPROCESSOR" section of less(1).
|
||||||
|
|
||||||
.SH "MORE INFORMATION"
|
.SH "MORE INFORMATION"
|
||||||
|
|
||||||
|
|||||||
Vendored
+22
@@ -0,0 +1,22 @@
|
|||||||
|
diff --git themes/1337-Scheme/1337.tmTheme themes/1337-Scheme/1337.tmTheme
|
||||||
|
index fdff5bf..8cfc888 100644
|
||||||
|
--- themes/1337-Scheme/1337.tmTheme
|
||||||
|
+++ themes/1337-Scheme/1337.tmTheme
|
||||||
|
@@ -280,7 +280,7 @@ SOFTWARE.
|
||||||
|
<key>name</key>
|
||||||
|
<string>PHP Namespaces</string>
|
||||||
|
<key>scope</key>
|
||||||
|
- <string>support.other.namespace, entity.name.type.namespace</string>
|
||||||
|
+ <string>support.other.namespace, entity.name.type.namespace, entity.name</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
@@ -561,7 +561,7 @@ SOFTWARE.
|
||||||
|
<key>name</key>
|
||||||
|
<string>diff.header</string>
|
||||||
|
<key>scope</key>
|
||||||
|
- <string>meta.diff, meta.diff.header</string>
|
||||||
|
+ <string>meta.diff, meta.diff.header, markup.heading</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
Submodule assets/syntaxes/01_Packages contains modified content
|
||||||
|
diff --git syntaxes/01_Packages/JavaScript/JavaScript.sublime-syntax syntaxes/01_Packages/JavaScript/JavaScript.sublime-syntax
|
||||||
|
index 05a4fed6..78a7bf55 100644
|
||||||
|
--- syntaxes/01_Packages/JavaScript/JavaScript.sublime-syntax
|
||||||
|
+++ syntaxes/01_Packages/JavaScript/JavaScript.sublime-syntax
|
||||||
|
@@ -5,7 +5,7 @@ name: JavaScript
|
||||||
|
file_extensions:
|
||||||
|
- js
|
||||||
|
- htc
|
||||||
|
-first_line_match: ^#!\s*/.*\b(node|js)\b
|
||||||
|
+first_line_match: ^#!\s*/.*\b(node|bun|js)\b
|
||||||
|
scope: source.js
|
||||||
|
variables:
|
||||||
|
bin_digit: '[01_]'
|
||||||
+2365
File diff suppressed because one or more lines are too long
+39
-2
@@ -1,5 +1,5 @@
|
|||||||
diff --git syntaxes/01_Packages/Markdown/Markdown.sublime-syntax syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
|
diff --git syntaxes/01_Packages/Markdown/Markdown.sublime-syntax syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
|
||||||
index 19dc685d..44440c7f 100644
|
index 19dc685d..3a45ea05 100644
|
||||||
--- syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
|
--- syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
|
||||||
+++ syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
|
+++ syntaxes/01_Packages/Markdown/Markdown.sublime-syntax
|
||||||
@@ -24,7 +24,6 @@ variables:
|
@@ -24,7 +24,6 @@ variables:
|
||||||
@@ -166,7 +166,44 @@ index 19dc685d..44440c7f 100644
|
|||||||
- match: ^\s*$\n?
|
- match: ^\s*$\n?
|
||||||
scope: invalid.illegal.non-terminated.bold-italic.markdown
|
scope: invalid.illegal.non-terminated.bold-italic.markdown
|
||||||
pop: true
|
pop: true
|
||||||
@@ -1152,7 +1110,7 @@ contexts:
|
@@ -1073,6 +1031,36 @@ contexts:
|
||||||
|
escape: '{{code_fence_escape}}'
|
||||||
|
escape_captures:
|
||||||
|
0: meta.code-fence.definition.end.python.markdown-gfm
|
||||||
|
+ 1: punctuation.definition.raw.code-fence.end.markdown
|
||||||
|
+ - match: |-
|
||||||
|
+ (?x)
|
||||||
|
+ {{fenced_code_block_start}}
|
||||||
|
+ ((?i:puppet))
|
||||||
|
+ {{fenced_code_block_trailing_infostring_characters}}
|
||||||
|
+ captures:
|
||||||
|
+ 0: meta.code-fence.definition.begin.puppet.markdown-gfm
|
||||||
|
+ 2: punctuation.definition.raw.code-fence.begin.markdown
|
||||||
|
+ 5: constant.other.language-name.markdown
|
||||||
|
+ embed: scope:source.puppet
|
||||||
|
+ embed_scope: markup.raw.code-fence.puppet.markdown-gfm
|
||||||
|
+ escape: '{{code_fence_escape}}'
|
||||||
|
+ escape_captures:
|
||||||
|
+ 0: meta.code-fence.definition.end.puppet.markdown-gfm
|
||||||
|
+ 1: punctuation.definition.raw.code-fence.end.markdown
|
||||||
|
+ - match: |-
|
||||||
|
+ (?x)
|
||||||
|
+ {{fenced_code_block_start}}
|
||||||
|
+ ((?i:typescript|ts))
|
||||||
|
+ {{fenced_code_block_trailing_infostring_characters}}
|
||||||
|
+ captures:
|
||||||
|
+ 0: meta.code-fence.definition.begin.typescript.markdown-gfm
|
||||||
|
+ 2: punctuation.definition.raw.code-fence.begin.markdown
|
||||||
|
+ 5: constant.other.language-name.markdown
|
||||||
|
+ embed: scope:source.ts
|
||||||
|
+ embed_scope: markup.raw.code-fence.typescript.markdown-gfm
|
||||||
|
+ escape: '{{code_fence_escape}}'
|
||||||
|
+ escape_captures:
|
||||||
|
+ 0: meta.code-fence.definition.end.typescript.markdown-gfm
|
||||||
|
1: punctuation.definition.raw.code-fence.end.markdown
|
||||||
|
- match: |-
|
||||||
|
(?x)
|
||||||
|
@@ -1152,7 +1155,7 @@ contexts:
|
||||||
- match: |-
|
- match: |-
|
||||||
(?x)
|
(?x)
|
||||||
{{fenced_code_block_start}}
|
{{fenced_code_block_start}}
|
||||||
|
|||||||
+17
-2
@@ -21,11 +21,26 @@ index 9c2aa3e..180cbbf 100644
|
|||||||
<string>Invalid</string>
|
<string>Invalid</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
- <string>invalid</string>
|
- <string>invalid</string>
|
||||||
+ <string>invalid, markup.error</string>
|
+ <string>invalid, meta.annotation.error-line</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>background</key>
|
<key>background</key>
|
||||||
@@ -1042,7 +1042,7 @@
|
@@ -1038,11 +1038,22 @@
|
||||||
|
<string>#f8f8f0</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
+ <dict>
|
||||||
|
+ <key>name</key>
|
||||||
|
+ <string>Error</string>
|
||||||
|
+ <key>scope</key>
|
||||||
|
+ <string>markup.error</string>
|
||||||
|
+ <key>settings</key>
|
||||||
|
+ <dict>
|
||||||
|
+ <key>foreground</key>
|
||||||
|
+ <string>#dd2020</string>
|
||||||
|
+ </dict>
|
||||||
|
+ </dict>
|
||||||
|
<dict>
|
||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Invalid deprecated</string>
|
<string>Invalid deprecated</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
|
|||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
diff --git themes/onehalf/sublimetext/OneHalfDark.tmTheme themes/onehalf/sublimetext/OneHalfDark.tmTheme
|
||||||
|
index b16050c..b021071 100644
|
||||||
|
--- themes/onehalf/sublimetext/OneHalfDark.tmTheme
|
||||||
|
+++ themes/onehalf/sublimetext/OneHalfDark.tmTheme
|
||||||
|
@@ -28,7 +28,7 @@
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
- <string>OneHalfLight</string>
|
||||||
|
+ <string>OneHalfDark</string>
|
||||||
|
<key>semanticClass</key>
|
||||||
|
<string>theme.dark.one_half_dark</string>
|
||||||
|
<key>uuid</key>
|
||||||
|
@@ -155,7 +155,7 @@
|
||||||
|
<key>name</key>
|
||||||
|
<string>Classes</string>
|
||||||
|
<key>scope</key>
|
||||||
|
- <string>support.class, entity.name.class, entity.name.type.class</string>
|
||||||
|
+ <string>support.class, entity.name.class, entity.name.type.class, entity.name</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
@@ -188,7 +188,7 @@
|
||||||
|
<key>name</key>
|
||||||
|
<string>Storage</string>
|
||||||
|
<key>scope</key>
|
||||||
|
- <string>storage</string>
|
||||||
|
+ <string>storage, meta.mapping.key string</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
@@ -309,7 +309,7 @@
|
||||||
|
<key>name</key>
|
||||||
|
<string>Markdown: Headings</string>
|
||||||
|
<key>scope</key>
|
||||||
|
- <string>markup.heading punctuation.definition.heading, entity.name.section</string>
|
||||||
|
+ <string>markup.heading punctuation.definition.heading, entity.name.section, markup.heading - text.html.markdown</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>fontStyle</key>
|
||||||
|
@@ -660,4 +660,4 @@
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
-</plist>
|
||||||
|
\ No newline at end of file
|
||||||
|
+</plist>
|
||||||
+9
@@ -2,6 +2,15 @@ diff --git syntaxes/01_Packages/Python/Python.sublime-syntax syntaxes/01_Package
|
|||||||
index 2acd86d8..86257f7b 100644
|
index 2acd86d8..86257f7b 100644
|
||||||
--- syntaxes/01_Packages/Python/Python.sublime-syntax
|
--- syntaxes/01_Packages/Python/Python.sublime-syntax
|
||||||
+++ syntaxes/01_Packages/Python/Python.sublime-syntax
|
+++ syntaxes/01_Packages/Python/Python.sublime-syntax
|
||||||
|
@@ -25,7 +31,7 @@ file_extensions:
|
||||||
|
- wscript
|
||||||
|
- bazel
|
||||||
|
- bzl
|
||||||
|
-first_line_match: ^#!\s*/.*\bpython(\d(\.\d)?)?\b
|
||||||
|
+first_line_match: ^#!\s*/.*\b(python(\d(\.\d)?)?|uv)\b
|
||||||
|
scope: source.python
|
||||||
|
|
||||||
|
variables:
|
||||||
@@ -988,10 +988,6 @@ contexts:
|
@@ -988,10 +988,6 @@ contexts:
|
||||||
- match: \}
|
- match: \}
|
||||||
scope: punctuation.section.mapping-or-set.end.python
|
scope: punctuation.section.mapping-or-set.end.python
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ index e973e319..07c170a7 100644
|
|||||||
first_line_match: |
|
first_line_match: |
|
||||||
(?x)
|
(?x)
|
||||||
- ^\#! .* \b(bash|zsh|sh|tcsh|ash)\b
|
- ^\#! .* \b(bash|zsh|sh|tcsh|ash)\b
|
||||||
+ ^\#! .* \b(bash|zsh|sh|tcsh|ash|dash)\b
|
+ ^\#! .* \b(bash|zsh|sh|tcsh|ash|dash|ksh)\b
|
||||||
| ^\# \s* -\*- [^*]* mode: \s* shell-script [^*]* -\*-
|
| ^\# \s* -\*- [^*]* mode: \s* shell-script [^*]* -\*-
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
diff --git syntaxes/01_Packages/TCL/Tcl.sublime-syntax syntaxes/01_Packages/TCL/Tcl.sublime-syntax
|
||||||
|
index 1234567..abcdefg 100644
|
||||||
|
--- syntaxes/01_Packages/TCL/Tcl.sublime-syntax
|
||||||
|
+++ syntaxes/01_Packages/TCL/Tcl.sublime-syntax
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
# http://www.sublimetext.com/docs/3/syntax.html
|
||||||
|
name: Tcl
|
||||||
|
file_extensions:
|
||||||
|
- tcl
|
||||||
|
+first_line_match: ^\#!.*\b(tclsh|wish|expect)\b
|
||||||
|
scope: source.tcl
|
||||||
|
variables:
|
||||||
Vendored
+18
@@ -2,6 +2,24 @@ diff --git themes/TwoDark/TwoDark.tmTheme themes/TwoDark/TwoDark.tmTheme
|
|||||||
index 87fd358..56376d3 100644
|
index 87fd358..56376d3 100644
|
||||||
--- themes/TwoDark/TwoDark.tmTheme
|
--- themes/TwoDark/TwoDark.tmTheme
|
||||||
+++ themes/TwoDark/TwoDark.tmTheme
|
+++ themes/TwoDark/TwoDark.tmTheme
|
||||||
|
@@ -125,7 +125,7 @@
|
||||||
|
<key>name</key>
|
||||||
|
<string>Classes</string>
|
||||||
|
<key>scope</key>
|
||||||
|
- <string>support.class, entity.name.class, entity.name.type.class</string>
|
||||||
|
+ <string>support.class, entity.name.class, entity.name.type.class, entity.name</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>foreground</key>
|
||||||
|
@@ -290,7 +290,7 @@
|
||||||
|
<key>name</key>
|
||||||
|
<string>Headings</string>
|
||||||
|
<key>scope</key>
|
||||||
|
- <string>markup.heading punctuation.definition.heading, entity.name.section</string>
|
||||||
|
+ <string>markup.heading punctuation.definition.heading, entity.name.section, markup.heading - text.html.markdown</string>
|
||||||
|
<key>settings</key>
|
||||||
|
<dict>
|
||||||
|
<key>fontStyle</key>
|
||||||
@@ -533,7 +533,7 @@
|
@@ -533,7 +533,7 @@
|
||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Json key</string>
|
<string>Json key</string>
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Ada updated: e2b8fd5175...3f17c2363e
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Apache updated: 163bc03ae8...c438c352db
@@ -1,5 +1,6 @@
|
|||||||
%YAML 1.2
|
%YAML 1.2
|
||||||
---
|
---
|
||||||
|
name: x86_64 Assembly
|
||||||
file_extensions: [yasm, nasm, asm, inc, mac]
|
file_extensions: [yasm, nasm, asm, inc, mac]
|
||||||
scope: source.asm.x86_64
|
scope: source.asm.x86_64
|
||||||
|
|
||||||
@@ -1364,4 +1365,3 @@ contexts:
|
|||||||
scope: invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic
|
scope: invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic
|
||||||
- match: '(?i)\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\b'
|
- match: '(?i)\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\b'
|
||||||
scope: invalid.keyword.operator.word.mnemonic.sse5.simd-integer
|
scope: invalid.keyword.operator.word.mnemonic.sse5.simd-integer
|
||||||
...
|
|
||||||
+1
Submodule assets/syntaxes/02_Extra/CFML added at b91c44a32e
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/CMake updated: eb40ede56c...2560a080b3
+1
Submodule assets/syntaxes/02_Extra/COBOL added at 27825ee022
Vendored
+27
-26
@@ -2,20 +2,21 @@
|
|||||||
---
|
---
|
||||||
# See http://www.sublimetext.com/docs/3/syntax.html
|
# See http://www.sublimetext.com/docs/3/syntax.html
|
||||||
name: Comma Separated Values
|
name: Comma Separated Values
|
||||||
file_extensions:
|
scope: text.csv.comma
|
||||||
- csv
|
|
||||||
- tsv
|
|
||||||
scope: text.csv
|
|
||||||
variables:
|
variables:
|
||||||
field_separator: (?:[,;\t])
|
field_separator: (?:,)
|
||||||
record_separator: (?:$\n?)
|
record_separator: (?:$\n?)
|
||||||
contexts:
|
contexts:
|
||||||
prototype:
|
main:
|
||||||
- match: (?={{record_separator}})
|
- match: '^'
|
||||||
pop: true
|
push: fields
|
||||||
|
|
||||||
fields:
|
fields:
|
||||||
|
- include: record_separator
|
||||||
- match: ''
|
- match: ''
|
||||||
push:
|
push:
|
||||||
|
- field_or_record_separator
|
||||||
|
- field5
|
||||||
- field_or_record_separator
|
- field_or_record_separator
|
||||||
- field4
|
- field4
|
||||||
- field_or_record_separator
|
- field_or_record_separator
|
||||||
@@ -24,16 +25,20 @@ contexts:
|
|||||||
- field2
|
- field2
|
||||||
- field_or_record_separator
|
- field_or_record_separator
|
||||||
- field1
|
- field1
|
||||||
main:
|
|
||||||
- meta_include_prototype: false
|
|
||||||
- match: '^'
|
|
||||||
set: fields
|
|
||||||
|
|
||||||
field_or_record_separator:
|
record_separator_pop:
|
||||||
|
- match: (?={{record_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
record_separator:
|
||||||
- meta_include_prototype: false
|
- meta_include_prototype: false
|
||||||
- match: '{{record_separator}}'
|
- match: '{{record_separator}}'
|
||||||
scope: punctuation.terminator.record.csv
|
scope: punctuation.terminator.record.csv
|
||||||
pop: true
|
pop: true
|
||||||
|
|
||||||
|
field_or_record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- include: record_separator_pop
|
||||||
- match: '{{field_separator}}'
|
- match: '{{field_separator}}'
|
||||||
scope: punctuation.separator.sequence.csv
|
scope: punctuation.separator.sequence.csv
|
||||||
pop: true
|
pop: true
|
||||||
@@ -41,24 +46,16 @@ contexts:
|
|||||||
field_contents:
|
field_contents:
|
||||||
- match: '"'
|
- match: '"'
|
||||||
scope: punctuation.definition.string.begin.csv
|
scope: punctuation.definition.string.begin.csv
|
||||||
push: double_quoted_string
|
push: scope:text.csv#double_quoted_string
|
||||||
|
|
||||||
- match: (?={{field_separator}}|{{record_separator}})
|
- include: record_separator_pop
|
||||||
pop: true
|
- match: (?={{field_separator}})
|
||||||
|
|
||||||
double_quoted_string:
|
|
||||||
- meta_include_prototype: false
|
|
||||||
- meta_scope: string.quoted.double.csv
|
|
||||||
- match: '""'
|
|
||||||
scope: constant.character.escape.csv
|
|
||||||
- match: '"'
|
|
||||||
scope: punctuation.definition.string.end.csv
|
|
||||||
pop: true
|
pop: true
|
||||||
|
|
||||||
field1:
|
field1:
|
||||||
- match: ''
|
- match: ''
|
||||||
set:
|
set:
|
||||||
- meta_content_scope: meta.field-1.csv support.type
|
- meta_content_scope: meta.field-1.csv variable.parameter
|
||||||
- include: field_contents
|
- include: field_contents
|
||||||
field2:
|
field2:
|
||||||
- match: ''
|
- match: ''
|
||||||
@@ -75,4 +72,8 @@ contexts:
|
|||||||
set:
|
set:
|
||||||
- meta_content_scope: meta.field-4.csv keyword.operator
|
- meta_content_scope: meta.field-4.csv keyword.operator
|
||||||
- include: field_contents
|
- include: field_contents
|
||||||
|
field5:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-5.csv string.unquoted
|
||||||
|
- include: field_contents
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
# See http://www.sublimetext.com/docs/3/syntax.html
|
||||||
|
name: Pipe Separated Values
|
||||||
|
scope: text.csv.pipe
|
||||||
|
variables:
|
||||||
|
field_separator: (?:\|)
|
||||||
|
record_separator: (?:$\n?)
|
||||||
|
|
||||||
|
contexts:
|
||||||
|
main:
|
||||||
|
- match: '^'
|
||||||
|
push: fields
|
||||||
|
|
||||||
|
fields:
|
||||||
|
- include: record_separator
|
||||||
|
- match: ''
|
||||||
|
push:
|
||||||
|
- field_or_record_separator
|
||||||
|
- field5
|
||||||
|
- field_or_record_separator
|
||||||
|
- field4
|
||||||
|
- field_or_record_separator
|
||||||
|
- field3
|
||||||
|
- field_or_record_separator
|
||||||
|
- field2
|
||||||
|
- field_or_record_separator
|
||||||
|
- field1
|
||||||
|
|
||||||
|
record_separator_pop:
|
||||||
|
- match: (?={{record_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- match: '{{record_separator}}'
|
||||||
|
scope: punctuation.terminator.record.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field_or_record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: '{{field_separator}}'
|
||||||
|
scope: punctuation.separator.sequence.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field_contents:
|
||||||
|
- match: '"'
|
||||||
|
scope: punctuation.definition.string.begin.csv
|
||||||
|
push: scope:text.csv#double_quoted_string
|
||||||
|
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: (?={{field_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field1:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-1.csv variable.parameter
|
||||||
|
- include: field_contents
|
||||||
|
field2:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-2.csv support.function
|
||||||
|
- include: field_contents
|
||||||
|
field3:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-3.csv constant.numeric
|
||||||
|
- include: field_contents
|
||||||
|
field4:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-4.csv keyword.operator
|
||||||
|
- include: field_contents
|
||||||
|
field5:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-5.csv string.unquoted
|
||||||
|
- include: field_contents
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
# See http://www.sublimetext.com/docs/3/syntax.html
|
||||||
|
name: Semi-Colon Separated Values
|
||||||
|
scope: text.csv.semi-colon
|
||||||
|
variables:
|
||||||
|
field_separator: (?:;)
|
||||||
|
record_separator: (?:$\n?)
|
||||||
|
contexts:
|
||||||
|
main:
|
||||||
|
- match: '^'
|
||||||
|
push: fields
|
||||||
|
|
||||||
|
fields:
|
||||||
|
- include: record_separator
|
||||||
|
- match: ''
|
||||||
|
push:
|
||||||
|
- field_or_record_separator
|
||||||
|
- field5
|
||||||
|
- field_or_record_separator
|
||||||
|
- field4
|
||||||
|
- field_or_record_separator
|
||||||
|
- field3
|
||||||
|
- field_or_record_separator
|
||||||
|
- field2
|
||||||
|
- field_or_record_separator
|
||||||
|
- field1
|
||||||
|
|
||||||
|
record_separator_pop:
|
||||||
|
- match: (?={{record_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- match: '{{record_separator}}'
|
||||||
|
scope: punctuation.terminator.record.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field_or_record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: '{{field_separator}}'
|
||||||
|
scope: punctuation.separator.sequence.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field_contents:
|
||||||
|
- match: '"'
|
||||||
|
scope: punctuation.definition.string.begin.csv
|
||||||
|
push: scope:text.csv#double_quoted_string
|
||||||
|
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: (?={{field_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field1:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-1.csv variable.parameter
|
||||||
|
- include: field_contents
|
||||||
|
field2:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-2.csv support.function
|
||||||
|
- include: field_contents
|
||||||
|
field3:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-3.csv constant.numeric
|
||||||
|
- include: field_contents
|
||||||
|
field4:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-4.csv keyword.operator
|
||||||
|
- include: field_contents
|
||||||
|
field5:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-5.csv string.unquoted
|
||||||
|
- include: field_contents
|
||||||
+113
@@ -0,0 +1,113 @@
|
|||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
# See http://www.sublimetext.com/docs/3/syntax.html
|
||||||
|
name: Separated Values
|
||||||
|
file_extensions:
|
||||||
|
- csv
|
||||||
|
scope: text.csv
|
||||||
|
variables:
|
||||||
|
field_separator_chars: ',;\t|'
|
||||||
|
field_separator: (?:[{{field_separator_chars}}])
|
||||||
|
record_separator: (?:$\n?)
|
||||||
|
contexts:
|
||||||
|
main:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- include: three_field_separators
|
||||||
|
- include: single_separator_type_on_line
|
||||||
|
- match: '^'
|
||||||
|
push: unknown-separated-main
|
||||||
|
|
||||||
|
three_field_separators:
|
||||||
|
- match: ^(?=(?:[^,]*,){3})
|
||||||
|
set: scope:text.csv.comma
|
||||||
|
- match: ^(?=(?:[^;]*;){3})
|
||||||
|
set: scope:text.csv.semi-colon
|
||||||
|
- match: ^(?=(?:[^\t]*\t){3})
|
||||||
|
set: scope:text.csv.tab
|
||||||
|
- match: ^(?=(?:[^|]*\|){3})
|
||||||
|
set: scope:text.csv.pipe
|
||||||
|
|
||||||
|
single_separator_type_on_line:
|
||||||
|
- match: ^(?=[^{{field_separator_chars}}]*,[^;\t|]*$)
|
||||||
|
set: scope:text.csv.comma
|
||||||
|
- match: ^(?=[^{{field_separator_chars}}]*;[^,\t|]*$)
|
||||||
|
set: scope:text.csv.semi-colon
|
||||||
|
- match: ^(?=[^{{field_separator_chars}}]*\t[^,;|]*$)
|
||||||
|
set: scope:text.csv.tab
|
||||||
|
- match: ^(?=[^{{field_separator_chars}}]*\|[^,;\t]*$)
|
||||||
|
set: scope:text.csv.pipe
|
||||||
|
|
||||||
|
unknown-separated-main:
|
||||||
|
- include: record_separator
|
||||||
|
- match: ''
|
||||||
|
push:
|
||||||
|
- field_or_record_separator
|
||||||
|
- field5
|
||||||
|
- field_or_record_separator
|
||||||
|
- field4
|
||||||
|
- field_or_record_separator
|
||||||
|
- field3
|
||||||
|
- field_or_record_separator
|
||||||
|
- field2
|
||||||
|
- field_or_record_separator
|
||||||
|
- field1
|
||||||
|
|
||||||
|
record_separator_pop:
|
||||||
|
- match: (?={{record_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- match: '{{record_separator}}'
|
||||||
|
scope: punctuation.terminator.record.csv
|
||||||
|
|
||||||
|
field_or_record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: '{{field_separator}}'
|
||||||
|
scope: punctuation.separator.sequence.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field_contents:
|
||||||
|
- match: '"'
|
||||||
|
scope: punctuation.definition.string.begin.csv
|
||||||
|
push: double_quoted_string
|
||||||
|
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: (?={{field_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
double_quoted_string:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- meta_scope: meta.string.quoted.double.csv
|
||||||
|
- match: '""'
|
||||||
|
scope: constant.character.escape.csv
|
||||||
|
- match: '"'
|
||||||
|
scope: punctuation.definition.string.end.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field1:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-1.csv variable.parameter
|
||||||
|
- include: field_contents
|
||||||
|
field2:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-2.csv support.function
|
||||||
|
- include: field_contents
|
||||||
|
field3:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-3.csv constant.numeric
|
||||||
|
- include: field_contents
|
||||||
|
field4:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-4.csv keyword.operator
|
||||||
|
- include: field_contents
|
||||||
|
field5:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-5.csv string.unquoted
|
||||||
|
- include: field_contents
|
||||||
+83
@@ -0,0 +1,83 @@
|
|||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
# See http://www.sublimetext.com/docs/3/syntax.html
|
||||||
|
name: Tab Separated Values
|
||||||
|
scope: text.csv.tab
|
||||||
|
file_extensions:
|
||||||
|
- tsv
|
||||||
|
|
||||||
|
variables:
|
||||||
|
field_separator: (?:\t)
|
||||||
|
record_separator: (?:$\n?)
|
||||||
|
|
||||||
|
contexts:
|
||||||
|
main:
|
||||||
|
- match: '^'
|
||||||
|
push: fields
|
||||||
|
|
||||||
|
fields:
|
||||||
|
- include: record_separator
|
||||||
|
- match: ''
|
||||||
|
push:
|
||||||
|
- field_or_record_separator
|
||||||
|
- field5
|
||||||
|
- field_or_record_separator
|
||||||
|
- field4
|
||||||
|
- field_or_record_separator
|
||||||
|
- field3
|
||||||
|
- field_or_record_separator
|
||||||
|
- field2
|
||||||
|
- field_or_record_separator
|
||||||
|
- field1
|
||||||
|
|
||||||
|
record_separator_pop:
|
||||||
|
- match: (?={{record_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- match: '{{record_separator}}'
|
||||||
|
scope: punctuation.terminator.record.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field_or_record_separator:
|
||||||
|
- meta_include_prototype: false
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: '{{field_separator}}'
|
||||||
|
scope: punctuation.separator.sequence.csv
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field_contents:
|
||||||
|
- match: '"'
|
||||||
|
scope: punctuation.definition.string.begin.csv
|
||||||
|
push: scope:text.csv#double_quoted_string
|
||||||
|
|
||||||
|
- include: record_separator_pop
|
||||||
|
- match: (?={{field_separator}})
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
field1:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-1.csv variable.parameter
|
||||||
|
- include: field_contents
|
||||||
|
field2:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-2.csv support.function
|
||||||
|
- include: field_contents
|
||||||
|
field3:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-3.csv constant.numeric
|
||||||
|
- include: field_contents
|
||||||
|
field4:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-4.csv keyword.operator
|
||||||
|
- include: field_contents
|
||||||
|
field5:
|
||||||
|
- match: ''
|
||||||
|
set:
|
||||||
|
- meta_content_scope: meta.field-5.csv string.unquoted
|
||||||
|
- include: field_contents
|
||||||
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Fish updated: 98316d4332...ef510fd759
+1
Submodule assets/syntaxes/02_Extra/GDScript-sublime added at 96f5dcf297
+1
Submodule assets/syntaxes/02_Extra/Gomod added at e0200f024a
-23
@@ -1,23 +0,0 @@
|
|||||||
%YAML 1.2
|
|
||||||
---
|
|
||||||
# http://www.sublimetext.com/docs/3/syntax.html
|
|
||||||
name: hosts
|
|
||||||
file_extensions:
|
|
||||||
- hosts
|
|
||||||
scope: source.hosts
|
|
||||||
|
|
||||||
contexts:
|
|
||||||
main:
|
|
||||||
- scope: comment.line.number-sign
|
|
||||||
match: \#.*
|
|
||||||
comment: comment
|
|
||||||
|
|
||||||
- match: ^\s*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9a-f:]+)
|
|
||||||
comment: ipaddress
|
|
||||||
scope: constant.numeric.ipaddress
|
|
||||||
|
|
||||||
|
|
||||||
- match: \s(localhost|ip6-loopback|ip6-localhost|ip6-localnet|ip6-mcastprefix|ip6-allnodes|ip6-allrouters|ip6-allhosts|broadcasthost)\b
|
|
||||||
scope: keyword.host.predefined}
|
|
||||||
comment: prefdfined
|
|
||||||
|
|
||||||
+1
Submodule assets/syntaxes/02_Extra/Idris2 added at 4d8eb35a38
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Jinja2 updated: 45355633d1...e572427f6a
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Jsonnet updated: e2c917ed7d...56ac0e6854
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Julia updated: 98233f96d4...3366b10be9
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Kotlin updated: aeeed2780b...c353694169
-398
@@ -1,398 +0,0 @@
|
|||||||
%YAML 1.2
|
|
||||||
---
|
|
||||||
# http://www.sublimetext.com/docs/3/syntax.html
|
|
||||||
name: Kotlin
|
|
||||||
file_extensions:
|
|
||||||
- kt
|
|
||||||
- kts
|
|
||||||
scope: source.Kotlin
|
|
||||||
contexts:
|
|
||||||
main:
|
|
||||||
- include: comments
|
|
||||||
- match: '^\s*(package)\b(?:\s*([^ ;$]+)\s*)?'
|
|
||||||
captures:
|
|
||||||
1: keyword.other.kotlin
|
|
||||||
2: entity.name.package.kotlin
|
|
||||||
- include: imports
|
|
||||||
- include: statements
|
|
||||||
classes:
|
|
||||||
- match: (?<!::)(?=\b(?:companion|class|object|interface)\b)
|
|
||||||
push:
|
|
||||||
- match: '(?=$|\})'
|
|
||||||
pop: true
|
|
||||||
- include: comments
|
|
||||||
- match: \b(companion\s*)?(class|object|interface)\b
|
|
||||||
captures:
|
|
||||||
1: storage.modifier.kotlin
|
|
||||||
2: storage.modifier.kotlin
|
|
||||||
push:
|
|
||||||
- match: '(?=<|\{|\(|:|$)'
|
|
||||||
pop: true
|
|
||||||
- include: comments
|
|
||||||
- match: \w+
|
|
||||||
scope: entity.name.type.class.kotlin
|
|
||||||
- match: <
|
|
||||||
push:
|
|
||||||
- match: ">"
|
|
||||||
pop: true
|
|
||||||
- include: generics
|
|
||||||
- match: \(
|
|
||||||
push:
|
|
||||||
- match: \)
|
|
||||||
pop: true
|
|
||||||
- include: parameters
|
|
||||||
- match: (:)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.declaration.kotlin
|
|
||||||
push:
|
|
||||||
- match: "(?={|$)"
|
|
||||||
pop: true
|
|
||||||
- match: \w+
|
|
||||||
scope: entity.other.inherited-class.kotlin
|
|
||||||
- match: \(
|
|
||||||
push:
|
|
||||||
- match: \)
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- match: '\{'
|
|
||||||
push:
|
|
||||||
- match: '\}'
|
|
||||||
pop: true
|
|
||||||
- include: statements
|
|
||||||
comments:
|
|
||||||
- match: /\*
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.comment.kotlin
|
|
||||||
push:
|
|
||||||
- meta_scope: comment.block.kotlin
|
|
||||||
- match: \*/
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.comment.kotlin
|
|
||||||
pop: true
|
|
||||||
- match: \s*((//).*$\n?)
|
|
||||||
captures:
|
|
||||||
1: comment.line.double-slash.kotlin
|
|
||||||
2: punctuation.definition.comment.kotlin
|
|
||||||
constants:
|
|
||||||
- match: \b(true|false|null|this|super)\b
|
|
||||||
scope: constant.language.kotlin
|
|
||||||
- match: '\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFf])?\b'
|
|
||||||
scope: constant.numeric.kotlin
|
|
||||||
- match: '\b([A-Z][A-Z0-9_]+)\b'
|
|
||||||
scope: constant.other.kotlin
|
|
||||||
expressions:
|
|
||||||
- match: \(
|
|
||||||
push:
|
|
||||||
- match: \)
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- include: types
|
|
||||||
- include: strings
|
|
||||||
- include: constants
|
|
||||||
- include: comments
|
|
||||||
- include: keywords
|
|
||||||
functions:
|
|
||||||
- match: (?=\s*\b(?:fun)\b)
|
|
||||||
push:
|
|
||||||
- match: '(?=$|\})'
|
|
||||||
pop: true
|
|
||||||
- match: \b(fun)\b
|
|
||||||
captures:
|
|
||||||
1: keyword.other.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=\()
|
|
||||||
pop: true
|
|
||||||
- match: <
|
|
||||||
push:
|
|
||||||
- match: ">"
|
|
||||||
pop: true
|
|
||||||
- include: generics
|
|
||||||
- match: '([\.<\?>\w]+\.)?(\w+)'
|
|
||||||
captures:
|
|
||||||
2: entity.name.function.kotlin
|
|
||||||
- match: \(
|
|
||||||
push:
|
|
||||||
- match: \)
|
|
||||||
pop: true
|
|
||||||
- include: parameters
|
|
||||||
- match: (:)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.declaration.kotlin
|
|
||||||
push:
|
|
||||||
- match: "(?={|=|$)"
|
|
||||||
pop: true
|
|
||||||
- include: types
|
|
||||||
- match: '\{'
|
|
||||||
push:
|
|
||||||
- match: '(?=\})'
|
|
||||||
pop: true
|
|
||||||
- include: statements
|
|
||||||
- match: (=)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.assignment.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=$)
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
generics:
|
|
||||||
- match: (:)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.declaration.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=,|>)
|
|
||||||
pop: true
|
|
||||||
- include: types
|
|
||||||
- include: keywords
|
|
||||||
- match: \w+
|
|
||||||
scope: storage.type.generic.kotlin
|
|
||||||
getters-and-setters:
|
|
||||||
- match: \b(get)\b\s*\(\s*\)
|
|
||||||
captures:
|
|
||||||
1: entity.name.function.kotlin
|
|
||||||
push:
|
|
||||||
- match: '\}|(?=\bset\b)|$'
|
|
||||||
pop: true
|
|
||||||
- match: (=)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.assignment.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=$|\bset\b)
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- match: '\{'
|
|
||||||
push:
|
|
||||||
- match: '\}'
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- match: \b(set)\b\s*(?=\()
|
|
||||||
captures:
|
|
||||||
1: entity.name.function.kotlin
|
|
||||||
push:
|
|
||||||
- match: '\}|(?=\bget\b)|$'
|
|
||||||
pop: true
|
|
||||||
- match: \(
|
|
||||||
push:
|
|
||||||
- match: \)
|
|
||||||
pop: true
|
|
||||||
- include: parameters
|
|
||||||
- match: (=)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.assignment.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=$|\bset\b)
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- match: '\{'
|
|
||||||
push:
|
|
||||||
- match: '\}'
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
imports:
|
|
||||||
- match: '^\s*(import)\s+[^ $]+\s+(as)?'
|
|
||||||
captures:
|
|
||||||
1: keyword.other.kotlin
|
|
||||||
2: keyword.other.kotlin
|
|
||||||
keywords:
|
|
||||||
- match: \b(var|val|public|private|protected|abstract|final|sealed|enum|open|attribute|annotation|override|inline|vararg|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof|reified|suspend)\b
|
|
||||||
scope: storage.modifier.kotlin
|
|
||||||
- match: \b(try|catch|finally|throw)\b
|
|
||||||
scope: keyword.control.catch-exception.kotlin
|
|
||||||
- match: \b(if|else|while|for|do|return|when|where|break|continue)\b
|
|
||||||
scope: keyword.control.kotlin
|
|
||||||
- match: \b(in|is|!in|!is|as|as\?|assert)\b
|
|
||||||
scope: keyword.operator.kotlin
|
|
||||||
- match: (==|!=|===|!==|<=|>=|<|>)
|
|
||||||
scope: keyword.operator.comparison.kotlin
|
|
||||||
- match: (=)
|
|
||||||
scope: keyword.operator.assignment.kotlin
|
|
||||||
- match: (::)
|
|
||||||
scope: keyword.operator.kotlin
|
|
||||||
- match: (:)
|
|
||||||
scope: keyword.operator.declaration.kotlin
|
|
||||||
- match: \b(by)\b
|
|
||||||
scope: keyword.other.by.kotlin
|
|
||||||
- match: (\?\.)
|
|
||||||
scope: keyword.operator.safenav.kotlin
|
|
||||||
- match: (\.)
|
|
||||||
scope: keyword.operator.dot.kotlin
|
|
||||||
- match: (\?:)
|
|
||||||
scope: keyword.operator.elvis.kotlin
|
|
||||||
- match: (\-\-|\+\+)
|
|
||||||
scope: keyword.operator.increment-decrement.kotlin
|
|
||||||
- match: (\+=|\-=|\*=|\/=)
|
|
||||||
scope: keyword.operator.arithmetic.assign.kotlin
|
|
||||||
- match: (\.\.)
|
|
||||||
scope: keyword.operator.range.kotlin
|
|
||||||
- match: (\-|\+|\*|\/|%)
|
|
||||||
scope: keyword.operator.arithmetic.kotlin
|
|
||||||
- match: (!|&&|\|\|)
|
|
||||||
scope: keyword.operator.logical.kotlin
|
|
||||||
- match: (;)
|
|
||||||
scope: punctuation.terminator.kotlin
|
|
||||||
namespaces:
|
|
||||||
- match: \b(namespace)\b
|
|
||||||
scope: keyword.other.kotlin
|
|
||||||
- match: '\{'
|
|
||||||
push:
|
|
||||||
- match: '\}'
|
|
||||||
pop: true
|
|
||||||
- include: statements
|
|
||||||
parameters:
|
|
||||||
- match: (:)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.declaration.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=,|\)|=)
|
|
||||||
pop: true
|
|
||||||
- include: types
|
|
||||||
- match: (=)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.declaration.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=,|\))
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- include: keywords
|
|
||||||
- match: \w+
|
|
||||||
scope: variable.parameter.function.kotlin
|
|
||||||
statements:
|
|
||||||
- include: namespaces
|
|
||||||
- include: typedefs
|
|
||||||
- include: classes
|
|
||||||
- include: functions
|
|
||||||
- include: variables
|
|
||||||
- include: getters-and-setters
|
|
||||||
- include: expressions
|
|
||||||
strings:
|
|
||||||
- match: '"""'
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.begin.kotlin
|
|
||||||
push:
|
|
||||||
- meta_scope: string.quoted.third.kotlin
|
|
||||||
- match: '"""'
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.end.kotlin
|
|
||||||
pop: true
|
|
||||||
- match: '(\$\w+|\$\{[^\}]+\})'
|
|
||||||
scope: variable.parameter.template.kotlin
|
|
||||||
- match: \\.
|
|
||||||
scope: constant.character.escape.kotlin
|
|
||||||
- match: '"'
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.begin.kotlin
|
|
||||||
push:
|
|
||||||
- meta_scope: string.quoted.double.kotlin
|
|
||||||
- match: '"'
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.end.kotlin
|
|
||||||
pop: true
|
|
||||||
- match: '(\$\w+|\$\{[^\}]+\})'
|
|
||||||
scope: variable.parameter.template.kotlin
|
|
||||||
- match: \\.
|
|
||||||
scope: constant.character.escape.kotlin
|
|
||||||
- match: "'"
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.begin.kotlin
|
|
||||||
push:
|
|
||||||
- meta_scope: string.quoted.single.kotlin
|
|
||||||
- match: "'"
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.end.kotlin
|
|
||||||
pop: true
|
|
||||||
- match: \\.
|
|
||||||
scope: constant.character.escape.kotlin
|
|
||||||
- match: "`"
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.begin.kotlin
|
|
||||||
push:
|
|
||||||
- meta_scope: string.quoted.single.kotlin
|
|
||||||
- match: "`"
|
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.end.kotlin
|
|
||||||
pop: true
|
|
||||||
typedefs:
|
|
||||||
- match: (?=\s*(?:type))
|
|
||||||
push:
|
|
||||||
- match: (?=$)
|
|
||||||
pop: true
|
|
||||||
- match: \b(type)\b
|
|
||||||
scope: keyword.other.kotlin
|
|
||||||
- match: <
|
|
||||||
push:
|
|
||||||
- match: ">"
|
|
||||||
pop: true
|
|
||||||
- include: generics
|
|
||||||
- include: expressions
|
|
||||||
types:
|
|
||||||
- match: \b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b
|
|
||||||
scope: storage.type.buildin.kotlin
|
|
||||||
- match: \b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b
|
|
||||||
scope: storage.type.buildin.array.kotlin
|
|
||||||
- match: \b(Array|Collection|List|Map|Set|MutableList|MutableMap|MutableSet|Sequence)<\b
|
|
||||||
captures:
|
|
||||||
1: storage.type.buildin.collection.kotlin
|
|
||||||
push:
|
|
||||||
- match: ">"
|
|
||||||
pop: true
|
|
||||||
- include: types
|
|
||||||
- include: keywords
|
|
||||||
- match: \w+<
|
|
||||||
push:
|
|
||||||
- match: ">"
|
|
||||||
pop: true
|
|
||||||
- include: types
|
|
||||||
- include: keywords
|
|
||||||
- match: '\{'
|
|
||||||
push:
|
|
||||||
- match: '\}'
|
|
||||||
pop: true
|
|
||||||
- include: statements
|
|
||||||
- match: \(
|
|
||||||
push:
|
|
||||||
- match: \)
|
|
||||||
pop: true
|
|
||||||
- include: types
|
|
||||||
- match: (->)
|
|
||||||
scope: keyword.operator.declaration.kotlin
|
|
||||||
variables:
|
|
||||||
- match: (?=\s*\b(?:var|val)\b)
|
|
||||||
push:
|
|
||||||
- match: (?=:|=|(\b(by)\b)|$)
|
|
||||||
pop: true
|
|
||||||
- match: \b(var|val)\b
|
|
||||||
captures:
|
|
||||||
1: keyword.other.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=:|=|(\b(by)\b)|$)
|
|
||||||
pop: true
|
|
||||||
- match: <
|
|
||||||
push:
|
|
||||||
- match: ">"
|
|
||||||
pop: true
|
|
||||||
- include: generics
|
|
||||||
- match: '([\.<\?>\w]+\.)?(\w+)'
|
|
||||||
captures:
|
|
||||||
2: entity.name.variable.kotlin
|
|
||||||
- match: (:)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.declaration.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?==|$)
|
|
||||||
pop: true
|
|
||||||
- include: types
|
|
||||||
- include: getters-and-setters
|
|
||||||
- match: \b(by)\b
|
|
||||||
captures:
|
|
||||||
1: keyword.other.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=$)
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- match: (=)
|
|
||||||
captures:
|
|
||||||
1: keyword.operator.assignment.kotlin
|
|
||||||
push:
|
|
||||||
- match: (?=$)
|
|
||||||
pop: true
|
|
||||||
- include: expressions
|
|
||||||
- include: getters-and-setters
|
|
||||||
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Lean updated: 29a03a8aba...514362b5c7
+75
-70
@@ -1,125 +1,130 @@
|
|||||||
%YAML 1.2
|
%YAML 1.2
|
||||||
---
|
---
|
||||||
# http://www.sublimetext.com/docs/3/syntax.html
|
# http://www.sublimetext.com/docs/syntax.html
|
||||||
name: Lean
|
name: Lean 4
|
||||||
file_extensions:
|
file_extensions:
|
||||||
- lean
|
- lean
|
||||||
scope: source.lean
|
scope: source.lean4
|
||||||
contexts:
|
contexts:
|
||||||
main:
|
main:
|
||||||
- include: comments
|
- include: comments
|
||||||
- match: '\b(?<!\.)(inductive|coinductive|structure|theorem|axiom|axioms|abbreviation|lemma|definition|def|instance|class|constant)\b\s+(\{[^}]*\})?'
|
- match: \b(Prop|Type|Sort)\b
|
||||||
|
scope: storage.type.lean4
|
||||||
|
- match: '\battribute\b\s*\[[^\]]*\]'
|
||||||
|
scope: storage.modifier.lean4
|
||||||
|
- match: '@\[[^\]]*\]'
|
||||||
|
scope: storage.modifier.lean4
|
||||||
|
- match: \b(?<!\.)(global|local|scoped|partial|unsafe|private|protected|noncomputable)(?!\.)\b
|
||||||
|
scope: storage.modifier.lean4
|
||||||
|
- match: \b(sorry|admit|stop)\b
|
||||||
|
scope: invalid.illegal.lean4
|
||||||
|
- match: '#(print|eval|reduce|check|check_failure)\b'
|
||||||
|
scope: keyword.other.lean4
|
||||||
|
- match: \bderiving\s+instance\b
|
||||||
|
scope: keyword.other.command.lean4
|
||||||
|
- match: '\b(?<!\.)(inductive|coinductive|structure|theorem|axiom|abbrev|lemma|def|instance|class|constant)\b\s+(\{[^}]*\})?'
|
||||||
captures:
|
captures:
|
||||||
1: keyword.other.definitioncommand.lean
|
1: keyword.other.definitioncommand.lean4
|
||||||
push:
|
push:
|
||||||
- meta_scope: meta.definitioncommand.lean
|
- meta_scope: meta.definitioncommand.lean4
|
||||||
- match: '(?=\bwith\b|\bextends\b|[:\|\(\[\{⦃<>])'
|
- match: '(?=\bwith\b|\bextends\b|\bwhere\b|[:\|\(\[\{⦃<>])'
|
||||||
pop: true
|
pop: true
|
||||||
- include: comments
|
- include: comments
|
||||||
- include: definitionName
|
- include: definitionName
|
||||||
- match: ","
|
- match: ','
|
||||||
- match: \b(Prop|Type|Sort)\b
|
- match: \b(?<!\.)(theorem|show|have|from|suffices|nomatch|def|class|structure|instance|set_option|initialize|builtin_initialize|example|inductive|coinductive|axiom|constant|universe|universes|variable|variables|import|open|export|theory|prelude|renaming|hiding|exposing|do|by|let|extends|mutual|mut|where|rec|syntax|macro_rules|macro|deriving|fun|section|namespace|end|infix|infixl|infixr|postfix|prefix|notation|abbrev|if|then|else|calc|match|with|for|in|unless|try|catch|finally|return|continue|break)(?!\.)\b
|
||||||
scope: storage.type.lean
|
scope: keyword.other.lean4
|
||||||
- match: '\battribute\b\s*\[[^\]]*\]'
|
|
||||||
scope: storage.modifier.lean
|
|
||||||
- match: '@\[[^\]]*\]'
|
|
||||||
scope: storage.modifier.lean
|
|
||||||
- match: \b(?<!\.)(private|meta|mutual|protected|noncomputable)\b
|
|
||||||
scope: keyword.control.definition.modifier.lean
|
|
||||||
- match: \b(sorry)\b
|
|
||||||
scope: invalid.illegal.lean
|
|
||||||
- match: '#print\s+(def|definition|inductive|instance|structure|axiom|axioms|class)\b'
|
|
||||||
scope: keyword.other.command.lean
|
|
||||||
- match: '#(print|eval|reduce|check|help|exit|find|where)\b'
|
|
||||||
scope: keyword.other.command.lean
|
|
||||||
- match: \b(?<!\.)(import|export|prelude|theory|definition|def|abbreviation|instance|renaming|hiding|exposing|parameter|parameters|begin|constant|constants|lemma|variable|variables|theorem|example|open|axiom|inductive|coinductive|with|structure|universe|universes|alias|precedence|reserve|postfix|prefix|infix|infixl|infixr|notation|end|using|namespace|section|local|set_option|extends|include|omit|class|classes|instances|raw|run_cmd|restate_axiom)(?!\.)\b
|
|
||||||
scope: keyword.other.lean
|
|
||||||
- match: \b(?<!\.)(calc|have|this|match|do|suffices|show|by|in|at|let|forall|fun|exists|assume|from|obtain|haveI|λ)(?!\.)\b
|
|
||||||
scope: keyword.other.lean
|
|
||||||
- match: «
|
- match: «
|
||||||
push:
|
push:
|
||||||
- meta_content_scope: entity.name.lean
|
- meta_content_scope: entity.name.lean4
|
||||||
- match: »
|
- match: »
|
||||||
pop: true
|
pop: true
|
||||||
- match: \b(?<!\.)(if|then|else)\b
|
- match: (s!)"
|
||||||
scope: keyword.control.lean
|
|
||||||
- match: '"'
|
|
||||||
captures:
|
captures:
|
||||||
0: punctuation.definition.string.begin.lean
|
1: keyword.other.lean4
|
||||||
push:
|
push:
|
||||||
- meta_scope: string.quoted.double.lean
|
- meta_scope: string.interpolated.lean4
|
||||||
- match: '"'
|
- match: '"'
|
||||||
captures:
|
|
||||||
0: punctuation.definition.string.end.lean
|
|
||||||
pop: true
|
pop: true
|
||||||
- match: '\\[\\"nt'']'
|
- match: '(\{)'
|
||||||
scope: constant.character.escape.lean
|
captures:
|
||||||
|
1: keyword.other.lean4
|
||||||
|
push:
|
||||||
|
- match: '(\})'
|
||||||
|
captures:
|
||||||
|
1: keyword.other.lean4
|
||||||
|
pop: true
|
||||||
|
- include: main
|
||||||
|
- match: '\\[\\"ntr'']'
|
||||||
|
scope: constant.character.escape.lean4
|
||||||
- match: '\\x[0-9A-Fa-f][0-9A-Fa-f]'
|
- match: '\\x[0-9A-Fa-f][0-9A-Fa-f]'
|
||||||
scope: constant.character.escape.lean
|
scope: constant.character.escape.lean4
|
||||||
- match: '\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]'
|
- match: '\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]'
|
||||||
scope: constant.character.escape.lean
|
scope: constant.character.escape.lean4
|
||||||
|
- match: '"'
|
||||||
|
push:
|
||||||
|
- meta_scope: string.quoted.double.lean4
|
||||||
|
- match: '"'
|
||||||
|
pop: true
|
||||||
|
- match: '\\[\\"ntr'']'
|
||||||
|
scope: constant.character.escape.lean4
|
||||||
|
- match: '\\x[0-9A-Fa-f][0-9A-Fa-f]'
|
||||||
|
scope: constant.character.escape.lean4
|
||||||
|
- match: '\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]'
|
||||||
|
scope: constant.character.escape.lean4
|
||||||
|
- match: \b(true|false)\b
|
||||||
|
scope: constant.language.lean4
|
||||||
- match: '''[^\\'']'''
|
- match: '''[^\\'']'''
|
||||||
scope: string.quoted.single.lean
|
scope: string.quoted.single.lean4
|
||||||
- match: '''(\\(x..|u....|.))'''
|
- match: '''(\\(x[0-9A-Fa-f][0-9A-Fa-f]|u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]|.))'''
|
||||||
scope: string.quoted.single.lean
|
scope: string.quoted.single.lean4
|
||||||
captures:
|
captures:
|
||||||
1: constant.character.escape.lean
|
1: constant.character.escape.lean4
|
||||||
- match: '`+[^\[(]\S+'
|
- match: '`+[^\[(]\S+'
|
||||||
scope: entity.name.lean
|
scope: entity.name.lean4
|
||||||
- match: '\b([0-9]+|0([xX][0-9a-fA-F]+))\b'
|
- match: '\b([0-9]+|0([xX][0-9a-fA-F]+)|[-]?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?)\b'
|
||||||
scope: constant.numeric.lean
|
scope: constant.numeric.lean4
|
||||||
blockComment:
|
blockComment:
|
||||||
- match: /-
|
- match: /-
|
||||||
push:
|
push:
|
||||||
- meta_scope: comment.block.lean
|
- meta_scope: comment.block.lean4
|
||||||
- match: "-/"
|
- match: '-/'
|
||||||
pop: true
|
pop: true
|
||||||
- include: scope:source.lean.markdown
|
- include: scope:source.lean4.markdown
|
||||||
- include: blockComment
|
- include: blockComment
|
||||||
comments:
|
comments:
|
||||||
- include: dashComment
|
- include: dashComment
|
||||||
- include: docComment
|
- include: docComment
|
||||||
- include: stringBlock
|
|
||||||
- include: modDocComment
|
- include: modDocComment
|
||||||
- include: blockComment
|
- include: blockComment
|
||||||
dashComment:
|
dashComment:
|
||||||
- match: (--)
|
- match: '--'
|
||||||
captures:
|
|
||||||
0: punctuation.definition.comment.lean
|
|
||||||
push:
|
push:
|
||||||
- meta_scope: comment.line.double-dash.lean
|
- meta_scope: comment.line.double-dash.lean4
|
||||||
- match: $
|
- match: $
|
||||||
pop: true
|
pop: true
|
||||||
- include: scope:source.lean.markdown
|
- include: scope:source.lean4.markdown
|
||||||
definitionName:
|
definitionName:
|
||||||
- match: '\b[^:«»\(\)\{\}[:space:]=→λ∀?][^:«»\(\)\{\}[:space:]]*'
|
- match: '\b[^:«»\(\)\{\}[:space:]=→λ∀?][^:«»\(\)\{\}[:space:]]*'
|
||||||
scope: entity.name.function.lean
|
scope: entity.name.function.lean4
|
||||||
- match: «
|
- match: «
|
||||||
push:
|
push:
|
||||||
- meta_content_scope: entity.name.function.lean
|
- meta_content_scope: entity.name.function.lean4
|
||||||
- match: »
|
- match: »
|
||||||
pop: true
|
pop: true
|
||||||
docComment:
|
docComment:
|
||||||
- match: /--
|
- match: /--
|
||||||
push:
|
push:
|
||||||
- meta_scope: comment.block.documentation.lean
|
- meta_scope: comment.block.documentation.lean4
|
||||||
- match: "-/"
|
- match: '-/'
|
||||||
pop: true
|
pop: true
|
||||||
- include: scope:source.lean.markdown
|
- include: scope:source.lean4.markdown
|
||||||
- include: blockComment
|
- include: blockComment
|
||||||
modDocComment:
|
modDocComment:
|
||||||
- match: /-!
|
- match: /-!
|
||||||
push:
|
push:
|
||||||
- meta_scope: comment.block.documentation.lean
|
- meta_scope: comment.block.documentation.lean4
|
||||||
- match: "-/"
|
- match: '-/'
|
||||||
pop: true
|
pop: true
|
||||||
- include: scope:source.lean.markdown
|
- include: scope:source.lean4.markdown
|
||||||
- include: blockComment
|
|
||||||
stringBlock:
|
|
||||||
- match: /-"
|
|
||||||
push:
|
|
||||||
- meta_scope: comment.block.string.lean
|
|
||||||
- match: '"-/'
|
|
||||||
pop: true
|
|
||||||
- include: scope:source.lean.markdown
|
|
||||||
- include: blockComment
|
- include: blockComment
|
||||||
|
|||||||
Vendored
-1
Submodule assets/syntaxes/02_Extra/LiveScript deleted from d82aeb737d
+5
-1
@@ -9,6 +9,7 @@ scope: source.man
|
|||||||
variables:
|
variables:
|
||||||
section_heading: '^(?!#)\S.*$'
|
section_heading: '^(?!#)\S.*$'
|
||||||
command_line_option: '(--?[A-Za-z0-9][_A-Za-z0-9-]*)'
|
command_line_option: '(--?[A-Za-z0-9][_A-Za-z0-9-]*)'
|
||||||
|
ansi_escape_sequence: '\e\[[\?=]?(?:\d+;?)*[A-Za-z]'
|
||||||
|
|
||||||
contexts:
|
contexts:
|
||||||
prototype:
|
prototype:
|
||||||
@@ -69,7 +70,7 @@ contexts:
|
|||||||
escape: '(?={{section_heading}})'
|
escape: '(?={{section_heading}})'
|
||||||
|
|
||||||
function-call:
|
function-call:
|
||||||
- match: '\b([A-Za-z0-9_\-]+\.)?([A-Za-z0-9_\-]+)(\()([^)]*)(\))'
|
- match: '(?<!\e\[)(?:\b|\s)(?:{{ansi_escape_sequence}})?([A-Za-z0-9_\-]+\.)?([A-Za-z0-9_\-]+)(?:{{ansi_escape_sequence}})?(\()([^)]*)(\))'
|
||||||
captures:
|
captures:
|
||||||
1: entity.name.function.man
|
1: entity.name.function.man
|
||||||
2: entity.name.function.man
|
2: entity.name.function.man
|
||||||
@@ -85,6 +86,9 @@ contexts:
|
|||||||
|
|
||||||
options:
|
options:
|
||||||
# command-line options like --option=value, --some-flag, or -x
|
# command-line options like --option=value, --some-flag, or -x
|
||||||
|
- match: '^[ ]{7}(-)(?=\s)'
|
||||||
|
captures:
|
||||||
|
1: entity.name.command-line-option.man
|
||||||
- match: '^[ ]{7}(?=-|\+)'
|
- match: '^[ ]{7}(?=-|\+)'
|
||||||
push: expect-command-line-option
|
push: expect-command-line-option
|
||||||
- match: '(?:[^a-zA-Z0-9_-]|^|\s){{command_line_option}}'
|
- match: '(?:[^a-zA-Z0-9_-]|^|\s){{command_line_option}}'
|
||||||
|
|||||||
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Nix updated: 9032bd6137...48c497c709
Vendored
-1
Submodule assets/syntaxes/02_Extra/Org mode deleted from 4976d8f84e
+1
Submodule assets/syntaxes/02_Extra/Org_mode added at bb6e5d8481
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/PowerShell updated: c0372a1d2d...a08b55bf11
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Protobuf updated: 726e21d74d...1365331580
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Slim updated: 3b1441f89f...cad02689b6
+1
Submodule assets/syntaxes/02_Extra/SmartVHDL added at b45507ddc8
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/SublimeJQ updated: 687058289c...84770c52bd
+1
-1
Submodule assets/syntaxes/02_Extra/SystemVerilog updated: 7eca705e87...b340f1c7f6
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/TOML updated: fd0bf3e5d6...f5a57e8bff
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/VimL updated: ee85822cbe...fe5bf5ea70
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/Zig updated: 1a4a38445f...c16d871ccc
@@ -0,0 +1,42 @@
|
|||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
# See http://www.sublimetext.com/docs/syntax.html
|
||||||
|
name: debsources
|
||||||
|
file_extensions:
|
||||||
|
- sources.list
|
||||||
|
scope: text.apt-source-list
|
||||||
|
contexts:
|
||||||
|
main:
|
||||||
|
- include: comments
|
||||||
|
- match: ^[\w-]+
|
||||||
|
scope: constant.language.apt-source-list
|
||||||
|
- match: \w+://\S+
|
||||||
|
scope: markup.underline.link.apt-source-list
|
||||||
|
push: distribution
|
||||||
|
- match: \bmain\b
|
||||||
|
scope: support.class.apt-source-list
|
||||||
|
- match: \buniverse\b
|
||||||
|
scope: support.constant.apt-source-list
|
||||||
|
- match: \brestricted\b
|
||||||
|
scope: storage.modifier.apt-source-list
|
||||||
|
- match: \bmultiverse\b
|
||||||
|
scope: keyword.other.apt-source-list
|
||||||
|
- match: '[\w-]+'
|
||||||
|
scope: constant.other.apt-source-list
|
||||||
|
|
||||||
|
comments:
|
||||||
|
- match: '#'
|
||||||
|
scope: punctuation.definition.comment.apt-source-list
|
||||||
|
push: line_comment
|
||||||
|
|
||||||
|
line_comment:
|
||||||
|
- meta_scope: comment.line.apt-source-list
|
||||||
|
- match: $
|
||||||
|
pop: true
|
||||||
|
|
||||||
|
distribution:
|
||||||
|
- match: \S+
|
||||||
|
scope: support.type.apt-source-list
|
||||||
|
pop: 1
|
||||||
|
- match: $
|
||||||
|
pop: 1
|
||||||
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/cmd-help updated: f41e5fc838...2757ac1681
Vendored
+1
-1
Submodule assets/syntaxes/02_Extra/hosts updated: 21250a7117...60ed92c472
+12
-12
@@ -38,21 +38,21 @@ contexts:
|
|||||||
scope: markup.underline.link.scheme.log
|
scope: markup.underline.link.scheme.log
|
||||||
push: url-host
|
push: url-host
|
||||||
log_level_lines:
|
log_level_lines:
|
||||||
- match: ^(?=.*{{error}})
|
- match: (?=.*{{error}})
|
||||||
push:
|
push:
|
||||||
- error_line
|
- error_line_meta
|
||||||
- main_pop_at_eol
|
- main_pop_at_eol
|
||||||
- match: ^(?=.*{{warning}})
|
- match: (?=.*{{warning}})
|
||||||
push:
|
push:
|
||||||
- warning_line
|
- warning_line_meta
|
||||||
- main_pop_at_eol
|
- main_pop_at_eol
|
||||||
- match: ^(?=.*{{info}})
|
- match: (?=.*{{info}})
|
||||||
push:
|
push:
|
||||||
- info_line
|
- info_line_meta
|
||||||
- main_pop_at_eol
|
- main_pop_at_eol
|
||||||
- match: ^(?=.*{{debug}})
|
- match: (?=.*{{debug}})
|
||||||
push:
|
push:
|
||||||
- debug_line
|
- debug_line_meta
|
||||||
- main_pop_at_eol
|
- main_pop_at_eol
|
||||||
log_levels:
|
log_levels:
|
||||||
- match: '{{error}}'
|
- match: '{{error}}'
|
||||||
@@ -63,16 +63,16 @@ contexts:
|
|||||||
scope: markup.info.log
|
scope: markup.info.log
|
||||||
- match: '{{debug}}'
|
- match: '{{debug}}'
|
||||||
scope: markup.info.log
|
scope: markup.info.log
|
||||||
error_line:
|
error_line_meta:
|
||||||
- meta_scope: meta.annotation.error-line.log
|
- meta_scope: meta.annotation.error-line.log
|
||||||
- include: immediately_pop
|
- include: immediately_pop
|
||||||
warning_line:
|
warning_line_meta:
|
||||||
- meta_scope: meta.annotation.warning-line.log
|
- meta_scope: meta.annotation.warning-line.log
|
||||||
- include: immediately_pop
|
- include: immediately_pop
|
||||||
info_line:
|
info_line_meta:
|
||||||
- meta_scope: meta.annotation.info-line.log
|
- meta_scope: meta.annotation.info-line.log
|
||||||
- include: immediately_pop
|
- include: immediately_pop
|
||||||
debug_line:
|
debug_line_meta:
|
||||||
- meta_scope: meta.annotation.debug-line.log
|
- meta_scope: meta.annotation.debug-line.log
|
||||||
- include: immediately_pop
|
- include: immediately_pop
|
||||||
immediately_pop:
|
immediately_pop:
|
||||||
|
|||||||
+1
Submodule assets/syntaxes/02_Extra/sublime-odin added at 5d6a0ed41e
@@ -131,6 +131,12 @@ OPTIONS
|
|||||||
# ^^ - variable
|
# ^^ - variable
|
||||||
output NUM (default 3) lines of copied context
|
output NUM (default 3) lines of copied context
|
||||||
|
|
||||||
|
- This is not really a switch, but indicates that standard input
|
||||||
|
# ^ entity.name.command-line-option.man
|
||||||
|
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - entity - variable
|
||||||
|
is coming from a file or a pipe and not interactively from the
|
||||||
|
command line.
|
||||||
|
|
||||||
EXAMPLE
|
EXAMPLE
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
# ^^^^^^^^ source.c meta.preprocessor.include keyword.control.import.include
|
# ^^^^^^^^ source.c meta.preprocessor.include keyword.control.import.include
|
||||||
|
|||||||
+19
-17
@@ -8,10 +8,10 @@ scope: text.log.syslog
|
|||||||
contexts:
|
contexts:
|
||||||
main:
|
main:
|
||||||
- match: ^(\w+\s+\d+)\s+(\d{2}:\d{2}:\d{2})
|
- match: ^(\w+\s+\d+)\s+(\d{2}:\d{2}:\d{2})
|
||||||
scope: meta.datetime.syslog constant.numeric.syslog
|
scope: meta.datetime.syslog
|
||||||
captures:
|
captures:
|
||||||
1: meta.date.syslog
|
1: meta.date.syslog constant.numeric.syslog
|
||||||
2: meta.time.syslog
|
2: meta.time.syslog constant.numeric.syslog
|
||||||
push: loghost
|
push: loghost
|
||||||
- match: ^
|
- match: ^
|
||||||
push: text
|
push: text
|
||||||
@@ -31,22 +31,24 @@ contexts:
|
|||||||
structured-data:
|
structured-data:
|
||||||
- match: '\['
|
- match: '\['
|
||||||
scope: punctuation.section.mapping.begin.syslog
|
scope: punctuation.section.mapping.begin.syslog
|
||||||
push:
|
push: structured-data-contents
|
||||||
- match: \]
|
|
||||||
scope: punctuation.section.mapping.end.syslog
|
|
||||||
pop: true
|
|
||||||
- match: \w+
|
|
||||||
scope: variable.parameter.syslog
|
|
||||||
- match: =
|
|
||||||
scope: keyword.operator.assignment.syslog
|
|
||||||
push:
|
|
||||||
- match: '[^\s\]]+'
|
|
||||||
scope: constant.other.syslog
|
|
||||||
pop: true
|
|
||||||
- match: (?=\])
|
|
||||||
pop: true
|
|
||||||
- match: (?=\S)
|
- match: (?=\S)
|
||||||
set: text
|
set: text
|
||||||
|
structured-data-contents:
|
||||||
|
- match: \]
|
||||||
|
scope: punctuation.section.mapping.end.syslog
|
||||||
|
pop: true
|
||||||
|
- match: \w+
|
||||||
|
scope: variable.parameter.syslog
|
||||||
|
- match: =
|
||||||
|
scope: keyword.operator.assignment.syslog
|
||||||
|
push: structured-data-assignment
|
||||||
|
structured-data-assignment:
|
||||||
|
- match: '[^\s\]]+'
|
||||||
|
scope: constant.other.syslog
|
||||||
|
pop: true
|
||||||
|
- match: (?=\])
|
||||||
|
pop: true
|
||||||
text:
|
text:
|
||||||
- match: $
|
- match: $
|
||||||
pop: true
|
pop: true
|
||||||
|
|||||||
+1
Submodule assets/syntaxes/02_Extra/typst-syntax-highlight added at 363f0e767c
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// Output the square of a number.
|
// Output the square of a number.
|
||||||
fn print_square(num: f64) {
|
fn print_square(num: f64) {
|
||||||
let result = f64::powf(num, 2.0);
|
let result = f64::powf(num, 2.0);
|
||||||
println!("The square of {:.2} is {:.2}.", num, result);
|
println!("The square of {num:.2} is {result:.2}.");
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
+1
Submodule assets/themes/Catppuccin added at ccf194fdc9
Vendored
+1
-1
Submodule assets/themes/Nord-sublime updated: 0d655b23d6...bf92a9e445
Vendored
+3
-3
@@ -69,7 +69,7 @@
|
|||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Labels</string>
|
<string>Labels</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
<string>entity.name.label</string>
|
<string>entity.name.label, variable.parameter</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>foreground</key>
|
<key>foreground</key>
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Classes</string>
|
<string>Classes</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
<string>support.class, entity.name.class, entity.name.type.class</string>
|
<string>support.class, entity.name.class, entity.name.type.class, entity.name</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>foreground</key>
|
<key>foreground</key>
|
||||||
@@ -234,7 +234,7 @@
|
|||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Headings</string>
|
<string>Headings</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
|
<string>markup.heading punctuation.definition.heading, entity.name.section, markup.heading - text.html.markdown, meta.mapping.key string.quoted.double</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>fontStyle</key>
|
<key>fontStyle</key>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -257,7 +257,7 @@
|
|||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Tags</string>
|
<string>Tags</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
<string>entity.name.tag</string>
|
<string>entity.name.tag, entity.name</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>foreground</key>
|
<key>foreground</key>
|
||||||
@@ -312,7 +312,7 @@
|
|||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Headings</string>
|
<string>Headings</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
|
<string>markup.heading punctuation.definition.heading, entity.name.section, markup.heading - text.html.markdown</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>fontStyle</key>
|
<key>fontStyle</key>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -256,7 +256,7 @@
|
|||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Tags</string>
|
<string>Tags</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
<string>entity.name.tag</string>
|
<string>entity.name.tag, entity.name</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>foreground</key>
|
<key>foreground</key>
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>Headings</string>
|
<string>Headings</string>
|
||||||
<key>scope</key>
|
<key>scope</key>
|
||||||
<string>markup.heading punctuation.definition.heading, entity.name.section</string>
|
<string>markup.heading punctuation.definition.heading, entity.name.section, markup.heading - text.html.markdown</string>
|
||||||
<key>settings</key>
|
<key>settings</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>fontStyle</key>
|
<key>fontStyle</key>
|
||||||
|
|||||||
Vendored
+1
-1
Submodule assets/themes/dracula-sublime updated: c2de0acf5a...d490b57c08
Vendored
+1
-1
Submodule assets/themes/github-sublime-theme updated: 508740b243...59e525f638
Vendored
+1
-1
Submodule assets/themes/gruvbox updated: 64c47250e5...4050347282
Vendored
+1
-1
Submodule assets/themes/sublime-snazzy updated: 70343201f1...48f43a7350
-1
Submodule assets/themes/visual-studio-dark-plus deleted from 01ee1e8e0d
Vendored
+1
-1
Submodule assets/themes/zenburn updated: 43dc527731...4f21745723
@@ -1,108 +0,0 @@
|
|||||||
// TODO: Re-enable generation of shell completion files (below) when clap 3 is out.
|
|
||||||
// For more details, see https://github.com/sharkdp/bat/issues/372
|
|
||||||
|
|
||||||
// For bat-as-a-library, no build script is required. The build script is for
|
|
||||||
// the manpage and completions, which are only relevant to the bat application.
|
|
||||||
#[cfg(not(feature = "application"))]
|
|
||||||
fn main() {}
|
|
||||||
|
|
||||||
#[cfg(feature = "application")]
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::error::Error;
|
|
||||||
use std::fs;
|
|
||||||
use std::path::Path;
|
|
||||||
|
|
||||||
// Read environment variables.
|
|
||||||
let project_name = option_env!("PROJECT_NAME").unwrap_or("bat");
|
|
||||||
let executable_name = option_env!("PROJECT_EXECUTABLE").unwrap_or(project_name);
|
|
||||||
let executable_name_uppercase = executable_name.to_uppercase();
|
|
||||||
static PROJECT_VERSION: &str = env!("CARGO_PKG_VERSION");
|
|
||||||
|
|
||||||
/// Generates a file from a template.
|
|
||||||
fn template(
|
|
||||||
variables: &HashMap<&str, &str>,
|
|
||||||
in_file: &str,
|
|
||||||
out_file: impl AsRef<Path>,
|
|
||||||
) -> Result<(), Box<dyn Error>> {
|
|
||||||
let mut content = fs::read_to_string(in_file)?;
|
|
||||||
|
|
||||||
for (variable_name, value) in variables {
|
|
||||||
// Replace {{variable_name}} by the value
|
|
||||||
let pattern = format!("{{{{{variable_name}}}}}", variable_name = variable_name);
|
|
||||||
content = content.replace(&pattern, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
fs::write(out_file, content)?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut variables = HashMap::new();
|
|
||||||
variables.insert("PROJECT_NAME", project_name);
|
|
||||||
variables.insert("PROJECT_EXECUTABLE", executable_name);
|
|
||||||
variables.insert("PROJECT_EXECUTABLE_UPPERCASE", &executable_name_uppercase);
|
|
||||||
variables.insert("PROJECT_VERSION", PROJECT_VERSION);
|
|
||||||
|
|
||||||
let out_dir_env = std::env::var_os("BAT_ASSETS_GEN_DIR")
|
|
||||||
.or_else(|| std::env::var_os("OUT_DIR"))
|
|
||||||
.expect("BAT_ASSETS_GEN_DIR or OUT_DIR to be set in build.rs");
|
|
||||||
let out_dir = Path::new(&out_dir_env);
|
|
||||||
|
|
||||||
fs::create_dir_all(out_dir.join("assets/manual")).unwrap();
|
|
||||||
fs::create_dir_all(out_dir.join("assets/completions")).unwrap();
|
|
||||||
|
|
||||||
template(
|
|
||||||
&variables,
|
|
||||||
"assets/manual/bat.1.in",
|
|
||||||
out_dir.join("assets/manual/bat.1"),
|
|
||||||
)?;
|
|
||||||
template(
|
|
||||||
&variables,
|
|
||||||
"assets/completions/bat.bash.in",
|
|
||||||
out_dir.join("assets/completions/bat.bash"),
|
|
||||||
)?;
|
|
||||||
template(
|
|
||||||
&variables,
|
|
||||||
"assets/completions/bat.fish.in",
|
|
||||||
out_dir.join("assets/completions/bat.fish"),
|
|
||||||
)?;
|
|
||||||
template(
|
|
||||||
&variables,
|
|
||||||
"assets/completions/_bat.ps1.in",
|
|
||||||
out_dir.join("assets/completions/_bat.ps1"),
|
|
||||||
)?;
|
|
||||||
template(
|
|
||||||
&variables,
|
|
||||||
"assets/completions/bat.zsh.in",
|
|
||||||
out_dir.join("assets/completions/bat.zsh"),
|
|
||||||
)?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
// #[macro_use]
|
|
||||||
// extern crate clap;
|
|
||||||
|
|
||||||
// use clap::Shell;
|
|
||||||
// use std::fs;
|
|
||||||
|
|
||||||
// include!("src/clap_app.rs");
|
|
||||||
|
|
||||||
// const BIN_NAME: &str = "bat";
|
|
||||||
|
|
||||||
// fn main() {
|
|
||||||
// let outdir = std::env::var_os("SHELL_COMPLETIONS_DIR").or(std::env::var_os("OUT_DIR"));
|
|
||||||
|
|
||||||
// let outdir = match outdir {
|
|
||||||
// None => return,
|
|
||||||
// Some(outdir) => outdir,
|
|
||||||
// };
|
|
||||||
|
|
||||||
// fs::create_dir_all(&outdir).unwrap();
|
|
||||||
|
|
||||||
// let mut app = build_app(true);
|
|
||||||
// app.gen_completions(BIN_NAME, Shell::Bash, &outdir);
|
|
||||||
// app.gen_completions(BIN_NAME, Shell::Fish, &outdir);
|
|
||||||
// app.gen_completions(BIN_NAME, Shell::Zsh, &outdir);
|
|
||||||
// app.gen_completions(BIN_NAME, Shell::PowerShell, &outdir);
|
|
||||||
// }
|
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
use std::{env, fs, path::PathBuf};
|
||||||
|
|
||||||
|
use crate::util::render_template;
|
||||||
|
|
||||||
|
/// Generate manpage and shell completions for the bat application.
|
||||||
|
pub fn gen_man_and_comp() -> anyhow::Result<()> {
|
||||||
|
println!("cargo:rerun-if-changed=assets/manual/");
|
||||||
|
println!("cargo:rerun-if-changed=assets/completions/");
|
||||||
|
|
||||||
|
println!("cargo:rerun-if-env-changed=PROJECT_NAME");
|
||||||
|
println!("cargo:rerun-if-env-changed=PROJECT_EXECUTABLE");
|
||||||
|
println!("cargo:rerun-if-env-changed=CARGO_PKG_VERSION");
|
||||||
|
println!("cargo:rerun-if-env-changed=BAT_ASSETS_GEN_DIR");
|
||||||
|
|
||||||
|
// Read environment variables.
|
||||||
|
let project_name = env::var("PROJECT_NAME").unwrap_or("bat".into());
|
||||||
|
let executable_name = env::var("PROJECT_EXECUTABLE").unwrap_or(project_name.clone());
|
||||||
|
let executable_name_uppercase = executable_name.to_uppercase();
|
||||||
|
let project_version = env::var("CARGO_PKG_VERSION")?;
|
||||||
|
|
||||||
|
let variables = [
|
||||||
|
("PROJECT_NAME", project_name),
|
||||||
|
("PROJECT_EXECUTABLE", executable_name),
|
||||||
|
("PROJECT_EXECUTABLE_UPPERCASE", executable_name_uppercase),
|
||||||
|
("PROJECT_VERSION", project_version),
|
||||||
|
]
|
||||||
|
.into_iter()
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
let Some(out_dir) = env::var_os("BAT_ASSETS_GEN_DIR")
|
||||||
|
.or_else(|| env::var_os("OUT_DIR"))
|
||||||
|
.map(PathBuf::from)
|
||||||
|
else {
|
||||||
|
anyhow::bail!("BAT_ASSETS_GEN_DIR or OUT_DIR should be set for build.rs");
|
||||||
|
};
|
||||||
|
|
||||||
|
fs::create_dir_all(out_dir.join("assets/manual")).unwrap();
|
||||||
|
fs::create_dir_all(out_dir.join("assets/completions")).unwrap();
|
||||||
|
|
||||||
|
render_template(
|
||||||
|
&variables,
|
||||||
|
"assets/manual/bat.1.in",
|
||||||
|
out_dir.join("assets/manual/bat.1"),
|
||||||
|
)?;
|
||||||
|
render_template(
|
||||||
|
&variables,
|
||||||
|
"assets/completions/bat.bash.in",
|
||||||
|
out_dir.join("assets/completions/bat.bash"),
|
||||||
|
)?;
|
||||||
|
render_template(
|
||||||
|
&variables,
|
||||||
|
"assets/completions/bat.fish.in",
|
||||||
|
out_dir.join("assets/completions/bat.fish"),
|
||||||
|
)?;
|
||||||
|
render_template(
|
||||||
|
&variables,
|
||||||
|
"assets/completions/_bat.ps1.in",
|
||||||
|
out_dir.join("assets/completions/_bat.ps1"),
|
||||||
|
)?;
|
||||||
|
render_template(
|
||||||
|
&variables,
|
||||||
|
"assets/completions/bat.zsh.in",
|
||||||
|
out_dir.join("assets/completions/bat.zsh"),
|
||||||
|
)?;
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_BASH={}",
|
||||||
|
out_dir.join("assets/completions/bat.bash").display()
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_FISH={}",
|
||||||
|
out_dir.join("assets/completions/bat.fish").display()
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_PS1={}",
|
||||||
|
out_dir.join("assets/completions/_bat.ps1").display()
|
||||||
|
);
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-env=BAT_GENERATED_COMPLETION_ZSH={}",
|
||||||
|
out_dir.join("assets/completions/bat.zsh").display()
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#[cfg(feature = "application")]
|
||||||
|
mod application;
|
||||||
|
mod syntax_mapping;
|
||||||
|
mod util;
|
||||||
|
|
||||||
|
fn main() -> anyhow::Result<()> {
|
||||||
|
// only watch manually-designated files
|
||||||
|
// see: https://doc.rust-lang.org/cargo/reference/build-scripts.html#rerun-if-changed
|
||||||
|
println!("cargo:rerun-if-changed=build/");
|
||||||
|
|
||||||
|
syntax_mapping::build_static_mappings()?;
|
||||||
|
|
||||||
|
#[cfg(feature = "application")]
|
||||||
|
application::gen_man_and_comp()?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
@@ -0,0 +1,368 @@
|
|||||||
|
use std::{
|
||||||
|
convert::Infallible,
|
||||||
|
env, fs,
|
||||||
|
path::{Path, PathBuf},
|
||||||
|
str::FromStr,
|
||||||
|
};
|
||||||
|
|
||||||
|
use anyhow::{anyhow, bail};
|
||||||
|
use indexmap::IndexMap;
|
||||||
|
use itertools::Itertools;
|
||||||
|
use once_cell::sync::Lazy;
|
||||||
|
use proc_macro2::TokenStream;
|
||||||
|
use quote::{quote, ToTokens, TokenStreamExt};
|
||||||
|
use regex::Regex;
|
||||||
|
use serde_derive::Deserialize;
|
||||||
|
use serde_with::DeserializeFromStr;
|
||||||
|
use walkdir::WalkDir;
|
||||||
|
|
||||||
|
/// Known mapping targets.
|
||||||
|
///
|
||||||
|
/// Corresponds to `syntax_mapping::MappingTarget`.
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
|
#[derive(Clone, Debug, Eq, PartialEq, Hash, DeserializeFromStr)]
|
||||||
|
pub enum MappingTarget {
|
||||||
|
MapTo(String),
|
||||||
|
MapToUnknown,
|
||||||
|
MapExtensionToUnknown,
|
||||||
|
}
|
||||||
|
impl FromStr for MappingTarget {
|
||||||
|
type Err = Infallible;
|
||||||
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
|
match s {
|
||||||
|
"MappingTarget::MapToUnknown" => Ok(Self::MapToUnknown),
|
||||||
|
"MappingTarget::MapExtensionToUnknown" => Ok(Self::MapExtensionToUnknown),
|
||||||
|
syntax => Ok(Self::MapTo(syntax.into())),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl ToTokens for MappingTarget {
|
||||||
|
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||||
|
let t = match self {
|
||||||
|
Self::MapTo(syntax) => quote! { MappingTarget::MapTo(#syntax) },
|
||||||
|
Self::MapToUnknown => quote! { MappingTarget::MapToUnknown },
|
||||||
|
Self::MapExtensionToUnknown => quote! { MappingTarget::MapExtensionToUnknown },
|
||||||
|
};
|
||||||
|
tokens.append_all(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Helper type for deserializing a `Matcher` from either a plain string or a
|
||||||
|
/// `{ glob = "...", case_sensitive = true }` struct.
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
#[serde(untagged)]
|
||||||
|
enum RawMatcher {
|
||||||
|
Simple(String),
|
||||||
|
Full {
|
||||||
|
glob: String,
|
||||||
|
case_sensitive: Option<bool>,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Whether a glob pattern should be matched case-sensitively or case-insensitively.
|
||||||
|
///
|
||||||
|
/// Mirrors the runtime `Case` type in `src/syntax_mapping.rs`.
|
||||||
|
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||||
|
enum Case {
|
||||||
|
Sensitive,
|
||||||
|
Insensitive,
|
||||||
|
}
|
||||||
|
impl ToTokens for Case {
|
||||||
|
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||||
|
let t = match self {
|
||||||
|
Self::Sensitive => quote! { Case::Sensitive },
|
||||||
|
Self::Insensitive => quote! { Case::Insensitive },
|
||||||
|
};
|
||||||
|
tokens.append_all(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A single matcher.
|
||||||
|
///
|
||||||
|
/// Codegen converts this into a `Lazy<Option<GlobMatcher>>`.
|
||||||
|
#[derive(Clone, Debug, PartialEq, Eq, Hash, Deserialize)]
|
||||||
|
#[serde(try_from = "RawMatcher")]
|
||||||
|
struct Matcher {
|
||||||
|
segments: Vec<MatcherSegment>,
|
||||||
|
/// Whether the glob pattern should be matched case-sensitively.
|
||||||
|
///
|
||||||
|
/// Defaults to `Case::Insensitive` for backwards compatibility.
|
||||||
|
case: Case,
|
||||||
|
}
|
||||||
|
/// Parse the glob pattern of a matcher.
|
||||||
|
///
|
||||||
|
/// Note that this implementation is rather strict: it will greedily interpret
|
||||||
|
/// every valid environment variable replacement as such, then immediately
|
||||||
|
/// hard-error if it finds a '$' anywhere in the remaining text segments.
|
||||||
|
///
|
||||||
|
/// The reason for this strictness is I currently cannot think of a valid reason
|
||||||
|
/// why you would ever need '$' as plaintext in a glob pattern. Therefore any
|
||||||
|
/// such occurrences are likely human errors.
|
||||||
|
///
|
||||||
|
/// If we later discover some edge cases, it's okay to make it more permissive.
|
||||||
|
///
|
||||||
|
/// Revision history:
|
||||||
|
/// - 2024-02-20: allow `{` and `}` (glob brace expansion)
|
||||||
|
fn parse_glob(s: &str) -> Result<Vec<MatcherSegment>, anyhow::Error> {
|
||||||
|
use MatcherSegment as Seg;
|
||||||
|
static VAR_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"\$\{([\w\d_]+)\}").unwrap());
|
||||||
|
|
||||||
|
let mut segments = vec![];
|
||||||
|
let mut text_start = 0;
|
||||||
|
for capture in VAR_REGEX.captures_iter(s) {
|
||||||
|
let match_0 = capture.get(0).unwrap();
|
||||||
|
|
||||||
|
// text before this var
|
||||||
|
let text_end = match_0.start();
|
||||||
|
segments.push(Seg::Text(s[text_start..text_end].into()));
|
||||||
|
text_start = match_0.end();
|
||||||
|
|
||||||
|
// this var
|
||||||
|
segments.push(Seg::Env(capture.get(1).unwrap().as_str().into()));
|
||||||
|
}
|
||||||
|
// possible trailing text
|
||||||
|
segments.push(Seg::Text(s[text_start..].into()));
|
||||||
|
|
||||||
|
// cleanup empty text segments
|
||||||
|
let non_empty_segments = segments
|
||||||
|
.into_iter()
|
||||||
|
.filter(|seg| seg.text().map(|t| !t.is_empty()).unwrap_or(true))
|
||||||
|
.collect_vec();
|
||||||
|
|
||||||
|
// sanity check
|
||||||
|
if non_empty_segments
|
||||||
|
.windows(2)
|
||||||
|
.any(|segs| segs[0].is_text() && segs[1].is_text())
|
||||||
|
{
|
||||||
|
unreachable!("Parsed into consecutive text segments: {non_empty_segments:?}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// guard empty case
|
||||||
|
if non_empty_segments.is_empty() {
|
||||||
|
bail!(r#"Parsed an empty matcher: "{s}""#);
|
||||||
|
}
|
||||||
|
|
||||||
|
// guard variable syntax leftover fragments
|
||||||
|
if non_empty_segments
|
||||||
|
.iter()
|
||||||
|
.filter_map(Seg::text)
|
||||||
|
.any(|t| t.contains('$'))
|
||||||
|
{
|
||||||
|
bail!(r#"Invalid matcher: "{s}""#);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(non_empty_segments)
|
||||||
|
}
|
||||||
|
impl TryFrom<RawMatcher> for Matcher {
|
||||||
|
type Error = anyhow::Error;
|
||||||
|
fn try_from(raw: RawMatcher) -> Result<Self, Self::Error> {
|
||||||
|
const DEFAULT_CASE: Case = Case::Insensitive;
|
||||||
|
match &raw {
|
||||||
|
RawMatcher::Simple(s) => {
|
||||||
|
let segments = parse_glob(s)?;
|
||||||
|
Ok(Self {
|
||||||
|
segments,
|
||||||
|
case: DEFAULT_CASE,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
RawMatcher::Full {
|
||||||
|
glob,
|
||||||
|
case_sensitive,
|
||||||
|
} => {
|
||||||
|
let segments = parse_glob(glob)?;
|
||||||
|
let case = match case_sensitive {
|
||||||
|
None => DEFAULT_CASE,
|
||||||
|
Some(false) => Case::Insensitive,
|
||||||
|
Some(true) => Case::Sensitive,
|
||||||
|
};
|
||||||
|
Ok(Self { segments, case })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl ToTokens for Matcher {
|
||||||
|
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||||
|
let case = &self.case;
|
||||||
|
let t = match self.segments.as_slice() {
|
||||||
|
[] => unreachable!("0-length matcher should never be created"),
|
||||||
|
[MatcherSegment::Text(text)] => {
|
||||||
|
quote! { Lazy::new(|| Some(build_matcher_fixed(#text, #case))) }
|
||||||
|
}
|
||||||
|
// parser logic ensures that this case can only happen when there are dynamic segments
|
||||||
|
segs @ [_, ..] => {
|
||||||
|
quote! { Lazy::new(|| build_matcher_dynamic(&[ #(#segs),* ], #case)) }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
tokens.append_all(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A segment in a matcher.
|
||||||
|
///
|
||||||
|
/// Corresponds to `syntax_mapping::MatcherSegment`.
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
|
enum MatcherSegment {
|
||||||
|
Text(String),
|
||||||
|
Env(String),
|
||||||
|
}
|
||||||
|
impl ToTokens for MatcherSegment {
|
||||||
|
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||||
|
let t = match self {
|
||||||
|
Self::Text(text) => quote! { MatcherSegment::Text(#text) },
|
||||||
|
Self::Env(env) => quote! { MatcherSegment::Env(#env) },
|
||||||
|
};
|
||||||
|
tokens.append_all(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[allow(dead_code)]
|
||||||
|
impl MatcherSegment {
|
||||||
|
fn is_text(&self) -> bool {
|
||||||
|
matches!(self, Self::Text(_))
|
||||||
|
}
|
||||||
|
fn is_env(&self) -> bool {
|
||||||
|
matches!(self, Self::Env(_))
|
||||||
|
}
|
||||||
|
fn text(&self) -> Option<&str> {
|
||||||
|
match self {
|
||||||
|
Self::Text(t) => Some(t),
|
||||||
|
Self::Env(_) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn env(&self) -> Option<&str> {
|
||||||
|
match self {
|
||||||
|
Self::Text(_) => None,
|
||||||
|
Self::Env(t) => Some(t),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A struct that models a single .toml file in /src/syntax_mapping/builtins/.
|
||||||
|
#[derive(Clone, Debug, Deserialize)]
|
||||||
|
struct MappingDefModel {
|
||||||
|
#[serde(default)]
|
||||||
|
mappings: IndexMap<MappingTarget, Vec<Matcher>>,
|
||||||
|
}
|
||||||
|
impl MappingDefModel {
|
||||||
|
fn into_mapping_list(self) -> MappingList {
|
||||||
|
let list = self
|
||||||
|
.mappings
|
||||||
|
.into_iter()
|
||||||
|
.flat_map(|(target, matchers)| {
|
||||||
|
matchers
|
||||||
|
.into_iter()
|
||||||
|
.map(|matcher| (matcher, target.clone()))
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
MappingList(list)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
struct MappingList(Vec<(Matcher, MappingTarget)>);
|
||||||
|
impl ToTokens for MappingList {
|
||||||
|
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||||
|
let len = self.0.len();
|
||||||
|
let array_items = self
|
||||||
|
.0
|
||||||
|
.iter()
|
||||||
|
.map(|(matcher, target)| quote! { (#matcher, #target) });
|
||||||
|
|
||||||
|
let t = quote! {
|
||||||
|
/// Generated by build script from /src/syntax_mapping/builtins/.
|
||||||
|
pub(crate) static BUILTIN_MAPPINGS: [(Lazy<Option<GlobMatcher>>, MappingTarget); #len] = [#(#array_items),*];
|
||||||
|
};
|
||||||
|
tokens.append_all(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get the list of paths to all mapping definition files that should be
|
||||||
|
/// included for the current target platform.
|
||||||
|
fn get_def_paths() -> anyhow::Result<Vec<PathBuf>> {
|
||||||
|
let source_subdirs = [
|
||||||
|
"common",
|
||||||
|
#[cfg(target_family = "unix")]
|
||||||
|
"unix-family",
|
||||||
|
#[cfg(any(
|
||||||
|
target_os = "freebsd",
|
||||||
|
target_os = "netbsd",
|
||||||
|
target_os = "openbsd",
|
||||||
|
target_os = "macos"
|
||||||
|
))]
|
||||||
|
"bsd-family",
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
"linux",
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
"macos",
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
"windows",
|
||||||
|
];
|
||||||
|
|
||||||
|
let mut toml_paths = vec![];
|
||||||
|
for subdir_name in source_subdirs {
|
||||||
|
let subdir = Path::new("src/syntax_mapping/builtins").join(subdir_name);
|
||||||
|
if !subdir.try_exists()? {
|
||||||
|
// Directory might not exist due to this `cargo vendor` bug:
|
||||||
|
// https://github.com/rust-lang/cargo/issues/15080
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let wd = WalkDir::new(subdir);
|
||||||
|
let paths = wd
|
||||||
|
.into_iter()
|
||||||
|
.filter_map_ok(|entry| {
|
||||||
|
let path = entry.path();
|
||||||
|
(path.is_file() && path.extension().map(|ext| ext == "toml").unwrap_or(false))
|
||||||
|
.then(|| path.to_owned())
|
||||||
|
})
|
||||||
|
.collect::<Result<Vec<_>, _>>()?;
|
||||||
|
toml_paths.extend(paths);
|
||||||
|
}
|
||||||
|
|
||||||
|
toml_paths.sort_by_key(|path| {
|
||||||
|
path.file_name()
|
||||||
|
.expect("file name should not terminate in ..")
|
||||||
|
.to_owned()
|
||||||
|
});
|
||||||
|
|
||||||
|
Ok(toml_paths)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_all_mappings() -> anyhow::Result<MappingList> {
|
||||||
|
let mut all_mappings = vec![];
|
||||||
|
|
||||||
|
for path in get_def_paths()? {
|
||||||
|
let toml_string = fs::read_to_string(path)?;
|
||||||
|
let mappings = toml::from_str::<MappingDefModel>(&toml_string)?.into_mapping_list();
|
||||||
|
all_mappings.extend(mappings.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
let duplicates = all_mappings
|
||||||
|
.iter()
|
||||||
|
.duplicates_by(|(matcher, _)| matcher)
|
||||||
|
.collect_vec();
|
||||||
|
if !duplicates.is_empty() {
|
||||||
|
bail!("Rules with duplicate matchers found: {duplicates:?}");
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(MappingList(all_mappings))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Build the static syntax mappings defined in /src/syntax_mapping/builtins/
|
||||||
|
/// into a .rs source file, which is to be inserted with `include!`.
|
||||||
|
pub fn build_static_mappings() -> anyhow::Result<()> {
|
||||||
|
println!("cargo:rerun-if-changed=src/syntax_mapping/builtins/");
|
||||||
|
|
||||||
|
let mappings = read_all_mappings()?;
|
||||||
|
|
||||||
|
// IMPRV: parse + unparse is a bit cringe, but there seems to be no better
|
||||||
|
// option given the limited APIs of `prettyplease`
|
||||||
|
let rs_src = syn::parse_file(&mappings.to_token_stream().to_string())?;
|
||||||
|
let rs_src_pretty = prettyplease::unparse(&rs_src);
|
||||||
|
|
||||||
|
let codegen_path = Path::new(&env::var_os("OUT_DIR").ok_or(anyhow!("OUT_DIR is unset"))?)
|
||||||
|
.join("codegen_static_syntax_mappings.rs");
|
||||||
|
|
||||||
|
fs::write(codegen_path, rs_src_pretty)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
|
use std::{collections::HashMap, fs, path::Path};
|
||||||
|
|
||||||
|
/// Generates a file from a template.
|
||||||
|
pub fn render_template(
|
||||||
|
variables: &HashMap<&str, String>,
|
||||||
|
in_file: &str,
|
||||||
|
out_file: impl AsRef<Path>,
|
||||||
|
) -> anyhow::Result<()> {
|
||||||
|
let mut content = fs::read_to_string(in_file)?;
|
||||||
|
|
||||||
|
for (variable_name, value) in variables {
|
||||||
|
// Replace {{variable_name}} by the value
|
||||||
|
let pattern = format!("{{{{{variable_name}}}}}");
|
||||||
|
content = content.replace(&pattern, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs::write(out_file, content)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
+3
-3
@@ -181,7 +181,7 @@ man 2 select
|
|||||||
|
|
||||||
## インストール
|
## インストール
|
||||||
|
|
||||||
[](https://repology.org/project/bat-cat/versions)
|
[](https://repology.org/project/bat-cat/versions)
|
||||||
|
|
||||||
### On Ubuntu (`apt` を使用)
|
### On Ubuntu (`apt` を使用)
|
||||||
*... や他のDebianベースのLinuxディストリビューション*
|
*... や他のDebianベースのLinuxディストリビューション*
|
||||||
@@ -219,7 +219,7 @@ apk add bat
|
|||||||
|
|
||||||
### On Arch Linux
|
### On Arch Linux
|
||||||
|
|
||||||
[Arch Linuxの公式リソース](https://www.archlinux.org/packages/community/x86_64/bat/)
|
[Arch Linuxの公式リソース](https://www.archlinux.org/packages/extra/x86_64/bat/)
|
||||||
からインストールできます。
|
からインストールできます。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -366,7 +366,7 @@ ansible-galaxy install aeimer.install_bat
|
|||||||
### From source
|
### From source
|
||||||
|
|
||||||
|
|
||||||
`bat` をソースからビルドしたいならば、Rust 1.70.0 以上の環境が必要です。
|
`bat` をソースからビルドしたいならば、Rust 1.79.0 以上の環境が必要です。
|
||||||
`cargo` を使用してビルドすることができます:
|
`cargo` を使用してビルドすることができます:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
+7
-7
@@ -163,7 +163,7 @@ git show v0.6.0:src/main.rs | bat -l rs
|
|||||||
볼 수 있습니다:
|
볼 수 있습니다:
|
||||||
```bash
|
```bash
|
||||||
batdiff() {
|
batdiff() {
|
||||||
git diff --name-only --diff-filter=d | xargs bat --diff
|
git diff --name-only --relative --diff-filter=d -z | xargs -0 bat --diff
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
이것을 별도의 도구로 쓰고 싶다면
|
이것을 별도의 도구로 쓰고 싶다면
|
||||||
@@ -214,7 +214,7 @@ man 2 select
|
|||||||
|
|
||||||
## 설치
|
## 설치
|
||||||
|
|
||||||
[](https://repology.org/project/bat-cat/versions)
|
[](https://repology.org/project/bat-cat/versions)
|
||||||
|
|
||||||
### Ubuntu에서 (`apt` 사용)
|
### Ubuntu에서 (`apt` 사용)
|
||||||
*... 그리고 다른 Debian 기반의 Linux 배포판들에서.*
|
*... 그리고 다른 Debian 기반의 Linux 배포판들에서.*
|
||||||
@@ -264,7 +264,7 @@ apk add bat
|
|||||||
### Arch Linux에서
|
### Arch Linux에서
|
||||||
|
|
||||||
공식 소스를 통해
|
공식 소스를 통해
|
||||||
[`bat` 패키지](https://www.archlinux.org/packages/community/x86_64/bat/)를
|
[`bat` 패키지](https://www.archlinux.org/packages/extra/x86_64/bat/)를
|
||||||
설치할 수 있습니다:
|
설치할 수 있습니다:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -416,7 +416,7 @@ scoop install bat
|
|||||||
|
|
||||||
### 소스에서
|
### 소스에서
|
||||||
|
|
||||||
`bat`의 소스를 빌드하기 위해서는, Rust 1.70.0 이상이 필요합니다.
|
`bat`의 소스를 빌드하기 위해서는, Rust 1.79.0 이상이 필요합니다.
|
||||||
`cargo`를 이용해 전부 빌드할 수 있습니다:
|
`cargo`를 이용해 전부 빌드할 수 있습니다:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -461,11 +461,11 @@ bat --list-themes | fzf --preview="bat --theme={} --color=always /path/to/file"
|
|||||||
|
|
||||||
- `ansi`는 어떤 터미널에서도 무난하게 보입니다. 이는 3비트 색상을 사용합니다:
|
- `ansi`는 어떤 터미널에서도 무난하게 보입니다. 이는 3비트 색상을 사용합니다:
|
||||||
검정, 빨강, 녹색, 노랑, 파랑, 마젠타, 시안, 하양.
|
검정, 빨강, 녹색, 노랑, 파랑, 마젠타, 시안, 하양.
|
||||||
- `base16`은 [base16](https://github.com/chriskempson/base16) 터미널 테마를 위해
|
- `base16`은 [base16](https://github.com/tinted-theming/home) 터미널 테마를 위해
|
||||||
디자인되었습니다.
|
디자인되었습니다.
|
||||||
이는 [base16 스타일 가이드라인](https://github.com/chriskempson/base16/blob/master/styling.md)에
|
이는 [base16 스타일 가이드라인](https://github.com/tinted-theming/home/blob/main/styling.md)에
|
||||||
따라 4비트 색상(3비트 색상에 밝은 변형 추가)을 사용합니다.
|
따라 4비트 색상(3비트 색상에 밝은 변형 추가)을 사용합니다.
|
||||||
- `base16-256`는 [base16-shell](https://github.com/chriskempson/base16-shell)을
|
- `base16-256`는 [base16-shell](https://github.com/tinted-theming/base16-shell)을
|
||||||
위해 디자인되었습니다.
|
위해 디자인되었습니다.
|
||||||
이는 16부터 21의 일부 밝은 색상을 8비트 색상으로 대치합니다.
|
이는 16부터 21의 일부 밝은 색상을 8비트 색상으로 대치합니다.
|
||||||
단지 256-색상 터미널을 쓰지만 base16-shell을 쓰지 않는다고 해서 이것을
|
단지 256-색상 터미널을 쓰지만 base16-shell을 쓰지 않는다고 해서 이것을
|
||||||
|
|||||||
+119
-66
@@ -3,27 +3,27 @@
|
|||||||
<a href="https://github.com/sharkdp/bat/actions?query=workflow%3ACICD"><img src="https://github.com/sharkdp/bat/workflows/CICD/badge.svg" alt="Build Status"></a>
|
<a href="https://github.com/sharkdp/bat/actions?query=workflow%3ACICD"><img src="https://github.com/sharkdp/bat/workflows/CICD/badge.svg" alt="Build Status"></a>
|
||||||
<img src="https://img.shields.io/crates/l/bat.svg" alt="license">
|
<img src="https://img.shields.io/crates/l/bat.svg" alt="license">
|
||||||
<a href="https://crates.io/crates/bat"><img src="https://img.shields.io/crates/v/bat.svg?colorB=319e8c" alt="Version info"></a><br>
|
<a href="https://crates.io/crates/bat"><img src="https://img.shields.io/crates/v/bat.svg?colorB=319e8c" alt="Version info"></a><br>
|
||||||
Клон утилиты <i>cat(1)</i> с поддержкой выделения синтаксиса и Git
|
Клон утилиты <i>cat(1)</i> с поддержкой подсветки синтаксиса и Git
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="#выделение-синтаксиса">Ключевые возможности</a> •
|
<a href="#подсветка-синтаксиса">Ключевые возможности</a> •
|
||||||
<a href="#как-использовать">Использование</a> •
|
<a href="#как-использовать">Использование</a> •
|
||||||
<a href="#установка">Установка</a> •
|
<a href="#установка">Установка</a> •
|
||||||
<a href="#кастомизация">Кастомизация</a> •
|
<a href="#кастомизация">Кастомизация</a> •
|
||||||
<a href="#цели-и-альтернативы">Цели и альтернативы </a><br>
|
<a href="#цели-и-альтернативы">Цели и альтернативы </a><br>
|
||||||
[<a href="../README.md">English]
|
[<a href="../README.md">English</a>]
|
||||||
[<a href="README-zh.md">中文</a>]
|
[<a href="README-zh.md">中文</a>]
|
||||||
[<a href="README-ja.md">日本語</a>]
|
[<a href="README-ja.md">日本語</a>]
|
||||||
[<a href="README-ko.md">한국어</a>]
|
[<a href="README-ko.md">한국어</a>]
|
||||||
[Русский]
|
[Русский]
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
### Выделение синтаксиса
|
### Подсветка синтаксиса
|
||||||
|
|
||||||
`bat` поддерживает выделение синтаксиса для огромного количества языков программирования и разметки:
|
`bat` поддерживает подсветку синтаксиса для огромного количества языков программирования и разметки:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Интеграция с Git
|
### Интеграция с Git
|
||||||
`bat` использует `git`, чтобы показать изменения в коде
|
`bat` использует `git`, чтобы показать изменения в коде
|
||||||
@@ -31,15 +31,17 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Показать непечатаемые символы
|
### Показ непечатных символов
|
||||||
|
|
||||||
Вы можете использовать `-A` / `--show-all` флаг, чтобы показать символы, которые невозможно напечатать:
|
Вы можете использовать флаг `-A` / `--show-all`, чтобы показать непечатные символы:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Автоматическое разделение текста
|
### Автоматический пейджинг терминала
|
||||||
|
|
||||||
`bat` умеет перенаправлять вывод в `less`, если вывод не помещается на экране полностью.
|
`bat` умеет перенаправлять вывод в пейджер терминала (например, в `less`), если вывод не помещается на экране полностью.
|
||||||
|
Если вы хотите, чтобы `bat` работал как `cat` всё время, вы можете установить опцию `--paging=never` в командной строке или в конфигурационном файле.
|
||||||
|
Если вы намерены использовать `bat` в качестве алиаса для `cat`, вы можете установить `alias cat='bat --paging=never'`, чтобы сохранить изначальное поведение.
|
||||||
|
|
||||||
### Объединение файлов
|
### Объединение файлов
|
||||||
|
|
||||||
@@ -86,11 +88,23 @@ bat header.md content.md footer.md > document.md
|
|||||||
|
|
||||||
bat -n main.rs # показываем только количество строк
|
bat -n main.rs # показываем только количество строк
|
||||||
|
|
||||||
bat f - g # выводит 'f' в stdin, а потом 'g'.
|
bat f - g # выводит 'f', потом stdin, а потом 'g'.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Интеграция с другими утилитами
|
### Интеграция с другими утилитами
|
||||||
|
|
||||||
|
#### `fzf`
|
||||||
|
|
||||||
|
Вы можете использовать `bat` как просмотрщик для [`fzf`](https://github.com/junegunn/fzf).
|
||||||
|
Чтобы это заработало, используйте опцию `--color=always`, чтобы вывод был всегда цветным.
|
||||||
|
Вы можете также использовать опцию `--line-range`, чтобы уменьшить время загрузки для больших файлов:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Больше деталей смотрите в [`README` программы `fzf`](https://github.com/junegunn/fzf#preview-window).
|
||||||
|
|
||||||
#### `find` или `fd`
|
#### `find` или `fd`
|
||||||
|
|
||||||
Вы можете использовать флаг `-exec` в `find`, чтобы посмотреть превью всех файлов в `bat`
|
Вы можете использовать флаг `-exec` в `find`, чтобы посмотреть превью всех файлов в `bat`
|
||||||
@@ -121,12 +135,22 @@ tail -f /var/log/pacman.log | bat --paging=never -l log
|
|||||||
|
|
||||||
#### `git`
|
#### `git`
|
||||||
|
|
||||||
Вы можете использовать `bat` с `git show`, чтобы просмотреть старую версию файла с выделением синтаксиса:
|
Вы можете использовать `bat` с `git show`, чтобы просмотреть старую версию файла с подсветкой синтаксиса:
|
||||||
```bash
|
```bash
|
||||||
git show v0.6.0:src/main.rs | bat -l rs
|
git show v0.6.0:src/main.rs | bat -l rs
|
||||||
```
|
```
|
||||||
|
|
||||||
Обратите внимание, что выделение синтаксиса не работает в `git diff` на данный момент. Если вам это нужно, посмотрите [`delta`](https://github.com/dandavison/delta).
|
#### `git diff`
|
||||||
|
|
||||||
|
Вы можете использовать `bat` с `git diff` для просмотра строк кода вокруг изменений с подсветкой синтаксиса:
|
||||||
|
```bash
|
||||||
|
batdiff() {
|
||||||
|
git diff --name-only --relative --diff-filter=d -z | xargs -0 bat --diff
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Если вы хотите использовать это как отдельную программу, посмотрите `batdiff` из [`bat-extras`](https://github.com/eth-p/bat-extras).
|
||||||
|
|
||||||
|
Если вам это нужна более полная поддержка для операций с git и diff, посмотрите [`delta`](https://github.com/dandavison/delta).
|
||||||
|
|
||||||
#### `xclip`
|
#### `xclip`
|
||||||
|
|
||||||
@@ -135,17 +159,18 @@ git show v0.6.0:src/main.rs | bat -l rs
|
|||||||
```bash
|
```bash
|
||||||
bat main.cpp | xclip
|
bat main.cpp | xclip
|
||||||
```
|
```
|
||||||
`bat` обнаружит перенаправление вывода и выведет обычный текст без выделения синтаксиса.
|
`bat` обнаружит перенаправление вывода и выведет обычный текст без подсветки синтаксиса.
|
||||||
|
|
||||||
#### `man`
|
#### `man`
|
||||||
|
|
||||||
`bat` может быть использован в виде выделения цвета для `man`, для этого установите переменную окружения
|
`bat` может быть использован для раскрашивания вывода `man`, для этого установите переменную окружения
|
||||||
`MANPAGER`:
|
`MANPAGER`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
|
||||||
man 2 select
|
man 2 select
|
||||||
```
|
```
|
||||||
|
(замените `bat` на `batcat`, если у вас Debian или Ubuntu)
|
||||||
|
|
||||||
Возможно вам понадобится также установить `MANROFFOPT="-c"`, если у вас есть проблемы с форматированием.
|
Возможно вам понадобится также установить `MANROFFOPT="-c"`, если у вас есть проблемы с форматированием.
|
||||||
|
|
||||||
@@ -153,20 +178,49 @@ man 2 select
|
|||||||
|
|
||||||
Обратите внимание, что [синтаксис manpage](assets/syntaxes/02_Extra/Manpage.sublime-syntax) разрабатывается в этом репозитории и все еще находится в разработке.
|
Обратите внимание, что [синтаксис manpage](assets/syntaxes/02_Extra/Manpage.sublime-syntax) разрабатывается в этом репозитории и все еще находится в разработке.
|
||||||
|
|
||||||
|
Также заметьте, что это [не заработает](https://github.com/sharkdp/bat/issues/1145) с реализацией `man` через Mandocs.
|
||||||
|
|
||||||
#### `prettier` / `shfmt` / `rustfmt`
|
#### `prettier` / `shfmt` / `rustfmt`
|
||||||
|
|
||||||
[`Prettybat`](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md) — скрипт, который форматирует код и выводит его с помощью `bat`.
|
[`Prettybat`](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md) — скрипт, который форматирует код и выводит его с помощью `bat`.
|
||||||
|
|
||||||
|
#### Подсветка сообщений `--help`
|
||||||
|
|
||||||
|
Вы можете использовать `bat`, чтобы подсвечивать текст справки комманд: `$ cp --help | bat -plhelp`
|
||||||
|
|
||||||
|
Вы можете сделать такую вспомогательную команду для этого:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# in your .bashrc/.zshrc/*rc
|
||||||
|
alias bathelp='bat --plain --language=help'
|
||||||
|
help() {
|
||||||
|
"$@" --help 2>&1 | bathelp
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
В этом случае, вы можете просто писать `$ help cp` или `$ help git commit`.
|
||||||
|
|
||||||
|
Если вы используете `zsh`, вы можете объявить глобальные алиасы для `-h` и `--help`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
|
||||||
|
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
|
||||||
|
```
|
||||||
|
|
||||||
|
В этом случае, вы можете продолжать использовать `cp --help`, но при этом получать подцвеченный вывод.
|
||||||
|
|
||||||
|
Обратите внимание, что не всегда опция `-h` является краткой формы опции `--help` (например, у `ls`).
|
||||||
|
|
||||||
|
Пожалуйста, сообщайте о проблемах с подсветкой справки в [этот репозиторий](https://github.com/victor-gp/cmd-help-sublime-syntax).
|
||||||
|
|
||||||
## Установка
|
## Установка
|
||||||
|
|
||||||
[](https://repology.org/project/bat-cat/versions)
|
[](https://repology.org/project/bat-cat/versions)
|
||||||
|
|
||||||
### Ubuntu (с помощью `apt`)
|
### Ubuntu (с помощью `apt`)
|
||||||
*... и другие дистрибутивы основанные на Debian.*
|
*... и другие дистрибутивы основанные на Debian.*
|
||||||
|
|
||||||
`bat` есть в репозиториях [Ubuntu](https://packages.ubuntu.com/eoan/bat) и
|
`bat` доступен на [Ubuntu since 20.04 ("Focal")](https://packages.ubuntu.com/search?keywords=bat&exact=1) и [Debian since August 2021 (Debian 11 - "Bullseye")](https://packages.debian.org/bullseye/bat).
|
||||||
[Debian](https://packages.debian.org/sid/bat) и доступен начиная с Ubuntu Eoan 19.10. На Debian `bat` пока что доступен только с нестабильной веткой "Sid".
|
|
||||||
|
|
||||||
Если ваша версия Ubuntu/Debian достаточно новая, вы можете установить `bat` так:
|
Если ваша версия Ubuntu/Debian достаточно новая, вы можете установить `bat` так:
|
||||||
|
|
||||||
@@ -201,7 +255,7 @@ apk add bat
|
|||||||
|
|
||||||
### Arch Linux
|
### Arch Linux
|
||||||
|
|
||||||
Вы можете установить [`bat`](https://www.archlinux.org/packages/community/x86_64/bat/) из официального источника:
|
Вы можете установить [`bat`](https://www.archlinux.org/packages/extra/x86_64/bat/) из официального источника:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pacman -S bat
|
pacman -S bat
|
||||||
@@ -245,6 +299,14 @@ cd /usr/ports/textproc/bat
|
|||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### On OpenBSD
|
||||||
|
|
||||||
|
Вы можете установить `bat` с помощью [`pkg_add(1)`](https://man.openbsd.org/pkg_add.1):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pkg_add bat
|
||||||
|
```
|
||||||
|
|
||||||
### С помощью nix
|
### С помощью nix
|
||||||
|
|
||||||
Вы можете установить `bat`, используя [nix package manager](https://nixos.org/nix):
|
Вы можете установить `bat`, используя [nix package manager](https://nixos.org/nix):
|
||||||
@@ -253,6 +315,14 @@ make install
|
|||||||
nix-env -i bat
|
nix-env -i bat
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Через flox
|
||||||
|
|
||||||
|
Вы можете установить `bat` используя [Flox](https://flox.dev)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
flox install bat
|
||||||
|
```
|
||||||
|
|
||||||
### openSUSE
|
### openSUSE
|
||||||
|
|
||||||
Вы можете установить `bat` с помощью `zypper`:
|
Вы можете установить `bat` с помощью `zypper`:
|
||||||
@@ -261,7 +331,7 @@ nix-env -i bat
|
|||||||
zypper install bat
|
zypper install bat
|
||||||
```
|
```
|
||||||
|
|
||||||
### macOS
|
### На macOS (или Linux) через Homebrew
|
||||||
|
|
||||||
Вы можете установить `bat` с помощью [Homebrew](http://braumeister.org/formula/bat):
|
Вы можете установить `bat` с помощью [Homebrew](http://braumeister.org/formula/bat):
|
||||||
|
|
||||||
@@ -269,6 +339,8 @@ zypper install bat
|
|||||||
brew install bat
|
brew install bat
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### На macOS через MacPorts
|
||||||
|
|
||||||
Или же установить его с помощью [MacPorts](https://ports.macports.org/port/bat/summary):
|
Или же установить его с помощью [MacPorts](https://ports.macports.org/port/bat/summary):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -277,7 +349,19 @@ port install bat
|
|||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
Есть несколько способов установить `bat`. Как только вы установили его, посмотрите на секцию ["Использование `bat` в Windows"](#using-bat-on-windows).
|
Есть несколько способов установить `bat`. Как только вы установили его, посмотрите на секцию ["Использование `bat` в Windows"](#использование-bat-в-windows).
|
||||||
|
|
||||||
|
#### Пререквитизы
|
||||||
|
|
||||||
|
Вам нужно установить пакет [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads).
|
||||||
|
|
||||||
|
#### С помощью WinGet
|
||||||
|
|
||||||
|
Вы можете установить `bat` через [WinGet](https://learn.microsoft.com/en-us/windows/package-manager/winget):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
winget install sharkdp.bat
|
||||||
|
```
|
||||||
|
|
||||||
#### С помощью Chocolatey
|
#### С помощью Chocolatey
|
||||||
|
|
||||||
@@ -293,50 +377,10 @@ choco install bat
|
|||||||
scoop install bat
|
scoop install bat
|
||||||
```
|
```
|
||||||
|
|
||||||
Для этого у вас должен быть установлен [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads).
|
|
||||||
|
|
||||||
#### Из заранее скомпилированных файлов:
|
#### Из заранее скомпилированных файлов:
|
||||||
|
|
||||||
Их вы можете скачать на [странице релизов](https://github.com/sharkdp/bat/releases).
|
Их вы можете скачать на [странице релизов](https://github.com/sharkdp/bat/releases).
|
||||||
|
|
||||||
Для этого у вас должен быть установлен [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads).
|
|
||||||
|
|
||||||
### С помощью Docker
|
|
||||||
|
|
||||||
Вы можете использовать [Docker image](https://hub.docker.com/r/danlynn/bat/), чтобы запустить `bat` в контейнере:
|
|
||||||
```bash
|
|
||||||
docker pull danlynn/bat
|
|
||||||
alias bat='docker run -it --rm -e BAT_THEME -e BAT_STYLE -e BAT_TABS -v "$(pwd):/myapp" danlynn/bat'
|
|
||||||
```
|
|
||||||
|
|
||||||
### С помощью Ansible
|
|
||||||
|
|
||||||
Вы можете установить `bat` с [Ansible](https://www.ansible.com/):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Устанавливаем роль на устройстве
|
|
||||||
ansible-galaxy install aeimer.install_bat
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
---
|
|
||||||
# Playbook для установки bat
|
|
||||||
- host: all
|
|
||||||
roles:
|
|
||||||
- aeimer.install_bat
|
|
||||||
```
|
|
||||||
|
|
||||||
- [Ansible Galaxy](https://galaxy.ansible.com/aeimer/install_bat)
|
|
||||||
- [GitHub](https://github.com/aeimer/ansible-install-bat)
|
|
||||||
|
|
||||||
Этот способ должен сработать со следующими дистрибутивами:
|
|
||||||
- Debian/Ubuntu
|
|
||||||
- ARM (например Raspberry PI)
|
|
||||||
- Arch Linux
|
|
||||||
- Void Linux
|
|
||||||
- FreeBSD
|
|
||||||
- macOS
|
|
||||||
|
|
||||||
### Из скомпилированных файлов
|
### Из скомпилированных файлов
|
||||||
|
|
||||||
Перейдите на [страницу релизов](https://github.com/sharkdp/bat/releases) для
|
Перейдите на [страницу релизов](https://github.com/sharkdp/bat/releases) для
|
||||||
@@ -344,15 +388,24 @@ ansible-galaxy install aeimer.install_bat
|
|||||||
|
|
||||||
### Из исходников
|
### Из исходников
|
||||||
|
|
||||||
Если вы желаете установить `bat` из исходников, вам понадобится Rust 1.70.0 или выше. После этого используйте `cargo`, чтобы все скомпилировать:
|
Если вы желаете установить `bat` из исходников, вам понадобится Rust 1.79.0 или выше. После этого используйте `cargo`, чтобы всё скомпилировать:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo install --locked bat
|
cargo install --locked bat
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Заметьте, что дополнительные файлы, такие как документация man и подсказки командной строки, не могут быть установлены таким способом.
|
||||||
|
Они будут сгенерированы командой `cargo` должны быть доступны в папке сборки (в `build`).
|
||||||
|
|
||||||
|
Подсказки командной строки также доступны при таком запуске:
|
||||||
|
```bash
|
||||||
|
bat --completion <shell>
|
||||||
|
# see --help for supported shells
|
||||||
|
```
|
||||||
|
|
||||||
## Кастомизация
|
## Кастомизация
|
||||||
|
|
||||||
### Темы для выделения текста
|
### Темы для подсветки синтаксиса
|
||||||
|
|
||||||
Используйте `bat --list-themes`, чтобы вывести список всех доступных тем. Для выбора темы `TwoDark` используйте `bat` с флагом
|
Используйте `bat --list-themes`, чтобы вывести список всех доступных тем. Для выбора темы `TwoDark` используйте `bat` с флагом
|
||||||
`--theme=TwoDark` или выставьте переменную окружения `BAT_THEME` в `TwoDark`. Используйте `export BAT_THEME="TwoDark"` в конфигурационном файле вашей оболочки, чтобы изменить ее навсегда. Или же используйте [конфигурационный файл](https://github.com/sharkdp/bat#configuration-file) `bat`.
|
`--theme=TwoDark` или выставьте переменную окружения `BAT_THEME` в `TwoDark`. Используйте `export BAT_THEME="TwoDark"` в конфигурационном файле вашей оболочки, чтобы изменить ее навсегда. Или же используйте [конфигурационный файл](https://github.com/sharkdp/bat#configuration-file) `bat`.
|
||||||
@@ -372,7 +425,7 @@ bat --list-themes | fzf --preview="bat --theme={} --color=always /путь/к/ф
|
|||||||
|
|
||||||
### Добавление новых синтаксисов
|
### Добавление новых синтаксисов
|
||||||
|
|
||||||
`bat` использует [`syntect`](https://github.com/trishume/syntect/) для выделения синтаксиса. `syntect` может читать
|
`bat` использует [`syntect`](https://github.com/trishume/syntect/) для подсветки синтаксиса. `syntect` может читать
|
||||||
[файл `.sublime-syntax`](https://www.sublimetext.com/docs/3/syntax.html)
|
[файл `.sublime-syntax`](https://www.sublimetext.com/docs/3/syntax.html)
|
||||||
и темы. Чтобы добавить новый синтаксис, сделайте следующее:
|
и темы. Чтобы добавить новый синтаксис, сделайте следующее:
|
||||||
|
|
||||||
@@ -403,7 +456,7 @@ bat cache --clear
|
|||||||
|
|
||||||
### Добавление новых тем
|
### Добавление новых тем
|
||||||
|
|
||||||
Это работает похожим образом, так же как и добавление новых тем выделения синтаксиса
|
Это работает похожим образом, так же как и добавление новых тем подсветки синтаксиса
|
||||||
|
|
||||||
Во-первых, создайте каталог с новыми темами для синтаксиса:
|
Во-первых, создайте каталог с новыми темами для синтаксиса:
|
||||||
```bash
|
```bash
|
||||||
@@ -590,7 +643,7 @@ cargo install --locked --force
|
|||||||
Есть очень много альтернатив `bat`. Смотрите [этот документ](doc/alternatives.md) для сравнения.
|
Есть очень много альтернатив `bat`. Смотрите [этот документ](doc/alternatives.md) для сравнения.
|
||||||
|
|
||||||
## Лицензия
|
## Лицензия
|
||||||
Copyright (c) 2018-2021 [Разработчики bat](https://github.com/sharkdp/bat).
|
Copyright (c) 2018-2024 [Разработчики bat](https://github.com/sharkdp/bat).
|
||||||
|
|
||||||
`bat` распространяется под лицензиями MIT License и Apache License 2.0 (на выбор пользователя).
|
`bat` распространяется под лицензиями MIT License и Apache License 2.0 (на выбор пользователя).
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user