@@ -0,0 +1,116 @@
1+use crossterm::event::{KeyEvent as Key, KeyModifiers as Modifiers};
2+use helix_core::commands::{self, Command};
3+use std::collections::HashMap;
17+// I = INSERT (start of line)
18+// o = open below (insert on new line below)
19+// O = open above (insert on new line above)
20+// p = paste (before cursor)
21+// P = PASTE (after cursor)
23+// [ = select to text object start (alt = select whole object)
24+// ] = select to text object end
25+// { = extend to inner object start
26+// } = extend to inner object end
28+// A = APPEND (end of line)
33+// g = goto (gg, G, gc, gd, etc)
35+// h = move_char_left(n)
36+// j = move_line_down(n)
37+// k = move_line_up(n)
38+// l = move_char_right(n)
40+// ; = collapse selection to cursor
42+// ` = convert case? (to lower) (alt = swap case)
43+// ~ = convert to upper case
44+// . = repeat last command
49+// % = select whole buffer (in vim = jump to matching bracket)
50+// * = search pattern in selection
51+// ( = rotate main selection backward
52+// ) = rotate main selection forward
53+// - = trim selections? (alt = merge contiguous sel together)
54+// @ = convert tabs to spaces
56+// ? = extend to next given regex match (alt = to prev)
58+// z = save selections
59+// Z = restore selections
62+// c = change selected text
63+// C = copy selection?
64+// v = view menu (viewport manipulation)
65+// b = select to previous word start
66+// B = select to previous WORD start
78+macro_rules! hashmap {
79+ (@single $($x:tt)*) => (());
80+ (@count $($rest:expr),*) => (<[()]>::len(&[$(hashmap!(@single $rest)),*]));
82+ ($($key:expr => $value:expr,)+) => { hashmap!($($key => $value),+) };
83+ ($($key:expr => $value:expr),*) => {
85+ let _cap = hashmap!(@count $($key),*);
86+ let mut _map = ::std::collections::HashMap::with_capacity(_cap);
88+ let _ = _map.insert($key, $value);
95+type Keymap = HashMap<Key, Command>;
97+fn default() -> Keymap {
101+ modifiers: Modifiers::NONE
102+ } => commands::move_char_left,
105+ modifiers: Modifiers::NONE
106+ } => commands::move_line_down,
109+ modifiers: Modifiers::NONE
110+ } => commands::move_line_up,
113+ modifiers: Modifiers::NONE
114+ } => commands::move_char_right,