summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Oram <dev@mitmaro.ca>2020-12-26 21:39:48 -0330
committerTim Oram <dev@mitmaro.ca>2020-12-27 11:05:39 -0330
commitc695bffa7e21fdc8facafd11d97ae0d0239cce83 (patch)
tree200187687e7653f10c7979325517ec52fe565fcc
parent5f14c3842c974e780cd39a35046140aae8414459 (diff)
Add key bindings configuration
-rw-r--r--src/lib/key_bindings.rs68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/lib/key_bindings.rs b/src/lib/key_bindings.rs
new file mode 100644
index 0000000..1583c45
--- /dev/null
+++ b/src/lib/key_bindings.rs
@@ -0,0 +1,68 @@
+use crate::config::utils::get_input;
+use anyhow::Result;
+use git2::Config;
+
+#[derive(Clone, Debug)]
+pub struct KeyBindings {
+ pub(crate) abort: String,
+ pub(crate) action_break: String,
+ pub(crate) action_drop: String,
+ pub(crate) action_edit: String,
+ pub(crate) action_fixup: String,
+ pub(crate) action_pick: String,
+ pub(crate) action_reword: String,
+ pub(crate) action_squash: String,
+ pub(crate) confirm_no: String,
+ pub(crate) confirm_yes: String,
+ pub(crate) edit: String,
+ pub(crate) force_abort: String,
+ pub(crate) force_rebase: String,
+ pub(crate) help: String,
+ pub(crate) move_down: String,
+ pub(crate) move_down_step: String,
+ pub(crate) move_left: String,
+ pub(crate) move_right: String,
+ pub(crate) move_selection_down: String,
+ pub(crate) move_selection_up: String,
+ pub(crate) move_up: String,
+ pub(crate) move_up_step: String,
+ pub(crate) open_in_external_editor: String,
+ pub(crate) rebase: String,
+ pub(crate) show_commit: String,
+ pub(crate) show_diff: String,
+ pub(crate) toggle_visual_mode: String,
+}
+
+impl KeyBindings {
+ pub(super) fn new(git_config: &Config) -> Result<Self> {
+ 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: get_input(git_config, "interactive-rebase-tool.inputConfirmNo", "n")?,
+ confirm_yes: get_input(git_config, "interactive-rebase-tool.inputConfirmYes", "y")?,
+ 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", "?")?,
+ move_down: get_input(git_config, "interactive-rebase-tool.inputMoveDown", "Down")?,
+ move_left: get_input(git_config, "interactive-rebase-tool.inputMoveLeft", "Left")?,
+ move_right: get_input(git_config, "interactive-rebase-tool.inputMoveRight", "Right")?,
+ move_up_step: get_input(git_config, "interactive-rebase-tool.inputMoveStepUp", "PageUp")?,
+ move_down_step: get_input(git_config, "interactive-rebase-tool.inputMoveStepDown", "PageDown")?,
+ 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: 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")?,
+ 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")?,
+ })
+ }
+}