diff options
| author | Aurélien Aptel <aurelien.aptel@gmail.com> | 2010-02-21 14:14:58 +0100 | 
|---|---|---|
| committer | Aurélien Aptel <aurelien.aptel@gmail.com> | 2010-02-21 14:14:58 +0100 | 
| commit | 3ba517e796e0c7a73c5030ad791be1db36a8cec5 (patch) | |
| tree | 19b85958741f4bceb61e83b7a8c50b6fca60e2f2 /st.c | |
| parent | eff05c7b90429ac4dddbbc53ac7d4c05dfc5efd4 (diff) | |
ECH handled correctly.
Diffstat (limited to 'st.c')
| -rw-r--r-- | st.c | 27 | 
1 files changed, 22 insertions, 5 deletions
@@ -692,13 +692,24 @@ csihandle(void) {  			default:  				goto unknown;  			} -		} else goto unknown; +		} else { +			switch(escseq.arg[0]) { +			case 4: +				term.mode &= ~MODE_INSERT; +				break; +			default: +				goto unknown; +			} +		}  		break;  	case 'M': /* DL -- Delete <n> lines */  		DEFAULT(escseq.arg[0], 1);  		tdeleteline(escseq.arg[0]);  		break; -	case 'X': /* ECH -- Erase <n> char XXX: same? */ +	case 'X': /* ECH -- Erase <n> char */ +		DEFAULT(escseq.arg[0], 1); +		tclearregion(term.c.x, term.c.y, term.c.x + escseq.arg[0], term.c.y); +		break;  	case 'P': /* DCH -- Delete <n> char */  		DEFAULT(escseq.arg[0], 1);  		tdeletechar(escseq.arg[0]); @@ -727,10 +738,16 @@ csihandle(void) {  				tcursor(CURSOR_SAVE);  				tclearregion(0, 0, term.col-1, term.row-1);  				break; -			default: -				goto unknown; +			default: goto unknown; +			} +		} else { +			switch(escseq.arg[0]) { +			case 4: +				term.mode |= MODE_INSERT; +				break; +			default: goto unknown;  			} -		} else goto unknown; +		};  		break;  	case 'm': /* SGR -- Terminal attribute (color) */  		tsetattr(escseq.arg, escseq.narg);  | 
