1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
use anyhow::Result;
use git2::Config;
use crate::config::utils::get_input;
#[derive(Clone, Debug)]
pub struct KeyBindings {
pub(crate) abort: Vec<String>,
pub(crate) action_break: Vec<String>,
pub(crate) action_drop: Vec<String>,
pub(crate) action_edit: Vec<String>,
pub(crate) action_fixup: Vec<String>,
pub(crate) action_pick: Vec<String>,
pub(crate) action_reword: Vec<String>,
pub(crate) action_squash: Vec<String>,
pub(crate) confirm_no: Vec<String>,
pub(crate) confirm_yes: Vec<String>,
pub(crate) edit: Vec<String>,
pub(crate) force_abort: Vec<String>,
pub(crate) force_rebase: Vec<String>,
pub(crate) help: Vec<String>,
pub(crate) insert_line: Vec<String>,
pub(crate) move_down: Vec<String>,
pub(crate) move_down_step: Vec<String>,
pub(crate) move_end: Vec<String>,
pub(crate) move_home: Vec<String>,
pub(crate) move_left: Vec<String>,
pub(crate) move_right: Vec<String>,
pub(crate) move_selection_down: Vec<String>,
pub(crate) move_selection_up: Vec<String>,
pub(crate) move_up: Vec<String>,
pub(crate) move_up_step: Vec<String>,
pub(crate) open_in_external_editor: Vec<String>,
pub(crate) rebase: Vec<String>,
pub(crate) redo: Vec<String>,
pub(crate) remove_line: Vec<String>,
pub(crate) show_commit: Vec<String>,
pub(crate) show_diff: Vec<String>,
pub(crate) toggle_visual_mode: Vec<String>,
pub(crate) undo: Vec<String>,
}
impl KeyBindings {
pub(super) fn new(git_config: &Config) -> Result<Self> {
let confirm_no = get_input(git_config, "interactive-rebase-tool.inputConfirmNo", "n")?
.iter()
.map(|s| s.as_str().to_lowercase())
.collect();
let confirm_yes = get_input(git_config, "interactive-rebase-tool.inputConfirmYes", "y")?
.iter()
.map(|s| s.as_str().to_lowercase())
.collect();
Ok(Self {
abort: get_input(git_config, "interactive-rebase-tool.inputAbort", "q")?,
action_break: get_input(git_config, "interactive-rebase-tool.inputActionBreak", "b")?,
action_drop: get_input(git_config, "interactive-rebase-tool.inputActionDrop", "d")?,
action_edit: get_input(git_config, "interactive-rebase-tool.inputActionEdit", "e")?,
action_fixup: get_input(git_config, "interactive-rebase-tool.inputActionFixup", "f")?,
action_pick: get_input(git_config, "interactive-rebase-tool.inputActionPick", "p")?,
action_reword: get_input(git_config, "interactive-rebase-tool.inputActionReword", "r")?,
action_squash: get_input(git_config, "interactive-rebase-tool.inputActionSquash", "s")?,
confirm_no,
confirm_yes,
edit: get_input(git_config, "interactive-rebase-tool.inputEdit", "E")?,
force_abort: get_input(git_config, "interactive-rebase-tool.inputForceAbort", "Q")?,
force_rebase: get_input(git_config, "interactive-rebase-tool.inputForceRebase", "W")?,
help: get_input(git_config, "interactive-rebase-tool.inputHelp", "?")?,
insert_line: get_input(git_config, "interactive-rebase-tool.insertLine", "I")?,
move_down: get_input(git_config, "interactive-rebase-tool.inputMoveDown", "Down")?,
move_down_step: get_input(git_config, "interactive-rebase-tool.inputMoveStepDown", "PageDown")?,
move_end: get_input(git_config, "interactive-rebase-tool.inputMoveEnd", "End")?,
move_home: get_input(git_config, "interactive-rebase-tool.inputMoveHome", "Home")?,
move_left: get_input(git_config, "interactive-rebase-tool.inputMoveLeft", "Left")?,
move_right: get_input(git_config, "interactive-rebase-tool.inputMoveRight", "Right")?,
move_selection_down: get_input(git_config, "interactive-rebase-tool.inputMoveSelectionDown", "j")?,
move_selection_up: get_input(git_config, "interactive-rebase-tool.inputMoveSelectionUp", "k")?,
move_up_step: get_input(git_config, "interactive-rebase-tool.inputMoveStepUp", "PageUp")?,
move_up: get_input(git_config, "interactive-rebase-tool.inputMoveUp", "Up")?,
open_in_external_editor: get_input(git_config, "interactive-rebase-tool.inputOpenInExternalEditor", "!")?,
rebase: get_input(git_config, "interactive-rebase-tool.inputRebase", "w")?,
redo: get_input(git_config, "interactive-rebase-tool.inputRedo", "control+y")?,
remove_line: get_input(git_config, "interactive-rebase-tool.removeLine", "delete")?,
show_commit: get_input(git_config, "interactive-rebase-tool.inputShowCommit", "c")?,
show_diff: get_input(git_config, "interactive-rebase-tool.inputShowDiff", "d")?,
toggle_visual_mode: get_input(git_config, "interactive-rebase-tool.inputToggleVisualMode", "v")?,
undo: get_input(git_config, "interactive-rebase-tool.inputUndo", "control+z")?,
})
}
}
|