summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock256
-rw-r--r--README.md32
-rw-r--r--config/keymap.toml3
-rw-r--r--docs/configuration/keymap.toml.md359
-rw-r--r--src/commands/tab_ops.rs71
-rw-r--r--src/config/option/mod.rs2
-rw-r--r--src/config/option/new_tab_option.rs19
-rw-r--r--src/key_command/command.rs6
-rw-r--r--src/key_command/impl_appcommand.rs2
-rw-r--r--src/key_command/impl_appexecute.rs2
-rw-r--r--src/key_command/impl_comment.rs2
-rw-r--r--src/key_command/impl_from_str.rs7
12 files changed, 468 insertions, 293 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 24d4e05..bafe3e4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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"
diff --git a/README.md b/README.md
index dd307fe..4e6e454 100644
--- a/README.md
+++ b/README.md
@@ -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