use allowed actions binding for key subs
Dependencies
- [2]
WT3GA27Padd cursor with selection - [3]
S2NVIFXRallow to enter record msg - [4]
XSZZB47Urefactor stuff into lib - [5]
5MUEECMJsmooth scrolling nav - [6]
A6Z4O6RCactions menu - [7]
3XRG4BB6rewritten nav-scrollable! - [8]
WAOGSCOJvery nice refactor, wip adding channels logs - [9]
WH57EHNMupdate tests - [10]
EJPSD5XOshared allowed actions conditions between update and view - [11]
YK3MOJJLchonky refactor, wip other channels logs & diffs - [12]
7WCB5YQJrefactor msgs and modules - [13]
AZ5D2LQUallow to set record description - [14]
QUMAQ7IXfix prev focus label - [15]
PKLUHYE4allow to copy change hash - [16]
CULHFNIVadd error report view - [17]
U3EAZKHRallow to copy error report - [18]
LFEMJYYDstart of to_record selection - [19]
5O4FWCFPadd tests to_record selection and improve it - [20]
YGZ3VCW4add push - [21]
ODCT4QJNadd pull - [22]
UTDTZCTXpull+push status, add info reports - [23]
G5WLRXODadd screenshots for test - [24]
OLT666N4fix screenshot test to include status, fix failed test report - [25]
TEDT26JQadd push and pull sub-menus - [26]
BJ3CYLUTallow to reset changed file - [27]
EH7FHUXXupdate iced - [28]
YRGDFHABproject dir picker - [29]
LPSUBGUBadd projects picker - [30]
FDDPOH5Radd arrow controls - [31]
YBJRDOTCmake all repo actions async - [32]
BJXUYQ2Yshow untracked file contents in read-only text editor - [33]
AMPZ2BXKshow changed files diffs (only Edit atm) - [34]
23SFYK4Qbig view refactor into a new crate - [35]
ACDXXAX2refactor main's updates into smaller fns - [36]
ESMM3FELtest selection reindexing - [37]
2SLTGWP6add change files diffs to-record selection - [38]
UPWS6J3Bfilter to-record changes from selection - [39]
KM5PSZ4Awatch repo once loaded - [40]
D7A7MSIHallow to defer or abandon record, add buttons - [41]
A5YBC77Vrecord! - [42]
NRCUG4R2load changed files src when selected - [43]
I2AG42PAnew cols layout - [44]
3TLPJ57Balt scroll via context and couple fixes - [45]
FU6P5QLGindicate when a file is a dir with appended '/' - [46]
S4WH75Y3allow to select channels if there are any other. Conditional switch - [*]
6YZAVBWUInitial commit
Change contents
- replacement in inflorescence_view/src/view.rs at line 1410[10.2832]→[10.2832:2990](∅→∅),[9.435]→[6.8298:8319](∅→∅),[10.2990]→[6.8298:8319](∅→∅),[8.29418]→[6.8298:8319](∅→∅),[6.8298]→[6.8298:8319](∅→∅),[6.8319]→[10.2991:3043](∅→∅),[10.3043]→[6.8499:8513](∅→∅),[6.8499]→[6.8499:8513](∅→∅),[6.8513]→[10.3044:3055](∅→∅)
.map(|action::Binding { key, label, msg }| {if let Some(msg) = msg {action_button(key, label, Msg::Action(msg.clone()))} else {el(action_button_inner(key, label))}}).map(|action::Binding {keys_str,keys: _,label,msg,}| {if let Some(msg) = msg {action_button(keys_str, label, Msg::Action(msg.clone()))} else {el(action_button_inner(keys_str, label))}},) - replacement in inflorescence_view/screenshots/loaded_selected_untracked-wgpu.png at line 3
- replacement in inflorescence_view/screenshots/loaded_selected_untracked-wgpu.png at line 1493
- replacement in inflorescence_view/screenshots/loaded_selected_untracked-wgpu.png at line 1572
- replacement in inflorescence_view/screenshots/loaded_selected_untracked-wgpu.png at line 1574[28.1921706]
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 3
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1055
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1113
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1114
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1117
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1118
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1121
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1125
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1128
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1129
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1132
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1133
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1136
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1140
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1144
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1147
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1149
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1151
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1153
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1155
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1159
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1162
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1167
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1169
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1171
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1172
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1175
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1176
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1179
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1180
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1182
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1184
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1186
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1187
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1190
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1191
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1194
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1195
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1197
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1199
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1201
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1202
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1205
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1206
- edit in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1209
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1210
- replacement in inflorescence_view/screenshots/loaded_point_at_untracked-wgpu.png at line 1213[24.334444]
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 3
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 999
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1070
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1072
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1076
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1080
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1084
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1087
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1091
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1095
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1099
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1102
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1104
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1106
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1108
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1110
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1112
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1114
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1117
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1119
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1121
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1126
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1128
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1130
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1132
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1134
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1135
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1138
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1139
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1141
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1143
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1145
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1147
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1149
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1150
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1153
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1154
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1156
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1158
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1160
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1162
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1164
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1165
- edit in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1168
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1169
- replacement in inflorescence_view/screenshots/loaded_non_empty_repo-wgpu.png at line 1172[28.3040070]
- replacement in inflorescence_model/src/to_record.rs at line 16
#[derive(Debug, Clone, PartialEq, Eq)]#[derive(Debug, Clone, PartialEq, Eq, Hash)] - replacement in inflorescence_model/src/selection.rs at line 6
#[derive(Debug, Clone, PartialEq)]#[derive(Debug, Clone, PartialEq, Hash)] - replacement in inflorescence_model/src/selection.rs at line 24
#[derive(Debug, Clone, Copy, PartialEq, Eq)]#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] - replacement in inflorescence_model/src/model.rs at line 64
#[derive(Clone, Copy, Debug, PartialEq, Eq)]#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] - edit in inflorescence_model/src/action.rs at line 3
use iced::keyboard::key::Named; - replacement in inflorescence_model/src/action.rs at line 7
#[derive(Debug)]use iced::keyboard::{Key, Modifiers as Mods};#[derive(Debug, Clone, Hash)] - replacement in inflorescence_model/src/action.rs at line 11
pub key: &'static str,// NOTE: This could be derived from keys, but preferrably at compile timepub keys_str: &'static str,pub keys: ModKeys, - edit in inflorescence_model/src/action.rs at line 16
}#[derive(Debug, Clone, Hash)]pub enum ModKeys {One(ModKey),Two(ModKey, ModKey),}#[derive(Debug, Clone, Hash)]pub struct ModKey {pub key: Key,pub mods: Mods, - replacement in inflorescence_model/src/action.rs at line 32
#[derive(Debug, Clone)]#[derive(Debug, Clone, Hash)] - replacement in inflorescence_model/src/action.rs at line 182
key: "S-r",keys_str: "S-r",keys: ModKeys::One(ModKey {key: Key::Character("r".into()),mods: Mods::SHIFT,}), - replacement in inflorescence_model/src/action.rs at line 193
key: "S-C-c",keys_str: "S-C-c",keys: ModKeys::One(ModKey {key: Key::Character("c".into()),mods: Mods::SHIFT.union(Mods::CTRL),}), - edit in inflorescence_model/src/action.rs at line 207
impl ModKeys {pub fn iter(&self) -> ModKeysIter<'_> {ModKeysIter { keys: self, ix: 0 }}}pub struct ModKeysIter<'a> {keys: &'a ModKeys,ix: usize,}impl<'a> Iterator for ModKeysIter<'a> {type Item = &'a ModKey;fn next(&mut self) -> Option<Self::Item> {let Self { keys, ix } = self;match keys {ModKeys::One(mod_key) => {if *ix == 0 {*ix += 1;Some(mod_key)} else {None}}ModKeys::Two(mod_key_0, mod_key_1) => {if *ix == 0 {*ix += 1;Some(mod_key_0)} else if *ix == 1 {*ix += 1;Some(mod_key_1)} else {None}}}}} - replacement in inflorescence_model/src/action.rs at line 269
key: "←| h",keys_str: "←| h",keys: ModKeys::Two(ModKey {key: Key::Named(Named::ArrowLeft),mods: Mods::NONE,},ModKey {key: Key::Character("h".into()),mods: Mods::NONE,},), - replacement in inflorescence_model/src/action.rs at line 286
key: "→| l",keys_str: "→| l",keys: ModKeys::Two(ModKey {key: Key::Named(Named::ArrowRight),mods: Mods::NONE,},ModKey {key: Key::Character("l".into()),mods: Mods::NONE,},), - replacement in inflorescence_model/src/action.rs at line 303
key: "S-(↓| j)",keys_str: "S-(↓| j)",keys: ModKeys::Two(ModKey {key: Key::Named(Named::ArrowDown),mods: Mods::SHIFT,},ModKey {key: Key::Character("j".into()),mods: Mods::SHIFT,},), - replacement in inflorescence_model/src/action.rs at line 320
key: "S-(↑| k)",keys_str: "S-(↑| k)",keys: ModKeys::Two(ModKey {key: Key::Named(Named::ArrowUp),mods: Mods::SHIFT,},ModKey {key: Key::Character("k".into()),mods: Mods::SHIFT,},), - replacement in inflorescence_model/src/action.rs at line 338
key: "a",keys_str: "a",keys: ModKeys::One(ModKey {key: Key::Character("a".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 347
key: "x",keys_str: "x",keys: ModKeys::One(ModKey {key: Key::Character("x".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 356
key: "x",keys_str: "x",keys: ModKeys::One(ModKey {key: Key::Character("x".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 365
key: "x",keys_str: "x",keys: ModKeys::One(ModKey {key: Key::Character("x".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 375
key: "r",keys_str: "r",keys: ModKeys::One(ModKey {key: Key::Character("r".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 384
key: "C-s",keys_str: "C-s",keys: ModKeys::One(ModKey {key: Key::Character("s".into()),mods: Mods::CTRL,}), - replacement in inflorescence_model/src/action.rs at line 393
key: "C-p",keys_str: "C-p",keys: ModKeys::One(ModKey {key: Key::Character("p".into()),mods: Mods::CTRL,}), - replacement in inflorescence_model/src/action.rs at line 402
key: "C-d",keys_str: "C-d",keys: ModKeys::One(ModKey {key: Key::Character("d".into()),mods: Mods::CTRL,}), - replacement in inflorescence_model/src/action.rs at line 411
key: "TAB",keys_str: "Tab",keys: ModKeys::One(ModKey {key: Key::Named(Named::Tab),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 420
key: "S-TAB",keys_str: "S-Tab",keys: ModKeys::One(ModKey {key: Key::Named(Named::Tab),mods: Mods::SHIFT,}), - replacement in inflorescence_model/src/action.rs at line 430
key: "c",keys_str: "c",keys: ModKeys::One(ModKey {key: Key::Character("c".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 439
key: "f",keys_str: "f",keys: ModKeys::One(ModKey {key: Key::Character("f".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 449
key: "C-r",keys_str: "C-r",keys: ModKeys::One(ModKey {key: Key::Character("r".into()),mods: Mods::CTRL,}), - replacement in inflorescence_model/src/action.rs at line 459
key: "Enter",keys_str: "Enter",keys: ModKeys::One(ModKey {key: Key::Character("r".into()),mods: Mods::CTRL,}), - replacement in inflorescence_model/src/action.rs at line 468
key: "Esc",keys_str: "Esc",keys: ModKeys::One(ModKey {key: Key::Named(Named::Escape),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 477
key: "Esc",keys_str: "Esc",keys: ModKeys::One(ModKey {key: Key::Named(Named::Escape),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 486
key: "e",keys_str: "e",keys: ModKeys::One(ModKey {key: Key::Character("e".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 495
key: "C-c",keys_str: "C-c",keys: ModKeys::One(ModKey {key: Key::Character("c".into()),mods: Mods::CTRL,}), - replacement in inflorescence_model/src/action.rs at line 511
key: "T",keys_str: "S-t",keys: ModKeys::One(ModKey {key: Key::Character("t".into()),mods: Mods::SHIFT,}), - replacement in inflorescence_model/src/action.rs at line 527
key: "t",keys_str: "t",keys: ModKeys::One(ModKey {key: Key::Character("t".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 542
key: "t",keys_str: "t",keys: ModKeys::One(ModKey {key: Key::Character("t".into()),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 552
key: "S-p",keys_str: "S-p",keys: ModKeys::One(ModKey {key: Key::Character("p".into()),mods: Mods::SHIFT,}), - replacement in inflorescence_model/src/action.rs at line 562
key: "S-f",keys_str: "S-f",keys: ModKeys::One(ModKey {key: Key::Character("f".into()),mods: Mods::SHIFT,}), - replacement in inflorescence_model/src/action.rs at line 1185
key: "↓| j",keys_str: "↓| j",keys: ModKeys::Two(ModKey {key: Key::Named(Named::ArrowDown),mods: Mods::NONE,},ModKey {key: Key::Character("j".into()),mods: Mods::NONE,},), - replacement in inflorescence_model/src/action.rs at line 1205
key: "↑| k",keys_str: "↑| k",keys: ModKeys::Two(ModKey {key: Key::Named(Named::ArrowUp),mods: Mods::NONE,},ModKey {key: Key::Character("k".into()),mods: Mods::NONE,},), - replacement in inflorescence_model/src/action.rs at line 1225
key: "Enter",keys_str: "Enter",keys: ModKeys::One(ModKey {key: Key::Named(Named::Enter),mods: Mods::NONE,}), - replacement in inflorescence_model/src/action.rs at line 1237
key: "Esc",keys_str: "Esc",keys: ModKeys::One(ModKey {key: Key::Named(Named::Escape),mods: Mods::NONE,}), - replacement in inflorescence/src/main.rs at line 2041[28.3625858]→[28.3625858:3625902](∅→∅),[28.3625902]→[29.26623:26676](∅→∅),[29.26676]→[28.3625962:3626217](∅→∅),[28.3625962]→[28.3625962:3626217](∅→∅),[28.3626217]→[29.26677:26750](∅→∅),[29.26750]→[28.3626217:3626432](∅→∅),[28.3626217]→[28.3626217:3626432](∅→∅),[28.3626432]→[27.225:278](∅→∅),[7.21800]→[27.225:278](∅→∅)
let key_subs = match &state.model.sub {model::SubState::PickingRepoDir(_model) => {Subscription::none()// dir_picker::subs(&picking_repo.picker)// .map(view::Msg::PickingRepo)// .map(Msg::View)}model::SubState::ManagingRepo(model) => subs_managing_repo(model),model::SubState::PickingProject(_model) => Subscription::none(),};let window_subs = window::events().map(|(_id, event)| Msg::Window(event));Subscription::batch([key_subs, window_subs])}fn subs_managing_repo(_model: &model::ManagingRepo) -> Subscription<Msg> {use iced::keyboard::{self, key, Key, Modifiers};use iced::keyboard::{self, key, Key}; - replacement in inflorescence/src/main.rs at line 2043
keyboard::listen().filter_map(|event| {let action = |msg| Some(Msg::View(view::Msg::Action(msg)));let selection =|selection| action(action::FilteredMsg::Selection(selection));let unfiltered = |selection| {Some(Msg::View(view::Msg::UnfilteredSelection(selection)))};let allowed_actions = state.model.allowed_actions.clone();let key_subs = keyboard::listen().with(allowed_actions).filter_map(|(allowed_actions, event)| {let unfiltered = |selection| {Some(Msg::View(view::Msg::UnfilteredSelection(selection)))}; - replacement in inflorescence/src/main.rs at line 2050
match event {keyboard::Event::KeyPressed {key,modifiers: mods,match event {keyboard::Event::KeyPressed { key, modifiers, .. } => {allowed_actions.iter().find_map(|binding| {binding.msg.as_ref().and_then(|msg| {if binding.keys.iter().any(|binding| {binding.key == key&& binding.mods == modifiers}) {Some(msg.clone())} else {None}})}).map(view::Msg::Action).map(Msg::View)}keyboard::Event::KeyReleased {key,modifiers: mods, - replacement in inflorescence/src/main.rs at line 2073[28.3626907]→[28.3626907:3627460](∅→∅),[28.3627460]→[27.2867:2897](∅→∅),[27.2867]→[27.2867:2897](∅→∅),[27.2897]→[28.3627461:3630111](∅→∅),[28.3630111]→[27.3029:3059](∅→∅),[27.3029]→[27.3029:3059](∅→∅),[27.3059]→[28.3630112:3630446](∅→∅),[28.3630446]→[27.3216:3246](∅→∅),[27.3216]→[27.3216:3246](∅→∅),[27.3246]→[28.3630447:3630587](∅→∅),[28.3630587]→[27.3399:3429](∅→∅),[27.3399]→[27.3399:3429](∅→∅),[27.3429]→[28.3630588:3630725](∅→∅),[28.3630725]→[27.3586:3616](∅→∅),[27.3586]→[27.3586:3616](∅→∅),[27.3616]→[28.3630726:3630866](∅→∅),[28.3630866]→[27.3775:3805](∅→∅),[27.3775]→[27.3775:3805](∅→∅),[27.3805]→[28.3630867:3631003](∅→∅),[28.3631003]→[27.3937:3967](∅→∅),[27.3937]→[27.3937:3967](∅→∅),[27.3967]→[28.3631004:3632702](∅→∅),[28.3632702]→[27.4038:4064](∅→∅),[27.4038]→[27.4038:4064](∅→∅),[27.4064]→[28.3632703:3634128](∅→∅)
} => {if mods.is_empty() {match key {Key::Character(c) => match c.as_str() {// _____________________________________________// Directions"j" => selection(selection::Msg::PressDir(selection::Dir::Down,)),"k" => {selection(selection::Msg::PressDir(selection::Dir::Up))}"h" => selection(selection::Msg::PressDir(selection::Dir::Left,)),"l" => selection(selection::Msg::PressDir(selection::Dir::Right,)),// _____________________________________________// Other keys (sort alphabetically)"a" => action(action::FilteredMsg::AddUntrackedFile),"c" => action(action::FilteredMsg::SelectChannel),"e" => action(action::FilteredMsg::ShowEntireLog),"f" => action(action::FilteredMsg::ForkChannel),"t" => action(action::FilteredMsg::ToRecordToggleSelectedFileOrChange,),"r" => action(action::FilteredMsg::StartRecord),"x" => action(action::FilteredMsg::RmChange),_ => None,},Key::Named(key::Named::Enter) => {action(action::FilteredMsg::Confirm)}Key::Named(key::Named::Escape) => {action(action::FilteredMsg::Cancel)}Key::Named(key::Named::ArrowDown) => {selection(selection::Msg::PressDir(selection::Dir::Down))}Key::Named(key::Named::ArrowUp) => {selection(selection::Msg::PressDir(selection::Dir::Up))}Key::Named(key::Named::ArrowLeft) => {selection(selection::Msg::PressDir(selection::Dir::Left))}Key::Named(key::Named::ArrowRight) => {selection(selection::Msg::PressDir(selection::Dir::Right))}Key::Named(key::Named::Tab) => {action(action::FilteredMsg::FocusNext)}Key::Named(_) | Key::Unidentified => None,}} else {match key {Key::Character(c) => match c.as_str() {"c" if mods == Modifiers::CTRL => {action(action::FilteredMsg::ClipboardCopy)}"c" if mods == Modifiers::SHIFT | Modifiers::CTRL => {action(action::FilteredMsg::ClipboardCopyReports)}"d" if mods == Modifiers::CTRL => {action(action::FilteredMsg::DiscardRecord)}"p" if mods == Modifiers::CTRL => {action(action::FilteredMsg::PostponeRecord)}"r" if mods == Modifiers::CTRL => {action(action::FilteredMsg::RefreshRepo)}"r" if mods == Modifiers::SHIFT => {action(action::FilteredMsg::ToggleReports)}"s" if mods == Modifiers::CTRL => {action(action::FilteredMsg::SaveRecord)}"f" if mods == Modifiers::SHIFT => action(action::FilteredMsg::EnterSubMenu(model::SubMenu::Pull),),"j" if mods == Modifiers::SHIFT => selection(selection::Msg::AltPressDir(selection::Dir::Down),),"k" if mods == Modifiers::SHIFT => selection(selection::Msg::AltPressDir(selection::Dir::Up),),"h" if mods == Modifiers::SHIFT => selection(selection::Msg::AltPressDir(selection::Dir::Left),),"l" if mods == Modifiers::SHIFT => selection(selection::Msg::AltPressDir(selection::Dir::Right),),"p" if mods == Modifiers::SHIFT => action(action::FilteredMsg::EnterSubMenu(model::SubMenu::Push),),"t" if mods == Modifiers::SHIFT => {action(action::FilteredMsg::ToRecord(to_record::Msg::ToggleOverall,))}_ => None,},Key::Named(key::Named::ArrowDown)if mods == Modifiers::SHIFT =>{selection(selection::Msg::AltPressDir(selection::Dir::Down))}Key::Named(key::Named::ArrowUp) if mods == Modifiers::SHIFT => {selection(selection::Msg::AltPressDir(selection::Dir::Up))}Key::Named(key::Named::ArrowLeft)if mods == Modifiers::SHIFT =>{selection(selection::Msg::AltPressDir(selection::Dir::Left))}Key::Named(key::Named::ArrowRight)if mods == Modifiers::SHIFT =>{selection(selection::Msg::AltPressDir(selection::Dir::Right,))}Key::Named(key::Named::Tab) if mods == Modifiers::SHIFT => {action(action::FilteredMsg::FocusPrev)}Key::Named(_) | Key::Unidentified => None,}}}keyboard::Event::KeyReleased {key,modifiers: mods,..} => {if mods.is_empty() {match key {Key::Character(c) => match c.as_str() {"j" =>unfiltered(} => {if mods.is_empty() {match key {Key::Character(c) => match c.as_str() {"j" => unfiltered( - replacement in inflorescence/src/main.rs at line 2082
"k" =>unfiltered("k" => unfiltered( - replacement in inflorescence/src/main.rs at line 2087
"h" =>unfiltered("h" => unfiltered( - replacement in inflorescence/src/main.rs at line 2092
"l" =>unfiltered("l" => unfiltered( - replacement in inflorescence/src/main.rs at line 2097
_ => None,},Key::Named(key::Named::ArrowDown) => {unfiltered(_ => None,},Key::Named(key::Named::ArrowDown) => unfiltered( - replacement in inflorescence/src/main.rs at line 2103
)}Key::Named(key::Named::ArrowUp) => {unfiltered(),Key::Named(key::Named::ArrowUp) => unfiltered( - replacement in inflorescence/src/main.rs at line 2108
)}Key::Named(key::Named::ArrowLeft) => {unfiltered(),Key::Named(key::Named::ArrowLeft) => unfiltered( - replacement in inflorescence/src/main.rs at line 2113
)}Key::Named(key::Named::ArrowRight) => {unfiltered(),Key::Named(key::Named::ArrowRight) => unfiltered( - replacement in inflorescence/src/main.rs at line 2118
)),Key::Named(_) | Key::Unidentified => None, - replacement in inflorescence/src/main.rs at line 2121
Key::Named(_) | Key::Unidentified => None,} else {None - edit in inflorescence/src/main.rs at line 2124
} else {None - edit in inflorescence/src/main.rs at line 2125
keyboard::Event::ModifiersChanged(_) => None, - replacement in inflorescence/src/main.rs at line 2127
keyboard::Event::ModifiersChanged(_) => None,}})},);let window_subs = window::events().map(|(_id, event)| Msg::Window(event));Subscription::batch([key_subs, window_subs])