term->curs.x--;
term->wrapnext = FALSE;
fix_cpos;
- if (!term->cfg.no_dbackspace) /* destructive bksp might be disabled */
+ if (!term->cfg.no_dbackspace) { /* destructive bksp might be disabled */
+ check_boundary(term, term->curs.x, term->curs.y);
+ check_boundary(term, term->curs.x+1, term->curs.y);
*term->cpos = (' ' | term->curr_attr | ATTR_ASCII);
+ }
} else
/* Or normal C0 controls. */
if ((c & -32) == 0 && term->termstate < DO_CTRLS) {
}
term_print_flush(term);
+ logflush(term->logctx);
}
#if 0
}
tattr |= (tchar & CSET_MASK);
tchar &= CHAR_MASK;
- if ((d[1] & (CHAR_MASK | CSET_MASK)) == UCSWIDE)
- tattr |= ATTR_WIDE;
+ if (j < term->cols-1 &&
+ (d[1] & (CHAR_MASK | CSET_MASK)) == UCSWIDE)
+ tattr |= ATTR_WIDE;
/* Video reversing things */
if (term->selstate == DRAGGING || term->selstate == SELECTED) {
void term_copyall(Terminal *term)
{
pos top;
+ pos bottom;
+ tree234 *screen = term->screen;
top.y = -sblines(term);
top.x = 0;
- clipme(term, top, term->curs, 0, TRUE);
+ bottom.y = find_last_nonempty_line(term, screen);
+ bottom.x = term->cols;
+ clipme(term, top, bottom, 0, TRUE);
}
/*