--- rxvt-unicode/src/screen.C 2004/11/21 18:51:13 1.139 +++ rxvt-unicode/src/screen.C 2004/12/04 04:06:03 1.143 @@ -885,9 +885,6 @@ srp = screen.rend[row]; /* _must_ refresh */ } - if (screen.flags & Screen_Insert) - scr_insdel_chars (1, INSERT); - // rely on wcwidth to tell us the character width, at least for non-latin1 // do wcwidth before further replacements, as wcwidth says that line-drawing // characters have width -1 (DOH!) on GNU/Linux sometimes. @@ -898,7 +895,7 @@ // vt100 special graphics and line drawing // 5f-7e standard vt100 // 40-5e rxvt extension for extra curses acs chars - static uint16_t vt100_0[63] = { // 5f .. 7e + static uint16_t vt100_0[63] = { // 40 .. 7e 0x0000, 0x2191, 0x2193, 0x2192, 0x2190, 0x2588, 0x259a, 0x2603, // 40-47 hi mr. snowman! 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 48-4f 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 50-57 @@ -916,6 +913,9 @@ } } + if (screen.flags & Screen_Insert) + scr_insdel_chars (width, INSERT); + if (width != 0) { // some utf-8 decoders decode surrogate characters. @@ -1102,7 +1102,7 @@ // store horizontal tab commands as characters inside the text // buffer so they can be selected and pasted. - if (ht) + if (ht && options & Opt_pastableTabs) { base_rend = SET_FONT (base_rend, 0); @@ -2246,7 +2246,7 @@ // redraw one or more characters - // seek to the beginning if wide characters + // seek to the beginning of wide characters while (stp[col] == NOCHAR && col > 0) --col;