SMOLNET PORTAL home about changes
iadd undo in arrow 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 f660595c236a21555d3558dd51afae4a67d651a3	/scm/gramscii/commit/f660595c236a21555d3558dd51afae4a67d651a3.gph	bitreich.org	70
1parent 47996e708ad2ab7e6a18633576c95e93d08e816a	/scm/gramscii/commit/47996e708ad2ab7e6a18633576c95e93d08e816a.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Thu,  1 Aug 2019 09:56:13 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iadd undo in arrow mode	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M TODO                                |      14 +++++++-------	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                          |      57 +++++++++++++++++++++----------	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 54 insertions(+), 30 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,8 +1,8 @@	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 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@@ -18,16 +18,16 @@	Err	bitreich.org	70
i   + parse arrows (text-mode will allow movements as well)	Err	bitreich.org	70
i - (?) implement CTRL+G as abort (aside ESC)	Err	bitreich.org	70
i - (?) remove extra blanks until EOL when saving to file	Err	bitreich.org	70
i-+ visual selection	Err	bitreich.org	70
i-  - crop-to	Err	bitreich.org	70
i-  * yank	Err	bitreich.org	70
i-  * fill	Err	bitreich.org	70
i-  * cut 	Err	bitreich.org	70
i - manage special chars (DEL/CANC) during text insert	Err	bitreich.org	70
i   (also do not print unmanaged chars!)	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+* visual selection	Err	bitreich.org	70
i+  * crop-to-rectangle	Err	bitreich.org	70
i+  * yank	Err	bitreich.org	70
i+  * fill	Err	bitreich.org	70
i+  * cut 	Err	bitreich.org	70
i * put yanked content (p)	Err	bitreich.org	70
i * turn screen into a lineset	Err	bitreich.org	70
i * change alloc/ensure functions to work on line_t* and lineset_t*	Err	bitreich.org	70
1diff --git a/draw.c b/draw.c	/scm/gramscii/file/draw.c.gph	bitreich.org	70
i@@ -173,7 +173,7 @@ void draw_arrow(int x, int y, char *a, int a_len, int fix){	Err	bitreich.org	70
i         char line;	Err	bitreich.org	70
i         void (*f)(int, int, char);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-	Err	bitreich.org	70
i+        a_miny = a_maxy = y;	Err	bitreich.org	70
i         if (fix == FIX)	Err	bitreich.org	70
i                 f = set_xy;	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i@@ -198,6 +198,8 @@ void draw_arrow(int x, int y, char *a, int a_len, int fix){	Err	bitreich.org	70
i                         line = (a[i] & DIR_L) || (a[i] & DIR_R) ? line_h : line_v;	Err	bitreich.org	70
i                         x += progr_x(a[i]);	Err	bitreich.org	70
i                         y += progr_y(a[i]);	Err	bitreich.org	70
i+                        if (y < a_miny) a_miny = y;	Err	bitreich.org	70
i+                        if (y > a_maxy) a_maxy = y;	Err	bitreich.org	70
i                         f(x, y, line);	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 /* f(x,y,mark_end);*/	Err	bitreich.org	70
i@@ -250,8 +252,9 @@ 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+                copy_lines_to_ring(a_miny, a_maxy, PRV_STATE);	Err	bitreich.org	70
i                 draw_arrow(orig_x, orig_y, arrow, arrow_len, FIX);	Err	bitreich.org	70
i+                copy_lines_to_ring(a_miny, a_maxy, NEW_STATE);	Err	bitreich.org	70
i                 modified = 1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         redraw();	Err	bitreich.org	70
1diff --git a/gramscii.1 b/gramscii.1	/scm/gramscii/file/gramscii.1.gph	bitreich.org	70
i@@ -538,10 +538,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-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+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 arrow and erase mode. This will be fixed soon.	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/gramscii.h b/gramscii.h	/scm/gramscii/file/gramscii.h.gph	bitreich.org	70
i@@ -9,13 +9,16 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** constants **/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* modes */	Err	bitreich.org	70
i #define MOVE   0x00	Err	bitreich.org	70
i #define BOX    0x01	Err	bitreich.org	70
i #define ARROW  0x02	Err	bitreich.org	70
i #define TEXT   0x04	Err	bitreich.org	70
i #define DEL    0x08	Err	bitreich.org	70
i #define VIS    0x10	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* directions */	Err	bitreich.org	70
i #define DIR_N  0x00	Err	bitreich.org	70
i #define DIR_R  0x01	Err	bitreich.org	70
i #define DIR_U  0x02	Err	bitreich.org	70
i@@ -24,11 +27,12 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define DIR_HOR (DIR_R | DIR_L)	Err	bitreich.org	70
i #define DIR_VER (DIR_D | DIR_U)	Err	bitreich.org	70
i-	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define NOFIX 0x0	Err	bitreich.org	70
i #define FIX   0x1	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* markers */	Err	bitreich.org	70
i #define BG        ' '	Err	bitreich.org	70
i #define PTR       '+'	Err	bitreich.org	70
i #define UND       '_'	Err	bitreich.org	70
i@@ -36,21 +40,28 @@	Err	bitreich.org	70
i #define ARR_R     '>'	Err	bitreich.org	70
i #define ARR_U     '^'	Err	bitreich.org	70
i #define ARR_D     'v'	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* global positions */	Err	bitreich.org	70
i #define HOME   0x01	Err	bitreich.org	70
i #define END    0x02	Err	bitreich.org	70
i #define MIDDLE 0x04	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* video modes */	Err	bitreich.org	70
i #define VIDEO_NRM 0	Err	bitreich.org	70
i #define VIDEO_REV 7 	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* undo buffer elem types */	Err	bitreich.org	70
i #define PRV_STATE 0x01	Err	bitreich.org	70
i #define NEW_STATE 0x02	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** types **/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i typedef struct{	Err	bitreich.org	70
i-        int sz;/* allocated size*/	Err	bitreich.org	70
i+        int sz;/* allocated size */	Err	bitreich.org	70
i         int n;/* line number */	Err	bitreich.org	70
i         int lst;/* last visible char (before the first \0) */	Err	bitreich.org	70
i         char *s;	Err	bitreich.org	70
i@@ -75,45 +86,52 @@ typedef struct{	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** global variables **/ 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-lineset_t screen;	Err	bitreich.org	70
i-lineset_t cutbuf;	Err	bitreich.org	70
i-lineset_t *undo;	Err	bitreich.org	70
i+lineset_t screen; /* what is visualised */	Err	bitreich.org	70
i+lineset_t cutbuf; /* cut/paste buffer */	Err	bitreich.org	70
i+lineset_t *undo;  /* undo list */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-int undo_sz;	Err	bitreich.org	70
i-int undo_cur;	Err	bitreich.org	70
i-int undo_lst;	Err	bitreich.org	70
i+int undo_sz;/* allocated size of undo list*/	Err	bitreich.org	70
i+int undo_cur;/* undo position */	Err	bitreich.org	70
i+int undo_lst;/* last valid undo position */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i int WIDTH, HEIGHT;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-int mode;	Err	bitreich.org	70
i-int dir;	Err	bitreich.org	70
i+int mode;/* mode */	Err	bitreich.org	70
i+int dir;/* line direction */	Err	bitreich.org	70
i int x;	Err	bitreich.org	70
i int y;	Err	bitreich.org	70
i-int step;	Err	bitreich.org	70
i-int mult;	Err	bitreich.org	70
i+int step;/* current step */	Err	bitreich.org	70
i+int mult;/* current multiplier */	Err	bitreich.org	70
i int force_new;	Err	bitreich.org	70
i-char cursor;	Err	bitreich.org	70
i char corner;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* number of available markers for each type */	Err	bitreich.org	70
i int hlines_sz;	Err	bitreich.org	70
i int vlines_sz;	Err	bitreich.org	70
i int corners_sz;	Err	bitreich.org	70
i int stmarks_sz;	Err	bitreich.org	70
i int endmarks_sz;	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/* line and arrow markers */	Err	bitreich.org	70
i int cur_hl, cur_vl, cur_corn, cur_start, cur_end;	Err	bitreich.org	70
i char line_h;	Err	bitreich.org	70
i char line_v;	Err	bitreich.org	70
i char mark_st;	Err	bitreich.org	70
i char mark_end;	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-char modified;	Err	bitreich.org	70
i+char modified; /* set to 1 if screen modified since last save */ 	Err	bitreich.org	70
i char fname[256];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-char visual;	Err	bitreich.org	70
i-char silent;	Err	bitreich.org	70
i-char autoend;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+char silent; /* set to 1 in script-mode */	Err	bitreich.org	70
i+char autoend; /* set to 1 in auto-arrow mode */	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/* Used by draw_arrow to identify the bounding box */	Err	bitreich.org	70
i+int a_miny;	Err	bitreich.org	70
i+int a_maxy;	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i struct termios t1, t2, t3;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -141,6 +159,7 @@ void go_to(int where);	Err	bitreich.org	70
i void crop_to_nonblank();	Err	bitreich.org	70
i void crop_to_rect();	Err	bitreich.org	70
i void erase_blank_lines(int y1, int y2);	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** drawing-related functions **/	Err	bitreich.org	70
i int change_style(char c);	Err	bitreich.org	70
i@@ -152,15 +171,16 @@ 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 	Err	bitreich.org	70
i /** file-related functions **/	Err	bitreich.org	70
i void write_file(FILE *fc);	Err	bitreich.org	70
i void check_modified(FILE *fc);	Err	bitreich.org	70
i void load_file(FILE *fc);	Err	bitreich.org	70
i void new_file(FILE *fc);	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** line-related functions **/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i void dump_lines(lineset_t ls, FILE *f);	Err	bitreich.org	70
i void alloc_line(line_t *l);	Err	bitreich.org	70
i void ensure_line_length(line_t *l, int len);	Err	bitreich.org	70
i@@ -169,5 +189,6 @@ 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 invalidate_undo();	Err	bitreich.org	70
i+/**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/f660595c236a2...
Content-Typetext/plain; charset=utf-8