diff options
Diffstat (limited to 'src/KeyMap.zig')
| -rw-r--r-- | src/KeyMap.zig | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/KeyMap.zig b/src/KeyMap.zig index 110bc0b..1296f9e 100644 --- a/src/KeyMap.zig +++ b/src/KeyMap.zig | |||
| @@ -94,18 +94,24 @@ pub fn defaultMap(allocator: Allocator) !KeyMap { | |||
| 94 | try map.bind(&.{ Key.meta('g'), Key.char('g') }, Buffer.goToLine); | 94 | try map.bind(&.{ Key.meta('g'), Key.char('g') }, Buffer.goToLine); |
| 95 | 95 | ||
| 96 | // M-O <*> | 96 | // M-O <*> |
| 97 | // NOTE: These aren't meant to be real shortcuts, some terminal emulators output these for | ||
| 98 | // <home> and <end> and this was the easier way to configure them lol. | ||
| 97 | try map.bind(&.{ Key.meta('O'), Key.char('F') }, Buffer.moveEndOfLine); | 99 | try map.bind(&.{ Key.meta('O'), Key.char('F') }, Buffer.moveEndOfLine); |
| 98 | try map.bind(&.{ Key.meta('O'), Key.char('H') }, Buffer.moveBeginningOfLine); | 100 | try map.bind(&.{ Key.meta('O'), Key.char('H') }, Buffer.moveBeginningOfLine); |
| 99 | 101 | ||
| 100 | // C-x C-<*> | 102 | // C-x C-<*> |
| 103 | // TODO: C-x C-b should list all buffers instead; list-buffers | ||
| 101 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('b') }, Editor.switchBuffer); | 104 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('b') }, Editor.switchBuffer); |
| 102 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('c') }, Editor.saveBuffersExit); | 105 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('c') }, Editor.saveBuffersExit); |
| 103 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('f') }, Editor.openFile); | 106 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('f') }, Editor.openFile); |
| 104 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('s') }, Buffer.save); | 107 | try map.bind(&.{ Key.ctrl('x'), Key.ctrl('s') }, Buffer.save); |
| 108 | // TODO: C-x u undo | ||
| 109 | // TODO: C-x C-w write-file | ||
| 105 | 110 | ||
| 106 | // C-x <*> | 111 | // C-x <*> |
| 107 | try map.bind(&.{ Key.ctrl('x'), Key.char('b') }, Editor.switchBuffer); | 112 | try map.bind(&.{ Key.ctrl('x'), Key.char('b') }, Editor.switchBuffer); |
| 108 | // TODO: C-x h for help | 113 | // TODO: C-x h for help |
| 114 | // TODO: C-x i insert-file | ||
| 109 | try map.bind(&.{ Key.ctrl('x'), Key.char('k') }, Editor.killCurrentBuffer); | 115 | try map.bind(&.{ Key.ctrl('x'), Key.char('k') }, Editor.killCurrentBuffer); |
| 110 | 116 | ||
| 111 | // M-C-<*> | 117 | // M-C-<*> |
| @@ -120,6 +126,9 @@ pub fn defaultMap(allocator: Allocator) !KeyMap { | |||
| 120 | try map.bind(&.{Key.meta(Key.left)}, Buffer.backwardWord); | 126 | try map.bind(&.{Key.meta(Key.left)}, Buffer.backwardWord); |
| 121 | try map.bind(&.{Key.meta(Key.right)}, Buffer.forwardWord); | 127 | try map.bind(&.{Key.meta(Key.right)}, Buffer.forwardWord); |
| 122 | try map.bind(&.{Key.meta(Key.up)}, Buffer.backwardParagraph); | 128 | try map.bind(&.{Key.meta(Key.up)}, Buffer.backwardParagraph); |
| 129 | // TODO: M-% query-replace | ||
| 130 | try map.bind(&.{Key.meta('<')}, Buffer.beginningOfBuffer); | ||
| 131 | try map.bind(&.{Key.meta('>')}, Buffer.endOfBuffer); | ||
| 123 | try map.bind(&.{Key.meta('b')}, Buffer.backwardWord); | 132 | try map.bind(&.{Key.meta('b')}, Buffer.backwardWord); |
| 124 | try map.bind(&.{Key.meta('d')}, Buffer.deleteWord); | 133 | try map.bind(&.{Key.meta('d')}, Buffer.deleteWord); |
| 125 | try map.bind(&.{Key.meta('f')}, Buffer.forwardWord); | 134 | try map.bind(&.{Key.meta('f')}, Buffer.forwardWord); |
| @@ -128,9 +137,12 @@ pub fn defaultMap(allocator: Allocator) !KeyMap { | |||
| 128 | // M-O is taken | 137 | // M-O is taken |
| 129 | try map.bind(&.{Key.meta('p')}, Buffer.backwardParagraph); | 138 | try map.bind(&.{Key.meta('p')}, Buffer.backwardParagraph); |
| 130 | try map.bind(&.{Key.meta('v')}, Buffer.pageUp); | 139 | try map.bind(&.{Key.meta('v')}, Buffer.pageUp); |
| 140 | // TODO: M-w copy | ||
| 131 | 141 | ||
| 132 | // C-<*> | 142 | // C-<*> |
| 133 | try map.bind(&.{Key.ctrl(Key.backspace)}, Buffer.backwardDeleteWord); | 143 | // NOTE: Don't bind C-<backspace>, that ends up being the same as C-/ |
| 144 | // TODO: In the future maybe encode <backspace> outside of the character space | ||
| 145 | // try map.bind(&.{Key.ctrl(Key.backspace)}, Buffer.backwardDeleteWord); | ||
| 134 | try map.bind(&.{Key.ctrl(Key.delete)}, Buffer.deleteWord); | 146 | try map.bind(&.{Key.ctrl(Key.delete)}, Buffer.deleteWord); |
| 135 | try map.bind(&.{Key.ctrl(Key.down)}, Buffer.forwardParagraph); | 147 | try map.bind(&.{Key.ctrl(Key.down)}, Buffer.forwardParagraph); |
| 136 | try map.bind(&.{Key.ctrl(Key.end)}, Buffer.endOfBuffer); | 148 | try map.bind(&.{Key.ctrl(Key.end)}, Buffer.endOfBuffer); |
| @@ -138,8 +150,11 @@ pub fn defaultMap(allocator: Allocator) !KeyMap { | |||
| 138 | try map.bind(&.{Key.ctrl(Key.left)}, Buffer.backwardWord); | 150 | try map.bind(&.{Key.ctrl(Key.left)}, Buffer.backwardWord); |
| 139 | try map.bind(&.{Key.ctrl(Key.right)}, Buffer.forwardWord); | 151 | try map.bind(&.{Key.ctrl(Key.right)}, Buffer.forwardWord); |
| 140 | try map.bind(&.{Key.ctrl(Key.up)}, Buffer.backwardParagraph); | 152 | try map.bind(&.{Key.ctrl(Key.up)}, Buffer.backwardParagraph); |
| 153 | // TODO: C-@ | C-SPC set-mark | ||
| 154 | // TODO: C-_ | C-/ undo | ||
| 141 | try map.bind(&.{Key.ctrl('a')}, Buffer.moveBeginningOfLine); | 155 | try map.bind(&.{Key.ctrl('a')}, Buffer.moveBeginningOfLine); |
| 142 | try map.bind(&.{Key.ctrl('b')}, Buffer.backwardChar); | 156 | try map.bind(&.{Key.ctrl('b')}, Buffer.backwardChar); |
| 157 | // C-c is reserved to be tmux's prefix char | ||
| 143 | try map.bind(&.{Key.ctrl('d')}, Buffer.deleteChar); | 158 | try map.bind(&.{Key.ctrl('d')}, Buffer.deleteChar); |
| 144 | try map.bind(&.{Key.ctrl('e')}, Buffer.moveEndOfLine); | 159 | try map.bind(&.{Key.ctrl('e')}, Buffer.moveEndOfLine); |
| 145 | try map.bind(&.{Key.ctrl('f')}, Buffer.forwardChar); | 160 | try map.bind(&.{Key.ctrl('f')}, Buffer.forwardChar); |
| @@ -151,10 +166,13 @@ pub fn defaultMap(allocator: Allocator) !KeyMap { | |||
| 151 | try map.bind(&.{Key.ctrl('m')}, Buffer.insertNewline); // carriage return | 166 | try map.bind(&.{Key.ctrl('m')}, Buffer.insertNewline); // carriage return |
| 152 | try map.bind(&.{Key.ctrl('n')}, Buffer.nextLine); | 167 | try map.bind(&.{Key.ctrl('n')}, Buffer.nextLine); |
| 153 | try map.bind(&.{Key.ctrl('p')}, Buffer.previousLine); | 168 | try map.bind(&.{Key.ctrl('p')}, Buffer.previousLine); |
| 169 | // TODO: C-r backward-search | ||
| 154 | try map.bind(&.{Key.ctrl('s')}, es.search); | 170 | try map.bind(&.{Key.ctrl('s')}, es.search); |
| 155 | // TODO: C-q quotedInsert | 171 | // TODO: C-q quotedInsert |
| 156 | try map.bind(&.{Key.ctrl('v')}, Buffer.pageDown); | 172 | try map.bind(&.{Key.ctrl('v')}, Buffer.pageDown); |
| 173 | // TODO: C-w cut | ||
| 157 | // C-x is taken | 174 | // C-x is taken |
| 175 | // TODO: C-y paste | ||
| 158 | 176 | ||
| 159 | // <*> | 177 | // <*> |
| 160 | try map.bind(&.{Key.backspace}, Buffer.backwardDeleteChar); | 178 | try map.bind(&.{Key.backspace}, Buffer.backwardDeleteChar); |