Update to crossterm-0.25 (#3390)
This commit is contained in:
parent
d993c6349b
commit
18909aafe2
7 changed files with 34 additions and 6 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -152,9 +152,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossterm"
|
||||
version = "0.24.0"
|
||||
version = "0.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab9f7409c70a38a56216480fba371ee460207dd8926ccf5b4160591759559170"
|
||||
checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"crossterm_winapi",
|
||||
|
|
|
@ -38,7 +38,7 @@ which = "4.2"
|
|||
|
||||
tokio = { version = "1", features = ["rt", "rt-multi-thread", "io-util", "io-std", "time", "process", "macros", "fs", "parking_lot"] }
|
||||
tui = { path = "../helix-tui", package = "helix-tui", default-features = false, features = ["crossterm"] }
|
||||
crossterm = { version = "0.24", features = ["event-stream"] }
|
||||
crossterm = { version = "0.25", features = ["event-stream"] }
|
||||
signal-hook = "0.3"
|
||||
tokio-stream = "0.1"
|
||||
futures-util = { version = "0.3", features = ["std", "async-await"], default-features = false }
|
||||
|
|
|
@ -1253,6 +1253,7 @@ impl Component for EditorView {
|
|||
}
|
||||
|
||||
Event::Mouse(event) => self.handle_mouse_event(event, &mut cx),
|
||||
Event::FocusGained | Event::FocusLost => EventResult::Ignored(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ default = ["crossterm"]
|
|||
bitflags = "1.3"
|
||||
cassowary = "0.3"
|
||||
unicode-segmentation = "1.9"
|
||||
crossterm = { version = "0.24", optional = true }
|
||||
crossterm = { version = "0.25", optional = true }
|
||||
serde = { version = "1", "optional" = true, features = ["derive"]}
|
||||
helix-view = { version = "0.6", path = "../helix-view", features = ["term"] }
|
||||
helix-core = { version = "0.6", path = "../helix-core" }
|
||||
|
|
|
@ -19,7 +19,7 @@ anyhow = "1"
|
|||
helix-core = { version = "0.6", path = "../helix-core" }
|
||||
helix-lsp = { version = "0.6", path = "../helix-lsp" }
|
||||
helix-dap = { version = "0.6", path = "../helix-dap" }
|
||||
crossterm = { version = "0.24", optional = true }
|
||||
crossterm = { version = "0.25", optional = true }
|
||||
|
||||
# Conversion traits
|
||||
once_cell = "1.13"
|
||||
|
|
|
@ -8,6 +8,8 @@ pub use crate::keyboard::{KeyCode, KeyModifiers};
|
|||
|
||||
#[derive(Debug, PartialOrd, PartialEq, Eq, Clone, Copy, Hash)]
|
||||
pub enum Event {
|
||||
FocusGained,
|
||||
FocusLost,
|
||||
Key(KeyEvent),
|
||||
Mouse(MouseEvent),
|
||||
Resize(u16, u16),
|
||||
|
@ -57,6 +59,7 @@ pub enum MouseButton {
|
|||
pub struct KeyEvent {
|
||||
pub code: KeyCode,
|
||||
pub modifiers: KeyModifiers,
|
||||
// TODO: crossterm now supports kind & state if terminal supports kitty's extended protocol
|
||||
}
|
||||
|
||||
impl KeyEvent {
|
||||
|
@ -271,6 +274,11 @@ impl From<crossterm::event::Event> for Event {
|
|||
crossterm::event::Event::Key(key) => Self::Key(key.into()),
|
||||
crossterm::event::Event::Mouse(mouse) => Self::Mouse(mouse.into()),
|
||||
crossterm::event::Event::Resize(w, h) => Self::Resize(w, h),
|
||||
crossterm::event::Event::FocusGained => Self::FocusGained,
|
||||
crossterm::event::Event::FocusLost => Self::FocusLost,
|
||||
crossterm::event::Event::Paste(_) => {
|
||||
unreachable!("crossterm shouldn't emit Paste events without them being enabled")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -321,7 +329,11 @@ impl From<crossterm::event::MouseButton> for MouseButton {
|
|||
|
||||
#[cfg(feature = "term")]
|
||||
impl From<crossterm::event::KeyEvent> for KeyEvent {
|
||||
fn from(crossterm::event::KeyEvent { code, modifiers }: crossterm::event::KeyEvent) -> Self {
|
||||
fn from(
|
||||
crossterm::event::KeyEvent {
|
||||
code, modifiers, ..
|
||||
}: crossterm::event::KeyEvent,
|
||||
) -> Self {
|
||||
if code == crossterm::event::KeyCode::BackTab {
|
||||
// special case for BackTab -> Shift-Tab
|
||||
let mut modifiers: KeyModifiers = modifiers.into();
|
||||
|
@ -349,11 +361,15 @@ impl From<KeyEvent> for crossterm::event::KeyEvent {
|
|||
crossterm::event::KeyEvent {
|
||||
code: crossterm::event::KeyCode::BackTab,
|
||||
modifiers: modifiers.into(),
|
||||
kind: crossterm::event::KeyEventKind::Press,
|
||||
state: crossterm::event::KeyEventState::NONE,
|
||||
}
|
||||
} else {
|
||||
crossterm::event::KeyEvent {
|
||||
code: code.into(),
|
||||
modifiers: modifiers.into(),
|
||||
kind: crossterm::event::KeyEventKind::Press,
|
||||
state: crossterm::event::KeyEventState::NONE,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -147,6 +147,17 @@ impl From<crossterm::event::KeyCode> for KeyCode {
|
|||
CKeyCode::Char(character) => KeyCode::Char(character),
|
||||
CKeyCode::Null => KeyCode::Null,
|
||||
CKeyCode::Esc => KeyCode::Esc,
|
||||
CKeyCode::CapsLock
|
||||
| CKeyCode::ScrollLock
|
||||
| CKeyCode::NumLock
|
||||
| CKeyCode::PrintScreen
|
||||
| CKeyCode::Pause
|
||||
| CKeyCode::Menu
|
||||
| CKeyCode::KeypadBegin
|
||||
| CKeyCode::Media(_)
|
||||
| CKeyCode::Modifier(_) => unreachable!(
|
||||
"Shouldn't get this key without enabling DISAMBIGUATE_ESCAPE_CODES in crossterm"
|
||||
),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue