Page 1 of 2

Мигание фона подсветки на lexer_dynamic_hilite

Posted: 30.06.2019 02:41
by Developer
Очередной вопрос по горе лексеру.

Есть правило, задающее блок между { и }
К правилу применен стиль для подсветки фона всего блока.
В Cuda, для отображения фона для динамического блока нужно включить два параметра
свойство редактора "lexer_dynamic_hilite" установить в TRUE, что бы заработали динамические подсветки блока.
свойство редактора "ui_lexer_themes" установить в FALSE, что бы использовались цвета заложенные в лексер.

И тут появляется проблема.
в Куда Редакторе, если курсор находиться внутри динамического блока, то подсветка работает и отображается все как следует.
Но если ввести любой символ или удалить любой символ, то фон в блоке тухнет и загорается через короткий промежуток времени.
Создается Мерцающий эффект фона. Это очень раздражает и мешает пользоваться редактором (в Синврайте такого эффекта не наблюдается).

Я так полагаю по умолчанию эта опция выключена в редакторе потому что с ней были сложности? Настройками это не регулируется и нужен fix динамической подсветки.
Когда можно ожидать решение этого вопроса или как это чинить?

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

пп.с. Так же обнаружена проблема с распознаванием инструкций для границ. После миграции лексера, приходиться вручную указывать некоторые из границ.

Posted: 30.06.2019 04:04
by Alexey
Про "распознавание границ" надо подробнее- не понял о чем это. Границы для стилей лексера (borders: up/ down/ left/ rignt)? Или что.

При "мигание" - повторил на Bash lexer. на примере таком

Code: Select all

#!/bin/bash
var=value
/ddd/ddd.sh, "test
string"
+= -= /= *ddd= &= |= ^= ~= == != >= <= ( ) [ ] { } $( ) + - / | < >
test `dirname $var 20+30`, `more $var(20)`

function echo {
	git -a --test "path"
}

while read line  #comment
do
  test $(test "$line"); 
  test "test\"test" 
  len=${#line} $(text here)
  if [[ "$len" -lt "$MINLEN" && "$line" =~ \[*\.\] ]]
    then echo
  fi
done
#!/bin/bash
var=value
/ddd/ddd.sh, "test
string"
+= -= /= *= &= |= ^= ~= == != >= <= ( ) [ ] { } $( ) + - / | < >
test `dirname $var 20+30`, `more $var(20)`

function echo {
	git -a --test "path"
}

while read line  #comment
do
  test $(test "$line"); 
  test "test\"test" 
  len=${#line} $(text here)
  if [[ "$len" -lt "$MINLEN" && "$line" =~ \[*\.\] ]]
    then echo
  fi
done
Проблема видна. Буду думать. Когда будет решение- не знаю.

Posted: 30.06.2019 04:28
by Developer
Alexey wrote:Про "распознавание границ" надо подробнее- не понял о чем это. Границы для стилей лексера (borders: up/ down/ left/ rignt)? Или что.
Да именно это и есть.
При создании стиля в редакторе СинВрайта, если стилю задать границу и выбрать Тонкую линию (которая в КудаТекст позиционируется как SOLID граница)
то парсер КудаТекст не всегда понимает эту инструкцию. И приходиться в ручную указывать гнаницу в свойствах Лексера.

Posted: 30.06.2019 04:49
by Developer
Мне кажется проблема с границами упирается в
CudaText\settings\JavaScript.cuda-lexops
CudaText\settings\lexer JavaScript.json

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

Ну мне так кажется.

Posted: 30.06.2019 05:32
by Alexey
Попытался порешать "мигание". вот бета, попробуйте, на Баш лексере стало лучше
https://sourceforge.net/projects/cudate ... a_version/

Posted: 30.06.2019 05:36
by Alexey
"Границы". .cuda-lexops это кеш свойств лексера, так что его удалите если обновили лексер. если удалить- стало ок? "lexer JavaScript.json" это опции для JS, не должен мешать.

Posted: 30.06.2019 06:20
by Developer
Alexey wrote:Попытался порешать "мигание". вот бета, попробуйте, на Баш лексере стало лучше
https://sourceforge.net/projects/cudate ... a_version/
Да, стало значительно удобнее. На экране больше мигания нет. А мигание на карте не критично. можно считать вопрос закрытым.
Alexey wrote:"Границы". .cuda-lexops это кеш свойств лексера, так что его удалите если обновили лексер. если удалить- стало ок? "lexer JavaScript.json" это опции для JS, не должен мешать.
Да при удалении cuda-lexops все работает как должно, но все же странно, почему подставляются пустые значения в случае если файл есть но без записей. Думаю верно было бы делать проверку на Наличие инструкций в лексере, если в cuda-lexops инструкции нет.
Вобщем этот вопрос для меня тоже закрыт.

Posted: 30.06.2019 06:36
by Alexey
разве он без записей? он создается когда вы меняете св-ва лексера и имеет записи. они имеют инфо про границы.

Posted: 30.06.2019 06:54
by Developer
Вот на примере с картинками.
1. Есть границы на куче правилах.
2. принудительно указываем границу для любого стиля - создается файл но в нем лишь ОДНА запись для созданной границы.
3. открываем документ и видим что все границы пропали КРОМЕ принудительно заданной.

Вывод:
Если есть файл и в нем не указаны значения стилей, то редактор считает эти значения нулевыми и не смотрит есть ли они в Лексере.

Posted: 30.06.2019 12:46
by Alexey
"границы пропали"- сделал фикс. тестим.
https://sourceforge.net/projects/cudate ... a_version/