summaryrefslogtreecommitdiff
path: root/src/KeyMap.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/KeyMap.zig')
-rw-r--r--src/KeyMap.zig20
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);