diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Buffer.zig | 19 |
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 | ||
| 360 | pub fn killLine(self: *Buffer) !void { | 360 | pub 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 | ||
| 364 | pub fn lineNumberDigits(self: Buffer) usize { | 381 | pub fn lineNumberDigits(self: Buffer) usize { |