add global movements (g, G. m) - gramscii - A simple editor for ASCII box-and-a… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit c8512825e3baf1525af7117affa13d00ac6b0d1d | |
parent ad0b403caa61c3f1c07698ffe6952588861d98c2 | |
Author: KatolaZ <[email protected]> | |
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(-) | |
--- | |
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(); |