# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 3ba517e796e0c7a73c5030ad791be1db36a8cec5
    parent eff05c7b90429ac4dddbbc53ac7d4c05dfc5efd4
    Author: Aurélien Aptel <aurelien.aptel@gmail.com>
    Date:   Sun, 21 Feb 2010 14:14:58 +0100

    ECH handled correctly.

    Diffstat:
    Mst.c | 27++++++++++++++++++++++-----

    1 file changed, 22 insertions(+), 5 deletions(-)
    diff --git a/st.c b/st.c
    @@ -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);