diff options
| author | 2024-02-21 23:00:48 +0200 | |
|---|---|---|
| committer | 2024-02-21 23:00:48 +0200 | |
| commit | 1786b9fea2a94924fe46c61c67811fdc919e0a0a (patch) | |
| tree | 3b9b58addeefc29942cd536d1e43ce7f867c7936 /src/KeyReader.zig | |
| parent | Zig update (diff) | |
| download | es-1786b9fea2a94924fe46c61c67811fdc919e0a0a.tar.gz es-1786b9fea2a94924fe46c61c67811fdc919e0a0a.tar.xz es-1786b9fea2a94924fe46c61c67811fdc919e0a0a.zip | |
Add functionality for skipping paragraphs up and down
Diffstat (limited to 'src/KeyReader.zig')
| -rw-r--r-- | src/KeyReader.zig | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/KeyReader.zig b/src/KeyReader.zig index 28e6dcb..5ddef82 100644 --- a/src/KeyReader.zig +++ b/src/KeyReader.zig | |||
| @@ -31,7 +31,7 @@ pub fn readKey(self: *KeyReader) Error!Key { | |||
| 31 | const reader = std.io.getStdIn().reader(); | 31 | const reader = std.io.getStdIn().reader(); |
| 32 | const char = try readByteBlocking(reader); | 32 | const char = try readByteBlocking(reader); |
| 33 | if (char == '\x1b') { | 33 | if (char == '\x1b') { |
| 34 | return self.readMetaKey(reader); | 34 | return self.readMetaKey(reader, true); |
| 35 | } else if (char == '\x9b') { | 35 | } else if (char == '\x9b') { |
| 36 | return self.readControlSequence(reader); | 36 | return self.readControlSequence(reader); |
| 37 | } else { | 37 | } else { |
| @@ -186,9 +186,11 @@ fn readControlSequence(self: *KeyReader, reader: File.Reader) !Key { | |||
| 186 | return Key.meta('['); | 186 | return Key.meta('['); |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | fn readMetaKey(self: *KeyReader, reader: File.Reader) Error!Key { | 189 | fn readMetaKey(self: *KeyReader, reader: File.Reader, canRecurse: bool) Error!Key { |
| 190 | if (try readByte(reader)) |char| { | 190 | if (try readByte(reader)) |char| { |
| 191 | if (char == '[') { | 191 | if (char == '\x1b' and canRecurse) { |
| 192 | return Key.meta(try self.readMetaKey(reader, false)); | ||
| 193 | } else if (char == '[') { | ||
| 192 | return self.readControlSequence(reader); | 194 | return self.readControlSequence(reader); |
| 193 | } else { | 195 | } else { |
| 194 | return Key.meta(char); | 196 | return Key.meta(char); |