[MoonScript] Подсветка кириллицы и пробельных символов
[MoonScript] Подсветка кириллицы и пробельных символов
Исходный код: 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.
Re: [MoonScript] Подсветка кириллицы и пробельных символов
Latest post of the previous page:
Поменял, описание исправил.Гуид поменяйте
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
получить подстроку из редактора без копирования всей строки:zg wrote:фар отдаёт ссылку на внутренние данные, колорер работает с ними, луафар — копирует себе. в принципе было бы логично расширить.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
код — рабочий.Shmuel wrote:"ECTL_GETSTRING" с FFI не прокатит. Нужно целое число, а не строковый литерал.
- John Doe
- Бюрократ
- Posts: 13860
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
Я так понимаю, что оптимальнее всегоShmuel wrote:"ECTL_GETSTRING" с FFI не прокатит. Нужно целое число, а не строковый литерал.
ffi.C.ECTL_GETSTRING
Интересно теперь сравнить производительность.zg wrote:получить подстроку из редактора без копирования всей строки:
[...]
Re: [MoonScript] Подсветка кириллицы и пробельных символов
GetSubStringW() возвращает nil на пустых строках, исправил на
Код скрипта полностью На коротких строках работает, но не во всех файлах - почему, пока не понял.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
EditorId-1 => EditorId.
также есть проблемы с табами, надо как-то так:
и везде использовать RealLeft вместо ei.LeftPos. может привести к деградации производительности.
по хорошему ширину надо тоже конвертировать, но так как она может только уменьшится, то реально быстрее забить.
так же вызов два раза editor.GetStringW сводит на нет всю оптимизацию. StringLength можно вернуть из GetSubStringW вторым параметром.
также есть проблемы с табами, надо как-то так:
Code: Select all
RealLeft=editor.TabToReal ei.EditorID,ii,ei.LeftPos
по хорошему ширину надо тоже конвертировать, но так как она может только уменьшится, то реально быстрее забить.
так же вызов два раза editor.GetStringW сводит на нет всю оптимизацию. StringLength можно вернуть из GetSubStringW вторым параметром.
Re: [MoonScript] Подсветка кириллицы и пробельных символов
Не понимаю почему, но код не работает. Получаю значения В результате ll=0
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
вы присваиваете fLength значение egs.StringLength до того, как оно будет заполнено фаром.AleXH wrote:не работает.
Re: [MoonScript] Подсветка кириллицы и пробельных символов
Понял. Изменение производительности оценивал так: создал файл из 30 строк по 11М символов. Включал раскраску, после отработки нажимал на курсор вправо и смотрел сколько символов он успеет пройти за 20 сек. Предыдущий вариант проползал 24 символа, новый 31. При наличии табуляций в тексте артефактов в раскраске не наблюдаю.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
как-то мало. я вот так пробовал: GetStringW: ~40000, GetSubStringW(...,1,200): ~30.AleXH wrote:Изменение производительности оценивал так: создал файл из 30 строк по 11М символов. Включал раскраску, после отработки нажимал на курсор вправо и смотрел сколько символов он успеет пройти за 20 сек. Предыдущий вариант проползал 24 символа, новый 31.
всего в начале строки 6 табов:AleXH wrote:При наличии табуляций в тексте артефактов в раскраске не наблюдаю.
Re: [MoonScript] Подсветка кириллицы и пробельных символов
FAR3.0.3924x32 красит по коду из моего предыдущего сообщения абсолютно правильно независимо от сочетаний пробельных и обычных символов, их количества и последовательностей.
Ваш тест преобразованный к виду: На строке в 11M выдаёт - 75437.
Ваш тест преобразованный к виду: На строке в 11M выдаёт - 75437.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
это неправда. файл в аттаче. фар 80x25. открываете, жмёте энд, включаете свою раскраску, делаете скриншот и выкладываете здесь.AleXH wrote:FAR3.0.3924x32 красит по коду из моего предыдущего сообщения абсолютно правильно независимо от сочетаний пробельных и обычных символов, их количества и последовательностей.
и что?AleXH wrote:На строке в 11M выдаёт - 75437.
- Attachments
-
- test.7z
- (122 Bytes) Downloaded 96 times
Re: [MoonScript] Подсветка кириллицы и пробельных символов
Проверил. Сходу красит правильно, но если курсор подогнать к правой границе экрана и нажать 2 раза вправо, то раскраска с самого левого таба начинает "съезжать". Нажимая вправо далее, табы слева на право теряют раскраску.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветка кириллицы и пробельных символов
да ладно? а как же:AleXH wrote:Проверил. Сходу красит правильно, но если курсор подогнать к правой границе экрана и нажать 2 раза вправо, то раскраска с самого левого таба начинает "съезжать". Нажимая вправо далее, табы слева на право теряют раскраску.
AleXH wrote:При наличии табуляций в тексте артефактов в раскраске не наблюдаю.
AleXH wrote:FAR3.0.3924x32 красит по коду из моего предыдущего сообщения абсолютно правильно независимо от сочетаний пробельных и обычных символов, их количества и последовательностей.