fix(editor): store current cursor position correctly on initial undo
This commit is contained in:
parent
b1faa02049
commit
34bbfd49ad
1 changed files with 9 additions and 1 deletions
|
@ -482,6 +482,14 @@ pub const Editor = struct {
|
||||||
return meta.toOwnedSlice();
|
return meta.toOwnedSlice();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn store_current_undo_meta(self: *Self, a: Allocator) ![]u8 {
|
||||||
|
var meta = std.ArrayList(u8).init(a);
|
||||||
|
const writer = meta.writer();
|
||||||
|
for (self.cursels.items) |*cursel_| if (cursel_.*) |*cursel|
|
||||||
|
try cursel.write(writer);
|
||||||
|
return meta.toOwnedSlice();
|
||||||
|
}
|
||||||
|
|
||||||
fn update_buf(self: *Self, root: Buffer.Root) !void {
|
fn update_buf(self: *Self, root: Buffer.Root) !void {
|
||||||
const b = if (self.buffer) |p| p else return error.Stop;
|
const b = if (self.buffer) |p| p else return error.Stop;
|
||||||
var sfa = std.heap.stackFallback(512, self.a);
|
var sfa = std.heap.stackFallback(512, self.a);
|
||||||
|
@ -510,7 +518,7 @@ pub const Editor = struct {
|
||||||
self.cancel_all_matches();
|
self.cancel_all_matches();
|
||||||
var sfa = std.heap.stackFallback(512, self.a);
|
var sfa = std.heap.stackFallback(512, self.a);
|
||||||
const a = sfa.get();
|
const a = sfa.get();
|
||||||
const redo_meta = try self.store_undo_meta(a);
|
const redo_meta = try self.store_current_undo_meta(a);
|
||||||
defer a.free(redo_meta);
|
defer a.free(redo_meta);
|
||||||
const meta = b_mut.undo(redo_meta) catch |e| switch (e) {
|
const meta = b_mut.undo(redo_meta) catch |e| switch (e) {
|
||||||
error.Stop => {
|
error.Stop => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue