SMOLNET PORTAL home about changes
iadd undo in erase 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 08485aacd8d561f2650175b7a16211262396b2ce	/scm/gramscii/commit/08485aacd8d561f2650175b7a16211262396b2ce.gph	bitreich.org	70
1parent f660595c236a21555d3558dd51afae4a67d651a3	/scm/gramscii/commit/f660595c236a21555d3558dd51afae4a67d651a3.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Thu,  1 Aug 2019 11:26:12 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iadd undo in erase mode	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M TODO                                |      10 +++++-----	Err	bitreich.org	70
i  M draw.c                              |      16 ++++++++++++++--	Err	bitreich.org	70
i  M gramscii.1                          |      25 ++++++++++++++++++++-----	Err	bitreich.org	70
i  M screen.c                            |       2 +-	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 40 insertions(+), 13 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/TODO b/TODO	/scm/gramscii/file/TODO.gph	bitreich.org	70
i@@ -1,9 +1,4 @@	Err	bitreich.org	70
i + optimize redraws (redraw only the modified rectangle)	Err	bitreich.org	70
i-+ undo (by storing lines changed across insert/remove operations)	Err	bitreich.org	70
i-  * re-organise undo-ring management	Err	bitreich.org	70
i-  * add undo for arrow mode	Err	bitreich.org	70
i-  * add undo for text mode	Err	bitreich.org	70
i-  - add undo for erase mode	Err	bitreich.org	70
i - fix bug with 'g' commands in arrow mode	Err	bitreich.org	70
i - add screen geometry option (-g 25x80?)	Err	bitreich.org	70
i - read file at point	Err	bitreich.org	70
i@@ -23,6 +18,11 @@	Err	bitreich.org	70
i - allow scrolling (both vertical and horizontal)	Err	bitreich.org	70
i - catch SIGWINCH and react appropriately (after scrolling is 	Err	bitreich.org	70
i   enabled)	Err	bitreich.org	70
i+* undo (by storing lines changed across insert/remove operations)	Err	bitreich.org	70
i+  * re-organise undo-ring management	Err	bitreich.org	70
i+  * add undo for arrow mode	Err	bitreich.org	70
i+  * add undo for text mode	Err	bitreich.org	70
i+  * add undo for erase mode	Err	bitreich.org	70
i * visual selection	Err	bitreich.org	70
i   * crop-to-rectangle	Err	bitreich.org	70
i   * yank	Err	bitreich.org	70
1diff --git a/draw.c b/draw.c	/scm/gramscii/file/draw.c.gph	bitreich.org	70
i@@ -168,7 +168,6 @@ update_box:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void draw_arrow(int x, int y, char *a, int a_len, int fix){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        /* FIXME: copy affected lines to undo */	Err	bitreich.org	70
i         int i, j, cur_dir;	Err	bitreich.org	70
i         char line;	Err	bitreich.org	70
i         void (*f)(int, int, char);	Err	bitreich.org	70
i@@ -285,13 +284,24 @@ void erase(FILE *fc){	Err	bitreich.org	70
i         /*FIXME: add affected lines to undo */	Err	bitreich.org	70
i         char c;	Err	bitreich.org	70
i         int orig_x = x, orig_y = y;	Err	bitreich.org	70
i+        char first = 1, opened = 0;	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
i+                if (first || 	Err	bitreich.org	70
i+                    (y != orig_y && ! opened) ||	Err	bitreich.org	70
i+                    (y == orig_y && x != orig_x && !opened) ){	Err	bitreich.org	70
i+                        copy_lines_to_ring(MIN(y, orig_y), MAX(y, orig_y), PRV_STATE);	Err	bitreich.org	70
i+                        first = 0;	Err	bitreich.org	70
i+                        opened = 1;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i                 do_erase(orig_x, orig_y);	Err	bitreich.org	70
i+                if (y != orig_y && opened){	Err	bitreich.org	70
i+                        copy_lines_to_ring(MIN(y, orig_y), MAX(y, orig_y), NEW_STATE);	Err	bitreich.org	70
i+                        opened = 0;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i                 step = 1;	Err	bitreich.org	70
i                 modified = 1;	Err	bitreich.org	70
i                 orig_x = x;	Err	bitreich.org	70
i@@ -300,6 +310,8 @@ void erase(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 (opened)	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
1diff --git a/gramscii.1 b/gramscii.1	/scm/gramscii/file/gramscii.1.gph	bitreich.org	70
i@@ -26,6 +26,26 @@ available for further processing.	Err	bitreich.org	70
i .TP	Err	bitreich.org	70
i .BI -h	Err	bitreich.org	70
i Print short usage unstructions and exit.	Err	bitreich.org	70
i+.PP	Err	bitreich.org	70
i+If one or more files are provided after the last option, gramscii will	Err	bitreich.org	70
i+consider them command files and will read them one after the other	Err	bitreich.org	70
i+(i.e., as if the characters in the file were typed while gramscii was	Err	bitreich.org	70
i+running), before accepting commands from stdin. This allows to use	Err	bitreich.org	70
i+gramscii scripts. For instance, if you start gramscii as:	Err	bitreich.org	70
i+.EX	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+    gramscii file.txt	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+.EE	Err	bitreich.org	70
i+and  "file.txt" contains the lines:	Err	bitreich.org	70
i+.EX	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+    gg10lbLLJJb	Err	bitreich.org	70
i+    gg10l15jbLLJJ	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+.EE	Err	bitreich.org	70
i+then gramscii will show two boxes and then will start accepting	Err	bitreich.org	70
i+commands as usual. 	Err	bitreich.org	70
i .SH COMMANDS	Err	bitreich.org	70
i gramscii is a visual modal editor. Commands are associated to	Err	bitreich.org	70
i keystrokes, and keystrokes have different meaning in different modes.	Err	bitreich.org	70
i@@ -537,11 +557,6 @@ would automatically save the screen into "filename".	Err	bitreich.org	70
i 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-Undo commands are only available in box, visual (cut, fill), arrow, and	Err	bitreich.org	70
i-text 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 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 <katolaz@freaknet.org>. You can use, copy, modify, and redistribute	Err	bitreich.org	70
1diff --git a/screen.c b/screen.c	/scm/gramscii/file/screen.c.gph	bitreich.org	70
i@@ -445,7 +445,7 @@ void crop_to_rect(int x1, int y1, int x2, int y2){	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         for (i=0; i<= y2-y1; i ++){	Err	bitreich.org	70
i-                ensure_line_length(&(screen.l[i]), screen.l[i+y1].lst);	Err	bitreich.org	70
i+                ensure_line_length(&(screen.l[i]), screen.l[i+y1].lst+1);	Err	bitreich.org	70
i                 sprintf(screen.l[i].s, "%s", screen.l[i+y1].s + x1);	Err	bitreich.org	70
i                 screen.l[i].lst = screen.l[i+y1].lst - x1;	Err	bitreich.org	70
i         } 	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/08485aacd8d56...
Content-Typetext/plain; charset=utf-8