]> git.mdlowis.com Git - projs/tide.git/commitdiff
implemented undo/redo shortcuts
authorMichael D. Lowis <mike@mdlowis.com>
Thu, 17 Nov 2016 01:57:58 +0000 (20:57 -0500)
committerMichael D. Lowis <mike@mdlowis.com>
Thu, 17 Nov 2016 01:57:58 +0000 (20:57 -0500)
inc/edit.h
libedit/view.c
xedit.c

index 23e718478265eda81f5a38ba8faf4d1e400d0223..ce4d7ba341595058cb7af31b7dad44c0cc8a9258 100644 (file)
@@ -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);
index 7bbcf605e16da8895e4e3bdb32855c771779b9b7..bd026f3c35c6807abd71a37584ed7da9419efac5 100644 (file)
@@ -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 2d85f98c6481b62a40ac83ef2daa42c317e80420..4b42a310734cdacd590397d8c8350f4aa7b9bed2 100644 (file)
--- 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         },