istyle change in box and arrow modes + fix manpage - 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 4cb5948229fea24c9a2eb3413d6dbe53613bada7 /scm/gramscii/commit/4cb5948229fea24c9a2eb3413d6dbe53613bada7.gph bitreich.org 70 1parent 2e1d9e58798f35b1861862d5dcff8088aab4edea /scm/gramscii/commit/2e1d9e58798f35b1861862d5dcff8088aab4edea.gph bitreich.org 70 hAuthor: KatolaZ URL:mailto:katolaz@freaknet.org bitreich.org 70 iDate: Sun, 21 Jul 2019 00:11:03 +0100 Err bitreich.org 70 i Err bitreich.org 70 istyle change in box and arrow modes + fix manpage Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M TODO | 13 ++++++++++++- Err bitreich.org 70 i M gramscii.1 | 19 ++++++++++++++----- Err bitreich.org 70 i M gramscii.c | 145 +++++++++++++++++-------------- Err bitreich.org 70 i Err bitreich.org 70 i3 files changed, 108 insertions(+), 69 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,17 @@ Err bitreich.org 70 i + optimize redraws (i.e., avoid to redraw if possible) Err bitreich.org 70 i-- (?) change cursor shape according to action Err bitreich.org 70 i+- move configs in config.h Err bitreich.org 70 i+- add Makefile Err bitreich.org 70 i - auto-arrow 'A' (automatic end-char) Err bitreich.org 70 i - change screen management (i.e., use an array of lines) Err bitreich.org 70 i - read file at point Err bitreich.org 70 i+- parse control characters 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+- change "g" command: Err bitreich.org 70 i+ - g-g (goto top-left) Err bitreich.org 70 i+ - g-G (goto bottom-right) Err bitreich.org 70 i+ - g-m (goto middle) Err bitreich.org 70 i+ - g-[hjkl] (goto leftmost, bottom, top, rightmost) Err bitreich.org 70 i + visual selection Err bitreich.org 70 i - crop Err bitreich.org 70 i - yank/put Err bitreich.org 70 i@@ -13,6 +22,8 @@ Err bitreich.org 70 i (also do not print unmanaged chars!) Err bitreich.org 70 i - get screen geometry Err bitreich.org 70 i - allow scrolling (both vertical and horizontal) Err bitreich.org 70 i+* move style commands in a separate function Err bitreich.org 70 i+ (and allow style change in all the modes...) Err bitreich.org 70 i * add "vis" (for visual) in mode strings Err bitreich.org 70 i * implement "." to reset styles to defaults. Err bitreich.org 70 i * load from file Err bitreich.org 70 1diff --git a/gramscii.1 b/gramscii.1 /scm/gramscii/file/gramscii.1.gph bitreich.org 70 i@@ -17,7 +17,9 @@ keystrokes, and keystrokes have different meaning in different modes. Err bitreich.org 70 i The default mode is Err bitreich.org 70 i .B move Err bitreich.org 70 i mode, which allows the user to move the cursor around the screen. Err bitreich.org 70 i-Exiting from any other mode automatically puts gramscii in Err bitreich.org 70 i+Exiting from any other mode (either via pressing Err bitreich.org 70 i+.B [ESC] Err bitreich.org 70 i+or by toggling the current mode) automatically puts gramscii in Err bitreich.org 70 i .B move Err bitreich.org 70 i mode. There are four classes of commands in gramscii, namely Err bitreich.org 70 i .B GENERAL, Err bitreich.org 70 i@@ -195,7 +197,9 @@ while in Err bitreich.org 70 i .BI erase Err bitreich.org 70 i mode, the current erase operation is aborted. Press Err bitreich.org 70 i .B x Err bitreich.org 70 i-again to make the erase permanent. Err bitreich.org 70 i+again to make the erase permanent and return to Err bitreich.org 70 i+.B move Err bitreich.org 70 i+mode. Err bitreich.org 70 i .TP 7m Err bitreich.org 70 i .BI i Err bitreich.org 70 i Enter Err bitreich.org 70 i@@ -255,8 +259,13 @@ mode. Err bitreich.org 70 i .RE Err bitreich.org 70 i Err bitreich.org 70 i .SS STYLES Err bitreich.org 70 i-The following commands can be used to customise the style of lines, Err bitreich.org 70 i-corners, and arrow start and end points: Err bitreich.org 70 i+The style of lines, corners and markers can be changed at any time while Err bitreich.org 70 i+in Err bitreich.org 70 i+.B move, Err bitreich.org 70 i+.B box, Err bitreich.org 70 i+and Err bitreich.org 70 i+.B arrow Err bitreich.org 70 i+mode. The following style commands are available: Err bitreich.org 70 i .TP 5m Err bitreich.org 70 i .B . Err bitreich.org 70 i (dot) Reset all styles to their default values. Err bitreich.org 70 i@@ -362,7 +371,7 @@ would automatically save the screen into "filename". Err bitreich.org 70 i .SH BUGS Err bitreich.org 70 i gramscii currently manages only a fixed screen of 25 rows by 100 Err bitreich.org 70 i columns. This will be changed in a future release to support scrolling Err bitreich.org 70 i-and "virtual" screen of any (reasonable) size. Err bitreich.org 70 i+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 .B not Err bitreich.org 70 1diff --git a/gramscii.c b/gramscii.c /scm/gramscii/file/gramscii.c.gph bitreich.org 70 i@@ -362,6 +362,33 @@ void toggle_end_mark(){ Err bitreich.org 70 i mark_end = end_marks[cur_end]; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+int change_style(char c){ Err bitreich.org 70 i+ switch(c){ Err bitreich.org 70 i+ case '-': Err bitreich.org 70 i+ toggle_hline(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '|': Err bitreich.org 70 i+ toggle_vline(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '+': Err bitreich.org 70 i+ toggle_corner(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '<': Err bitreich.org 70 i+ toggle_st_mark(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '>': Err bitreich.org 70 i+ toggle_end_mark(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '.': Err bitreich.org 70 i+ reset_styles(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ return c; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+ Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i /***** text, box, arrows *****/ Err bitreich.org 70 i@@ -430,10 +457,14 @@ void get_box(){ Err bitreich.org 70 i step = 1; Err bitreich.org 70 i draw_box(x,y,NOFIX); Err bitreich.org 70 i while((c=getchar())!=EOF && c != 27 && c!= 'b'){ Err bitreich.org 70 i- if (!move_around(c)) continue; Err bitreich.org 70 i+ if (change_style(c)) Err bitreich.org 70 i+ goto update_box; Err bitreich.org 70 i+ if (!move_around(c)) Err bitreich.org 70 i+ continue; Err bitreich.org 70 i check_bound(); Err bitreich.org 70 i redraw(); Err bitreich.org 70 i step = 1; Err bitreich.org 70 i+update_box: Err bitreich.org 70 i draw_box(orig_x, orig_y, NOFIX); Err bitreich.org 70 i status_bar(); Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i@@ -504,7 +535,10 @@ void get_arrow(){ Err bitreich.org 70 i step = 1; Err bitreich.org 70 i draw_arrow(x,y, arrow, 0, NOFIX); Err bitreich.org 70 i while((c=getchar())!=EOF && c != 27 && c!= 'a'){ Err bitreich.org 70 i- if (!move_around(c)) continue; Err bitreich.org 70 i+ if (change_style(c)) Err bitreich.org 70 i+ goto update_arrow; Err bitreich.org 70 i+ if (!move_around(c)) Err bitreich.org 70 i+ continue; Err bitreich.org 70 i check_bound(); Err bitreich.org 70 i /* FIXME: if we are out of bound, do nothing? */ Err bitreich.org 70 i if (arrow_len == arrow_sz){ Err bitreich.org 70 i@@ -515,6 +549,7 @@ void get_arrow(){ Err bitreich.org 70 i arrow[arrow_len++] = step; Err bitreich.org 70 i redraw(); Err bitreich.org 70 i step = 1; Err bitreich.org 70 i+update_arrow: Err bitreich.org 70 i draw_arrow(orig_x, orig_y, arrow, arrow_len, NOFIX); Err bitreich.org 70 i status_bar(); Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i@@ -701,67 +736,51 @@ void commands(){ Err bitreich.org 70 i Err bitreich.org 70 i char c; Err bitreich.org 70 i while((c=getchar())!=EOF){ Err bitreich.org 70 i- if (!move_around(c)) switch(c){ Err bitreich.org 70 i- case 'i': Err bitreich.org 70 i- state = TEXT; Err bitreich.org 70 i- get_text(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'R': Err bitreich.org 70 i- redraw(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'b': Err bitreich.org 70 i- state = BOX; Err bitreich.org 70 i- get_box(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'a': Err bitreich.org 70 i- state = ARROW; Err bitreich.org 70 i- get_arrow(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'W': Err bitreich.org 70 i- force_new = 1;/** FALLTHROUGH **/ Err bitreich.org 70 i- case 'w': Err bitreich.org 70 i- write_file(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'e': Err bitreich.org 70 i- check_modified();/** FALLTHROUGH **/ Err bitreich.org 70 i- case 'E': Err bitreich.org 70 i- load_file(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'N': Err bitreich.org 70 i- new_file(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'x': Err bitreich.org 70 i- state = DEL; Err bitreich.org 70 i- delete(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'v': Err bitreich.org 70 i- state = VIS; Err bitreich.org 70 i- visual_box(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '-': Err bitreich.org 70 i- toggle_hline(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '|': Err bitreich.org 70 i- toggle_vline(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '+': Err bitreich.org 70 i- toggle_corner(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '<': Err bitreich.org 70 i- toggle_st_mark(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '>': Err bitreich.org 70 i- toggle_end_mark(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case '.': Err bitreich.org 70 i- reset_styles(); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'q': Err bitreich.org 70 i- check_modified();/** FALLTHROUGH **/ Err bitreich.org 70 i- case 'Q': Err bitreich.org 70 i- cleanup(0); Err bitreich.org 70 i- exit(0); Err bitreich.org 70 i- break; Err bitreich.org 70 i+ if (!change_style(c) && !move_around(c)){ Err bitreich.org 70 i+ switch(c){ Err bitreich.org 70 i+ case 'i': Err bitreich.org 70 i+ state = TEXT; Err bitreich.org 70 i+ get_text(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'R': Err bitreich.org 70 i+ redraw(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'b': Err bitreich.org 70 i+ state = BOX; Err bitreich.org 70 i+ get_box(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'a': Err bitreich.org 70 i+ state = ARROW; Err bitreich.org 70 i+ get_arrow(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'W': Err bitreich.org 70 i+ force_new = 1;/** FALLTHROUGH **/ Err bitreich.org 70 i+ case 'w': Err bitreich.org 70 i+ write_file(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'e': Err bitreich.org 70 i+ check_modified();/** FALLTHROUGH **/ Err bitreich.org 70 i+ case 'E': Err bitreich.org 70 i+ load_file(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'N': Err bitreich.org 70 i+ new_file(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'x': Err bitreich.org 70 i+ state = DEL; Err bitreich.org 70 i+ delete(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'v': Err bitreich.org 70 i+ state = VIS; Err bitreich.org 70 i+ visual_box(); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'q': Err bitreich.org 70 i+ check_modified();/** FALLTHROUGH **/ Err bitreich.org 70 i+ case 'Q': Err bitreich.org 70 i+ cleanup(0); Err bitreich.org 70 i+ exit(0); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i } Err bitreich.org 70 i check_bound(); Err bitreich.org 70 i status_bar(); Err bitreich.org 70 .