colorer / FarColorer

Syntax highlighting plugin for FAR Manager.
MIT License
69 stars 17 forks source link

1.3.14.0 недокрашивает текст на НЕ длинных строках #33

Open z0hm opened 4 years ago

z0hm commented 4 years ago

Пример: "аааа aaaaaaaa aa00 000/00a00 00a аааа aaa" "аааааа аааа aaaaaaaa aa00 000/00a00 00a" "аааааа аааааааа aaaaaaaa aa00 000/00a00 00a ааа аааааааа ааааааааааа. аааааа аааааааааааа: ааааа." "аааааа аааа aaaaaaaa aa00 000/00a00 00a ааа аааааааа ааааааааааа. аааааа аааааааааааа: ааааа." "00.0" "0" "00" "aaaaa_aaaaaaaa_aa00_000_00_a00_00a_aaa_aa" "aaaaa_aaaaaaaa_aa00.aaa" "aaaaa-aaaaaaaa-aa00.aaa" "00" "a000" "" "ааааа" "" "aaaaaaaa" "000" "00" "00" "аааааааа" "аааа" "00,00" "000" "аааа aaaaaaaa aa00 000/00a00 00a аааа aaa" "аааааа аааа aaaaaaaa aa00 000/00a00 00a" "аааааа аааааааа aaaaaaaa aa00 000/00a00 00a ааа аааааааа ааааааааааа. аааааа аааааааааааа: ааааа." "аааааа аааа aaaaaaaa aa00 000/00a00 00a ааа аааааааа ааааааааааа. аааааа аааааааааааа: ааааа." "00" "0" "0" "aaaaa_aaaaaaaa_aa00_000_00_a00_00a_aaa_aa" "aaaaa_aaaaaaaa_aa00.aaa" "aaaaa-aaaaaaaa-aa00.aaa" "0" "a000" "" "ааааа" "" "aaaaaaaa" "000" "00" "00" "аааааааа" "аааа" "00,00" "000" "аааа aaaaaaaa aa00 000/00a00 000a аааа aaa" "аааааа аааа aaaaaaaa aa00 000/00a00 000a" "аааааа аааааааа aaaaaaaa aa00 000/00a00 000a ааа аааааааа ааааааааааа. аааааа аааааааааааа: ааааа." "аааааа аааа aaaaaaaa aa00 000/00a00 000a ааа аааааааа ааааааааааа. аааааа аааааааааааа: ааааа." "00.0" "0" "0" "aaaaa_aaaaaaaa_aa00_000_00_a00_000a_aaa_aa" "aaaaa_aaaaaaaa_aa00.aaa" "aaaaa-aaaaaaaa-aa00.aaa" "0" "a000" "" "ааааа" "" "aaaaaaaa" "000" "00" "00" "аааааааа" "аааа" "00,00" "000"

z0hm commented 4 years ago

Выше 3 строки, 2-я недокрашивается. Текст в двойных кавычках отделяется 1 табуляцией.

z0hm commented 4 years ago

http://i.piccy.info/i9/bab0c1238131c29b7bc81b9186af1ac1/1592823704/20267/1384684/2020_06_22_135727.png

ctapmex commented 4 years ago

влияние изменений 1.3.13 . можно увеличить maxblocksize для данного типа файла.

z0hm commented 4 years ago

Здесь проблема не в размере блока, а необработкой ситуаций попадания на границы блока. Например имеем раскрашенный блок 300 символов, затем 301-й \s и затем нераскрашенный блок. - Вставляем на 301-ю позицию букву и остаток строки раскрасится.

z0hm commented 4 years ago

Т.е. изменение размера блока проблему не решает - нужно изменять алгоритм.

z0hm commented 4 years ago

Пример. Формируем строку в редакторе: 1, затем 298 пробелов, 300-я 1, пробел, 1, несколько пробелов, 1. - Поскольку 301-й пробел, то следующие за ним единцы голоубые, а не зелёные. Изменяем maxblocksize с 300 на 512 - изменений в расцветке нет, в том числе и после перезапуска фара с новым 512-ым размером блока.

Неожиданно - независимо от значения maxblocksize можно наблюдать пропадание раскраски остатка строки при \s на 301-й позиции. В чём легко убедиться вставляя-удаляя пробелы в позиции 290, например.

ctapmex commented 4 years ago

изменение maxblocksize помогает. применение новых настроек идет либо после перезапуска, либо после перезачитывания настроек. Надо бы поправить. То, что у вас не применилось после перезапуска - видимо не сохранилось значение.

это не ошибка алгоритма, скорее особенность костыля, который не дает на длинных строках привести к зависанию. для файлов с фиксированным синтаксисом, таким как языки программирования, он не влияет. т.к. там 300 символов в одном блоке - это не нормально. для текстовых , где основные проблемы с зависанием, оно помогает. но привносит такие проблемы. если такие файлы для ваших кейсов обычны, то надо подкрутить параметр. идеальное решение пока не получится сделать

z0hm commented 4 years ago

Нет. maxblocksize=512 после перезапуска, изменений нет - после 300 символа 1 и 301-ого пробела остаток 2 единицы голубые. фар 5626 х86, новый из дистриба, в новой папке, новый чистый профиль.

ctapmex commented 4 years ago

после перезапуска проверьте значение maxblocksize в настройках. точно ли оно установлено?

z0hm commented 4 years ago

Мне сложно об этом судить, но если после перезапуска фар и открытия файла 1.txt с нашей строкой из 4-х 1, вызывая колорер из редактора по F11 - FarColorer я вижу активную схему plain text, а в конфигурации plain text maxblocksize=512, то да, таки установлено )

ctapmex commented 9 months ago

исправил артефакт поведения - maxblocksize финальная граница для раскраски.

ctapmex commented 8 months ago

откатил изменения. на уровне парсинга сделать жестко границу сложно. Делать на уровне отображения - а надо ли ? мы уже распарсили , давай покажем ? или всё же делать "ровно" на всех уровнях?

z0hm commented 8 months ago

НЕ жёстко это в каких границах? - 20-100% от maxblocksize? Ведь конструкции могут быть разными. Сколько придётся указывать с оверхэдом, чтобы таки раскрашивало как нужно пользователю?

Ожидается ли 1.3.0.31 с фиксами?

ctapmex commented 8 months ago

процент зависит от конкретного типа файла. Где то блоки , подпадающие под одну регулярку , могут быть большими, где-то маленькими. я бы предложить действовать так

  1. выставить maxblocksize по умолчанию очень большим
  2. для конкретных схем, типа js , где часто возникают проблемы с разбором, выставить его меньше

Ожидается ли 1.3.0.31 с фиксами? а что именно там нужно?

z0hm commented 8 months ago

Что именно там нужно? - Всё на что хватит сил :) Фиксы в первую очередь.

ctapmex commented 8 months ago

-) нужна конкретика, т.к. большая часть фиксов в 1.4 - это то, что сам наломал. Либо работа с новыми зависимостями, которых нет в 1.3

z0hm commented 8 months ago

Разумеется только то, что реально полезно ветке 1.3. Конкретику выдать не готов - сталкиваюсь с разными нюансами, но время от времени не конспектируя их. Основное, что напрягает всех, это открыли файл в редакторе и он завис на раскраске - наверняка все хотят чтобы раскраска шла в фоне.