@@ -100,6 +100,12 @@ pub type Keymaps = HashMap<Mode, Keymap>;
100100
101101#[macro_export]
102102macro_rules! key {
103+ ($key:ident) => {
104+ KeyEvent {
105+ code: KeyCode::$key,
106+ modifiers: KeyModifiers::NONE,
107+ }
108+ };
103109 ($($ch:tt)*) => {
104110 KeyEvent {
105111 code: KeyCode::Char($($ch)*),
@@ -133,22 +139,10 @@ pub fn default() -> Keymaps {
133139 key!('k') => commands::move_line_up,
134140 key!('l') => commands::move_char_right,
135141
136− KeyEvent {
137− code: KeyCode::Left,
138− modifiers: KeyModifiers::NONE
139− } => commands::move_char_left,
140− KeyEvent {
141− code: KeyCode::Down,
142− modifiers: KeyModifiers::NONE
143− } => commands::move_line_down,
144− KeyEvent {
145− code: KeyCode::Up,
146− modifiers: KeyModifiers::NONE
147− } => commands::move_line_up,
148− KeyEvent {
149− code: KeyCode::Right,
150− modifiers: KeyModifiers::NONE
151− } => commands::move_char_right,
142+ key!(Left) => commands::move_char_left,
143+ key!(Down) => commands::move_line_down,
144+ key!(Up) => commands::move_line_up,
145+ key!(Right) => commands::move_char_right,
152146
153147 key!('t') => commands::find_till_char,
154148 key!('f') => commands::find_next_char,
@@ -159,15 +153,8 @@ pub fn default() -> Keymaps {
159153 key!('r') => commands::replace,
160154 key!('R') => commands::replace_with_yanked,
161155
162− KeyEvent {
163− code: KeyCode::Home,
164− modifiers: KeyModifiers::NONE
165− } => commands::move_line_start,
166−
167− KeyEvent {
168− code: KeyCode::End,
169− modifiers: KeyModifiers::NONE
170− } => commands::move_line_end,
156+ key!(Home) => commands::move_line_start,
157+ key!(End) => commands::move_line_end,
171158
172159 key!('w') => commands::move_next_word_start,
173160 key!('b') => commands::move_prev_word_start,
@@ -255,19 +242,10 @@ pub fn default() -> Keymaps {
255242
256243 // C / altC = copy (repeat) selections on prev/next lines
257244
258− KeyEvent {
259− code: KeyCode::Esc,
260− modifiers: KeyModifiers::NONE
261− } => commands::normal_mode,
262− KeyEvent {
263− code: KeyCode::PageUp,
264− modifiers: KeyModifiers::NONE
265− } => commands::page_up,
245+ key!(Esc) => commands::normal_mode,
246+ key!(PageUp) => commands::page_up,
247+ key!(PageDown) => commands::page_down,
266248 ctrl!('b') => commands::page_up,
267− KeyEvent {
268− code: KeyCode::PageDown,
269− modifiers: KeyModifiers::NONE
270− } => commands::page_down,
271249 ctrl!('f') => commands::page_down,
272250 ctrl!('u') => commands::half_page_up,
273251 ctrl!('d') => commands::half_page_down,
@@ -280,10 +258,8 @@ pub fn default() -> Keymaps {
280258
281259 // z family for save/restore/combine from/to sels from register
282260
283− KeyEvent { // supposedly ctrl!('i') but did not work
284− code: KeyCode::Tab,
285− modifiers: KeyModifiers::NONE,
286− } => commands::jump_forward,
261+ // supposedly ctrl!('i') but did not work
262+ key!(Tab) => commands::jump_forward,
287263 ctrl!('o') => commands::jump_backward,
288264 // ctrl!('s') => commands::save_selection,
289265
@@ -303,22 +279,10 @@ pub fn default() -> Keymaps {
303279 key!('k') => commands::extend_line_up,
304280 key!('l') => commands::extend_char_right,
305281
306− KeyEvent {
307− code: KeyCode::Left,
308− modifiers: KeyModifiers::NONE
309− } => commands::extend_char_left,
310− KeyEvent {
311− code: KeyCode::Down,
312− modifiers: KeyModifiers::NONE
313− } => commands::extend_line_down,
314− KeyEvent {
315− code: KeyCode::Up,
316− modifiers: KeyModifiers::NONE
317− } => commands::extend_line_up,
318− KeyEvent {
319− code: KeyCode::Right,
320− modifiers: KeyModifiers::NONE
321− } => commands::extend_char_right,
282+ key!(Left) => commands::extend_char_left,
283+ key!(Down) => commands::extend_line_down,
284+ key!(Up) => commands::extend_line_up,
285+ key!(Right) => commands::extend_char_right,
322286
323287 key!('w') => commands::extend_next_word_start,
324288 key!('b') => commands::extend_prev_word_start,
@@ -329,18 +293,9 @@ pub fn default() -> Keymaps {
329293
330294 key!('T') => commands::extend_till_prev_char,
331295 key!('F') => commands::extend_prev_char,
332− KeyEvent {
333− code: KeyCode::Home,
334− modifiers: KeyModifiers::NONE
335− } => commands::extend_line_start,
336− KeyEvent {
337− code: KeyCode::End,
338− modifiers: KeyModifiers::NONE
339− } => commands::extend_line_end,
340− KeyEvent {
341− code: KeyCode::Esc,
342− modifiers: KeyModifiers::NONE
343− } => commands::exit_select_mode,
296+ key!(Home) => commands::extend_line_start,
297+ key!(End) => commands::extend_line_end,
298+ key!(Esc) => commands::exit_select_mode,
344299 )
345300 .into_iter(),
346301 );
@@ -351,26 +306,11 @@ pub fn default() -> Keymaps {
351306 Mode::Normal => normal,
352307 Mode::Select => select,
353308 Mode::Insert => hashmap!(
354− KeyEvent {
355− code: KeyCode::Esc,
356− modifiers: KeyModifiers::NONE
357− } => commands::normal_mode as Command,
358− KeyEvent {
359− code: KeyCode::Backspace,
360− modifiers: KeyModifiers::NONE
361− } => commands::insert::delete_char_backward,
362− KeyEvent {
363− code: KeyCode::Delete,
364− modifiers: KeyModifiers::NONE
365− } => commands::insert::delete_char_forward,
366− KeyEvent {
367− code: KeyCode::Enter,
368− modifiers: KeyModifiers::NONE
369− } => commands::insert::insert_newline,
370− KeyEvent {
371− code: KeyCode::Tab,
372− modifiers: KeyModifiers::NONE
373− } => commands::insert::insert_tab,
309+ key!(Esc) => commands::normal_mode as Command,
310+ key!(Backspace) => commands::insert::delete_char_backward,
311+ key!(Delete) => commands::insert::delete_char_forward,
312+ key!(Enter) => commands::insert::insert_newline,
313+ key!(Tab) => commands::insert::insert_tab,
374314
375315 ctrl!('x') => commands::completion,
376316 ctrl!('w') => commands::insert::delete_word_backward,