mirror of https://github.com/lapce/lapce.git
Add Insert and Delete keys
This commit is contained in:
parent
4a53cddbf2
commit
5d8978161a
|
@ -683,7 +683,7 @@ macro_rules! modval {
|
|||
}
|
||||
|
||||
// Generates ANSI sequences to move the cursor by one position.
|
||||
macro_rules! move_cursor_one {
|
||||
macro_rules! term_sequence {
|
||||
([], $evt:ident, $pre:literal, $post:literal) => {
|
||||
if $evt.mods.is_empty() {
|
||||
return Some(concat!($pre, $post));
|
||||
|
@ -691,21 +691,21 @@ macro_rules! move_cursor_one {
|
|||
};
|
||||
([all], $evt:ident, $pre:literal, $post:literal) => {
|
||||
{
|
||||
move_cursor_one!([], $evt, $pre, $post);
|
||||
move_cursor_one!([shift, alt, ctrl], $evt, $pre, $post);
|
||||
move_cursor_one!([alt | shift, ctrl | shift, alt | ctrl], $evt, $pre, $post);
|
||||
move_cursor_one!([alt | ctrl | shift], $evt, $pre, $post);
|
||||
term_sequence!([], $evt, $pre, $post);
|
||||
term_sequence!([shift, alt, ctrl], $evt, $pre, $post);
|
||||
term_sequence!([alt | shift, ctrl | shift, alt | ctrl], $evt, $pre, $post);
|
||||
term_sequence!([alt | ctrl | shift], $evt, $pre, $post);
|
||||
return None;
|
||||
}
|
||||
};
|
||||
([$($mod:ident)|+], $evt:ident, $pre:literal, $post:literal) => {
|
||||
if $evt.mods == modifiers!($($mod)|+) {
|
||||
return Some(concat!($pre, "1;", modval!($($mod)|+), $post));
|
||||
return Some(concat!($pre, ";", modval!($($mod)|+), $post));
|
||||
}
|
||||
};
|
||||
([$($($mod:ident)|+),+], $evt:ident, $pre:literal, $post:literal) => {
|
||||
$(
|
||||
move_cursor_one!([$($mod)|+], $evt, $pre, $post);
|
||||
term_sequence!([$($mod)|+], $evt, $pre, $post);
|
||||
)+
|
||||
};
|
||||
}
|
||||
|
@ -767,12 +767,14 @@ macro_rules! move_cursor_one {
|
|||
Key::Escape => Some("\x1b"),
|
||||
|
||||
// The following either expands to `\x1b[X` or `\x1b[1;NX` where N is a modifier value
|
||||
Key::ArrowUp => move_cursor_one!([all], key, "\x1b[", "A"),
|
||||
Key::ArrowDown => move_cursor_one!([all], key, "\x1b[", "B"),
|
||||
Key::ArrowRight => move_cursor_one!([all], key, "\x1b[", "C"),
|
||||
Key::ArrowLeft => move_cursor_one!([all], key, "\x1b[", "D"),
|
||||
Key::Home => move_cursor_one!([all], key, "\x1b[", "H"),
|
||||
Key::End => move_cursor_one!([all], key, "\x1b[", "F"),
|
||||
Key::ArrowUp => term_sequence!([all], key, "\x1b[1", "A"),
|
||||
Key::ArrowDown => term_sequence!([all], key, "\x1b[1", "B"),
|
||||
Key::ArrowRight => term_sequence!([all], key, "\x1b[1", "C"),
|
||||
Key::ArrowLeft => term_sequence!([all], key, "\x1b[1", "D"),
|
||||
Key::Home => term_sequence!([all], key, "\x1b[1", "H"),
|
||||
Key::End => term_sequence!([all], key, "\x1b[1", "F"),
|
||||
Key::Insert => term_sequence!([all], key, "\x1b[2", "~"),
|
||||
Key::Delete => term_sequence!([all], key, "\x1b[3", "~"),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue