[MoonScript] Подсветка кириллицы и пробельных символов

Здесь обсуждается всё, что касается макросов.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

[MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Image

Исходный код: https://forum.ru-board.com/topic.cgi?fo ... it=1&m=1#1

Назначение - подсветить кириллицу и изменить цвет , отображаемых FAR. Для комфортного редактирования текста, пробельные символы раскрашиваются не голубым, а светло-синим на синем - так они не сливаются с текстом. Кириллица раскрашивается максимально заметно - жёлтым по красному.

:!: Улучшения (ваши) в коде скрипта принимаются и даже приветствуются.

Код скрипта раскрашивает только текст, отображённый в окне редактора, поэтому скрипт не "зависает" на длинных строках. Вызывается скрипт в окне редактора по нажатию функциональной клавиши F3. Для более детальной информации смотрите код скрипта.

Скрипт-прототип
Last edited by John Doe on Sun 10 Nov, 2019 12:06, edited 1 time in total.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Latest post of the previous page:

Интересно, если бы в апи была функция получения не всей строки, а лишь видимой на экране её части, была бы она медленнее получения всей строки?

На обработке строки в 11 МБ плотно задумывается колорер, а данный скрипт приводит к сообщению: Ошибка LuaMacro.dll - нет свободной памяти.

Строку в 512К колорер красит 4сек, а сабж - подождал 4-е минуты и пристрелил, загружая при этом ядро на 100%.
Строку в 64К колорер красит около секунды, сабж 8 сек, снимает раскраску 4 сек. Замеры делались на глаз, визуально. Луа вариант скрипта дал такие же, как и муна результаты.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by zg »

фар отдаёт ссылку на внутренние данные, колорер работает с ними, луафар — копирует себе. в принципе было бы логично расширить.
а зачем вообще нужно красить файлы со строками в 11mb? я конечно втречал в жизни xml-ы размером в пару мегабайт в одну строку, но от раскраски там было мало толку.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

zg
ну вот у меня xml по 11МБ. Открываешь в редакторе, а тут засада - колорер-то включён! Надо не забывать перед открытием таких файлов его отключать, иначе приходится пристреливать фар со всеми вытекающими. Можно попытаться отключающий скрипт наколбасить, но мутно это как-то.

Есть ли у редактора событие - изменение содержания видимой области (окна), при котором подвижка курсора внутри этой области это событие не вызывает?

Сабж перекрашивает символы даже при сдвиге курсора без сдвига экрана.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by zg »

AleXH wrote:Сабж перекрашивает символы даже при сдвиге курсора без сдвига экрана.
для подсветки парных скобок.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

zg wrote:для подсветки парных скобок
Подсветка парных скобок также не вызывает сдвига экрана, а поскольку она работает всегда поверху, то зачем тогда перекрашивать весь экран - чтобы знать цвет скобок до того? - Имхо слишком высокая цена.

Может лучше сделать так?:
При сдвиге курсора внутри видимого окна:
Проверяем статус, если true, то восстанавливаем раскраску одного или 2-х символов (скобок), сбрасываем статус в false. Сдвигаем курсор. Проверяем наличие скобки под курсором. Если скобка есть, то запоминаем её данные: координаты, цвет (фона также), устанавливаем статус в true. Перекрасили. Ищем парную, опять же только в пределах видимого окна, если нашли, то запомнили её данные. Перекрасили.

Или есть подводные камни?

Колорер подлагивает только когда сдвигается экран, внутри экрана курсор двигается без лагов.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Изменил часть кода - Открываем скрипт -
Но если курсор поместить возле правой границы экрана и сдвинуть его вправо, параллельно сдвинув вправо экран, то слева видим, как первые символы окрашиваются в пробельный цвет. - Почему? Согласно доки EditorInfo.LeftPos содержит порядковый номер символа в строке редактора, отображаемого на экране самым первым слева :o

Строку длиной в 128КБ скрипт с обработкой красит 4 сек, предыдущий вариант красил 30 сек.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by Shmuel »

Ошибка в 80-й строке (editor.Redraw).
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Всё, победил все косяки, теперь работает шустро и так как надо. На первой странице обновил код.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by John Doe »

Почему не успользуете [codebox=lua file=untitled.lua]?
И неплохо бы дать ссылку на скрипт, послуживший основой для вашего.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Он не мой, он zg и ваш, John Doe, без вашей команды его бы не было, я же так, мимо проходил.
  1.  - это что ещё за напасть? :)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

[MoonScript] Подсветка кириллицы и пробельных символов

Post by John Doe »

Код скрипта сейчас заключен в теге [code][/code].
Поменяйте на [codebox=lua file=untitled.lua][/codebox] и увидите разницу.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Спасибо, буду знать, поправил.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by John Doe »

Ссылку забыли
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Добавил ссылку на скрипт-прототип.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by John Doe »

Зачем же в спойлер?
Назначение - узреть кириллицу, "косящую" под латиницу и "левые" пробельные символы.
Из описания не вполне ясно чем занимается скрипт.
1. Создаётся впечатление будто подсвечиваются только те символы кириллицы, которые сходны с латинскими по начертанию.
2. Создаётся впечатление, будто скрипт интеллектуально отображает именно какие-то "левые" символы.
На самом деле отображаются ВСЕ пробельные символы, причём делает это вовсе не скрипт, а сам фар, и о включении соответствующей опции в тексте нет ни слова.
Что такое "пробельные символы" тоже надо описать. Скриншота недостаточно (и не вижу на нём табуляций)
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветка кириллицы и пробельных символов

Post by AleXH »

Поправил.
Locked

Return to “Обсуждение макросов”