diff options
| author | KatolaZ <katolaz@freaknet.org> | 2019-07-20 11:03:55 +0100 | 
|---|---|---|
| committer | KatolaZ <katolaz@freaknet.org> | 2019-07-20 11:03:55 +0100 | 
| commit | c8512825e3baf1525af7117affa13d00ac6b0d1d (patch) | |
| tree | 180ffde6927a17efc1772571104b2e8edfeeb653 | |
| parent | ad0b403caa61c3f1c07698ffe6952588861d98c2 (diff) | |
add global movements (g, G. m)
| -rw-r--r-- | gramscii.c | 64 | 
1 files changed, 33 insertions, 31 deletions
| @@ -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(); | 
