From 319d15fbb43ee4a34ee59b2a355821a012b7400e Mon Sep 17 00:00:00 2001 From: Frank Wang <1454884738@qq.com> Date: Mon, 16 Sep 2024 19:24:40 -0500 Subject: [PATCH 1/3] feat: home/end binding for request body edit --- src/app/files/key_bindings.rs | 4 ++++ src/tui/app_states.rs | 2 ++ src/tui/events.rs | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/src/app/files/key_bindings.rs b/src/app/files/key_bindings.rs index c4d1abc..8232c8f 100644 --- a/src/app/files/key_bindings.rs +++ b/src/app/files/key_bindings.rs @@ -149,6 +149,8 @@ pub struct CustomTextArea { pub move_cursor_down: KeyCombination, pub move_cursor_left: KeyCombination, pub move_cursor_right: KeyCombination, + pub move_cursor_line_start: KeyCombination, + pub move_cursor_line_end: KeyCombination, } impl Default for KeyBindings { @@ -268,6 +270,8 @@ impl Default for CustomTextArea { move_cursor_down: key!(down), move_cursor_left: key!(left), move_cursor_right: key!(right), + move_cursor_line_start: key!(home), + move_cursor_line_end: key!(end), } } } diff --git a/src/tui/app_states.rs b/src/tui/app_states.rs index 53092a7..f35007b 100644 --- a/src/tui/app_states.rs +++ b/src/tui/app_states.rs @@ -485,6 +485,8 @@ impl AppState { EditingRequestBodyStringMoveCursorDown(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_down], "Down", Some("Down"))), EditingRequestBodyStringMoveCursorLeft(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_left], "Left", Some("Left"))), EditingRequestBodyStringMoveCursorRight(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_right], "Right", Some("Right"))), + EditingRequestBodyStringMoveCursorLineStart(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_line_start], "Line start", None)), + EditingRequestBodyStringMoveCursorLineEnd(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_line_end], "Line end", None)), EditingRequestBodyStringCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], }, diff --git a/src/tui/events.rs b/src/tui/events.rs index 7557208..58704b9 100644 --- a/src/tui/events.rs +++ b/src/tui/events.rs @@ -237,6 +237,8 @@ pub enum AppEvent { EditingRequestBodyStringMoveCursorDown(EventKeyBinding), EditingRequestBodyStringMoveCursorLeft(EventKeyBinding), EditingRequestBodyStringMoveCursorRight(EventKeyBinding), + EditingRequestBodyStringMoveCursorLineStart(EventKeyBinding), + EditingRequestBodyStringMoveCursorLineEnd(EventKeyBinding), EditingRequestBodyStringCharInput(EventKeyBinding), /* Scripts */ @@ -660,11 +662,14 @@ impl App<'_> { EditingRequestBodyStringMoveCursorDown(_) => self.body_text_area.move_cursor(CursorMove::Bottom), EditingRequestBodyStringMoveCursorLeft(_) => self.body_text_area.move_cursor(CursorMove::Back), EditingRequestBodyStringMoveCursorRight(_) => self.body_text_area.move_cursor(CursorMove::Forward), + EditingRequestBodyStringMoveCursorLineStart(_) => self.body_text_area.move_cursor(CursorMove::Head), + EditingRequestBodyStringMoveCursorLineEnd(_) => self.body_text_area.move_cursor(CursorMove::End), EditingRequestBodyStringCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.body_text_area.insert_char(char), _ => {} }, + /* Scripts */ EditingPreRequestScriptVimInput(_) => match self.script_console.vim_emulation.transition(key, &mut self.script_console.pre_request_text_area) { @@ -927,6 +932,8 @@ impl AppEvent { EditingRequestBodyStringMoveCursorDown(event_key_bindings) | EditingRequestBodyStringMoveCursorLeft(event_key_bindings) | EditingRequestBodyStringMoveCursorRight(event_key_bindings) | + EditingRequestBodyStringMoveCursorLineStart(event_key_bindings) | + EditingRequestBodyStringMoveCursorLineEnd(event_key_bindings) | EditingRequestBodyStringCharInput(event_key_bindings) | EditingPreRequestScriptVimInput(event_key_bindings) | EditingPreRequestScriptCopy(event_key_bindings) | From 774739bdf4db4ed51782f0010c18ef5f59470973 Mon Sep 17 00:00:00 2001 From: Frank Wang <1454884738@qq.com> Date: Mon, 16 Sep 2024 21:08:21 -0500 Subject: [PATCH 2/3] chore: update default keybinding --- example_resources/key_bindings/default_key_bindings.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/example_resources/key_bindings/default_key_bindings.toml b/example_resources/key_bindings/default_key_bindings.toml index 7cdc565..9aa75e8 100644 --- a/example_resources/key_bindings/default_key_bindings.toml +++ b/example_resources/key_bindings/default_key_bindings.toml @@ -48,6 +48,8 @@ move_cursor_up = "Up" move_cursor_down = "Down" move_cursor_left = "Left" move_cursor_right = "Right" +move_cursor_line_start = "Home" +move_cursor_line_end = "End" # Navigation in tables, popups, up and down in the collections list [keybindings.generic.navigation] From eca7f2a47d2e6bfd4ecc3797a1eb360e7583bab7 Mon Sep 17 00:00:00 2001 From: Frank Wang <1454884738@qq.com> Date: Tue, 17 Sep 2024 16:18:47 -0500 Subject: [PATCH 3/3] home/end binding for all inputs --- .../key_bindings/default_key_bindings.toml | 2 + src/app/files/key_bindings.rs | 4 ++ src/tui/app_states.rs | 20 +++++++ src/tui/events.rs | 60 +++++++++++++++++++ src/tui/utils/stateful/text_input.rs | 7 +++ 5 files changed, 93 insertions(+) diff --git a/example_resources/key_bindings/default_key_bindings.toml b/example_resources/key_bindings/default_key_bindings.toml index 9aa75e8..8e5236a 100644 --- a/example_resources/key_bindings/default_key_bindings.toml +++ b/example_resources/key_bindings/default_key_bindings.toml @@ -25,6 +25,8 @@ delete_forward = "Backspace" move_cursor_left = "Left" move_cursor_right = "Right" +move_cursor_line_start = "Home" +move_cursor_line_end = "End" # Request body [keybindings.generic.text_inputs.text_area_mode.Custom] diff --git a/src/app/files/key_bindings.rs b/src/app/files/key_bindings.rs index 8232c8f..25b0033 100644 --- a/src/app/files/key_bindings.rs +++ b/src/app/files/key_bindings.rs @@ -51,6 +51,8 @@ nest! { pub move_cursor_left: KeyCombination, pub move_cursor_right: KeyCombination, + pub move_cursor_line_start: KeyCombination, + pub move_cursor_line_end: KeyCombination, }, /// Request body @@ -183,6 +185,8 @@ impl Default for KeyBindings { move_cursor_left: key!(left), move_cursor_right: key!(right), + move_cursor_line_start: key!(home), + move_cursor_line_end: key!(end), }, text_area_mode: TextAreaMode::Custom(CustomTextArea::default()), }, diff --git a/src/tui/app_states.rs b/src/tui/app_states.rs index f35007b..9d52349 100644 --- a/src/tui/app_states.rs +++ b/src/tui/app_states.rs @@ -389,6 +389,8 @@ impl AppState { EditingRequestUrlDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestUrlMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestUrlMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestUrlMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestUrlMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestUrlCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestParam => vec![ @@ -399,6 +401,8 @@ impl AppState { EditingRequestQueryParamDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestQueryParamMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestQueryParamMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestQueryParamMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestQueryParamMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestQueryParamCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestAuthUsername => vec![ @@ -409,6 +413,8 @@ impl AppState { EditingRequestAuthUsernameDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestAuthUsernameMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestAuthUsernameMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestAuthUsernameMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestAuthUsernameMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestAuthUsernameCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestAuthPassword => vec![ @@ -419,6 +425,8 @@ impl AppState { EditingRequestAuthPasswordDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestAuthPasswordMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestAuthPasswordMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestAuthPasswordMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestAuthPasswordMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestAuthPasswordCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestAuthBearerToken => vec![ @@ -429,6 +437,8 @@ impl AppState { EditingRequestAuthBearerTokenDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestAuthBearerTokenMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestAuthBearerTokenMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestAuthBearerTokenMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestAuthBearerTokenMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestAuthBearerTokenCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestHeader => vec![ @@ -439,6 +449,8 @@ impl AppState { EditingRequestHeaderDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestHeaderMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestHeaderMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestHeaderMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestHeaderMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestHeaderCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestBodyTable => vec![ @@ -449,6 +461,8 @@ impl AppState { EditingRequestBodyTableDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestBodyTableMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestBodyTableMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestBodyTableMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestBodyTableMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestBodyTableCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestBodyFile => vec![ @@ -459,6 +473,8 @@ impl AppState { EditingRequestBodyFileDeleteCharForward(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.delete_forward], "Delete char forward", Some("Backspace"))), EditingRequestBodyFileMoveCursorLeft(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_left], "Move cursor left", Some("Left"))), EditingRequestBodyFileMoveCursorRight(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_right], "Move cursor right", Some("Right"))), + EditingRequestBodyFileMoveCursorLineStart(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_start], "Move cursor line start", Some("Home"))), + EditingRequestBodyFileMoveCursorLineEnd(EventKeyBinding::new(vec![key_bindings.generic.text_inputs.text_input.move_cursor_line_end], "Move cursor line start", Some("Home"))), EditingRequestBodyFileCharInput(EventKeyBinding::new(vec![], "Char input", None)), ], EditingRequestBodyString => match key_bindings.generic.text_inputs.text_area_mode { @@ -514,6 +530,8 @@ impl AppState { EditingPreRequestScriptMoveCursorDown(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_down], "Down", Some("Down"))), EditingPreRequestScriptMoveCursorLeft(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_left], "Left", Some("Left"))), EditingPreRequestScriptMoveCursorRight(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_right], "Right", Some("Right"))), + EditingPreRequestScriptMoveCursorLineStart(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_line_start], "Line start", None)), + EditingPreRequestScriptMoveCursorLineEnd(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_line_end], "Line end", None)), EditingPreRequestScriptCharInput(EventKeyBinding::new(vec![], "Char input", None)), ] }, @@ -541,6 +559,8 @@ impl AppState { EditingPostRequestScriptMoveCursorDown(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_down], "Down", Some("Down"))), EditingPostRequestScriptMoveCursorLeft(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_left], "Left", Some("Left"))), EditingPostRequestScriptMoveCursorRight(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_right], "Right", Some("Right"))), + EditingPostRequestScriptMoveCursorLineStart(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_line_start], "Line start", None)), + EditingPostRequestScriptMoveCursorLineEnd(EventKeyBinding::new(vec![text_area_key_bindings.move_cursor_line_end], "Line end", None)), EditingPostRequestScriptCharInput(EventKeyBinding::new(vec![], "Char input", None)), ] } diff --git a/src/tui/events.rs b/src/tui/events.rs index 58704b9..06e80b0 100644 --- a/src/tui/events.rs +++ b/src/tui/events.rs @@ -163,6 +163,8 @@ pub enum AppEvent { EditingRequestUrlDeleteCharForward(EventKeyBinding), EditingRequestUrlMoveCursorLeft(EventKeyBinding), EditingRequestUrlMoveCursorRight(EventKeyBinding), + EditingRequestUrlMoveCursorLineStart(EventKeyBinding), + EditingRequestUrlMoveCursorLineEnd(EventKeyBinding), EditingRequestUrlCharInput(EventKeyBinding), ModifyRequestQueryParam(EventKeyBinding), @@ -170,6 +172,8 @@ pub enum AppEvent { EditingRequestQueryParamDeleteCharForward(EventKeyBinding), EditingRequestQueryParamMoveCursorLeft(EventKeyBinding), EditingRequestQueryParamMoveCursorRight(EventKeyBinding), + EditingRequestQueryParamMoveCursorLineStart(EventKeyBinding), + EditingRequestQueryParamMoveCursorLineEnd(EventKeyBinding), EditingRequestQueryParamCharInput(EventKeyBinding), /* Auth */ @@ -179,6 +183,8 @@ pub enum AppEvent { EditingRequestAuthUsernameDeleteCharForward(EventKeyBinding), EditingRequestAuthUsernameMoveCursorLeft(EventKeyBinding), EditingRequestAuthUsernameMoveCursorRight(EventKeyBinding), + EditingRequestAuthUsernameMoveCursorLineStart(EventKeyBinding), + EditingRequestAuthUsernameMoveCursorLineEnd(EventKeyBinding), EditingRequestAuthUsernameCharInput(EventKeyBinding), ModifyRequestAuthPassword(EventKeyBinding), @@ -186,6 +192,8 @@ pub enum AppEvent { EditingRequestAuthPasswordDeleteCharForward(EventKeyBinding), EditingRequestAuthPasswordMoveCursorLeft(EventKeyBinding), EditingRequestAuthPasswordMoveCursorRight(EventKeyBinding), + EditingRequestAuthPasswordMoveCursorLineStart(EventKeyBinding), + EditingRequestAuthPasswordMoveCursorLineEnd(EventKeyBinding), EditingRequestAuthPasswordCharInput(EventKeyBinding), ModifyRequestAuthBearerToken(EventKeyBinding), @@ -193,6 +201,8 @@ pub enum AppEvent { EditingRequestAuthBearerTokenDeleteCharForward(EventKeyBinding), EditingRequestAuthBearerTokenMoveCursorLeft(EventKeyBinding), EditingRequestAuthBearerTokenMoveCursorRight(EventKeyBinding), + EditingRequestAuthBearerTokenMoveCursorLineStart(EventKeyBinding), + EditingRequestAuthBearerTokenMoveCursorLineEnd(EventKeyBinding), EditingRequestAuthBearerTokenCharInput(EventKeyBinding), /* Headers */ @@ -202,6 +212,8 @@ pub enum AppEvent { EditingRequestHeaderDeleteCharForward(EventKeyBinding), EditingRequestHeaderMoveCursorLeft(EventKeyBinding), EditingRequestHeaderMoveCursorRight(EventKeyBinding), + EditingRequestHeaderMoveCursorLineStart(EventKeyBinding), + EditingRequestHeaderMoveCursorLineEnd(EventKeyBinding), EditingRequestHeaderCharInput(EventKeyBinding), /* Body */ @@ -211,6 +223,8 @@ pub enum AppEvent { EditingRequestBodyTableDeleteCharForward(EventKeyBinding), EditingRequestBodyTableMoveCursorLeft(EventKeyBinding), EditingRequestBodyTableMoveCursorRight(EventKeyBinding), + EditingRequestBodyTableMoveCursorLineStart(EventKeyBinding), + EditingRequestBodyTableMoveCursorLineEnd(EventKeyBinding), EditingRequestBodyTableCharInput(EventKeyBinding), ModifyRequestBodyFile(EventKeyBinding), @@ -218,6 +232,8 @@ pub enum AppEvent { EditingRequestBodyFileDeleteCharForward(EventKeyBinding), EditingRequestBodyFileMoveCursorLeft(EventKeyBinding), EditingRequestBodyFileMoveCursorRight(EventKeyBinding), + EditingRequestBodyFileMoveCursorLineStart(EventKeyBinding), + EditingRequestBodyFileMoveCursorLineEnd(EventKeyBinding), EditingRequestBodyFileCharInput(EventKeyBinding), EditingRequestBodyStringVimInput(EventKeyBinding), @@ -260,6 +276,8 @@ pub enum AppEvent { EditingPreRequestScriptMoveCursorDown(EventKeyBinding), EditingPreRequestScriptMoveCursorLeft(EventKeyBinding), EditingPreRequestScriptMoveCursorRight(EventKeyBinding), + EditingPreRequestScriptMoveCursorLineStart(EventKeyBinding), + EditingPreRequestScriptMoveCursorLineEnd(EventKeyBinding), EditingPreRequestScriptCharInput(EventKeyBinding), EditingPostRequestScriptVimInput(EventKeyBinding), @@ -279,6 +297,8 @@ pub enum AppEvent { EditingPostRequestScriptMoveCursorDown(EventKeyBinding), EditingPostRequestScriptMoveCursorLeft(EventKeyBinding), EditingPostRequestScriptMoveCursorRight(EventKeyBinding), + EditingPostRequestScriptMoveCursorLineStart(EventKeyBinding), + EditingPostRequestScriptMoveCursorLineEnd(EventKeyBinding), EditingPostRequestScriptCharInput(EventKeyBinding), /* Settings */ @@ -545,6 +565,8 @@ impl App<'_> { EditingRequestUrlDeleteCharForward(_) => self.url_text_input.delete_char_backward(), EditingRequestUrlMoveCursorLeft(_) => self.url_text_input.move_cursor_left(), EditingRequestUrlMoveCursorRight(_) => self.url_text_input.move_cursor_right(), + EditingRequestUrlMoveCursorLineStart(_) => self.url_text_input.move_cursor_line_start(), + EditingRequestUrlMoveCursorLineEnd(_) => self.url_text_input.move_cursor_line_end(), EditingRequestUrlCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.url_text_input.enter_char(char), _ => {} @@ -555,6 +577,8 @@ impl App<'_> { EditingRequestQueryParamDeleteCharForward(_) => self.query_params_table.selection_text_input.delete_char_backward(), EditingRequestQueryParamMoveCursorLeft(_) => self.query_params_table.selection_text_input.move_cursor_left(), EditingRequestQueryParamMoveCursorRight(_) => self.query_params_table.selection_text_input.move_cursor_right(), + EditingRequestQueryParamMoveCursorLineStart(_) => self.query_params_table.selection_text_input.move_cursor_line_start(), + EditingRequestQueryParamMoveCursorLineEnd(_) => self.query_params_table.selection_text_input.move_cursor_line_end(), EditingRequestQueryParamCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.query_params_table.selection_text_input.enter_char(char), _ => {} @@ -569,6 +593,8 @@ impl App<'_> { EditingRequestAuthUsernameDeleteCharForward(_) => self.auth_basic_username_text_input.delete_char_backward(), EditingRequestAuthUsernameMoveCursorLeft(_) => self.auth_basic_username_text_input.move_cursor_left(), EditingRequestAuthUsernameMoveCursorRight(_) => self.auth_basic_username_text_input.move_cursor_right(), + EditingRequestAuthUsernameMoveCursorLineStart(_) => self.auth_basic_username_text_input.move_cursor_line_start(), + EditingRequestAuthUsernameMoveCursorLineEnd(_) => self.auth_basic_username_text_input.move_cursor_line_end(), EditingRequestAuthUsernameCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.auth_basic_username_text_input.enter_char(char), _ => {} @@ -579,6 +605,8 @@ impl App<'_> { EditingRequestAuthPasswordDeleteCharForward(_) => self.auth_basic_password_text_input.delete_char_backward(), EditingRequestAuthPasswordMoveCursorLeft(_) => self.auth_basic_password_text_input.move_cursor_left(), EditingRequestAuthPasswordMoveCursorRight(_) => self.auth_basic_password_text_input.move_cursor_right(), + EditingRequestAuthPasswordMoveCursorLineStart(_) => self.auth_basic_password_text_input.move_cursor_line_start(), + EditingRequestAuthPasswordMoveCursorLineEnd(_) => self.auth_basic_password_text_input.move_cursor_line_end(), EditingRequestAuthPasswordCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.auth_basic_password_text_input.enter_char(char), _ => {} @@ -589,6 +617,8 @@ impl App<'_> { EditingRequestAuthBearerTokenDeleteCharForward(_) => self.auth_bearer_token_text_input.delete_char_backward(), EditingRequestAuthBearerTokenMoveCursorLeft(_) => self.auth_bearer_token_text_input.move_cursor_left(), EditingRequestAuthBearerTokenMoveCursorRight(_) => self.auth_bearer_token_text_input.move_cursor_right(), + EditingRequestAuthBearerTokenMoveCursorLineStart(_) => self.auth_bearer_token_text_input.move_cursor_line_start(), + EditingRequestAuthBearerTokenMoveCursorLineEnd(_) => self.auth_bearer_token_text_input.move_cursor_line_end(), EditingRequestAuthBearerTokenCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.auth_bearer_token_text_input.enter_char(char), _ => {} @@ -601,6 +631,8 @@ impl App<'_> { EditingRequestHeaderDeleteCharForward(_) => self.headers_table.selection_text_input.delete_char_backward(), EditingRequestHeaderMoveCursorLeft(_) => self.headers_table.selection_text_input.move_cursor_left(), EditingRequestHeaderMoveCursorRight(_) => self.headers_table.selection_text_input.move_cursor_right(), + EditingRequestHeaderMoveCursorLineStart(_) => self.headers_table.selection_text_input.move_cursor_line_start(), + EditingRequestHeaderMoveCursorLineEnd(_) => self.headers_table.selection_text_input.move_cursor_line_end(), EditingRequestHeaderCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.headers_table.selection_text_input.enter_char(char), _ => {} @@ -613,6 +645,8 @@ impl App<'_> { EditingRequestBodyTableDeleteCharForward(_) => self.body_form_table.selection_text_input.delete_char_backward(), EditingRequestBodyTableMoveCursorLeft(_) => self.body_form_table.selection_text_input.move_cursor_left(), EditingRequestBodyTableMoveCursorRight(_) => self.body_form_table.selection_text_input.move_cursor_right(), + EditingRequestBodyTableMoveCursorLineStart(_) => self.body_form_table.selection_text_input.move_cursor_line_start(), + EditingRequestBodyTableMoveCursorLineEnd(_) => self.body_form_table.selection_text_input.move_cursor_line_end(), EditingRequestBodyTableCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.body_form_table.selection_text_input.enter_char(char), _ => {} @@ -623,6 +657,8 @@ impl App<'_> { EditingRequestBodyFileDeleteCharForward(_) => self.body_file_text_input.delete_char_backward(), EditingRequestBodyFileMoveCursorLeft(_) => self.body_file_text_input.move_cursor_left(), EditingRequestBodyFileMoveCursorRight(_) => self.body_file_text_input.move_cursor_right(), + EditingRequestBodyFileMoveCursorLineStart(_) => self.body_file_text_input.move_cursor_line_start(), + EditingRequestBodyFileMoveCursorLineEnd(_) => self.body_file_text_input.move_cursor_line_end(), EditingRequestBodyFileCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.body_file_text_input.enter_char(char), _ => {} @@ -706,6 +742,8 @@ impl App<'_> { EditingPreRequestScriptMoveCursorDown(_) => self.script_console.pre_request_text_area.move_cursor(CursorMove::Bottom), EditingPreRequestScriptMoveCursorLeft(_) => self.script_console.pre_request_text_area.move_cursor(CursorMove::Back), EditingPreRequestScriptMoveCursorRight(_) => self.script_console.pre_request_text_area.move_cursor(CursorMove::Forward), + EditingPreRequestScriptMoveCursorLineStart(_) => self.script_console.pre_request_text_area.move_cursor(CursorMove::Head), + EditingPreRequestScriptMoveCursorLineEnd(_) => self.script_console.pre_request_text_area.move_cursor(CursorMove::End), EditingPreRequestScriptCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.script_console.pre_request_text_area.insert_char(char), _ => {} @@ -745,6 +783,8 @@ impl App<'_> { EditingPostRequestScriptMoveCursorDown(_) => self.script_console.post_request_text_area.move_cursor(CursorMove::Bottom), EditingPostRequestScriptMoveCursorLeft(_) => self.script_console.post_request_text_area.move_cursor(CursorMove::Back), EditingPostRequestScriptMoveCursorRight(_) => self.script_console.post_request_text_area.move_cursor(CursorMove::Forward), + EditingPostRequestScriptMoveCursorLineStart(_) => self.script_console.post_request_text_area.move_cursor(CursorMove::Head), + EditingPostRequestScriptMoveCursorLineEnd(_) => self.script_console.post_request_text_area.move_cursor(CursorMove::End), EditingPostRequestScriptCharInput(_) => match key { KeyCombination { codes: One(KeyCode::Char(char)), .. } => self.script_console.post_request_text_area.insert_char(char), _ => {} @@ -873,48 +913,64 @@ impl AppEvent { EditingRequestUrlDeleteCharForward(event_key_bindings) | EditingRequestUrlMoveCursorLeft(event_key_bindings) | EditingRequestUrlMoveCursorRight(event_key_bindings) | + EditingRequestUrlMoveCursorLineStart(event_key_bindings) | + EditingRequestUrlMoveCursorLineEnd(event_key_bindings) | EditingRequestUrlCharInput(event_key_bindings) | ModifyRequestQueryParam(event_key_bindings) | EditingRequestQueryParamDeleteCharBackward(event_key_bindings) | EditingRequestQueryParamDeleteCharForward(event_key_bindings) | EditingRequestQueryParamMoveCursorLeft(event_key_bindings) | EditingRequestQueryParamMoveCursorRight(event_key_bindings) | + EditingRequestQueryParamMoveCursorLineStart(event_key_bindings) | + EditingRequestQueryParamMoveCursorLineEnd(event_key_bindings) | EditingRequestQueryParamCharInput(event_key_bindings) | ModifyRequestAuthUsername(event_key_bindings) | EditingRequestAuthUsernameDeleteCharBackward(event_key_bindings) | EditingRequestAuthUsernameDeleteCharForward(event_key_bindings) | EditingRequestAuthUsernameMoveCursorLeft(event_key_bindings) | EditingRequestAuthUsernameMoveCursorRight(event_key_bindings) | + EditingRequestAuthUsernameMoveCursorLineStart(event_key_bindings) | + EditingRequestAuthUsernameMoveCursorLineEnd(event_key_bindings) | EditingRequestAuthUsernameCharInput(event_key_bindings) | ModifyRequestAuthPassword(event_key_bindings) | EditingRequestAuthPasswordDeleteCharBackward(event_key_bindings) | EditingRequestAuthPasswordDeleteCharForward(event_key_bindings) | EditingRequestAuthPasswordMoveCursorLeft(event_key_bindings) | EditingRequestAuthPasswordMoveCursorRight(event_key_bindings) | + EditingRequestAuthPasswordMoveCursorLineStart(event_key_bindings) | + EditingRequestAuthPasswordMoveCursorLineEnd(event_key_bindings) | EditingRequestAuthPasswordCharInput(event_key_bindings) | ModifyRequestAuthBearerToken(event_key_bindings) | EditingRequestAuthBearerTokenDeleteCharBackward(event_key_bindings) | EditingRequestAuthBearerTokenDeleteCharForward(event_key_bindings) | EditingRequestAuthBearerTokenMoveCursorLeft(event_key_bindings) | EditingRequestAuthBearerTokenMoveCursorRight(event_key_bindings) | + EditingRequestAuthBearerTokenMoveCursorLineStart(event_key_bindings) | + EditingRequestAuthBearerTokenMoveCursorLineEnd(event_key_bindings) | EditingRequestAuthBearerTokenCharInput(event_key_bindings) | ModifyRequestHeader(event_key_bindings) | EditingRequestHeaderDeleteCharBackward(event_key_bindings) | EditingRequestHeaderDeleteCharForward(event_key_bindings) | EditingRequestHeaderMoveCursorLeft(event_key_bindings) | EditingRequestHeaderMoveCursorRight(event_key_bindings) | + EditingRequestHeaderMoveCursorLineStart(event_key_bindings) | + EditingRequestHeaderMoveCursorLineEnd(event_key_bindings) | EditingRequestHeaderCharInput(event_key_bindings) | ModifyRequestBodyTable(event_key_bindings) | EditingRequestBodyTableDeleteCharBackward(event_key_bindings) | EditingRequestBodyTableDeleteCharForward(event_key_bindings) | EditingRequestBodyTableMoveCursorLeft(event_key_bindings) | EditingRequestBodyTableMoveCursorRight(event_key_bindings) | + EditingRequestBodyTableMoveCursorLineStart(event_key_bindings) | + EditingRequestBodyTableMoveCursorLineEnd(event_key_bindings) | EditingRequestBodyTableCharInput(event_key_bindings) | ModifyRequestBodyFile(event_key_bindings) | EditingRequestBodyFileDeleteCharBackward(event_key_bindings) | EditingRequestBodyFileDeleteCharForward(event_key_bindings) | EditingRequestBodyFileMoveCursorLeft(event_key_bindings) | EditingRequestBodyFileMoveCursorRight(event_key_bindings) | + EditingRequestBodyFileMoveCursorLineStart(event_key_bindings) | + EditingRequestBodyFileMoveCursorLineEnd(event_key_bindings) | EditingRequestBodyFileCharInput(event_key_bindings) | EditingRequestBodyStringVimInput(event_key_bindings) | EditingRequestBodyStringCopy(event_key_bindings) | @@ -951,6 +1007,8 @@ impl AppEvent { EditingPreRequestScriptMoveCursorDown(event_key_bindings) | EditingPreRequestScriptMoveCursorLeft(event_key_bindings) | EditingPreRequestScriptMoveCursorRight(event_key_bindings) | + EditingPreRequestScriptMoveCursorLineStart(event_key_bindings) | + EditingPreRequestScriptMoveCursorLineEnd(event_key_bindings) | EditingPreRequestScriptCharInput(event_key_bindings) | EditingPostRequestScriptVimInput(event_key_bindings) | EditingPostRequestScriptCopy(event_key_bindings) | @@ -968,6 +1026,8 @@ impl AppEvent { EditingPostRequestScriptMoveCursorDown(event_key_bindings) | EditingPostRequestScriptMoveCursorLeft(event_key_bindings) | EditingPostRequestScriptMoveCursorRight(event_key_bindings) | + EditingPostRequestScriptMoveCursorLineStart(event_key_bindings) | + EditingPostRequestScriptMoveCursorLineEnd(event_key_bindings) | EditingPostRequestScriptCharInput(event_key_bindings) | RequestSettingsMoveUp(event_key_bindings) | RequestSettingsMoveDown(event_key_bindings) | diff --git a/src/tui/utils/stateful/text_input.rs b/src/tui/utils/stateful/text_input.rs index f777cc1..f399ae7 100644 --- a/src/tui/utils/stateful/text_input.rs +++ b/src/tui/utils/stateful/text_input.rs @@ -18,6 +18,13 @@ impl TextInput { self.cursor_position = self.clamp_cursor(cursor_moved_right); } + pub fn move_cursor_line_start(&mut self) { + self.cursor_position = 0; + } + pub fn move_cursor_line_end(&mut self) { + self.cursor_position = self.text.len(); + } + pub fn enter_char(&mut self, new_char: char) { if !new_char.is_ascii() { return;