X-Git-Url: https://git.xinqibao.xyz/st.git/blobdiff_plain/fa19f241a34deddf6e089ab462cbd9cb02f61b3d..16ac85bf5422a7e925743f6134572d3ac1a25188:/st.c?ds=sidebyside diff --git a/st.c b/st.c index aba034f..60243a7 100644 --- a/st.c +++ b/st.c @@ -1398,15 +1398,13 @@ tscrolldown(int orig, int n) { LIMIT(n, 0, term.bot-orig+1); + tsetdirt(orig, term.bot-n); tclearregion(0, term.bot-n+1, term.col-1, term.bot); for(i = term.bot; i >= orig+n; i--) { temp = term.line[i]; term.line[i] = term.line[i-n]; term.line[i-n] = temp; - - term.dirty[i] = 1; - term.dirty[i-n] = 1; } selscroll(orig, n); @@ -1416,17 +1414,16 @@ void tscrollup(int orig, int n) { int i; Line temp; + LIMIT(n, 0, term.bot-orig+1); tclearregion(0, orig, term.col-1, orig+n-1); + tsetdirt(orig+n, term.bot); for(i = orig; i <= term.bot-n; i++) { - temp = term.line[i]; - term.line[i] = term.line[i+n]; - term.line[i+n] = temp; - - term.dirty[i] = 1; - term.dirty[i+n] = 1; + temp = term.line[i]; + term.line[i] = term.line[i+n]; + term.line[i+n] = temp; } selscroll(orig, -n); @@ -2308,9 +2305,9 @@ techo(char *buf, int len) { for(; len > 0; buf++, len--) { char c = *buf; - if(c < '\x20') { /* control code */ + if(c < 0x20 || c == 0177) { /* control code */ if(c != '\n' && c != '\r' && c != '\t') { - c |= '\x40'; + c ^= '\x40'; tputc("^", 1); } tputc(&c, 1);