From 47d1e6211e1a59e14c61ed8ef61fba7c4548c238 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Thu, 22 Feb 2024 00:10:00 +0200 Subject: Add C- and C- --- TODO.md | 1 - src/Buffer.zig | 10 ++++++++++ src/KeyMap.zig | 4 ++++ src/KeyReader.zig | 1 + 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index c684760..8ef84ae 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,3 @@ -+ C-, C- + Copying + Undo + Nicer key-binding setup diff --git a/src/Buffer.zig b/src/Buffer.zig index 8cf7dc0..555ad1d 100644 --- a/src/Buffer.zig +++ b/src/Buffer.zig @@ -134,6 +134,11 @@ pub fn backwardWord(self: *Buffer) void { } } +pub fn beginningOfBuffer(self: *Buffer) void { + self.cx = 0; + self.cy = 0; +} + pub fn cleanWhiteSpace(self: *Buffer) !void { for (self.rows.items) |*row| { try row.cleanWhiteSpace(self); @@ -310,6 +315,11 @@ pub fn drawStatusBar(self: Buffer, writer: anytype, screencols: usize) !void { try writer.writeAll("\x1b[m\r\n"); } +pub fn endOfBuffer(self: *Buffer) void { + self.cx = 0; + self.cy = self.rows.items.len; +} + pub fn findBackwardWordStart(self: Buffer) usize { if (self.cy == self.rows.items.len) { return 0; diff --git a/src/KeyMap.zig b/src/KeyMap.zig index 15f5711..110bc0b 100644 --- a/src/KeyMap.zig +++ b/src/KeyMap.zig @@ -115,6 +115,8 @@ pub fn defaultMap(allocator: Allocator) !KeyMap { try map.bind(&.{Key.meta(Key.backspace)}, Buffer.backwardDeleteWord); try map.bind(&.{Key.meta(Key.delete)}, Buffer.deleteWord); try map.bind(&.{Key.meta(Key.down)}, Buffer.forwardParagraph); + try map.bind(&.{Key.meta(Key.end)}, Buffer.endOfBuffer); + try map.bind(&.{Key.meta(Key.home)}, Buffer.beginningOfBuffer); try map.bind(&.{Key.meta(Key.left)}, Buffer.backwardWord); try map.bind(&.{Key.meta(Key.right)}, Buffer.forwardWord); try map.bind(&.{Key.meta(Key.up)}, Buffer.backwardParagraph); @@ -131,6 +133,8 @@ pub fn defaultMap(allocator: Allocator) !KeyMap { try map.bind(&.{Key.ctrl(Key.backspace)}, Buffer.backwardDeleteWord); try map.bind(&.{Key.ctrl(Key.delete)}, Buffer.deleteWord); try map.bind(&.{Key.ctrl(Key.down)}, Buffer.forwardParagraph); + try map.bind(&.{Key.ctrl(Key.end)}, Buffer.endOfBuffer); + try map.bind(&.{Key.ctrl(Key.home)}, Buffer.beginningOfBuffer); try map.bind(&.{Key.ctrl(Key.left)}, Buffer.backwardWord); try map.bind(&.{Key.ctrl(Key.right)}, Buffer.forwardWord); try map.bind(&.{Key.ctrl(Key.up)}, Buffer.backwardParagraph); diff --git a/src/KeyReader.zig b/src/KeyReader.zig index 5ddef82..64536d1 100644 --- a/src/KeyReader.zig +++ b/src/KeyReader.zig @@ -75,6 +75,7 @@ fn modKey(key: Key, num: usize) ?Key { 6 => Key.shift(Key.ctrl(key)), 7 => Key.meta(Key.ctrl(key)), 8 => Key.shift(Key.meta(Key.ctrl(key))), + 9 => Key.meta(key), else => null, }; } -- cgit v1.2.3