Latest post of the previous page:
В редакторе открыт файл в одну строку 128К символов, кодовая страница 65001 (utf8), текущий вариант красит её 44сек, но если получать и обрабатывать строку в utf-16LE, , то время раскраски составит менее секунды. Что-то в фаре не так, иначе откуда такая катастрофическая разница?[MoonScript] Подсветить в смешанном тексте всю кириллицу
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
Если хотите, чтоб я посмотрел, приложите оба варианта скрипта и обрабатываемый файл - всего 3 файла.AleXH wrote:Что-то в фаре не так, иначе откуда такая катастрофическая разница?
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
очевидно, что очень много конвертаций utf8<->ucs16.
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
да, это очевидно, но вот чтобы настолько деградировала производительность... может код конвертаций не оптимален?
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
Возможно, там постоянно пересчитывается индекс символа между UTF8/UCS16. Чем длиннее строка - тем это дольше...
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
zg wrote:очевидно, что очень много конвертаций utf8<->ucs16.
Да, и то, и другое.Max Rusov wrote:Возможно, там постоянно пересчитывается индекс символа между UTF8/UCS16. Чем длиннее строка - тем это дольше...
Code: Select all
while true
lbegin,lend,curr=word\find line,posl
Если бы фаровские регекспы имели фичу "positional captures", то можно было бы не делать цикл find, а использовать gmatch, - тогда преобразование было бы однократное.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
Shmuel wrote:Если бы фаровские регекспы имели фичу "positional captures"
Движок у фара собственный, можно было бы и реализовать?5.4.1 – Patterns wrote:As a special case, the empty capture () captures the current string position (a number). For instance, if we apply the pattern "()aa()" on the string "flaaap", there will be two captures: 3 and 5.
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
Всё можно, при наличии времени и желания.John Doe wrote:Движок у фара собственный, можно было бы и реализовать?
Однако существующие ф-ции editor.GetStringW и regex.findW позволяют эти проблемы избежать, что и сделал AleXH.
[MoonScript] Подсветить в смешанном тексте всю кириллицу
Имхо в сабже вместо должнo быть , если же нужно подсветить только кириллицу мимикрирующую под латиницу, то дополнительно вместо , пишем .
Code: Select all
word=regex.new "/\\b(\\i+)\\b/" и match:regex.new "/[а-яёА-ЯЁ]*([a-zA-Z]+[а-яёА-ЯЁ]+)+[a-zA-Z]*/"
Code: Select all
word=regex.new "/\\b(\\w+?)\\b/" и match:regex.new "/((?<=[a-zA-Z0-9])[а-яёА-ЯЁ]+|[а-яёА-ЯЁ]+(?=[a-zA-Z0-9]))/"
Code: Select all
find:regex.new "/([а-яёА-ЯЁ]+)/"
Code: Select all
find:regex.new "/([аеорсхуАВЕЗКМНОРСТХ]+)/"
Last edited by AleXH on Fri 31 Oct, 2014 15:46, edited 3 times in total.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
Полагаю вы правы.AleXH wrote:Смысл сабжа в том, чтобы подсветить все смешанные слова, а не только те, которые начинаются на латиницу.
И стоит перевести скрипт на использование W-функций.
Не знаю будет ли zg поддерживать скрипт (тему создал я).
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
А что их поддерживать? - Если у кого-то есть дополнительные идеи, оптимизации воплощённые в код, то пусть предлагают - поправим. Скрипты, в том числе и подсветки кириллицы и пробельных символов, благодаря moon легки для восприятия, по организации просты и легко поддаются модификации - поправить под себя не сложно.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
Вот это и называется поддерживать. Кто-то должен править первый пост.AleXH wrote:Если у кого-то есть дополнительные идеи, оптимизации воплощённые в код, то пусть предлагают - поправим.
Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу
Поскольку оба скрипта близнецы, то передайте сабж мне, поправлю. Думаю маловероятно, что кто-нибудь будет досаждать предложениями с улучшениями - тот, кто умеет, тот и гораздо круче себе наваяет, а кто не умеет, тот будет пользоваться готовым и жужжать не будет.
- Zeroes
- Мультикопипастер Броадкастер
- Posts: 569
- Joined: Wed 16 Mar, 2005 20:53
- Location: Gomel \ Belarus
- Has thanked: 1 time
- Been thanked: 3 times
- Contact:
[MoonScript] Подсветить в смешанном тексте всю кириллицу
А есть последний рабочий вариант какой то?
Last edited by Zeroes on Tue 09 Jan, 2024 00:07, edited 1 time in total.
--- Zeroes & Ones ---