add global movements (g, G. m) - gramscii - A simple editor for ASCII box-and-arrow charts DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit c8512825e3baf1525af7117affa13d00ac6b0d1d DIR parent ad0b403caa61c3f1c07698ffe6952588861d98c2 HTML Author: KatolaZ <katolaz@freaknet.org> Date: Sat, 20 Jul 2019 11:03:55 +0100 add global movements (g, G. m) Diffstat: M gramscii.c | 64 ++++++++++++++++--------------- 1 file changed, 33 insertions(+), 31 deletions(-) --- DIR diff --git a/gramscii.c b/gramscii.c @@ -79,6 +79,8 @@ char mark_end; char modified; char fname[256]; +char visual; + struct termios t1, t2, t3; @@ -227,6 +229,24 @@ void redraw(){ show_cursor(); } +void go_to(int where){ + switch(where){ + case HOME: + x = y = 0; + break; + case END: + x = WIDTH-1; + y = HEIGHT-1; + break; + case MIDDLE: + x = WIDTH/2; + y = HEIGHT/2; + break; + } + check_bound(); + show_cursor(); +} + int move_around(char c){ switch(c){ @@ -250,28 +270,22 @@ int move_around(char c){ dir = DIR_R; x += step; break; - default: - return 0; - } - return 1; -} - -void go_to(int where){ - switch(where){ - case HOME: - x = y = 0; + case 'g': + dir = DIR_N; + go_to(HOME); break; - case END: - x = WIDTH-1; - y = HEIGHT-1; + case 'G': + dir = DIR_N; + go_to(END); break; - case MIDDLE: - x = WIDTH/2; - y = HEIGHT/2; + case 'm': + dir = DIR_N; + go_to(MIDDLE); break; + default: + return 0; } - check_bound(); - show_cursor(); + return 1; } int progr_x(int dir){ @@ -369,7 +383,6 @@ void get_text(){ state=MOVE; } - void draw_box(int x1, int y1, int fix){ int xmin, ymin, xmax, ymax; @@ -401,8 +414,6 @@ void draw_box(int x1, int y1, int fix){ show_cursor(); } - - void get_box(){ char c; int orig_x=x, orig_y=y; @@ -535,8 +546,8 @@ void delete(){ while((c=getchar())!=EOF && c!=27 && c!= 'x'){ if (!move_around(c)) continue; check_bound(); - step = 1; do_delete(orig_x, orig_y); + step = 1; modified = 1; orig_x = x; orig_y = y; @@ -650,15 +661,6 @@ void commands(){ case 'N': new_file(); break; - case 'g': - go_to(HOME); - break; - case 'G': - go_to(END); - break; - case 'm': - go_to(MIDDLE); - break; case 'x': state = DEL; delete();