Изначально опубликовано r25 Пробовал перехватить textChange() но там проблемы с позиционированием курсора...
Проблемы с позиционированием курсора можно решить, например, используя метод setSelection(cursorPos, cursorPos). В cursorPos помещаем вычисленное ручками новое положение курсора...