SMOLNET PORTAL home about changes
iadd position marks (Ma/g'a) - 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 ce2bfb4d3a49a27bde7c8bbc6c6b1ef6f80054aa	/scm/gramscii/commit/ce2bfb4d3a49a27bde7c8bbc6c6b1ef6f80054aa.gph	bitreich.org	70
1parent 02c54fe6f289901f5b356ca98a81dec78fef4f36	/scm/gramscii/commit/02c54fe6f289901f5b356ca98a81dec78fef4f36.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Fri, 16 Aug 2019 23:43:24 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iadd position marks (Ma/g'a)	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M TODO                                |       2 ++	Err	bitreich.org	70
i  M gramscii.1                          |      48 ++++++++++++++++++++++++-------	Err	bitreich.org	70
i  M gramscii.c                          |       3 +++	Err	bitreich.org	70
i  M gramscii.h                          |       9 +++++++++	Err	bitreich.org	70
i  M screen.c                            |      37 ++++++++++++++++++++++++++++++-	Err	bitreich.org	70
i	Err	bitreich.org	70
i5 files changed, 88 insertions(+), 11 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,6 +1,7 @@	Err	bitreich.org	70
i + optimize redraws (redraw only the modified rectangle)	Err	bitreich.org	70
i - add screen geometry option (-g 25x80?)	Err	bitreich.org	70
i - (?)maybe move "text" mode to "t"	Err	bitreich.org	70
i+- implement trapezium	Err	bitreich.org	70
i - implement ellipse	Err	bitreich.org	70
i - (?) filled box (B)	Err	bitreich.org	70
i - (?) manage filled box character (as for other styles)	Err	bitreich.org	70
i@@ -13,6 +14,7 @@	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+* add position marks (Ma / g'a)	Err	bitreich.org	70
i * implement comment (#: ignore everything until the end of the line)	Err	bitreich.org	70
i * implement parallelogram mode (z/Z)	Err	bitreich.org	70
i * fix bug in reading commands from files	Err	bitreich.org	70
1diff --git a/gramscii.1 b/gramscii.1	/scm/gramscii/file/gramscii.1.gph	bitreich.org	70
i@@ -86,6 +86,17 @@ command).	Err	bitreich.org	70
i Load (edit) an existing file from disk, discarding any change to the	Err	bitreich.org	70
i current screen.	Err	bitreich.org	70
i .TP 5m	Err	bitreich.org	70
i+.BI M a	Err	bitreich.org	70
i+Mark (label) the current cursor position as 'a'. The label 'a' must be	Err	bitreich.org	70
i+one of the 26 ASCII alphabetic characters. The cursor can be moved to a	Err	bitreich.org	70
i+previously marked position using the global positioning command	Err	bitreich.org	70
i+.B g	Err	bitreich.org	70
i+(see below). Position marks are case-insensitive, meaning that both 	Err	bitreich.org	70
i+.I 'c'	Err	bitreich.org	70
i+and	Err	bitreich.org	70
i+.I 'C'	Err	bitreich.org	70
i+indicate the same mark.	Err	bitreich.org	70
i+.TP 5m	Err	bitreich.org	70
i .BI N	Err	bitreich.org	70
i Start a new empty screen. If the current screen has been modified since	Err	bitreich.org	70
i the last	Err	bitreich.org	70
i@@ -178,11 +189,13 @@ units at a time (defaults to 5, change LONG_STEP in config.h as you	Err	bitreich.org	70
i wish).	Err	bitreich.org	70
i .TP 5m	Err	bitreich.org	70
i .BI g	Err	bitreich.org	70
i-Initiate a global positioning command (go). These are two-letter	Err	bitreich.org	70
i-commands starting with a	Err	bitreich.org	70
i+Initiate a global positioning command (go). These are two- or	Err	bitreich.org	70
i+three-letter commands starting with a	Err	bitreich.org	70
i .BI g	Err	bitreich.org	70
i-and followed by a direction command or by a character that indicates a	Err	bitreich.org	70
i-global position, namely:	Err	bitreich.org	70
i+and followed by a direction command, or by a character that indicates a	Err	bitreich.org	70
i+global position, or by a valid position mark previously defined with 	Err	bitreich.org	70
i+.B M	Err	bitreich.org	70
i+and preceded by a single quote. In particular:	Err	bitreich.org	70
i .RS	Err	bitreich.org	70
i .TP 5m	Err	bitreich.org	70
i .BI h	Err	bitreich.org	70
i@@ -205,9 +218,24 @@ move the cursor to the bottom-right corner of the screen	Err	bitreich.org	70
i .TP 5m	Err	bitreich.org	70
i .BI m	Err	bitreich.org	70
i move the cursor to the middle of the screen.	Err	bitreich.org	70
i+.TP 5m	Err	bitreich.org	70
i+.BI 'a	Err	bitreich.org	70
i+(single-quote followed by a character) move the cursor to the position	Err	bitreich.org	70
i+previously marked (labelled) with character	Err	bitreich.org	70
i+.BI 'a'	Err	bitreich.org	70
i+by the command	Err	bitreich.org	70
i+.B M	Err	bitreich.org	70
i+(mark). The character 'a' must be one of the 26 ASCII alphabetic	Err	bitreich.org	70
i+characters. Notice that position marks are case-insensitive, so the two	Err	bitreich.org	70
i+commands:	Err	bitreich.org	70
i+.B g'b	Err	bitreich.org	70
i+and	Err	bitreich.org	70
i+.B g'B	Err	bitreich.org	70
i+move the cursor to the position mark associated to the letter 'b', if it	Err	bitreich.org	70
i+exists.	Err	bitreich.org	70
i .PP	Err	bitreich.org	70
i-For instance, if you want to move the cursor to the first row of the	Err	bitreich.org	70
i-current column, you would use the two-letter command 	Err	bitreich.org	70
i+If you want to move the cursor to the first row of the current	Err	bitreich.org	70
i+column, you could use the two-letter command 	Err	bitreich.org	70
i .B gk 	Err	bitreich.org	70
i (which can be read as "go-up"). Similarly, the command	Err	bitreich.org	70
i .B gh	Err	bitreich.org	70
i@@ -227,13 +255,13 @@ is equivalent to	Err	bitreich.org	70
i ).	Err	bitreich.org	70
i .PP	Err	bitreich.org	70
i Global positioning commands are available in 	Err	bitreich.org	70
i-.B box, arrow, visual,	Err	bitreich.org	70
i+.B box, arrow, visual, parallelogram, 	Err	bitreich.org	70
i and 	Err	bitreich.org	70
i .B erase	Err	bitreich.org	70
i mode. Notice that	Err	bitreich.org	70
i-.B gg, gG, 	Err	bitreich.org	70
i-and 	Err	bitreich.org	70
i-.B gm, 	Err	bitreich.org	70
i+.B gg, gG, gm 	Err	bitreich.org	70
i+and moves to position marks like	Err	bitreich.org	70
i+.B g'b, 	Err	bitreich.org	70
i are not available in 	Err	bitreich.org	70
i .B arrow	Err	bitreich.org	70
i mode.	Err	bitreich.org	70
1diff --git a/gramscii.c b/gramscii.c	/scm/gramscii/file/gramscii.c.gph	bitreich.org	70
i@@ -142,6 +142,9 @@ void commands(FILE *fc){	Err	bitreich.org	70
i                                         mode = REM;	Err	bitreich.org	70
i                                         get_comment(fc);	Err	bitreich.org	70
i                                         break;	Err	bitreich.org	70
i+                                case 'M':	Err	bitreich.org	70
i+                                        mark_pos(fc);	Err	bitreich.org	70
i+                                        break;	Err	bitreich.org	70
i                                 case 'q':	Err	bitreich.org	70
i                                         check_modified(fc);/** FALLTHROUGH **/	Err	bitreich.org	70
i                                 case 'Q':	Err	bitreich.org	70
1diff --git a/gramscii.h b/gramscii.h	/scm/gramscii/file/gramscii.h.gph	bitreich.org	70
i@@ -90,6 +90,11 @@ typedef struct{	Err	bitreich.org	70
i         line_t *l;	Err	bitreich.org	70
i } lineset_t;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+typedef struct{	Err	bitreich.org	70
i+        int x;	Err	bitreich.org	70
i+        int y;	Err	bitreich.org	70
i+} pos_t;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** MACROS **/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -105,6 +110,9 @@ 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+pos_t marks[26]; /* position marks */	Err	bitreich.org	70
i+char mark_map[26]; /* marks map */	Err	bitreich.org	70
i+	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@@ -175,6 +183,7 @@ 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 int _isblank(int c);	Err	bitreich.org	70
i+void mark_pos(FILE *fc);	Err	bitreich.org	70
i /**/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /** drawing-related functions **/	Err	bitreich.org	70
1diff --git a/screen.c b/screen.c	/scm/gramscii/file/screen.c.gph	bitreich.org	70
i@@ -301,6 +301,24 @@ void handle_goto(FILE *fc, char global){	Err	bitreich.org	70
i                                 go_to(MIDDLE);	Err	bitreich.org	70
i                         } else step = 0;	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i+                case '\'':	Err	bitreich.org	70
i+                        c = tolower(fgetc(fc));	Err	bitreich.org	70
i+                        if (global) {	Err	bitreich.org	70
i+                                dir = DIR_N;	Err	bitreich.org	70
i+                                if (isalpha(c) && mark_map[c - 'a']){	Err	bitreich.org	70
i+                                        x = marks[c - 'a'].x;	Err	bitreich.org	70
i+                                        y = marks[c - 'a'].y;	Err	bitreich.org	70
i+#ifdef DEBUG	Err	bitreich.org	70
i+                                        fprintf(stderr, "going to valid mark '%c' (%d, %d)\n", c, x, y);	Err	bitreich.org	70
i+#endif	Err	bitreich.org	70
i+                                }	Err	bitreich.org	70
i+#ifdef DEBUG	Err	bitreich.org	70
i+                                else 	Err	bitreich.org	70
i+                                        fprintf(stderr, "invalid mark '%c'\n", c);	Err	bitreich.org	70
i+#endif	Err	bitreich.org	70
i+                        } else step = 0;	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #ifdef DEBUG	Err	bitreich.org	70
i@@ -435,20 +453,23 @@ void init_screen(){	Err	bitreich.org	70
i         for (i=0; i<HEIGHT; i++){	Err	bitreich.org	70
i                 alloc_line(&(screen.l[i]));	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i+        /* init markers */	Err	bitreich.org	70
i         hlines_sz= sizeof(hlines) -1;	Err	bitreich.org	70
i         vlines_sz= sizeof(vlines) -1;	Err	bitreich.org	70
i         corners_sz = sizeof(corners) -1;	Err	bitreich.org	70
i         stmarks_sz = sizeof(st_marks) - 1;	Err	bitreich.org	70
i         endmarks_sz = sizeof(st_marks) - 1;	Err	bitreich.org	70
i         reset_styles();	Err	bitreich.org	70
i+        /* init undo ring */        	Err	bitreich.org	70
i         cutbuf.sz = 0;	Err	bitreich.org	70
i         cutbuf.l = NULL;	Err	bitreich.org	70
i         cutbuf.num = 0;	Err	bitreich.org	70
i-        	Err	bitreich.org	70
i         undo = NULL;	Err	bitreich.org	70
i         undo_sz = 0;	Err	bitreich.org	70
i         undo_cur = -2;	Err	bitreich.org	70
i         undo_lst = -2;	Err	bitreich.org	70
i+        /* init pos marks */	Err	bitreich.org	70
i+        memset(mark_map, 0, 26 * sizeof(char));	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void find_nonblank_rect(int *x1, int *y1, int *x2, int *y2){	Err	bitreich.org	70
i@@ -507,4 +528,18 @@ void crop_to_nonblank(){	Err	bitreich.org	70
i         redraw();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+/** position marks **/	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+void mark_pos(FILE *fc){	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        char c;	Err	bitreich.org	70
i+        c = tolower(fgetc(fc));	Err	bitreich.org	70
i+        if (isalpha(c)){	Err	bitreich.org	70
i+                marks[c - 'a'].x = x;	Err	bitreich.org	70
i+                marks[c - 'a'].y = y;	Err	bitreich.org	70
i+                mark_map[c - 'a'] = 1;	Err	bitreich.org	70
i+#ifdef DEBUG	Err	bitreich.org	70
i+                fprintf(stderr, "marking pos (%d, %d) as '%c'\n", x, y, c);	Err	bitreich.org	70
i+#endif	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/ce2bfb4d3a49a...
Content-Typetext/plain; charset=utf-8