Add AltDelete and AltBackspace support

This commit is contained in:
Dheepak Krishnamurthy 2021-08-16 01:26:24 -06:00
parent eb3257fbfa
commit a7a7941665
4 changed files with 76 additions and 179 deletions

199
Cargo.lock generated
View file

@ -128,12 +128,12 @@ checksum = "b21b63ab5a0db0369deb913540af2892750e42d949faacc7a61495ac418a1692"
dependencies = [
"async-io",
"blocking",
"cfg-if 1.0.0",
"cfg-if",
"event-listener",
"futures-lite",
"libc",
"once_cell",
"signal-hook 0.3.9",
"signal-hook",
"winapi",
]
@ -203,7 +203,7 @@ checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01"
dependencies = [
"addr2line",
"cc",
"cfg-if 1.0.0",
"cfg-if",
"libc",
"miniz_oxide",
"object",
@ -264,12 +264,6 @@ version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2"
[[package]]
name = "cfg-if"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
[[package]]
name = "cfg-if"
version = "1.0.0"
@ -352,15 +346,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "cloudabi"
version = "0.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
dependencies = [
"bitflags",
]
[[package]]
name = "concurrent-queue"
version = "1.2.2"
@ -391,50 +376,27 @@ version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"lazy_static",
]
[[package]]
name = "crossterm"
version = "0.17.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f4919d60f26ae233e14233cc39746c8c8bb8cd7b05840ace83604917b51b6c7"
dependencies = [
"bitflags",
"crossterm_winapi 0.6.2",
"lazy_static",
"libc",
"mio",
"parking_lot 0.10.2",
"signal-hook 0.1.17",
"winapi",
]
[[package]]
name = "crossterm"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d"
dependencies = [
"bitflags",
"crossterm_winapi 0.8.0",
"crossterm_winapi",
"futures-core",
"libc",
"mio",
"parking_lot 0.11.1",
"signal-hook 0.3.9",
"parking_lot",
"signal-hook",
"signal-hook-mio",
"winapi",
]
[[package]]
name = "crossterm_winapi"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2265c3f8e080075d9b6417aa72293fc71662f34b4af2612d8d1b074d29510db"
dependencies = [
"winapi",
]
[[package]]
name = "crossterm_winapi"
version = "0.8.0"
@ -516,11 +478,10 @@ dependencies = [
[[package]]
name = "dirs"
version = "2.0.2"
version = "3.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
dependencies = [
"cfg-if 0.1.10",
"dirs-sys",
]
@ -530,7 +491,7 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"dirs-sys-next",
]
@ -752,26 +713,15 @@ dependencies = [
"slab",
]
[[package]]
name = "getrandom"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
dependencies = [
"cfg-if 1.0.0",
"libc",
"wasi 0.9.0+wasi-snapshot-preview1",
]
[[package]]
name = "getrandom"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"libc",
"wasi 0.10.2+wasi-snapshot-preview1",
"wasi",
]
[[package]]
@ -839,14 +789,14 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bee0328b1209d157ef001c94dd85b4f8f64139adb0eac2659f4b08382b2f474d"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
]
[[package]]
name = "itertools"
version = "0.9.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf"
dependencies = [
"either",
]
@ -887,15 +837,6 @@ version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7f823d141fe0a24df1e23b4af4e3c7ba9e5966ec514ea068c93024aa7deb765"
[[package]]
name = "lock_api"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
dependencies = [
"scopeguard",
]
[[package]]
name = "lock_api"
version = "0.4.4"
@ -911,7 +852,7 @@ version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"value-bag",
]
@ -979,7 +920,7 @@ checksum = "df8e5e343312e7fbeb2a52139114e9e702991ef9c2aea6817ff2440b35647d56"
dependencies = [
"bitflags",
"cc",
"cfg-if 1.0.0",
"cfg-if",
"libc",
"memoffset",
]
@ -1049,16 +990,6 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
[[package]]
name = "parking_lot"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e"
dependencies = [
"lock_api 0.3.4",
"parking_lot_core 0.7.2",
]
[[package]]
name = "parking_lot"
version = "0.11.1"
@ -1066,22 +997,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
dependencies = [
"instant",
"lock_api 0.4.4",
"parking_lot_core 0.8.3",
]
[[package]]
name = "parking_lot_core"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3"
dependencies = [
"cfg-if 0.1.10",
"cloudabi",
"libc",
"redox_syscall 0.1.57",
"smallvec",
"winapi",
"lock_api",
"parking_lot_core",
]
[[package]]
@ -1090,10 +1007,10 @@ version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"instant",
"libc",
"redox_syscall 0.2.10",
"redox_syscall",
"smallvec",
"winapi",
]
@ -1116,7 +1033,7 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"libc",
"log",
"wepoll-ffi",
@ -1195,11 +1112,10 @@ dependencies = [
[[package]]
name = "rand"
version = "0.7.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
dependencies = [
"getrandom 0.1.16",
"libc",
"rand_chacha",
"rand_core",
@ -1208,9 +1124,9 @@ dependencies = [
[[package]]
name = "rand_chacha"
version = "0.2.2"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core",
@ -1218,28 +1134,22 @@ dependencies = [
[[package]]
name = "rand_core"
version = "0.5.1"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
"getrandom 0.1.16",
"getrandom",
]
[[package]]
name = "rand_hc"
version = "0.2.0"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
dependencies = [
"rand_core",
]
[[package]]
name = "redox_syscall"
version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
[[package]]
name = "redox_syscall"
version = "0.2.10"
@ -1255,8 +1165,8 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
dependencies = [
"getrandom 0.2.3",
"redox_syscall 0.2.10",
"getrandom",
"redox_syscall",
]
[[package]]
@ -1289,7 +1199,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbd4eaf7a7738f76c98e4f0395253ae853be3eb018f7b0bb57fe1b6c17e31874"
dependencies = [
"bitflags",
"cfg-if 1.0.0",
"cfg-if",
"clipboard-win",
"dirs-next",
"fd-lock",
@ -1370,20 +1280,9 @@ dependencies = [
[[package]]
name = "shlex"
version = "0.1.1"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
[[package]]
name = "signal-hook"
version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"
dependencies = [
"libc",
"mio",
"signal-hook-registry",
]
checksum = "42a568c8f2cd051a4d283bd6eb0343ac214c1b0f1ac19f93e1175b2dee38c73d"
[[package]]
name = "signal-hook"
@ -1403,7 +1302,7 @@ checksum = "29fd5867f1c4f2c5be079aee7a2adf1152ebb04a4bc4d341f504b7dece607ed4"
dependencies = [
"libc",
"mio",
"signal-hook 0.3.9",
"signal-hook",
]
[[package]]
@ -1504,7 +1403,7 @@ dependencies = [
"chrono",
"clap",
"clap_generate",
"crossterm 0.20.0",
"crossterm",
"dirs",
"futures",
"futures-timer",
@ -1565,13 +1464,13 @@ dependencies = [
[[package]]
name = "tui"
version = "0.12.0"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2eaeee894a1e9b90f80aa466fe59154fdb471980b5e104d8836fcea309ae17e"
checksum = "39c8ce4e27049eed97cfa363a5048b09d995e209994634a0efc26a14ab6c0c23"
dependencies = [
"bitflags",
"cassowary",
"crossterm 0.17.7",
"crossterm",
"unicode-segmentation",
"unicode-width",
]
@ -1615,7 +1514,7 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
dependencies = [
"getrandom 0.2.3",
"getrandom",
"serde",
]
@ -1647,12 +1546,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
[[package]]
name = "wasi"
version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
@ -1665,7 +1558,7 @@ version = "0.2.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b608ecc8f4198fe8680e2ed18eccab5f0cd4caaf3d83516fa5fb2e927fda2586"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"wasm-bindgen-macro",
]
@ -1690,7 +1583,7 @@ version = "0.4.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16646b21c3add8e13fdb8f20172f8a28c3dbf62f45406bcff0233188226cfe0c"
dependencies = [
"cfg-if 1.0.0",
"cfg-if",
"js-sys",
"wasm-bindgen",
"web-sys",

View file

@ -18,36 +18,36 @@ default = ["crossterm-backend"]
crossterm-backend = ["tui/crossterm", "crossterm"]
[dependencies]
anyhow = "1"
async-std = { version = "1", features = ["attributes", "unstable"] }
anyhow = "1.0.43"
async-std = { version = "1.9.0", features = ["attributes", "unstable"] }
better-panic = "0.2.0"
cassowary = "0.3.0"
chrono = "0.4"
clap = "3.0.0-beta.2"
crossterm = { version = "0", optional = true, default-features = false, features = ["event-stream"] }
dirs = "2.0.2"
futures = "0.3"
futures-timer = "3.0"
itertools = "0.9"
chrono = "0.4.19"
clap = "3.0.0-beta.4"
crossterm = { version = "0.20.0", optional = true, default-features = false, features = ["event-stream"] }
dirs = "3.0.2"
futures = "0.3.16"
futures-timer = "3.0.2"
itertools = "0.10.1"
lazy_static = "1.4.0"
rand = "0.7"
regex = "1"
rustyline = "8"
rustyline-derive = "0.4"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
shellexpand = "2.1"
shlex = "0.1"
rand = "0.8.4"
regex = "1.5.4"
rustyline = "8.2.0"
rustyline-derive = "0.4.0"
serde = { version = "1.0.127", features = ["derive"] }
serde_json = "1.0.66"
shellexpand = "2.1.0"
shlex = "1.0.0"
task-hookrs = { git = "https://github.com/kdheepak/task-hookrs" }
tui = { version = "0.12", optional = true, default-features = false }
unicode-segmentation = "1.6"
unicode-truncate = "0.2"
unicode-width = "0.1"
uuid = { version = "0.8.1", features = ["serde", "v4"] }
tui = { version = "0.16.0", optional = true, default-features = false }
unicode-segmentation = "1.8.0"
unicode-truncate = "0.2.0"
unicode-width = "0.1.8"
uuid = { version = "0.8.2", features = ["serde", "v4"] }
[build-dependencies]
clap = "3.0.0-beta.2"
clap_generate = "3.0.0-beta.2"
clap = "3.0.0-beta.4"
clap_generate = "3.0.0-beta.4"
[package.metadata.rpm]
package = "taskwarrior-tui"

View file

@ -3048,10 +3048,10 @@ pub fn handle_movement(linebuffer: &mut LineBuffer, input: Key) {
Key::Ctrl('u') => {
linebuffer.discard_line();
}
Key::Ctrl('w') | Key::CtrlBackspace => {
Key::Ctrl('w') | Key::AltBackspace | Key::CtrlBackspace => {
linebuffer.delete_prev_word(Word::Emacs, 1);
}
Key::Alt('d') | Key::CtrlDelete => {
Key::Alt('d') | Key::AltDelete | Key::CtrlDelete => {
linebuffer.delete_word(At::AfterEnd, Word::Emacs, 1);
}
Key::Alt('f') => {

View file

@ -21,6 +21,8 @@ use serde::{Deserialize, Serialize};
pub enum Key {
CtrlBackspace,
CtrlDelete,
AltBackspace,
AltDelete,
Backspace,
Left,
Right,
@ -79,12 +81,14 @@ impl Events {
Backspace => {
match key.modifiers {
KeyModifiers::CONTROL => Key::CtrlBackspace,
KeyModifiers::ALT => Key::AltBackspace,
_ => Key::Backspace,
}
},
Delete => {
match key.modifiers {
KeyModifiers::CONTROL => Key::CtrlDelete,
KeyModifiers::ALT => Key::AltDelete,
_ => Key::Delete,
}
},