diff --git a/Cargo.lock b/Cargo.lock index 5cf23218..fdde62e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -183,9 +183,9 @@ checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] name = "castaway" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" dependencies = [ "rustversion", ] @@ -222,7 +222,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -262,10 +262,10 @@ version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", ] [[package]] @@ -291,13 +291,14 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "compact_str" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ "castaway", "cfg-if", "itoa", + "rustversion", "ryu", "static_assertions", ] @@ -330,8 +331,24 @@ dependencies = [ "crossterm_winapi", "futures-core", "libc", - "mio", + "mio 0.8.11", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +dependencies = [ + "bitflags 2.4.0", + "crossterm_winapi", + "mio 1.0.4", "parking_lot", + "rustix", "signal-hook", "signal-hook-mio", "winapi", @@ -352,8 +369,18 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] @@ -370,17 +397,42 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.101", +] + [[package]] name = "darling_macro" version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "darling_core", + "darling_core 0.14.4", "quote", "syn 1.0.109", ] +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.101", +] + [[package]] name = "derivative" version = "2.2.0" @@ -407,7 +459,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" dependencies = [ - "darling", + "darling 0.14.4", "proc-macro2", "quote", "syn 1.0.109", @@ -476,23 +528,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[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 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -574,7 +615,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", ] [[package]] @@ -634,12 +675,6 @@ dependencies = [ "allocator-api2", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -706,6 +741,25 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "indoc" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" + +[[package]] +name = "instability" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d" +dependencies = [ + "darling 0.20.11", + "indoc", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.0" @@ -753,15 +807,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.154" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "lock_api" @@ -858,6 +912,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.59.0", +] + [[package]] name = "nibble_vec" version = "0.1.0" @@ -993,18 +1059,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.82" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -1051,22 +1117,23 @@ dependencies = [ [[package]] name = "ratatui" -version = "0.26.3" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" +checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ "bitflags 2.4.0", "cassowary", "compact_str", - "crossterm", - "itertools 0.12.1", + "crossterm 0.28.1", + "indoc", + "instability", + "itertools 0.13.0", "lru", "paste", - "stability", "strum", "unicode-segmentation", "unicode-truncate", - "unicode-width", + "unicode-width 0.2.0", ] [[package]] @@ -1135,15 +1202,15 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.8" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1170,7 +1237,7 @@ dependencies = [ "radix_trie", "rustyline-derive", "unicode-segmentation", - "unicode-width", + "unicode-width 0.1.13", "utf8parse", "windows-sys 0.52.0", ] @@ -1183,7 +1250,7 @@ checksum = "e5af959c8bf6af1aff6d2b463a57f71aae53d1332da58419e30ad8dc7011d951" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", ] [[package]] @@ -1225,7 +1292,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", ] [[package]] @@ -1279,12 +1346,13 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.11", + "mio 1.0.4", "signal-hook", ] @@ -1322,16 +1390,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "stability" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a" -dependencies = [ - "quote", - "syn 2.0.32", -] - [[package]] name = "static_assertions" version = "1.1.0" @@ -1352,24 +1410,24 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.32", + "syn 2.0.101", ] [[package]] @@ -1385,9 +1443,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.32" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -1419,7 +1477,7 @@ dependencies = [ "chrono", "clap", "clap_complete", - "crossterm", + "crossterm 0.27.0", "dirs", "futures", "itertools 0.13.0", @@ -1440,7 +1498,7 @@ dependencies = [ "tokio-stream", "unicode-segmentation", "unicode-truncate", - "unicode-width", + "unicode-width 0.1.13", "uuid", "versions", ] @@ -1462,7 +1520,7 @@ checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", ] [[package]] @@ -1485,7 +1543,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio", + "mio 0.8.11", "num_cpus", "parking_lot", "pin-project-lite", @@ -1503,7 +1561,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", ] [[package]] @@ -1545,7 +1603,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5fbabedabe362c618c714dbefda9927b5afc8e2a8102f47f081089a9019226" dependencies = [ "itertools 0.12.1", - "unicode-width", + "unicode-width 0.1.13", ] [[package]] @@ -1554,6 +1612,12 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "unsafe-any-ors" version = "1.0.0" @@ -1628,7 +1692,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", "wasm-bindgen-shared", ] @@ -1650,7 +1714,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1716,7 +1780,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -1751,18 +1824,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -1779,9 +1852,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -1797,9 +1870,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -1815,15 +1888,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -1839,9 +1912,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -1857,9 +1930,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -1875,9 +1948,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -1893,9 +1966,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "zerocopy" @@ -1914,5 +1987,5 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.32", + "syn 2.0.101", ] diff --git a/Cargo.toml b/Cargo.toml index d12d81e4..89ef6bb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ shlex = "1.3.0" task-hookrs = "0.9.0" tokio = { version = "1.38.0", features = ["full"] } tokio-stream = "0.1.15" -ratatui = "0.26" +ratatui = "0.29.0" unicode-segmentation = "1.11.0" unicode-truncate = "1.0.0" unicode-width = "0.1.13" diff --git a/completions/_taskwarrior-tui b/completions/_taskwarrior-tui index b8bd2fa5..dae058ee 100644 --- a/completions/_taskwarrior-tui +++ b/completions/_taskwarrior-tui @@ -14,7 +14,7 @@ _taskwarrior-tui() { fi local context curcontext="$curcontext" state line - _arguments "${_arguments_options[@]}" \ + _arguments "${_arguments_options[@]}" : \ '-d+[Sets the data folder for taskwarrior-tui]:FOLDER: ' \ '--data=[Sets the data folder for taskwarrior-tui]:FOLDER: ' \ '-c+[Sets the config folder for taskwarrior-tui (currently not used)]:FOLDER: ' \ diff --git a/src/app.rs b/src/app.rs index 948a2d94..d7b22b92 100644 --- a/src/app.rs +++ b/src/app.rs @@ -22,14 +22,7 @@ use futures::SinkExt; use lazy_static::lazy_static; use log::{debug, error, info, log_enabled, trace, warn, Level, LevelFilter}; use ratatui::{ - backend::{Backend, CrosstermBackend}, - layout::{Alignment, Constraint, Direction, Layout, Margin, Rect}, - style::{Color, Modifier, Style}, - symbols::bar::FULL, - terminal::Frame, - text::{Line, Span, Text}, - widgets::{Block, BorderType, Borders, Clear, Gauge, LineGauge, List, ListItem, Paragraph, Tabs, Wrap}, - Terminal, + backend::{Backend, CrosstermBackend}, layout::{Alignment, Constraint, Direction, Layout, Margin, Position, Rect}, style::{Color, Modifier, Style}, symbols::bar::FULL, text::{Line, Span, Text}, widgets::{Block, BorderType, Borders, Clear, Gauge, LineGauge, List, ListItem, Paragraph, Tabs, Wrap}, Frame, Terminal }; use regex::Regex; use rustyline::{history::SearchDirection as HistoryDirection, line_buffer::LineBuffer, At, Editor, Word}; @@ -377,7 +370,7 @@ impl TaskwarriorTui { pub async fn run(&mut self, terminal: &mut Terminal) -> Result<()> { loop { if self.requires_redraw { - terminal.resize(terminal.size()?)?; + terminal.autoresize()?; self.requires_redraw = false; } terminal.draw(|f| self.draw(f))?; @@ -435,14 +428,14 @@ impl TaskwarriorTui { } pub fn draw(&mut self, f: &mut Frame) { - let rect = f.size(); + let rect = f.area(); self.terminal_width = rect.width; self.terminal_height = rect.height; let chunks = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Length(1), Constraint::Min(0)]) - .split(f.size()); + .split(f.area()); let tab_layout = chunks[0]; let main_layout = chunks[1]; @@ -488,7 +481,7 @@ impl TaskwarriorTui { } pub fn draw_debug(&mut self, f: &mut Frame) { - let area = centered_rect(50, 50, f.size()); + let area = centered_rect(50, 50, f.area()); f.render_widget(Clear, area); let t = format!("{}", self.current_selection); let p = Paragraph::new(Text::from(t)).block(Block::default().borders(Borders::ALL).border_type(BorderType::Rounded)); @@ -587,7 +580,7 @@ impl TaskwarriorTui { ); let text = self.error.clone().unwrap_or_else(|| "Unknown error.".to_string()); let title = vec![Span::styled("Error", Style::default().add_modifier(Modifier::BOLD))]; - let rect = centered_rect(90, 60, f.size()); + let rect = centered_rect(90, 60, f.area()); f.render_widget(Clear, rect); let p = Paragraph::new(Text::from(text)) .block(Block::default().borders(Borders::ALL).border_type(BorderType::Rounded).title(title)) @@ -597,7 +590,7 @@ impl TaskwarriorTui { let rects = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Min(0)].as_ref()) - .split(f.size()); + .split(f.area()); } Action::Report => { // reset error when entering Action::Report @@ -886,7 +879,7 @@ impl TaskwarriorTui { } fn draw_help_popup(&mut self, f: &mut Frame, percent_x: u16, percent_y: u16) { - let area = centered_rect(percent_x, percent_y, f.size()); + let area = centered_rect(percent_x, percent_y, f.area()); f.render_widget(Clear, area); let chunks = Layout::default() @@ -903,7 +896,7 @@ impl TaskwarriorTui { let gauge = LineGauge::default() .block(Block::default()) - .gauge_style(Style::default().fg(Color::Gray)) + .filled_style(Style::default().fg(Color::Gray)) .ratio(ratio); f.render_widget(gauge, chunks[1]); @@ -914,11 +907,11 @@ impl TaskwarriorTui { let rects = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Min(0)].as_ref()) - .split(f.size()); + .split(f.area()); - let area = centered_rect(percent_x, percent_y, f.size()); + let area = centered_rect(percent_x, percent_y, f.area()); - f.render_widget(Clear, area.inner(&Margin { vertical: 0, horizontal: 0 })); + f.render_widget(Clear, area.inner(Margin { vertical: 0, horizontal: 0 })); let (contexts, headers) = self.get_all_contexts(); @@ -995,7 +988,7 @@ impl TaskwarriorTui { .highlight_style(self.config.uda_style_report_completion_pane_highlight) .highlight_symbol(&self.config.uda_selection_indicator); - let area = f.size(); + let area = f.area(); let mut rect = rect; rect.height = std::cmp::min(area.height / 2, self.completion_list.len() as u16 + 2); @@ -1018,7 +1011,8 @@ impl TaskwarriorTui { fn draw_command(&self, f: &mut Frame, rect: Rect, text: &str, title: (Span, Option), position: usize, cursor: bool, error: Option) { // f.render_widget(Clear, rect); if cursor { - f.set_cursor(std::cmp::min(rect.x + position as u16, rect.x + rect.width.saturating_sub(2)), rect.y + 1); + let position = Position::new(std::cmp::min(rect.x + position as u16, rect.x + rect.width.saturating_sub(2)), rect.y + 1); + f.set_cursor_position(position); } let rects = Layout::default() .direction(Direction::Vertical) @@ -3823,7 +3817,7 @@ mod tests { path::{Path, PathBuf}, }; - use ratatui::{backend::TestBackend, buffer::Buffer}; + use ratatui::{backend::TestBackend, buffer::Buffer, prelude::Position}; use super::*; @@ -4311,17 +4305,16 @@ mod tests { for i in 0..=49 { // First line - expected.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::REVERSED)); + expected[(i, 0)].set_style(Style::default().add_modifier(Modifier::REVERSED)); } for i in 1..=5 { // Tasks - expected - .get_mut(i, 0) + expected[(i, 0)] .set_style(Style::default().add_modifier(Modifier::BOLD).add_modifier(Modifier::REVERSED)); } for i in 0..=49 { // Command line - expected.get_mut(i, 13).set_style(Style::default().add_modifier(Modifier::REVERSED)); + expected[(i, 13)].set_style(Style::default().add_modifier(Modifier::REVERSED)); } let mut app = TaskwarriorTui::new("next", false).await.unwrap(); @@ -4348,7 +4341,7 @@ mod tests { }) .unwrap(); - assert_eq!(terminal.backend().size().unwrap(), expected.area); + assert_eq!(terminal.backend().size().unwrap(), expected.area.into()); terminal.backend().assert_buffer(&expected); } @@ -4367,13 +4360,13 @@ mod tests { for i in 0..=13 { // Task - expected1.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::BOLD)); - expected2.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::BOLD)); + expected1[(i, 0)].set_style(Style::default().add_modifier(Modifier::BOLD)); + expected2[(i, 0)].set_style(Style::default().add_modifier(Modifier::BOLD)); } for i in 0..=24 { // Command line - expected1.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::REVERSED)); - expected2.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::REVERSED)); + expected1[(i, 0)].set_style(Style::default().add_modifier(Modifier::REVERSED)); + expected2[(i, 0)].set_style(Style::default().add_modifier(Modifier::REVERSED)); } let mut app = TaskwarriorTui::new("next", false).await.unwrap(); @@ -4408,13 +4401,14 @@ mod tests { let rects = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Min(0), Constraint::Length(3)].as_ref()) - .split(f.size()); + .split(f.area()); - let position = TaskwarriorTui::get_position(&app.modify); - f.set_cursor( - std::cmp::min(rects[1].x + position as u16, rects[1].x + rects[1].width.saturating_sub(2)), + let taskwarror_position = TaskwarriorTui::get_position(&app.modify); + let position = Position::new( + std::cmp::min(rects[1].x + taskwarror_position as u16, rects[1].x + rects[1].width.saturating_sub(2)), rects[1].y + 1, - ); + ); + f.set_cursor_position(position); f.render_widget(Clear, rects[1]); let selected = app.current_selection; let task_ids = if app.tasks.is_empty() { @@ -4445,14 +4439,14 @@ mod tests { rects[1], app.modify.as_str(), (Span::styled(label, Style::default().add_modifier(Modifier::BOLD)), None), - position, + taskwarror_position, true, app.error.clone(), ); }) .unwrap(); - assert_eq!(terminal.backend().size().unwrap(), expected1.area); + assert_eq!(terminal.backend().size().unwrap(), expected1.area.into()); terminal.backend().assert_buffer(&expected1); app.modify.move_home(); @@ -4462,13 +4456,11 @@ mod tests { let rects = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Min(0), Constraint::Length(3)].as_ref()) - .split(f.size()); + .split(f.area()); - let position = TaskwarriorTui::get_position(&app.modify); - f.set_cursor( - std::cmp::min(rects[1].x + position as u16, rects[1].x + rects[1].width.saturating_sub(2)), - rects[1].y + 1, - ); + let taskwarrior_position = TaskwarriorTui::get_position(&app.modify); + let position = Position::new(std::cmp::min(rects[1].x + taskwarrior_position as u16, rects[1].x + rects[1].width.saturating_sub(2)), rects[1].y + 1); + f.set_cursor_position(position); f.render_widget(Clear, rects[1]); let selected = app.current_selection; let task_ids = if app.tasks.is_empty() { @@ -4499,14 +4491,14 @@ mod tests { rects[1], app.modify.as_str(), (Span::styled(label, Style::default().add_modifier(Modifier::BOLD)), None), - position, + taskwarrior_position, true, app.error.clone(), ); }) .unwrap(); - assert_eq!(terminal.backend().size().unwrap(), expected2.area); + assert_eq!(terminal.backend().size().unwrap(), expected2.area.into()); terminal.backend().assert_buffer(&expected2); } @@ -4531,11 +4523,11 @@ mod tests { for i in 1..=4 { // Task - expected.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::BOLD)); + expected[(i, 0)].set_style(Style::default().add_modifier(Modifier::BOLD)); } for i in 6..=13 { // Calendar - expected.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::DIM)); + expected[(i, 0)].set_style(Style::default().add_modifier(Modifier::DIM)); } for r in &[ @@ -4550,19 +4542,17 @@ mod tests { 44..=48, // Urg ] { for i in r.clone() { - expected.get_mut(i, 1).set_style(Style::default().add_modifier(Modifier::UNDERLINED)); + expected[(i, 1)].set_style(Style::default().add_modifier(Modifier::UNDERLINED)); } } for i in 1..expected.area().width - 1 { - expected - .get_mut(i, 3) + expected[(i, 3)] .set_style(Style::default().fg(Color::Indexed(1)).bg(Color::Reset).add_modifier(Modifier::BOLD)); } for i in 1..expected.area().width - 1 { - expected - .get_mut(i, 4) + expected[(i, 4)] .set_style(Style::default().fg(Color::Indexed(1)).bg(Color::Indexed(4))); } @@ -4648,7 +4638,7 @@ mod tests { .output() .unwrap(); - assert_eq!(terminal.backend().size().unwrap(), expected.area); + assert_eq!(terminal.backend().size().unwrap(), expected.area.into()); terminal.backend().assert_buffer(&expected); } @@ -4673,36 +4663,33 @@ mod tests { for i in 0..=49 { // First line - expected.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::REVERSED)); + expected[(i, 0)].set_style(Style::default().add_modifier(Modifier::REVERSED)); } for i in 20..=27 { // Calendar - expected - .get_mut(i, 0) + expected[(i, 0)] .set_style(Style::default().add_modifier(Modifier::BOLD).add_modifier(Modifier::REVERSED)); } for i in 0..=49 { - expected.get_mut(i, 2).set_style(Style::default().add_modifier(Modifier::UNDERLINED)); + expected[(i, 2)].set_style(Style::default().add_modifier(Modifier::UNDERLINED)); } for i in 3..=22 { - expected.get_mut(i, 4).set_style(Style::default().bg(Color::Reset)); + expected[(i, 4)].set_style(Style::default().bg(Color::Reset)); } for i in 25..=44 { - expected.get_mut(i, 4).set_style(Style::default().bg(Color::Reset)); + expected[(i, 4)].set_style(Style::default().bg(Color::Reset)); } for i in 3..=22 { - expected - .get_mut(i, 5) + expected[(i, 5)] .set_style(Style::default().bg(Color::Reset).add_modifier(Modifier::UNDERLINED)); } for i in 25..=44 { - expected - .get_mut(i, 5) + expected[(i, 5)] .set_style(Style::default().bg(Color::Reset).add_modifier(Modifier::UNDERLINED)); } @@ -4726,7 +4713,7 @@ mod tests { }) .unwrap(); - assert_eq!(terminal.backend().size().unwrap(), expected.area); + assert_eq!(terminal.backend().size().unwrap(), expected.area.into()); terminal.backend().assert_buffer(&expected); } @@ -4748,11 +4735,11 @@ mod tests { for i in 1..=4 { // Calendar - expected.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::BOLD)); + expected[(i, 0)].set_style(Style::default().add_modifier(Modifier::BOLD)); } - expected.get_mut(3, 11).set_style(Style::default().fg(Color::Gray)); - expected.get_mut(4, 11).set_style(Style::default().fg(Color::Gray)); - expected.get_mut(5, 11).set_style(Style::default().fg(Color::Gray)); + expected[(2, 11)].set_style(Style::default().fg(Color::Gray)); + expected[(4, 11)].set_style(Style::default().fg(Color::Gray)); + expected[(5, 11)].set_style(Style::default().fg(Color::Gray)); let mut app = TaskwarriorTui::new("next", false).await.unwrap(); @@ -4769,7 +4756,7 @@ mod tests { }) .unwrap(); - assert_eq!(terminal.backend().size().unwrap(), expected.area); + assert_eq!(terminal.backend().size().unwrap(), expected.area.into()); terminal.backend().assert_buffer(&expected); } @@ -4790,27 +4777,27 @@ mod tests { for i in 1..=7 { // Task - expected.get_mut(i, 0).set_style(Style::default().add_modifier(Modifier::BOLD)); + expected[(i, 0)].set_style(Style::default().add_modifier(Modifier::BOLD)); } for i in 1..=10 { // Task - expected.get_mut(i, 1).set_style(Style::default().add_modifier(Modifier::UNDERLINED)); + expected[(i, 1)].set_style(Style::default().add_modifier(Modifier::UNDERLINED)); } for i in 12..=71 { // Task - expected.get_mut(i, 1).set_style(Style::default().add_modifier(Modifier::UNDERLINED)); + expected[(i, 1)].set_style(Style::default().add_modifier(Modifier::UNDERLINED)); } for i in 73..=78 { // Task - expected.get_mut(i, 1).set_style(Style::default().add_modifier(Modifier::UNDERLINED)); + expected[(i, 1)].set_style(Style::default().add_modifier(Modifier::UNDERLINED)); } for i in 1..=78 { // Task - expected.get_mut(i, 3).set_style(Style::default().add_modifier(Modifier::BOLD)); + expected[(i, 3)].set_style(Style::default().add_modifier(Modifier::BOLD)); } let mut app = TaskwarriorTui::new("next", false).await.unwrap(); @@ -4828,7 +4815,7 @@ mod tests { }) .unwrap(); - assert_eq!(terminal.backend().size().unwrap(), expected.area); + assert_eq!(terminal.backend().size().unwrap(), expected.area.into()); terminal.backend().assert_buffer(&expected); } diff --git a/src/completion.rs b/src/completion.rs index 858c3d84..08cfa50f 100644 --- a/src/completion.rs +++ b/src/completion.rs @@ -2,7 +2,7 @@ use std::{error::Error, io}; use log::{debug, error, info, log_enabled, trace, warn, Level, LevelFilter}; use ratatui::{ - layout::{Constraint, Corner, Direction, Layout}, + layout::{Constraint, Direction, Layout}, style::{Color, Modifier, Style}, text::{Line, Span}, widgets::{Block, Borders, List, ListItem, ListState}, diff --git a/src/ui.rs b/src/ui.rs index 3e7acc3d..e02e9dfa 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -11,7 +11,7 @@ use ratatui::{ use crate::app::TaskwarriorTui; pub fn draw(rect: &mut Frame, app: &TaskwarriorTui) { - let size = rect.size(); + let size = rect.area(); let chunks = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Length(3), Constraint::Min(10), Constraint::Length(3)].as_ref())