diff options
-rw-r--r-- | Cargo.lock | 256 | ||||
-rw-r--r-- | README.md | 32 | ||||
-rw-r--r-- | config/keymap.toml | 3 | ||||
-rw-r--r-- | docs/configuration/keymap.toml.md | 359 | ||||
-rw-r--r-- | src/commands/tab_ops.rs | 71 | ||||
-rw-r--r-- | src/config/option/mod.rs | 2 | ||||
-rw-r--r-- | src/config/option/new_tab_option.rs | 19 | ||||
-rw-r--r-- | src/key_command/command.rs | 6 | ||||
-rw-r--r-- | src/key_command/impl_appcommand.rs | 2 | ||||
-rw-r--r-- | src/key_command/impl_appexecute.rs | 2 | ||||
-rw-r--r-- | src/key_command/impl_comment.rs | 2 | ||||
-rw-r--r-- | src/key_command/impl_from_str.rs | 7 |
12 files changed, 468 insertions, 293 deletions
@@ -71,18 +71,19 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bstr" -version = "0.2.17" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +checksum = "b7f0778972c64420fdedc63f09919c8a88bda7b25135357fd25a5d9f3257e832" dependencies = [ "memchr", + "serde", ] [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "cassowary" @@ -92,9 +93,9 @@ checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] name = "cc" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cfg-if" @@ -134,9 +135,9 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "4.4.2" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ab1b92798304eedc095b53942963240037c0516452cb11aeba709d420b2219" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" dependencies = [ "error-code", "str-buf", @@ -186,9 +187,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.85" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd" +checksum = "90d59d9acd2a682b4e40605a242f6670eaa58c5957471cbf85e8aa6a0b97a5e8" dependencies = [ "cc", "cxxbridge-flags", @@ -198,9 +199,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.85" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0" +checksum = "ebfa40bda659dd5c864e65f4c9a2b0aff19bea56b017b9b77c73d3766a453a38" dependencies = [ "cc", "codespan-reporting", @@ -213,15 +214,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.85" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59" +checksum = "457ce6757c5c70dc6ecdbda6925b958aae7f959bda7d8fb9bde889e34a09dc03" [[package]] name = "cxxbridge-macro" -version = "1.0.85" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6" +checksum = "ebf883b7aacd7b2aeb2a7b338648ee19f57c140d4ee8e52c68979c6b2f7f2263" dependencies = [ "proc-macro2", "quote", @@ -308,25 +309,25 @@ dependencies = [ [[package]] name = "fd-lock" -version = "3.0.8" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb21c69b9fea5e15dbc1049e4b77145dd0ba1c84019c488102de0dc4ea4b0a27" +checksum = "8ef1a30ae415c3a691a4f41afddc2dbcd6d70baf338368d85ebc1e8ed92cedb9" dependencies = [ "cfg-if", "rustix", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] name = "filetime" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9" +checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" dependencies = [ "cfg-if", "libc", "redox_syscall", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -366,9 +367,9 @@ dependencies = [ [[package]] name = "globset" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" +checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" dependencies = [ "aho-corasick", "bstr", @@ -378,6 +379,12 @@ dependencies = [ ] [[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] name = "heck" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -430,6 +437,16 @@ dependencies = [ ] [[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] name = "inotify" version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -451,12 +468,12 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" dependencies = [ "libc", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -498,9 +515,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -627,19 +644,28 @@ dependencies = [ [[package]] name = "nom" -version = "7.1.2" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] [[package]] +name = "nom8" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" +dependencies = [ + "memchr", +] + +[[package]] name = "notify" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2c66da08abae1c024c01d635253e402341b4060a12e99b31c7594063bf490a" +checksum = "58ea850aa68a06e48fdb069c0ec44d0d64c8dbffa49bf3b6f7f0a901fdea1ba9" dependencies = [ "bitflags", "crossbeam-channel", @@ -650,7 +676,7 @@ dependencies = [ "libc", "mio", "walkdir", - "winapi", + "windows-sys 0.42.0", ] [[package]] @@ -789,9 +815,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.49" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" +checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" dependencies = [ "unicode-ident", ] @@ -876,9 +902,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -893,16 +919,16 @@ checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "rustix" -version = "0.36.6" +version = "0.36.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549" +checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -968,6 +994,15 @@ dependencies = [ ] [[package]] +name = "serde_spanned" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +dependencies = [ + "serde", +] + +[[package]] name = "shell-words" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1062,9 +1097,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] @@ -1132,17 +1167,42 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" -version = "0.5.10" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" +checksum = "f7afcae9e3f0fe2c370fd4657108972cbb2fa9db1b9f84849cefd80741b01cb6" dependencies = [ "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6a7712b49e1775fb9a7b998de6635b299237f48b404dde71704f2e0e7f37e5" +dependencies = [ + "indexmap", + "nom8", + "serde", + "serde_spanned", + "toml_datetime", ] [[package]] @@ -1176,9 +1236,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" [[package]] name = "unicode-ident" @@ -1197,9 +1257,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" @@ -1236,9 +1296,9 @@ checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372" [[package]] name = "uuid" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" +checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" dependencies = [ "getrandom", "rand", @@ -1247,9 +1307,9 @@ dependencies = [ [[package]] name = "uuid-macro-internal" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73bc89f2894593e665241e0052c3791999e6787b7c4831daa0a5c2e637e276d8" +checksum = "c1b300a878652a387d2a0de915bdae8f1a548f0c6d45e072fe2688794b656cc9" dependencies = [ "proc-macro2", "quote", @@ -1293,9 +1353,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1303,9 +1363,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", "log", @@ -1318,9 +1378,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1328,9 +1388,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", @@ -1341,15 +1401,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", @@ -1429,19 +1489,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc 0.42.1", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" @@ -1457,9 +1541,9 @@ checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" @@ -1475,9 +1559,9 @@ checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" @@ -1493,9 +1577,9 @@ checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" @@ -1511,15 +1595,15 @@ checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" @@ -1535,9 +1619,9 @@ checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "xdg" @@ -69,6 +69,8 @@ sudo port install joshuto ``` ~ $ joshuto ``` +See [docs#quit](/docs/configuration/keymap.toml.md#quit-quit-joshuto) for exiting into current directory +and other usages ## Configuration @@ -92,19 +94,29 @@ Check out [docs](/docs) for details and [config](/config) for examples ## Contributing See [docs](/docs) -## Features/Bugs +## Bugs/Feature Request Please create an issue :) +## Features +- Tabs +- Devicons +- Fuzzy search via [fzf](https://github.com/junegunn/fzf) +- Ctrl/Shift/Alt support +- Bulk rename +- File previews + - See [Image previews](/docs/image_previews.md) for more details +- Exit to current directory +- Asynch File IO (cut/copy/paste) +- Custom colors/theme +- Line numbers + - Jump to number +- File chooser +- Trash support + ## TODOs -- [x] Migrate to [tui-rs](https://github.com/fdehau/tui-rs) -- [x] Tab support -- [x] Ctrl/Shift/Alt support -- [x] Asynch File IO (cut/copy/paste) -- [ ] Built-in command line (in progress) +- [x] Built-in command line + - Mostly working - Currently implementation is kind of janky -- [ ] File previews (in progress) - - Waiting for tui-rs to support parsing ANSI color codes -- [ ] Tab autocomplete (in progress) -- [x] Bulk rename + - [ ] Tab autocomplete (in progress) diff --git a/config/keymap.toml b/config/keymap.toml index e3a59be..eb4a894 100644 --- a/config/keymap.toml +++ b/config/keymap.toml @@ -2,8 +2,9 @@ keymap = [ { keys = [ "escape" ], command = "escape" }, - { keys = [ "T" ], command = "new_tab" }, { keys = [ "ctrl+t" ], command = "new_tab" }, + { keys = [ "alt+t" ], command = "new_tab --cursor" }, + { keys = [ "T" ], command = "new_tab --current" }, { keys = [ "W" ], command = "close_tab" }, { keys = [ "ctrl+w" ], command = "close_tab" }, { keys = [ "q" ], command = "close_tab" }, diff --git a/docs/configuration/keymap.toml.md b/docs/configuration/keymap.toml.md index 8b4168d..940b08b 100644 --- a/docs/configuration/keymap.toml.md +++ b/docs/configuration/keymap.toml.md @@ -69,13 +69,19 @@ f12 ## General - - `quit`: quit joshuto - - will not quit if there are pending IO work (paste jobs) - - `quit --force`: does ***NOT*** wait for pending IO work - - `quit --output-current-directory`: if `--output-file` argument is set, output the current directory to it - - `quit --output-selected-files`: if `--output-file` argument is set, output the selected files to it -`quit` works best with the following bash script +### `quit`: quit joshuto +- **will not quit** if there are pending IO work (paste jobs) +- `quit` + - exit code 0 +- `quit --force`: does ***NOT*** wait for pending IO work + - exit code 100 +- `quit --output-current-directory`: if `--output-file` argument is set, output the current directory to it + - exit code 101 +- `quit --output-selected-files`: if `--output-file` argument is set, output the selected files to it + - exit code 102 + +The following is a bash snippet on how to integrate with `quit` ```bash function joshuto() { ID="$$" @@ -103,186 +109,191 @@ function joshuto() { } ``` - - `:`: opens the command prompt - - this does not execute the command, but merely sets the text to it - - Example: `:cd /` will open up the command prompt with `cd /` already written - - - `shell`: runs a shell command - - `%s` is substituted by a list of all selected files or by the file under the cursor, if none is selected - - When running the external program, the directory shown in Joshuto is set as “working directory”, - the file names substituded for `%s` are given without path. - - Example: `:shell touch file.txt` will create a file called `file.txt` - - Example for `keymap.toml`: To open all selected files with `nvim`, one can add a keybinding like this: - ```toml - keymap = [ //.. - { keys = [ "e", "v" ], command = "shell nvim %s" } - ] - ``` - - - `spawn`: runs a shell command in the background - - Supports `%s`, just like the `shell` command. - - Example for `keymap.toml`: To open all selected files or directories with `sxiv`, - one can add a keybinding like this: - ```toml - keymap = [ //.. - { keys = [ "i" ], command = "spawn sxiv -t %s" } - ] - ``` - - - `sort`: change the sort method - - `sort lexical`: sort lexically (`10.txt` comes before `2.txt`) - - `sort natural`: sort naturally (`2.txt` comes before `10.txt`) - - `sort mtime`: sort via last modified time - - `sort reverse`: reverse the sorting - - - `linemode`: change the line-mode (textual representation of files and directories in the “current view”) - - `linemode size`: show the entry’s size (bytes for files, number of entries for directories) (default) <sup>✻</sup> - - `linemode mtime`: show the entry’s modified time (aka. “*mtime*”) <sup>✻</sup> - - `linemode sizemtime`: show the entry’s size and modified time <sup>✻</sup> - - <sup>✻: file- or directory-name is shown on left, the respective meta-data is shown on the right, preceeded by a symlink indicator</sup> - - - `show_workers`: show the pending IO operations and the current progress - - press `escape` to exit view - - - `toggle_hidden`: toggle hidden files - - - `line_nums`: switch displaying of entry numbers - - `line_nums 0` or `line_nums none`: disable displaying - - `line_nums 1` or `line_nums absolute`: enable absolute numbers for each entry - - `line_nums 2` or `line_nums relative`: enable numbers relative to selected entry - - - `flat`: flattens the directory view up to the specified depth. - - `flat 3`: flatten directory up to 3 directories deep. - depth of 0 corresponds to the current directory. - its direct descendents have depth 1, and their descendents have depth 2, and so on. +### `:`: opens the command prompt +- this does not execute the command, but merely sets the text to it +- Example: `:cd /` will open up the command prompt with `cd /` already written + +### `shell`: runs a shell command +- `%s` is substituted by a list of all selected files or by the file under the cursor, if none is selected +- When running the external program, the directory shown in Joshuto is set as “working directory”, + the file names substituded for `%s` are given without path. +- Example: `:shell touch file.txt` will create a file called `file.txt` +- Example for `keymap.toml`: To open all selected files with `nvim`, one can add a keybinding like this: + ```toml + keymap = [ //.. + { keys = [ "e", "v" ], command = "shell nvim %s" } + ] + ``` + +### `spawn`: runs a shell command in the background +- Supports `%s`, just like the `shell` command. +- Example for `keymap.toml`: To open all selected files or directories with `sxiv`, + one can add a keybinding like this: + ```toml + keymap = [ //.. + { keys = [ "i" ], command = "spawn sxiv -t %s" } + ] + ``` + +### `sort`: change the sort method +- `sort lexical`: sort lexically (`10.txt` comes before `2.txt`) +- `sort natural`: sort naturally (`2.txt` comes before `10.txt`) +- `sort mtime`: sort via last modified time +- `sort reverse`: reverse the sorting + +### `linemode`: change the line-mode (textual representation of files and directories in the “current view”) +- `linemode size`: show the entry’s size (bytes for files, number of entries for directories) (default) <sup>✻</sup> +- `linemode mtime`: show the entry’s modified time (aka. “*mtime*”) <sup>✻</sup> +- `linemode sizemtime`: show the entry’s size and modified time <sup>✻</sup> + +<sup>✻: file- or directory-name is shown on left, the respective meta-data is shown on the right, preceeded by a symlink indicator</sup> + +### `show_workers`: show the pending IO operations and the current progress +- press `escape` to exit view + +### `toggle_hidden`: toggle hidden files + +### `line_nums`: switch displaying of entry numbers +- `line_nums 0` or `line_nums none`: disable displaying +- `line_nums 1` or `line_nums absolute`: enable absolute numbers for each entry +- `line_nums 2` or `line_nums relative`: enable numbers relative to selected entry + +### `flat`: flattens the directory view up to the specified depth. +- `flat 3`: flatten directory up to 3 directories deep. +depth of 0 corresponds to the current directory. +its direct descendents have depth 1, and their descendents have depth 2, and so on. ## Navigation - - `cursor_move_up`: moves the cursor up by x amount - - `cursor_move_up`: moves the cursor up by 1 - - `cursor_move_up x`: moves the cursor up by `x` where `x` is a non-negative number - - - `cursor_move_down`: moves the cursor down by x amount - - `cursor_move_down`: moves the cursor down by 1 - - `cursor_move_down x`: moves the cursor down by `x` where `x` is a non-negative number - - - `cursor_move_home`: moves cursor to beginning of directory list - - `cursor_move_end`: moves cursor to end of directory list - - `cursor_move_page_up`: moves the cursor up by `x` - - where `x` is the number of items that can be seen on the screen - - `cursor_move_page_down`: moves the cursor down by `x` - - where `x` is the number of items that can be seen on the screen - - - `parent_cursor_move_up`: same as `cursor_move_up` but for parent directory - - `parent_cursor_move_down`: same as `cursor_move_down` but for parent directory - - - `preview_cursor_move_up`: moves the preview up - - `preview_cursor_move_down`: moves the preview down - - - `cd`: change directory - - `cd ..`: go to parent directory - - `cd ~`: go to home directory - - `cd -`: go to previous directory in history (If it exists) - - `open`: open file or directory - - if joshuto does not know how to open the file format (via extension currently), - it will prompt `:open_with ` to open with a specific command - - if `xdg_open` is `true` in [joshuto.toml](https://github.com/kamiyaa/joshuto), - joshuto will try to open it via xdg settings - - `numbered_command`: opens a new mode where user can input numbers and jump to the specified - location via hard-coded keybindings - - `numbered_command 3`: initial input is 3 + +### `cursor_move_up`: moves the cursor up by x amount +- `cursor_move_up`: moves the cursor up by 1 +- `cursor_move_up x`: moves the cursor up by `x` where `x` is a non-negative number + +### `cursor_move_down`: moves the cursor down by x amount +- `cursor_move_down`: moves the cursor down by 1 +- `cursor_move_down x`: moves the cursor down by `x` where `x` is a non-negative number + +### `cursor_move_home`: moves cursor to beginning of directory list +### `cursor_move_end`: moves cursor to end of directory list +### `cursor_move_page_up`: moves the cursor up by `x` +- where `x` is the number of items that can be seen on the screen +### `cursor_move_page_down`: moves the cursor down by `x` +- where `x` is the number of items that can be seen on the screen + +### `parent_cursor_move_up`: same as `cursor_move_up` but for parent directory +### `parent_cursor_move_down`: same as `cursor_move_down` but for parent directory + +### `preview_cursor_move_up`: moves the preview up +### `preview_cursor_move_down`: moves the preview down + +### `cd`: change directory +- `cd ..`: go to parent directory +- `cd ~`: go to home directory +- `cd -`: go to previous directory in history (If it exists) +### `open`: open file or directory +- if joshuto does not know how to open the file format (via extension currently), +it will prompt `:open_with ` to open with a specific command +- if `xdg_open` is `true` in [joshuto.toml](https://github.com/kamiyaa/joshuto), +joshuto will try to open it via xdg settings +### `numbered_command`: opens a new mode where user can input numbers and jump to the specified location via hard-coded keybindings +- `numbered_command 3`: initial input is 3 ## Tabs - - `new_tab`: opens a new tab - - new tab opens in home directory - - `close_tab`: close current tab - - `tab_switch`: switch to next/previous tab by `x` - - where `x` is an integer - - `tab_switch 1`: go to next tab - - `tab_switch -1`: go to previous tab - - `tab_switch_index`: switch to a given tab index - - `tab_switch_index 3`: go to third tab if it exists, - create one if it does not exist and there is already 3 - 1 = 2 tabs open +### `new_tab [--current][--cursor][dir]`: opens a new tab +- `new_tab`, without any argument, opens a new tab with the default directory. + +(Note: the default directory for new tabs is specified in `joshuto.toml` in the `tab` section.) +- `new_tab some-dir` opens new tab with directory `some-dir` +- `new_tab --current` opens new tab with the same directory as the current tab +- `new_tab --cursor` opens new tab with the directory which is currently marked by the cursor +### `close_tab`: close current tab +### `tab_switch`: switch to next/previous tab by `x` +- where `x` is an integer +- `tab_switch 1`: go to next tab +- `tab_switch -1`: go to previous tab +### `tab_switch_index`: switch to a given tab index +- `tab_switch_index 3`: go to third tab if it exists, +create one if it does not exist and there is already 3 - 1 = 2 tabs open ## File Operations - - `reload_dirlist`: reloads the current directory listing - - `mkdir`: create a new directory (usually used as `:mkdir `) - - `cut_files`: store selected files (or current file if none were selected) to be moved later - - `copy_files`: store selected files (or current file if none were selected) to be copied later - - `symlink_files`: store selected files (or current file if none were selected) to be symlinked later - - `--relative=true`: relative symlink paths - - `--relative=false`: absolute symlink paths - - `paste_files`: move/copy files stored from a previous `cut_files` or `copy_files` command - - `delete_files`: delete selected files (or current file if none were selected). - - `--foreground=true`: will delete files in the foreground - - `--permanently`: force permanent deletion regardless of `use_trash` value. - - will ***permanently*** delete files if `use_trash` is `false` in - [joshuto.toml](https://github.com/kamiyaa/joshuto)/wiki/Configuration#joshutotoml) - - if `use_trash` is `true`, this might cause issues with deleting files - on mounted filesystems such as on an external hard drive or tmpfs - - `rename`: rename the current file the cursor is on - - `:rename new_name` - - `rename_append`: opens the command prompt with the rename command and the current file name filled in. - - cursor will be set right before the extension of the file - (end of file name if no extension) - - `rename_prepend`: opens the command prompt with the rename command and the current file name filled in. - - cursor will be set to the beginning of the file name - - `rename_keep_ext`: opens the command prompt with the rename command and the extension of the current file filled in. - - cursor will be se |