diff --git a/Cargo.lock b/Cargo.lock index 73fbf634..ead2c2d3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,33 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ahash" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -45,15 +63,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "arrayvec" @@ -68,7 +86,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" dependencies = [ "anstyle", - "bstr 1.6.0", + "bstr", "doc-comment", "predicates", "predicates-core", @@ -96,27 +114,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" dependencies = [ "serde", ] [[package]] name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "memchr", -] - -[[package]] -name = "bstr" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" +checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" dependencies = [ "memchr", "regex-automata", @@ -125,9 +134,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "cassowary" @@ -143,9 +152,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "libc", ] @@ -158,17 +167,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-targets 0.48.5", ] [[package]] @@ -200,18 +208,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.19" +version = "4.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" +checksum = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.3.19" +version = "4.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" +checksum = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9" dependencies = [ "anstyle", "clap_lex", @@ -219,15 +227,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "criterion" @@ -241,7 +249,7 @@ dependencies = [ "clap", "criterion-plot", "is-terminal", - "itertools", + "itertools 0.10.5", "num-traits", "once_cell", "oorandom", @@ -262,14 +270,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] name = "crossbeam" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +checksum = "6eb9105919ca8e40d437fc9cbb8f1975d916f1bd28afe795a48aae32a2cc8920" dependencies = [ "cfg-if", "crossbeam-channel", @@ -281,9 +289,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "82a9b73a36529d9c47029b9fb3a6f0ea3cc916a261195352ba19e770fc1748b2" dependencies = [ "cfg-if", "crossbeam-utils", @@ -291,9 +299,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -302,22 +310,20 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "0e3681d554572a651dda4186cd47240627c3d0114d45a95f6ad27f2f22e7548d" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.9.0", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "adc6598521bb5a83d491e8c1fe51db7296019d2ca3cb93cc6c2a20369a4d78a2" dependencies = [ "cfg-if", "crossbeam-utils", @@ -325,36 +331,20 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" dependencies = [ "cfg-if", ] -[[package]] -name = "crossterm" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" -dependencies = [ - "bitflags 1.3.2", - "crossterm_winapi", - "libc", - "mio", - "parking_lot", - "signal-hook", - "signal-hook-mio", - "winapi", -] - [[package]] name = "crossterm" version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.1", "crossterm_winapi", "libc", "mio", @@ -420,10 +410,11 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.7" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ + "powerfmt", "serde", ] @@ -505,32 +496,21 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "erased-serde" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da96524cc884f6558f1769b6c46686af2fe8e8b4cd253bd5a3cdba8181b8e070" +checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" dependencies = [ "serde", ] [[package]] name = "errno" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -555,18 +535,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" dependencies = [ "libc", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -577,23 +557,33 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -607,16 +597,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -636,9 +626,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", "hashbrown", @@ -647,19 +637,19 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c785eefb63ebd0e33416dfcb8d6da0bf27ce752843a45632a67bf10d4d4b5c4" +checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" dependencies = [ "hermit-abi", "rustix", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -671,11 +661,29 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jf" @@ -689,9 +697,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] @@ -704,27 +712,38 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall", +] [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -732,33 +751,42 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "lru" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2994eeba8ed550fd9b47a0b38f0242bc3344e496483c6180b69139cc2fa5d1d7" +dependencies = [ + "hashbrown", +] [[package]] name = "lscolors" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7015a04103ad78abb77e4b79ed151e767922d1cfde5f62640471c629a2320d" +checksum = "ab0b209ec3976527806024406fe765474b9a1750a0ed4b8f0372364741f50e7b" dependencies = [ "nu-ansi-term", ] [[package]] name = "lua-src" -version = "546.0.0" +version = "546.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb00c1380f1b4b4928dd211c07301ffa34872a239e590bd3219d9e5b213face" +checksum = "2da0daa7eee611a4c30c8f5ee31af55266e26e573971ba9336d2993e2da129b2" dependencies = [ "cc", ] [[package]] name = "luajit-src" -version = "210.4.7+resty107baaf" +version = "210.5.3+29b0b28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca76a3752fc130e5dabef71792f4f7095babb72f7c85860c7830eb746ad8bf31" +checksum = "0c2bb89013916ce5c949f01a1fbd6d435a58e1d980767a791d755911211d792d" dependencies = [ "cc", "which", @@ -766,9 +794,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memoffset" @@ -779,15 +807,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - [[package]] name = "mime" version = "0.3.17" @@ -812,32 +831,43 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "wasi", + "windows-sys 0.48.0", ] [[package]] name = "mlua" -version = "0.8.9" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07366ed2cd22a3b000aed076e2b68896fb46f06f1f5786c5962da73c0af01577" +checksum = "7c81f8ac20188feb5461a73eabb22a34dd09d6d58513535eb587e46bff6ba250" dependencies = [ - "bstr 0.2.17", - "cc", + "bstr", "erased-serde", - "lua-src", - "luajit-src", + "mlua-sys", "num-traits", "once_cell", - "pkg-config", "rustc-hash", "serde", + "serde-value", +] + +[[package]] +name = "mlua-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc29228347d6bdc9e613dc95c69df2817f755434ee0f7f3b27b57755fe238b7f" +dependencies = [ + "cc", + "cfg-if", + "lua-src", + "luajit-src", + "pkg-config", ] [[package]] @@ -867,7 +897,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", - "memoffset 0.6.5", + "memoffset", "pin-utils", ] @@ -887,28 +917,18 @@ version = "0.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c073d3c1930d0751774acf49e66653acecb416c3a54c6ec095a9b11caddb5a68" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_threads" version = "0.1.6" @@ -920,9 +940,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -930,6 +950,15 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +[[package]] +name = "ordered-float" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -942,15 +971,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -961,18 +990,18 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "path-absolutize" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43eb3595c63a214e1b37b44f44b0a84900ef7ae0b4c5efce59e123d246d7a0de" +checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5" dependencies = [ "path-dedot", ] [[package]] name = "path-dedot" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d55e486337acb9973cdea3ec5638c1b3bcb22e573b2b7b41969e0c744d5a15e" +checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" dependencies = [ "once_cell", ] @@ -985,9 +1014,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" [[package]] name = "plotters" @@ -1017,15 +1046,21 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "predicates" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" +checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" dependencies = [ "anstyle", "difflib", - "itertools", + "itertools 0.11.0", "predicates-core", ] @@ -1047,43 +1082,47 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.32" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] [[package]] name = "ratatui" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8285baa38bdc9f879d92c0e37cb562ef38aa3aeefca22b3200186bc39242d3d5" +checksum = "a5659e52e4ba6e07b2dad9f1158f578ef84a73762625ddb51536019f34d180eb" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.1", "cassowary", - "crossterm 0.26.1", + "crossterm", "indoc", + "itertools 0.12.0", + "lru", "paste", "serde", + "stability", + "strum", "unicode-segmentation", "unicode-width", ] [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -1091,50 +1130,39 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom", - "redox_syscall 0.2.16", + "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.9.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -1144,9 +1172,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -1155,9 +1183,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rustc-hash" @@ -1167,15 +1195,15 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.7" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172891ebdceb05aa0005f533a6cbfca599ddd7d966f6f5d4d9b2e70478e70399" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1186,9 +1214,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "same-file" @@ -1207,29 +1235,39 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.183" +version = "1.0.194" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.194" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.46", ] [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "6fbd975230bada99c8bb618e0c365c2eefa219158d5c6c29610fd09ff1833257" dependencies = [ "itoa", "ryu", @@ -1238,9 +1276,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.25" +version = "0.9.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" dependencies = [ "indexmap", "itoa", @@ -1297,7 +1335,7 @@ dependencies = [ "nix 0.25.1", "rayon", "regex", - "time 0.3.25", + "time", "timer", "tuikit", "unicode-width", @@ -1306,15 +1344,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smawk" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "snailquote" @@ -1326,12 +1364,44 @@ dependencies = [ "unicode_categories", ] +[[package]] +name = "stability" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd1b177894da2a2d9120208c3386066af06a488255caabc5de8ddca22dbc3ce" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "strsim" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.46", +] + [[package]] name = "syn" version = "1.0.109" @@ -1345,9 +1415,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" dependencies = [ "proc-macro2", "quote", @@ -1384,22 +1454,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.46", ] [[package]] @@ -1414,25 +1484,15 @@ dependencies = [ [[package]] name = "time" -version = "0.1.45" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ "deranged", "itoa", "libc", "num_threads", + "powerfmt", "serde", "time-core", "time-macros", @@ -1440,15 +1500,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" dependencies = [ "time-core", ] @@ -1478,7 +1538,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3e785f863a3af4c800a2a669d0b64c879b538738e352607e2624d03f868dc01" dependencies = [ - "crossterm 0.27.0", + "crossterm", "serde", "unicode-width", ] @@ -1499,18 +1559,18 @@ dependencies = [ [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-linebreak" @@ -1526,9 +1586,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode_categories" @@ -1538,9 +1598,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "unsafe-libyaml" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" [[package]] name = "utf8parse" @@ -1586,20 +1646,14 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1608,9 +1662,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1618,24 +1672,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.46", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1643,28 +1697,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.46", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", @@ -1672,13 +1726,15 @@ dependencies = [ [[package]] name = "which" -version = "4.4.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix", + "windows-sys 0.48.0", ] [[package]] @@ -1699,9 +1755,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -1713,12 +1769,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.0", ] [[package]] @@ -1727,65 +1783,131 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "xdg" @@ -1801,7 +1923,7 @@ dependencies = [ "anyhow", "assert_cmd", "criterion", - "crossterm 0.27.0", + "crossterm", "gethostname", "home", "humansize", @@ -1823,8 +1945,28 @@ dependencies = [ "skim", "snailquote", "textwrap", - "time 0.3.25", + "time", "tui-input", "which", "xdg", ] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.46", +] diff --git a/Cargo.toml b/Cargo.toml index 48bd3e15..4d2e7f7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,29 +22,29 @@ categories = ['command-line-interface', 'command-line-utilities'] include = ['src/**/*', 'docs/en/src/**/*', 'LICENSE', 'README.md'] [dependencies] -libc = "0.2.147" +libc = "0.2.151" humansize = "2.1.3" natord = "1.0.9" -anyhow = "1.0.72" -serde_yaml = "0.9.25" +anyhow = "1.0.79" +serde_yaml = "0.9.30" crossterm = { version = "0.27.0", features = [], default-features = false } ansi-to-tui = "3.1.0" -regex = "1.9.3" +regex = "1.10.2" gethostname = "0.4.3" -serde_json = "1.0.104" -path-absolutize = "3.1.0" -which = "4.4.0" +serde_json = "1.0.110" +path-absolutize = "3.1.1" +which = "5.0.0" nu-ansi-term = "0.49.0" textwrap = "0.16" snailquote = "0.3.1" skim = { version = "0.10.4", default-features = false } -time = { version = "0.3.25", features = ["serde", "local-offset", "formatting", "macros"] } +time = { version = "0.3.31", features = ["serde", "local-offset", "formatting", "macros"] } jf = "0.6.2" xdg = "2.5.2" -home = "0.5.5" +home = "0.5.9" [dependencies.lscolors] -version = "0.15.0" +version = "0.16.0" default-features = false features = ["nu-ansi-term"] @@ -57,22 +57,22 @@ version = "2.0.4" default-features = false [dependencies.tui] -version = "0.22.0" +version = "0.25.0" default-features = false -features = ['crossterm', 'serde'] +features = ['crossterm', 'serde', 'underline-color'] package = 'ratatui' [dependencies.serde] -version = "1.0.183" +version = "1.0.194" features = [] default-features = false [dependencies.indexmap] -version = "2.0.0" +version = "2.1.0" features = ['serde'] [dependencies.mlua] -version = "0.8.9" +version = "0.9.2" features = ['luajit', 'vendored', 'serialize', 'send'] [dependencies.tui-input] diff --git a/docs/en/src/awesome-plugins.md b/docs/en/src/awesome-plugins.md index b718aac3..747648f5 100644 --- a/docs/en/src/awesome-plugins.md +++ b/docs/en/src/awesome-plugins.md @@ -126,4 +126,3 @@ of the following plugins work for you, it's very easy to [62]: https://github.com/duganchen/one-table-column.xplr [63]: https://github.com/dy-sh/dysh-style.xplr [64]: https://github.com/dy-sh/get-rid-of-index.xplr - diff --git a/docs/en/src/default-key-bindings.md b/docs/en/src/default-key-bindings.md index 54c282d3..fe09f387 100644 --- a/docs/en/src/default-key-bindings.md +++ b/docs/en/src/default-key-bindings.md @@ -16,14 +16,16 @@ of [modes][4] and the key mappings for each mode. | key | remaps | action | | --------- | ------ | ------------------- | +| ( | | prev deep branch | +| ) | | next deep branch | | . | | show hidden | | / | ctrl-f | search | | : | | action | -| ? | | global help menu | +| ? | f1 | global help menu | | G | | go to bottom | | V | ctrl-a | select/unselect all | | ctrl-d | | duplicate as | -| ctrl-i | | next visited path | +| ctrl-i | tab | next visited path | | ctrl-n | | next selection | | ctrl-o | | last visited path | | ctrl-p | | prev selection | @@ -49,55 +51,161 @@ of [modes][4] and the key mappings for each mode. | ~ | | go home | | [0-9] | | input | -### vroot +### duplicate_as -| key | remaps | action | -| ------ | ------ | ------------ | -| . | | vroot $PWD | -| / | | vroot / | -| ctrl-r | | reset vroot | -| ctrl-u | | unset vroot | -| v | | toggle vroot | -| ~ | | vroot $HOME | +| key | remaps | action | +| ----- | ------ | ---------------- | +| enter | | submit | +| f1 | | global help menu | +| tab | | try complete | -### relative_path_does_match_regex +### filter -| key | remaps | action | -| ----- | ------ | ------ | -| enter | | submit | +| key | remaps | action | +| --------- | ------ | ---------------------------------- | +| R | | relative path does not match regex | +| backspace | | remove last filter | +| ctrl-r | | reset filters | +| ctrl-u | | clear filters | +| f1 | | global help menu | +| r | | relative path does match regex | -### go_to_path +### action + +| key | remaps | action | +| ----- | ------ | -------------------- | +| ! | | shell | +| c | | create | +| e | | open in editor | +| f1 | | global help menu | +| l | | logs | +| m | | toggle mouse | +| p | | edit permissions | +| q | | quit options | +| s | | selection operations | +| v | | vroot | +| [0-9] | | go to index | -| key | remaps | action | -| ----- | ------ | ------------ | -| enter | | submit | -| tab | | try complete | +### create -### duplicate_as +| key | remaps | action | +| --- | ------ | ---------------- | +| d | | create directory | +| f | | create file | +| f1 | | global help menu | + +### switch_layout + +| key | remaps | action | +| --- | ------ | -------------------- | +| 1 | | default | +| 2 | | no help menu | +| 3 | | no selection panel | +| 4 | | no help or selection | +| f1 | | global help menu | + +### selection_ops + +| key | remaps | action | +| --- | ------ | ---------------- | +| c | | copy here | +| e | | edit selection | +| f1 | | global help menu | +| h | | hardlink here | +| l | | list selection | +| m | | move here | +| s | | softlink here | +| u | | clear selection | + +### delete + +| key | remaps | action | +| --- | ------ | ---------------- | +| D | | force delete | +| d | | delete | +| f1 | | global help menu | + +### number + +| key | remaps | action | +| ----- | ------ | ---------------- | +| down | j | to down | +| enter | | to index | +| f1 | | global help menu | +| k | up | to up | +| [0-9] | | input | + +### create_directory + +| key | remaps | action | +| ----- | ------ | ---------------- | +| enter | | submit | +| f1 | | global help menu | +| tab | | try complete | -| key | remaps | action | -| ----- | ------ | ------------ | -| enter | | submit | -| tab | | try complete | +### recover + +| key | remaps | action | +| --- | ------ | ---------------- | +| f1 | | global help menu | + +### rename + +| key | remaps | action | +| ----- | ------ | ---------------- | +| enter | | submit | +| f1 | | global help menu | +| tab | | try complete | + +### vroot + +| key | remaps | action | +| ------ | ------ | ---------------- | +| . | | vroot $PWD | +| / | | vroot / | +| ctrl-r | | reset vroot | +| ctrl-u | | unset vroot | +| f1 | | global help menu | +| v | | toggle vroot | +| ~ | | vroot $HOME | + +### relative_path_does_match_regex + +| key | remaps | action | +| ----- | ------ | ---------------- | +| enter | | submit | +| f1 | | global help menu | + +### relative_path_does_not_match_regex + +| key | remaps | action | +| ----- | ------ | ---------------- | +| enter | | submit | +| f1 | | global help menu | ### debug_error | key | remaps | action | | ----- | ------ | ------------------- | | enter | | open logs in editor | +| f1 | | global help menu | | q | | quit | -### selection_ops +### edit_permissions -| key | remaps | action | -| --- | ------ | --------------- | -| c | | copy here | -| e | | edit selection | -| h | | hardlink here | -| l | | list selection | -| m | | move here | -| s | | softlink here | -| u | | clear selection | +| key | remaps | action | +| ------ | ------ | ---------------- | +| G | | -group | +| M | | min | +| O | | -other | +| U | | -user | +| ctrl-r | | reset | +| enter | | submit | +| f1 | | global help menu | +| g | | +group | +| m | | max | +| o | | +other | +| u | | +user | ### sort @@ -117,6 +225,7 @@ of [modes][4] and the key mappings for each mode. | ctrl-u | | clear sorters | | e | | by canonical extension | | enter | | submit | +| f1 | | global help menu | | l | | by last modified | | m | | by canonical mime essence | | n | | by node type | @@ -125,58 +234,25 @@ of [modes][4] and the key mappings for each mode. ### go_to -| key | remaps | action | -| --- | ------ | -------------- | -| f | | follow symlink | -| g | | top | -| i | | initial $PWD | -| p | | path | -| x | | open in gui | - -### edit_permissions - -| key | remaps | action | -| ------ | ------ | ------ | -| G | | -group | -| M | | min | -| O | | -other | -| U | | -user | -| ctrl-r | | reset | -| enter | | submit | -| g | | +group | -| m | | max | -| o | | +other | -| u | | +user | - -### switch_layout - -| key | remaps | action | -| --- | ------ | -------------------- | -| 1 | | default | -| 2 | | no help menu | -| 3 | | no selection panel | -| 4 | | no help or selection | - -### create - | key | remaps | action | | --- | ------ | ---------------- | -| d | | create directory | -| f | | create file | - -### create_directory - -| key | remaps | action | -| ----- | ------ | ------------ | -| enter | | submit | -| tab | | try complete | +| f | | follow symlink | +| f1 | | global help menu | +| g | | top | +| i | | initial $PWD | +| p | | path | +| x | | open in gui | -### create_file +### quit -| key | remaps | action | -| ----- | ------ | ------------ | -| enter | | submit | -| tab | | try complete | +| key | remaps | action | +| ----- | ------ | ----------------------- | +| enter | | just quit | +| f | | quit printing focus | +| f1 | | global help menu | +| p | | quit printing pwd | +| r | | quit printing result | +| s | | quit printing selection | ### search @@ -191,75 +267,23 @@ of [modes][4] and the key mappings for each mode. | ctrl-z | | toggle ordering | | enter | | submit | | esc | | cancel | +| f1 | | global help menu | | left | | back | | right | | enter | | tab | | toggle selection | -### number - -| key | remaps | action | -| ----- | ------ | -------- | -| down | j | to down | -| enter | | to index | -| k | up | to up | -| [0-9] | | input | - -### action - -| key | remaps | action | -| ----- | ------ | -------------------- | -| ! | | shell | -| c | | create | -| e | | open in editor | -| l | | logs | -| m | | toggle mouse | -| p | | edit permissions | -| q | | quit options | -| s | | selection operations | -| v | | vroot | -| [0-9] | | go to index | - -### filter - -| key | remaps | action | -| --------- | ------ | ---------------------------------- | -| R | | relative path does not match regex | -| backspace | | remove last filter | -| ctrl-r | | reset filters | -| ctrl-u | | clear filters | -| r | | relative path does match regex | - -### rename - -| key | remaps | action | -| ----- | ------ | ------------ | -| enter | | submit | -| tab | | try complete | - -### relative_path_does_not_match_regex - -| key | remaps | action | -| ----- | ------ | ------ | -| enter | | submit | - -### quit - -| key | remaps | action | -| ----- | ------ | ----------------------- | -| enter | | just quit | -| f | | quit printing focus | -| p | | quit printing pwd | -| r | | quit printing result | -| s | | quit printing selection | - -### recover +### go_to_path -| key | remaps | action | -| --- | ------ | ------ | +| key | remaps | action | +| ----- | ------ | ---------------- | +| enter | | submit | +| f1 | | global help menu | +| tab | | try complete | -### delete +### create_file -| key | remaps | action | -| --- | ------ | ------------ | -| D | | force delete | -| d | | delete | +| key | remaps | action | +| ----- | ------ | ---------------- | +| enter | | submit | +| f1 | | global help menu | +| tab | | try complete | diff --git a/docs/en/src/messages.md b/docs/en/src/messages.md index 2bb22452..be35b2da 100644 --- a/docs/en/src/messages.md +++ b/docs/en/src/messages.md @@ -320,6 +320,24 @@ Example: - Lua: `"NextVisitedPath"` - YAML: `NextVisitedPath` +#### PreviousVisitedDeepBranch + +Go to the previous deep level branch. + +Example: + +- Lua: `"PreviousVisitedDeepBranch"` +- YAML: `PreviousVisitedDeepBranch` + +#### NextVisitedDeepBranch + +Go to the next deep level branch. + +Example: + +- Lua: `"NextVisitedDeepBranch"` +- YAML: `NextVisitedDeepBranch` + #### FollowSymlink Follow the symlink under focus to its actual location. diff --git a/flake.lock b/flake.lock index a06872f4..77487b23 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1689422397, - "narHash": "sha256-fnopownlSBGTBYxGdTdUPM215yG/UEEj3wgheBLIbHs=", + "lastModified": 1704262187, + "narHash": "sha256-N4j9qghlp/Eb3Z11WF7Cb9U91AXwpascUbLH7YKMcLc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "45ae0efbbce2aada6d5e8de6ace0c803b08ac9c7", + "rev": "65f0d241783c94a08e4c9a3870736fc8854dd520", "type": "github" }, "original": { diff --git a/src/app.rs b/src/app.rs index 55e77a72..e27a9471 100644 --- a/src/app.rs +++ b/src/app.rs @@ -135,6 +135,10 @@ impl History { self } + fn peek(&self) -> Option<&String> { + self.paths.get(self.loc) + } + fn push(mut self, path: String) -> Self { if self.peek() != Some(&path) { self.paths = self.paths.into_iter().take(self.loc + 1).collect(); @@ -167,8 +171,47 @@ impl History { self.cleanup() } - fn peek(&self) -> Option<&String> { - self.paths.get(self.loc) + fn _is_deepest_dir(&self, path: &str) -> bool { + return !self + .paths + .iter() + .any(|p| p.ends_with('/') && p.starts_with(path) && path != p); + } + + fn _uniq_deep_dirs(&self) -> IndexSet { + self.paths + .clone() + .into_iter() + .filter(|p| p.ends_with('/') && self._is_deepest_dir(p)) + .collect::>() + } + + fn visit_next_deep_branch(self, pwd: &str) -> Self { + let uniq_deep_dirs = self._uniq_deep_dirs(); + + if let Some(path) = uniq_deep_dirs + .iter() + .skip_while(|p| p.trim_end_matches('/') != pwd) + .nth(1) + { + self.push(path.to_string()) + } else { + self + } + } + + fn visit_previous_deep_branch(self, pwd: &str) -> Self { + let uniq_deep_dirs = self._uniq_deep_dirs(); + if let Some(path) = uniq_deep_dirs + .iter() + .rev() + .skip_while(|p| p.trim_end_matches('/') != pwd) + .nth(1) + { + self.push(path.to_string()) + } else { + self + } } } @@ -271,9 +314,7 @@ impl App { } }; - let config_files = config_file - .into_iter() - .chain(extra_config_files.into_iter()); + let config_files = config_file.into_iter().chain(extra_config_files); let mut load_errs = vec![]; for config_file in config_files { @@ -505,6 +546,8 @@ impl App { Back => self.back(), LastVisitedPath => self.last_visited_path(), NextVisitedPath => self.next_visited_path(), + PreviousVisitedDeepBranch => self.previous_visited_deep_branch(), + NextVisitedDeepBranch => self.next_visited_deep_branch(), FollowSymlink => self.follow_symlink(), SetVroot(p) => self.set_vroot(&p), UnsetVroot => self.unset_vroot(), @@ -1082,6 +1125,24 @@ impl App { } } + fn previous_visited_deep_branch(mut self) -> Result { + self.history = self.history.visit_previous_deep_branch(&self.pwd); + if let Some(path) = self.history.peek().cloned() { + self.change_directory(path.trim_end_matches('/'), false) + } else { + Ok(self) + } + } + + fn next_visited_deep_branch(mut self) -> Result { + self.history = self.history.visit_next_deep_branch(&self.pwd); + if let Some(path) = self.history.peek().cloned() { + self.change_directory(path.trim_end_matches('/'), false) + } else { + Ok(self) + } + } + fn set_input_prompt(mut self, p: String) -> Result { self.input.prompt = p; Ok(self) @@ -2039,7 +2100,7 @@ impl App { let read_only = self.config.general.read_only; let global_kb = &self.config.general.global_key_bindings; - let modes = builtin.into_iter().chain(custom.into_iter()); + let modes = builtin.into_iter().chain(custom); std::iter::once((self.mode.name.clone(), self.mode.clone())) .chain(modes) diff --git a/src/cli.rs b/src/cli.rs index 21bb91c9..d80eb585 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -185,7 +185,7 @@ pub fn pipe_msg_in(args: Vec) -> Result<()> { .cloned() .context("failed to detect delimmiter")?; - msg.push(delimiter.try_into()?); + msg.push(delimiter.into()); File::options() .append(true) .open(&path)? diff --git a/src/compat.rs b/src/compat.rs index 7a05e3a3..bafd50cb 100644 --- a/src/compat.rs +++ b/src/compat.rs @@ -9,7 +9,6 @@ use crate::ui::Constraint; use crate::ui::ContentRendererArg; use mlua::Lua; use serde::{Deserialize, Serialize}; -use tui::backend::Backend; use tui::layout::Constraint as TuiConstraint; use tui::layout::Rect as TuiRect; use tui::widgets::Cell; @@ -60,8 +59,8 @@ pub struct CustomContent { } /// A cursed function from crate::ui. -pub fn draw_custom_content( - f: &mut Frame, +pub fn draw_custom_content( + f: &mut Frame, screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -165,8 +164,7 @@ pub fn draw_custom_content( .map(|w| w.to_tui(screen_size, layout_size)) .collect::>(); - let content = Table::new(rows) - .widths(&widths) + let content = Table::new(rows, widths) .column_spacing(col_spacing.unwrap_or(1)) .block(block( config, @@ -209,7 +207,7 @@ pub fn draw_custom_content( .map(|w| w.to_tui(screen_size, layout_size)) .collect::>(); - let mut content = Table::new(rows).widths(&widths).block(block( + let mut content = Table::new(rows, &widths).block(block( config, title.map(|t| format!(" {t} ")).unwrap_or_default(), )); diff --git a/src/dirs.rs b/src/dirs.rs index 3f4425d7..4bbad82f 100644 --- a/src/dirs.rs +++ b/src/dirs.rs @@ -18,7 +18,8 @@ pub fn config_dir() -> Option { pub fn runtime_dir() -> PathBuf { let Some(dir) = BASE_DIRS .as_ref() - .and_then(|base| base.get_runtime_directory().ok()) else { + .and_then(|base| base.get_runtime_directory().ok()) + else { return env::temp_dir(); }; dir.to_owned() diff --git a/src/init.lua b/src/init.lua index 28f0a710..89d29aa7 100644 --- a/src/init.lua +++ b/src/init.lua @@ -157,11 +157,11 @@ xplr.config.general.logs.error.style = { fg = "Red" } -- * format: nullable string -- * style: [Style](https://xplr.dev/en/style) xplr.config.general.table.header.cols = { - { format = " index", style = {} }, + { format = " index", style = {} }, { format = "╭─── path", style = {} }, - { format = "perm", style = {} }, - { format = "size", style = {} }, - { format = "modified", style = {} }, + { format = "perm", style = {} }, + { format = "size", style = {} }, + { format = "modified", style = {} }, } -- Style of the table header. @@ -1123,6 +1123,18 @@ xplr.config.modes.builtin.default = { "LastVisitedPath", }, }, + [")"] = { + help = "next deep branch", + messages = { + "NextVisitedDeepBranch", + }, + }, + ["("] = { + help = "prev deep branch", + messages = { + "PreviousVisitedDeepBranch", + }, + }, ["ctrl-r"] = { help = "refresh screen", messages = { diff --git a/src/lua/mod.rs b/src/lua/mod.rs index 0a67a80d..95c4ea10 100644 --- a/src/lua/mod.rs +++ b/src/lua/mod.rs @@ -7,7 +7,7 @@ use anyhow::Result; use mlua::Lua; use mlua::LuaSerdeExt; use mlua::SerializeOptions; -use serde::Deserialize; +use serde::de::DeserializeOwned; use serde::Serialize; use std::fs; @@ -81,7 +81,7 @@ pub fn init(lua: &Lua) -> Result<(Config, Option)> { let hooks: Option = lua .load(DEFAULT_LUA_SCRIPT) - .set_name("xplr init")? + .set_name("xplr init") .call(()) .and_then(|v| lua.from_value(v))?; @@ -98,7 +98,7 @@ pub fn extend(lua: &Lua, path: &str) -> Result<(Config, Option)> { let hooks: Option = lua .load(&script) - .set_name(path)? + .set_name(path) .call(()) .and_then(|v| lua.from_value(v))?; @@ -138,7 +138,7 @@ pub fn resolve_fn<'lua>( resolve_fn_recursive(globals, path.split('.')) } -pub fn call<'lua, R: Deserialize<'lua>>( +pub fn call<'lua, R: DeserializeOwned>( lua: &'lua Lua, func: &str, arg: mlua::Value<'lua>, diff --git a/src/msg/in_/external.rs b/src/msg/in_/external.rs index 22d4d359..94833970 100644 --- a/src/msg/in_/external.rs +++ b/src/msg/in_/external.rs @@ -277,6 +277,22 @@ pub enum ExternalMsg { /// - YAML: `NextVisitedPath` NextVisitedPath, + /// Go to the previous deep level branch. + /// + /// Example: + /// + /// - Lua: `"PreviousVisitedDeepBranch"` + /// - YAML: `PreviousVisitedDeepBranch` + PreviousVisitedDeepBranch, + + /// Go to the next deep level branch. + /// + /// Example: + /// + /// - Lua: `"NextVisitedDeepBranch"` + /// - YAML: `NextVisitedDeepBranch` + NextVisitedDeepBranch, + /// Follow the symlink under focus to its actual location. /// /// Example: diff --git a/src/path.rs b/src/path.rs index 73e2c52f..ad7c0557 100644 --- a/src/path.rs +++ b/src/path.rs @@ -39,8 +39,8 @@ where } (None, _) => comps.push(Component::ParentDir), (Some(a), Some(b)) if comps.is_empty() && a == b => (), - (Some(a), Some(b)) if b == Component::CurDir => comps.push(a), - (Some(_), Some(b)) if b == Component::ParentDir => { + (Some(a), Some(Component::CurDir)) => comps.push(a), + (Some(_), Some(Component::ParentDir)) => { let path = path.to_string_lossy(); let base = base.to_string_lossy(); bail!("{base} is not a parent of {path}") @@ -242,7 +242,7 @@ mod tests { .unwrap(); assert_eq!( relative, - PathBuf::from("../..").join(parent.clone().file_name().unwrap()) + PathBuf::from("../..").join(parent.file_name().unwrap()) ); } diff --git a/src/ui.rs b/src/ui.rs index 500f0fc4..ba7ecb3c 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -16,7 +16,6 @@ use std::collections::HashMap; use std::env; use std::ops::BitXor; use time::macros::format_description; -use tui::backend::Backend; use tui::layout::Rect as TuiRect; use tui::layout::{Constraint as TuiConstraint, Direction, Layout as TuiLayout}; use tui::style::{Color, Modifier as TuiModifier, Style as TuiStyle}; @@ -666,8 +665,8 @@ pub fn block<'a>(config: PanelUiConfig, default_title: String) -> Block<'a> { .border_style(config.border_style.into()) } -fn draw_table( - f: &mut Frame, +fn draw_table( + f: &mut Frame, screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -822,8 +821,7 @@ fn draw_table( format!("({node_count}) ") }; - let table = Table::new(rows) - .widths(&table_constraints) + let table = Table::new(rows, table_constraints) .style(app_config.general.table.style.to_owned().into()) .highlight_style(app_config.general.focus_ui.style.to_owned().into()) .column_spacing(app_config.general.table.col_spacing.unwrap_or_default()) @@ -855,8 +853,8 @@ fn draw_table( f.render_widget(table, layout_size); } -fn draw_selection( - f: &mut Frame, +fn draw_selection( + f: &mut Frame, _screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -911,8 +909,8 @@ fn draw_selection( f.render_widget(selection_list, layout_size); } -fn draw_help_menu( - f: &mut Frame, +fn draw_help_menu( + f: &mut Frame, _screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -941,25 +939,24 @@ fn draw_help_menu( }) .collect::>(); - let help_menu = Table::new(help_menu_rows) - .block(block( - config, - format!(" Help [{}{}] ", &app.mode.name, read_only_indicator(app)), - )) - .widths(if app.config.general.hide_remaps_in_help_menu { - &[TuiConstraint::Percentage(20), TuiConstraint::Percentage(80)] - } else { - &[ - TuiConstraint::Percentage(20), - TuiConstraint::Percentage(20), - TuiConstraint::Percentage(60), - ] - }); + let widths = if app.config.general.hide_remaps_in_help_menu { + vec![TuiConstraint::Percentage(20), TuiConstraint::Percentage(80)] + } else { + vec![ + TuiConstraint::Percentage(20), + TuiConstraint::Percentage(20), + TuiConstraint::Percentage(60), + ] + }; + let help_menu = Table::new(help_menu_rows, widths).block(block( + config, + format!(" Help [{}{}] ", &app.mode.name, read_only_indicator(app)), + )); f.render_widget(help_menu, layout_size); } -fn draw_input_buffer( - f: &mut Frame, +fn draw_input_buffer( + f: &mut Frame, _screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -1020,8 +1017,8 @@ fn draw_input_buffer( }; } -fn draw_sort_n_filter( - f: &mut Frame, +fn draw_sort_n_filter( + f: &mut Frame, _screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -1142,8 +1139,8 @@ fn draw_sort_n_filter( f.render_widget(p, layout_size); } -fn draw_logs( - f: &mut Frame, +fn draw_logs( + f: &mut Frame, _screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -1218,8 +1215,8 @@ fn draw_logs( f.render_widget(logs_list, layout_size); } -pub fn draw_nothing( - f: &mut Frame, +pub fn draw_nothing( + f: &mut Frame, _screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -1231,8 +1228,8 @@ pub fn draw_nothing( f.render_widget(nothing, layout_size); } -pub fn draw_dynamic( - f: &mut Frame, +pub fn draw_dynamic( + f: &mut Frame, screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -1255,8 +1252,8 @@ pub fn draw_dynamic( draw_static(f, screen_size, layout_size, app, panel, lua); } -pub fn draw_static( - f: &mut Frame, +pub fn draw_static( + f: &mut Frame, screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -1309,8 +1306,7 @@ pub fn draw_static( .map(|w| w.to_tui(screen_size, layout_size)) .collect::>(); - let content = Table::new(rows) - .widths(&widths) + let content = Table::new(rows, widths) .column_spacing(col_spacing.unwrap_or(1)) .block(block(config, "".into())); @@ -1349,9 +1345,9 @@ pub struct ContentRendererArg { pub layout_size: Rect, } -pub fn draw_layout( +pub fn draw_layout( layout: Layout, - f: &mut Frame, + f: &mut Frame, screen_size: TuiRect, layout_size: TuiRect, app: &app::App, @@ -1445,7 +1441,7 @@ pub fn draw_layout( } } -pub fn draw(f: &mut Frame, app: &app::App, lua: &Lua) { +pub fn draw(f: &mut Frame, app: &app::App, lua: &Lua) { let screen_size = f.size(); let layout = app.mode.layout.as_ref().unwrap_or(&app.layout).to_owned();