Revert "Fix cursor move with wide glyphs"
This reverts commit 7473a8d1a5.
This patch needs some more work. It caused regressions with programs that use
GNU readline, etc.
Original test-case example from Tim Culverhouse <tim@timculverhouse.com>:
	printf " 😀" && sleep 2 && printf "\e[D" && sleep 2 && printf "\e[D" && sleep 2
After the patch it caused regressions, example test-case:
	printf "A字\bB\n"
			
			
This commit is contained in:
		
							
								
								
									
										10
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								st.c
									
									
									
									
									
								
							| @@ -86,8 +86,8 @@ enum escape_state { | |||||||
|  |  | ||||||
| typedef struct { | typedef struct { | ||||||
| 	Glyph attr; /* current char attributes */ | 	Glyph attr; /* current char attributes */ | ||||||
| 	int x; /* terminal column */ | 	int x; | ||||||
| 	int y; /* terminal row */ | 	int y; | ||||||
| 	char state; | 	char state; | ||||||
| } TCursor; | } TCursor; | ||||||
|  |  | ||||||
| @@ -2175,16 +2175,12 @@ tstrsequence(uchar c) | |||||||
| void | void | ||||||
| tcontrolcode(uchar ascii) | tcontrolcode(uchar ascii) | ||||||
| { | { | ||||||
| 	size_t i; |  | ||||||
|  |  | ||||||
| 	switch (ascii) { | 	switch (ascii) { | ||||||
| 	case '\t':   /* HT */ | 	case '\t':   /* HT */ | ||||||
| 		tputtab(1); | 		tputtab(1); | ||||||
| 		return; | 		return; | ||||||
| 	case '\b':   /* BS */ | 	case '\b':   /* BS */ | ||||||
| 		for (i = 1; term.c.x && term.line[term.c.y][term.c.x - i].u == 0; ++i) | 		tmoveto(term.c.x-1, term.c.y); | ||||||
| 			; |  | ||||||
| 		tmoveto(term.c.x - i, term.c.y); |  | ||||||
| 		return; | 		return; | ||||||
| 	case '\r':   /* CR */ | 	case '\r':   /* CR */ | ||||||
| 		tmoveto(0, term.c.y); | 		tmoveto(0, term.c.y); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user