summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatolaZ <katolaz@freaknet.org>2019-07-20 11:03:55 +0100
committerKatolaZ <katolaz@freaknet.org>2019-07-20 11:03:55 +0100
commitc8512825e3baf1525af7117affa13d00ac6b0d1d (patch)
tree180ffde6927a17efc1772571104b2e8edfeeb653
parentad0b403caa61c3f1c07698ffe6952588861d98c2 (diff)
add global movements (g, G. m)
-rw-r--r--gramscii.c64
1 files changed, 33 insertions, 31 deletions
diff --git a/gramscii.c b/gramscii.c
index ce97462..8177d56 100644
--- 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();