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) | |
| download | st-3ba517e796e0c7a73c5030ad791be1db36a8cec5.tar.gz st-3ba517e796e0c7a73c5030ad791be1db36a8cec5.zip | |
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) { | |||
| 692 | default: | 692 | default: |
| 693 | goto unknown; | 693 | goto unknown; |
| 694 | } | 694 | } |
| 695 | } else goto unknown; | 695 | } else { |
| 696 | switch(escseq.arg[0]) { | ||
| 697 | case 4: | ||
| 698 | term.mode &= ~MODE_INSERT; | ||
| 699 | break; | ||
| 700 | default: | ||
| 701 | goto unknown; | ||
| 702 | } | ||
| 703 | } | ||
| 696 | break; | 704 | break; |
| 697 | case 'M': /* DL -- Delete <n> lines */ | 705 | case 'M': /* DL -- Delete <n> lines */ |
| 698 | DEFAULT(escseq.arg[0], 1); | 706 | DEFAULT(escseq.arg[0], 1); |
| 699 | tdeleteline(escseq.arg[0]); | 707 | tdeleteline(escseq.arg[0]); |
| 700 | break; | 708 | break; |
| 701 | case 'X': /* ECH -- Erase <n> char XXX: same? */ | 709 | case 'X': /* ECH -- Erase <n> char */ |
| 710 | DEFAULT(escseq.arg[0], 1); | ||
| 711 | tclearregion(term.c.x, term.c.y, term.c.x + escseq.arg[0], term.c.y); | ||
| 712 | break; | ||
| 702 | case 'P': /* DCH -- Delete <n> char */ | 713 | case 'P': /* DCH -- Delete <n> char */ |
| 703 | DEFAULT(escseq.arg[0], 1); | 714 | DEFAULT(escseq.arg[0], 1); |
| 704 | tdeletechar(escseq.arg[0]); | 715 | tdeletechar(escseq.arg[0]); |
| @@ -727,10 +738,16 @@ csihandle(void) { | |||
| 727 | tcursor(CURSOR_SAVE); | 738 | tcursor(CURSOR_SAVE); |
| 728 | tclearregion(0, 0, term.col-1, term.row-1); | 739 | tclearregion(0, 0, term.col-1, term.row-1); |
| 729 | break; | 740 | break; |
| 730 | default: | 741 | default: goto unknown; |
| 731 | goto unknown; | 742 | } |
| 743 | } else { | ||
| 744 | switch(escseq.arg[0]) { | ||
| 745 | case 4: | ||
| 746 | term.mode |= MODE_INSERT; | ||
| 747 | break; | ||
| 748 | default: goto unknown; | ||
| 732 | } | 749 | } |
| 733 | } else goto unknown; | 750 | }; |
| 734 | break; | 751 | break; |
| 735 | case 'm': /* SGR -- Terminal attribute (color) */ | 752 | case 'm': /* SGR -- Terminal attribute (color) */ |
| 736 | tsetattr(escseq.arg, escseq.narg); | 753 | tsetattr(escseq.arg, escseq.narg); |
