так, мы с вами почти в равных условиях. Вы код почти не видели, а я видел давно и все забыл -)
давайте разбираться, и прояснять разные моменты. Мне для памяти, вам для понимания что и как
на текущий момент есть 2 "потока" разбора.
Первый - это фоновый. Изначально он работал от событий фара. То "ускорение" в коде idleCount++ сделано специально, что скорость разбора, или иначе тормоза gui, надо наращивать постепенно. Вдруг пользователь печатает текст. Мы же в редакторе всё таки.
Второй - это разбор во время события раскраски экрана. Нам важно разобрать что на экране. И это быстро и легко, если мы в начале файла. А если в конце, то ждать можно долго.
для этого и задумывался параметр backparse. работает это так (не так как я вижу у вас в описаниях)
если (номер_строки_для_отображения - номер_последней_нераскрашенной_строки > backparse )
то не разбираем файл, не красим сейчас. оставляем для фона.
иначе пытаемся разобрать все до номер_строки_для_отображения
что мы имеем, если файл 1000 строк, backparse 100.
1. файл открывается на первой странице, нам видны первые 25 строк.
при открытии мы будем красить вторым потоком до конца экрана, потом перейдем в фон. если строки длинные, то будет подвисание. т.к. событие раскраски срабатывает до того как отобразился текст
2. файл открывается на 10 странице, текущая строка 250 - последняя 275.
файл открывается сразу, т.к. во втором потоке срабатывает параметр backparse. текст мы видим. разбор идет фоном раз в N мск.
если мы через некоторое время нажмем клавиши, то очень вероятно , что backparse не будет уже работать и экран быстро раскрасится
3. файл открываем в самом конце
ситуация как в пункте 2, только ждать раскраски экране дольше
если мы увеличиваем backparse до 500
1. не изменится
2. ждать дольше
3. ждать меньше
если мы увеличиваем backparse до 2000
1. не изменится
2. не изменится относительно предыдущего теста. но на строках после 500 будет медленнее
3. ждать дольше. будет медленнее работать
если мы уменьшаем backparse в плоть до 0
1. не изменится
2. будет быстрее разбираться, но открытие файла дольше. разбираем сразу 250 строк
3. будет быстрее разбраться, но открытие файла дольше. разбираем сразу 1000 строк
получается, скорость разбора зависит от того, где в файле мы находимся и значения backparse.
касательно примеров кода выше. Если мы увеличим число строк для разбора за один раз, то это негативно скажется на скорости реакции фара при изменении текста.Мы ведь в редакторе, и это критично. Но мы точно можем отказаться от постепенного наращивания idleCount++ , сделав его константой. Т.к. сейчас функция вызывается через известные равные таймауты.
кстати, для длинных строк не забываем про maxlinelength. надо будет его уменьшить по умолчанию до 500. будет легче.
как итог, получается надо обеспечить
а. быстрое открытие файла, пусть и не раскрашенного
б. учет положения в файле при работе с backparse