tui textarea (#2051)

This commit is contained in:
pm100 2024-02-18 01:24:18 -08:00 committed by GitHub
parent 3439862854
commit b9a2e131f2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 680 additions and 553 deletions

12
Cargo.lock generated
View File

@ -740,6 +740,7 @@ dependencies = [
"struct-patch", "struct-patch",
"syntect", "syntect",
"tempfile", "tempfile",
"tui-textarea",
"unicode-segmentation", "unicode-segmentation",
"unicode-truncate", "unicode-truncate",
"unicode-width", "unicode-width",
@ -1703,6 +1704,17 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tui-textarea"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e38ced1f941a9cfc923fbf2fe6858443c42cc5220bfd35bdd3648371e7bd8e"
dependencies = [
"crossterm",
"ratatui",
"unicode-width",
]
[[package]] [[package]]
name = "unicode-bidi" name = "unicode-bidi"
version = "0.3.15" version = "0.3.15"

View File

@ -54,6 +54,7 @@ syntect = { version = "5.2", default-features = false, features = [
"default-themes", "default-themes",
"html", "html",
] } ] }
tui-textarea = "0.4.0"
unicode-segmentation = "1.11" unicode-segmentation = "1.11"
unicode-truncate = "0.2" unicode-truncate = "0.2"
unicode-width = "0.1" unicode-width = "0.1"

View File

@ -553,6 +553,12 @@ impl Component for CommitComponent {
self.options.borrow().has_commit_msg_history(), self.options.borrow().has_commit_msg_history(),
true, true,
)); ));
out.push(CommandInfo::new(
strings::commands::newline(&self.key_config),
true,
true,
));
} }
visibility_blocking(self) visibility_blocking(self)
@ -565,7 +571,7 @@ impl Component for CommitComponent {
} }
if let Event::Key(e) = ev { if let Event::Key(e) = ev {
if key_match(e, self.key_config.keys.enter) if key_match(e, self.key_config.keys.commit)
&& self.can_commit() && self.can_commit()
{ {
try_or_popup!( try_or_popup!(

File diff suppressed because it is too large Load Diff

View File

@ -120,6 +120,8 @@ pub struct KeysList {
pub view_submodule_parent: GituiKeyEvent, pub view_submodule_parent: GituiKeyEvent,
pub update_submodule: GituiKeyEvent, pub update_submodule: GituiKeyEvent,
pub commit_history_next: GituiKeyEvent, pub commit_history_next: GituiKeyEvent,
pub commit: GituiKeyEvent,
pub newline: GituiKeyEvent,
} }
#[rustfmt::skip] #[rustfmt::skip]
@ -209,6 +211,8 @@ impl Default for KeysList {
view_submodule_parent: GituiKeyEvent::new(KeyCode::Char('p'), KeyModifiers::empty()), view_submodule_parent: GituiKeyEvent::new(KeyCode::Char('p'), KeyModifiers::empty()),
update_submodule: GituiKeyEvent::new(KeyCode::Char('u'), KeyModifiers::empty()), update_submodule: GituiKeyEvent::new(KeyCode::Char('u'), KeyModifiers::empty()),
commit_history_next: GituiKeyEvent::new(KeyCode::Char('n'), KeyModifiers::CONTROL), commit_history_next: GituiKeyEvent::new(KeyCode::Char('n'), KeyModifiers::CONTROL),
commit: GituiKeyEvent::new(KeyCode::Enter, KeyModifiers::empty()),
newline: GituiKeyEvent::new(KeyCode::Char('r'), KeyModifiers::CONTROL),
} }
} }
} }

View File

@ -38,7 +38,6 @@ pub static POPUP_SUCCESS_COPY: &str = "Copied Text";
pub static POPUP_COMMIT_SHA_INVALID: &str = "Invalid commit sha"; pub static POPUP_COMMIT_SHA_INVALID: &str = "Invalid commit sha";
pub mod symbol { pub mod symbol {
pub const WHITESPACE: &str = "\u{00B7}"; //·
pub const CHECKMARK: &str = "\u{2713}"; //✓ pub const CHECKMARK: &str = "\u{2713}"; //✓
pub const SPACE: &str = "\u{02FD}"; //˽ pub const SPACE: &str = "\u{02FD}"; //˽
pub const EMPTY_SPACE: &str = " "; pub const EMPTY_SPACE: &str = " ";
@ -969,13 +968,24 @@ pub mod commands {
CommandText::new( CommandText::new(
format!( format!(
"Commit [{}]", "Commit [{}]",
key_config.get_hint(key_config.keys.enter), key_config.get_hint(key_config.keys.commit),
), ),
"commit (available when commit message is non-empty)", "commit (available when commit message is non-empty)",
CMD_GROUP_COMMIT_POPUP, CMD_GROUP_COMMIT_POPUP,
) )
.hide_help() .hide_help()
} }
pub fn newline(key_config: &SharedKeyConfig) -> CommandText {
CommandText::new(
format!(
"New line [{}]",
key_config.get_hint(key_config.keys.newline),
),
"create line break",
CMD_GROUP_COMMIT_POPUP,
)
.hide_help()
}
pub fn toggle_verify( pub fn toggle_verify(
key_config: &SharedKeyConfig, key_config: &SharedKeyConfig,
current_verify: bool, current_verify: bool,