diff -uNr ../ncurses2/ncurses-5.4/ncurses/tty/tty_update.c ncurses-5.4/ncurses/tty/tty_update.c --- ../ncurses2/ncurses-5.4/ncurses/tty/tty_update.c 2004-12-04 02:58:51.000000000 +0900 +++ ncurses-5.4/ncurses/tty/tty_update.c 2004-12-04 03:01:54.000000000 +0900 @@ -1182,7 +1182,9 @@ firstChar = nFirstChar; /* find the first differing character */ while (firstChar < screen_columns - && CharEq(newLine[firstChar], oldLine[firstChar])) + && (CharEq(newLine[firstChar], oldLine[firstChar]) + || (isnac(newLine[firstChar]) + && isnac(oldLine[firstChar])))) firstChar++; } else if (oFirstChar > nFirstChar) { firstChar = nFirstChar; @@ -1209,7 +1211,9 @@ } else { /* find the first differing character */ while (firstChar < screen_columns - && CharEq(newLine[firstChar], oldLine[firstChar])) + && (CharEq(newLine[firstChar], oldLine[firstChar]) + || (isnac(newLine[firstChar]) + && isnac(oldLine[firstChar])))) firstChar++; } /* if there wasn't one, we're done */ @@ -1294,6 +1298,12 @@ > (m - n)) { PutRange(oldLine, newLine, lineno, n + 1, m); } else { + if (isnac(newLine[n + 1])) { + GoTo(lineno, n); + PutRange(oldLine, newLine, lineno, n, n + 1); + n++; + } + GoTo(lineno, n + 1); InsStr(&newLine[n + 1], nLastChar - oLastChar); } } else if (oLastChar > nLastChar) {