summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-02-21 22:16:56 +0200
committerGravatar Uko Kokņevičs2024-02-21 22:16:56 +0200
commit04166178a6fe2439273354d67d6495d24d214a59 (patch)
treee6996d8805eb00a5be87bac10ea09f47cb815f8f
parentFix untab crash (diff)
downloades-04166178a6fe2439273354d67d6495d24d214a59.tar.gz
es-04166178a6fe2439273354d67d6495d24d214a59.tar.xz
es-04166178a6fe2439273354d67d6495d24d214a59.zip
Proper line killing algo
-rw-r--r--src/Buffer.zig19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/Buffer.zig b/src/Buffer.zig
index 57ecd20..f9a1576 100644
--- a/src/Buffer.zig
+++ b/src/Buffer.zig
@@ -358,7 +358,24 @@ pub fn insertRow(self: *Buffer, at: usize, data: []const u8) !void {
358} 358}
359 359
360pub fn killLine(self: *Buffer) !void { 360pub fn killLine(self: *Buffer) !void {
361 return self.deleteRow(self.cy); 361 if (self.cy == self.rows.items.len) {
362 return;
363 }
364
365 var row = &self.rows.items[self.cy];
366 if (self.cx == row.data.items.len) {
367 if (self.cy == self.rows.items.len - 1) {
368 return;
369 }
370
371 try row.appendString(self, self.rows.items[self.cy+1].data.items);
372 self.deleteRow(self.cy + 1);
373 } else {
374 try row.data.resize(self.cx);
375 }
376
377 self.dirty = true;
378 return row.update(self);
362} 379}
363 380
364pub fn lineNumberDigits(self: Buffer) usize { 381pub fn lineNumberDigits(self: Buffer) usize {