From: Michael D. Lowis Date: Thu, 17 Nov 2016 01:57:58 +0000 (-0500) Subject: implemented undo/redo shortcuts X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=a784e0658f83e0e9796a98f09c688f81805c0d9d;p=projs%2Ftide.git implemented undo/redo shortcuts --- diff --git a/inc/edit.h b/inc/edit.h index 23e7184..ce4d7ba 100644 --- a/inc/edit.h +++ b/inc/edit.h @@ -157,6 +157,8 @@ void view_insert(View* view, Rune rune); void view_delete(View* view); void view_bol(View* view); void view_eol(View* view); +void view_undo(View* view); +void view_redo(View* view); //size_t view_getoff(View* view, size_t pos, size_t row, size_t col); //void view_getsize(View* view, size_t* nrows, size_t* ncols); diff --git a/libedit/view.c b/libedit/view.c index 7bbcf60..bd026f3 100644 --- a/libedit/view.c +++ b/libedit/view.c @@ -283,3 +283,15 @@ void view_eol(View* view) { view->selection.col = buf_getcol(&(view->buffer), view->selection.end); view->sync_needed = true; } + +void view_undo(View* view) { + view->selection.beg = view->selection.end = buf_undo(&(view->buffer), view->selection.end); + view->selection.col = buf_getcol(&(view->buffer), view->selection.end); + view->sync_needed = true; +} + +void view_redo(View* view) { + view->selection.beg = view->selection.end = buf_redo(&(view->buffer), view->selection.end); + view->selection.col = buf_getcol(&(view->buffer), view->selection.end); + view->sync_needed = true; +} diff --git a/xedit.c b/xedit.c index 2d85f98..4b42a31 100644 --- a/xedit.c +++ b/xedit.c @@ -111,17 +111,15 @@ static void quit(void) { static void save(void) { buf_save(getbuf(EDIT)); } -// -//static void undo(void) { -// SelBeg = SelEnd = buf_undo(&Buffer, SelEnd); -// TargetCol = buf_getcol(&Buffer, SelEnd); -//} -// -//static void redo(void) { -// SelBeg = SelEnd = buf_redo(&Buffer, SelEnd); -// TargetCol = buf_getcol(&Buffer, SelEnd); -//} -// + +static void undo(void) { + view_undo(currview()); +} + +static void redo(void) { + view_redo(currview()); +} + //static void cut(void) { // char* str = buf_getstr(&Buffer, SelBeg, SelEnd); // cmdwrite(CopyCmd, str); @@ -237,8 +235,8 @@ static KeyBinding Insert[] = { { KEY_CTRL_T, change_focus }, { KEY_CTRL_Q, quit }, { KEY_CTRL_S, save }, - //{ KEY_CTRL_Z, undo }, - //{ KEY_CTRL_Y, redo }, + { KEY_CTRL_Z, undo }, + { KEY_CTRL_Y, redo }, //{ KEY_CTRL_X, cut }, //{ KEY_CTRL_C, copy }, //{ KEY_CTRL_V, paste },