Handle '^\'. Minor code cleanup.
This commit is contained in:
parent
ed2906756b
commit
5d6456b582
1 changed files with 4 additions and 12 deletions
16
src/lib.rs
16
src/lib.rs
|
@ -290,9 +290,7 @@ pub fn run(
|
||||||
force_redraw = true;
|
force_redraw = true;
|
||||||
}
|
}
|
||||||
// Forward every char if in insert mode.
|
// Forward every char if in insert mode.
|
||||||
Key::Char(c) if buffer.visible => {
|
Key::Char(c) if buffer.visible => buffer.push(c),
|
||||||
buffer.push(c);
|
|
||||||
}
|
|
||||||
// Reset clock on 'r'.
|
// Reset clock on 'r'.
|
||||||
Key::Char('r') => {
|
Key::Char('r') => {
|
||||||
clock.reset();
|
clock.reset();
|
||||||
|
@ -322,25 +320,19 @@ pub fn run(
|
||||||
}
|
}
|
||||||
// Exit on q and ^C.
|
// Exit on q and ^C.
|
||||||
Key::Char('q') | Key::Ctrl('c') => break,
|
Key::Char('q') | Key::Ctrl('c') => break,
|
||||||
|
// Exit immediately on ^\.
|
||||||
|
Key::Ctrl('4') => process::exit(1),
|
||||||
// Force redraw on ^R.
|
// Force redraw on ^R.
|
||||||
Key::Ctrl('r') => force_redraw = true,
|
Key::Ctrl('r') => force_redraw = true,
|
||||||
// Suspend an ^Z.
|
// Suspend an ^Z.
|
||||||
Key::Ctrl('z') => {
|
Key::Ctrl('z') => {
|
||||||
suspend(&mut stdout)?;
|
suspend(&mut stdout)?;
|
||||||
// Clear SIGCONT, as we have already taken care to reset
|
|
||||||
// the terminal.
|
|
||||||
//signal.compare_and_swap(SIGCONT, 0, Ordering::Relaxed);
|
|
||||||
force_redraw = true;
|
force_redraw = true;
|
||||||
// Jump to the start of the main loop.
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
Key::Char(c) => {
|
Key::Char(c) => {
|
||||||
if c.is_ascii_digit() {
|
if c.is_ascii_digit() {
|
||||||
buffer.push(c);
|
buffer.push(c);
|
||||||
buffer.visible = true;
|
buffer.visible = true;
|
||||||
force_redraw = true;
|
|
||||||
} else if !buffer.is_empty() && c == ':' {
|
|
||||||
buffer.push(':');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Any other key.
|
// Any other key.
|
||||||
|
@ -429,7 +421,7 @@ fn suspend<W: Write>(stdout: &mut RawTerminal<W>) -> Result<(), std::io::Error>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
if let Err(error) = low_level::emulate_default_handler(SIGTSTP as i32) {
|
if let Err(error) = low_level::emulate_default_handler(SIGSTOP as i32) {
|
||||||
eprintln!("Error raising SIGTSTP: {}", error);
|
eprintln!("Error raising SIGTSTP: {}", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue