isupport line-by-line undo in text mode - gramscii - A simple editor for ASCII box-and-arrow charts Err bitreich.org 70 1Log /scm/gramscii/log.gph bitreich.org 70 1Files /scm/gramscii/files.gph bitreich.org 70 1Refs /scm/gramscii/refs.gph bitreich.org 70 1Tags /scm/gramscii/tag bitreich.org 70 1README /scm/gramscii/file/README.md.gph bitreich.org 70 1LICENSE /scm/gramscii/file/COPYING.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 7f6e62f77bca73e49dfa260ff7ac75770d1363c8 /scm/gramscii/commit/7f6e62f77bca73e49dfa260ff7ac75770d1363c8.gph bitreich.org 70 1parent f3100ddd486d6f39b0c97c9c492bb6020bf3caf1 /scm/gramscii/commit/f3100ddd486d6f39b0c97c9c492bb6020bf3caf1.gph bitreich.org 70 hAuthor: KatolaZ URL:mailto:katolaz@freaknet.org bitreich.org 70 iDate: Wed, 31 Jul 2019 11:49:06 +0100 Err bitreich.org 70 i Err bitreich.org 70 isupport line-by-line undo in text mode Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M draw.c | 7 +++++++ Err bitreich.org 70 i M gramscii.1 | 6 +++--- Err bitreich.org 70 i M gramscii.h | 5 +++-- Err bitreich.org 70 i M lineset.c | 5 +++++ Err bitreich.org 70 i Err bitreich.org 70 i4 files changed, 18 insertions(+), 5 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/draw.c b/draw.c /scm/gramscii/file/draw.c.gph bitreich.org 70 i@@ -77,10 +77,13 @@ void get_text(FILE *fc){ Err bitreich.org 70 i int orig_x = x; Err bitreich.org 70 i Err bitreich.org 70 i redraw(); Err bitreich.org 70 i+ copy_lines_to_ring(y, y, PRV_STATE); Err bitreich.org 70 i while((c=fgetc(fc))!=EOF && c != 27){ Err bitreich.org 70 i if(c=='\n'){ Err bitreich.org 70 i set_cur(BG); Err bitreich.org 70 i+ copy_lines_to_ring(y,y, NEW_STATE); Err bitreich.org 70 i y += 1; Err bitreich.org 70 i+ copy_lines_to_ring(y, y, PRV_STATE); Err bitreich.org 70 i x = orig_x; Err bitreich.org 70 i } Err bitreich.org 70 i else { Err bitreich.org 70 i@@ -95,6 +98,8 @@ void get_text(FILE *fc){ Err bitreich.org 70 i status_bar(); Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i } Err bitreich.org 70 i+ if (modified) Err bitreich.org 70 i+ copy_lines_to_ring(y, y, NEW_STATE); Err bitreich.org 70 i mode=MOVE; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -245,6 +250,7 @@ update_arrow: Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i } Err bitreich.org 70 i if (c == 'a' || c == '\n'){ Err bitreich.org 70 i+ invalidate_undo(); Err bitreich.org 70 i draw_arrow(orig_x, orig_y, arrow, arrow_len, FIX); Err bitreich.org 70 i modified = 1; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -278,6 +284,7 @@ void erase(FILE *fc){ Err bitreich.org 70 i int orig_x = x, orig_y = y; Err bitreich.org 70 i status_bar(); Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i+ invalidate_undo(); Err bitreich.org 70 i while((c=fgetc(fc))!=EOF && c!=27 && c!= 'x' && c != '\n'){ Err bitreich.org 70 i if (!move_around(c, fc)) continue; Err bitreich.org 70 i check_bound(); Err bitreich.org 70 1diff --git a/gramscii.1 b/gramscii.1 /scm/gramscii/file/gramscii.1.gph bitreich.org 70 i@@ -534,10 +534,10 @@ gramscii currently manages only a fixed screen of the same size of the Err bitreich.org 70 i screen where it starts from. This will be changed in a future release to Err bitreich.org 70 i support scrolling and "virtual" screens of any (reasonable) size. Err bitreich.org 70 i .PP Err bitreich.org 70 i-gramscii currently does Err bitreich.org 70 i+Undo commands are only available in box, visual (cut, fill), and text Err bitreich.org 70 i+mode, and for copy/paste operations. gramscii currently does Err bitreich.org 70 i .B not Err bitreich.org 70 i-support "undo" commands for arrow, text, and erase mode. This will be Err bitreich.org 70 i-added soon. Err bitreich.org 70 i+support undo commands for arrow and erase mode. This will be fixed soon. Err bitreich.org 70 i .SH AUTHORS Err bitreich.org 70 i gramscii is written and maintained by Vincenzo "KatolaZ" Nicosia Err bitreich.org 70 i . You can use, copy, modify, and redistribute Err bitreich.org 70 1diff --git a/gramscii.h b/gramscii.h /scm/gramscii/file/gramscii.h.gph bitreich.org 70 i@@ -149,6 +149,8 @@ void get_arrow(FILE *fc); Err bitreich.org 70 i void erase(FILE *fc); Err bitreich.org 70 i void visual_box(FILE *fc); Err bitreich.org 70 i void paste(); Err bitreich.org 70 i+void undo_change(); Err bitreich.org 70 i+void redo_change(); Err bitreich.org 70 i Err bitreich.org 70 i /** file-related functions **/ Err bitreich.org 70 i void write_file(FILE *fc); Err bitreich.org 70 i@@ -165,7 +167,6 @@ void ensure_num_lines(lineset_t *ls, int n); Err bitreich.org 70 i void yank_region(int x1, int y1, int x2, int y2); Err bitreich.org 70 i void paste_region(int x1, int y1); Err bitreich.org 70 i void copy_lines_to_ring(int y1, int y2, int which); Err bitreich.org 70 i-void undo_change(); Err bitreich.org 70 i-void redo_change(); Err bitreich.org 70 i+void invalidate_undo(); Err bitreich.org 70 i Err bitreich.org 70 i #endif Err bitreich.org 70 1diff --git a/lineset.c b/lineset.c /scm/gramscii/file/lineset.c.gph bitreich.org 70 i@@ -171,3 +171,8 @@ void copy_lines_to_ring(int y1, int y2, int which){ Err bitreich.org 70 i } Err bitreich.org 70 i #endif Err bitreich.org 70 i } Err bitreich.org 70 i+ Err bitreich.org 70 i+void invalidate_undo(){ Err bitreich.org 70 i+ if (undo_lst > undo_cur) Err bitreich.org 70 i+ undo_lst = undo_cur; Err bitreich.org 70 i+} Err bitreich.org 70 .