aboutsummaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
authorAurélien Aptel <aurelien.aptel@gmail.com>2010-02-21 14:14:58 +0100
committerAurélien Aptel <aurelien.aptel@gmail.com>2010-02-21 14:14:58 +0100
commit3ba517e796e0c7a73c5030ad791be1db36a8cec5 (patch)
tree19b85958741f4bceb61e83b7a8c50b6fca60e2f2 /st.c
parenteff05c7b90429ac4dddbbc53ac7d4c05dfc5efd4 (diff)
downloadst-3ba517e796e0c7a73c5030ad791be1db36a8cec5.tar.gz
st-3ba517e796e0c7a73c5030ad791be1db36a8cec5.zip
ECH handled correctly.
Diffstat (limited to 'st.c')
-rw-r--r--st.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/st.c b/st.c
index fcb3d65..15ff4f8 100644
--- a/st.c
+++ b/st.c
@@ -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);