sim

the sim text editor
git clone git://ssnf.xyz/sim
Log | Files | Refs | README

commit e5f164eb8cb1dd73aa3840943abc9928d3a0d4fb
parent 4ae2a4ff3a376d8f04b13f455454a358d3fe90a6
Author: ssnf <ssnf@ssnf.xyz>
Date:   Thu, 30 Jan 2025 22:30:26 +0000

add full undo/redo commands

Diffstat:
Mconfig.def.h | 6++++--
Msim.c | 10++++++++++
2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/config.def.h b/config.def.h @@ -54,7 +54,9 @@ Key keys[] = { { '?', search, '?' }, { 'n', search, 'n' }, { 'N', search, 'N' }, - { 'u', undo }, - { Ctrl + 'r', redo }, + { 'u', undo, 0 }, + { 'U', undo, 1 }, + { Ctrl + 'r', redo, 0 }, + { 'R', redo, 1 }, { 'y', yank } }; diff --git a/sim.c b/sim.c @@ -409,6 +409,11 @@ redo(int arg) { if (f->i == buf->n - 1) return; + if (arg) { + for (;f->i != buf->n - 1;) + redo(0); + return; + } if (buf->ds[++f->i].n) str_delete( &f->s, buf->p0[f->i], buf->p0[f->i] + buf->ds[f->i].n @@ -1112,6 +1117,11 @@ undo(int arg) { if (f->i < 0) return; + if (arg) { + for (;f->i != -1;) + undo(0); + return; + } if (buf->is[f->i].n) str_delete( &f->s, buf->p0[f->i], buf->p0[f->i] + buf->is[f->i].n