[MoonScript] Подсветить в смешанном тексте всю кириллицу

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

[MoonScript] Подсветить в смешанном тексте всю кириллицу

Post by zg »

AleXH wrote:Так, так , так... Пожалуйста, развейте тему - подсветить в смешанном тексте всю кириллицу. Без колорера, а скриптом.
как-то так.
(utf-8)
Attachments
rus.moon.7z
(953 Bytes) Downloaded 226 times
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer: как выделить неск-ко слов

Post by NightRoman »

Понравилось, полезно. Набросал подобный скрипт для PowerShellFar
  1. $guid = '6c877327-0f38-4735-a6d2-176f065d9a23'
  2.  
  3. $drawer = $Far.GetModuleAction($guid)
  4.  
  5. if ($drawer) {
  6.  
  7.     $drawer.Unregister()
  8.  
  9.     Show-FarMessage 'Unregistered'
  10.  
  11.     return
  12.  
  13. }
  14.  
  15.  
  16.  
  17. $null = $Psf.Manager.RegisterModuleDrawer(
  18.  
  19.     $guid,
  20.  
  21.     (New-Object FarNet.ModuleDrawerAttribute -Property @{Name = 'Cyrillic'; Mask = ''; Priority = 1}),
  22.  
  23.     {&{
  24.  
  25.         foreach($line in $_.Lines) {
  26.  
  27.             foreach($m in [regex]::Matches($line.Text, '(?<=[a-zA-Z])[а-яёА-ЯЁ]+|[а-яёА-ЯЁ]+(?=[a-zA-Z])')) {
  28.  
  29.                 $_.Colors.Add((New-Object FarNet.EditorColor $line.Index, $m.Index, ($m.Index + $m.Length), 'Red', 'Yellow'));
  30.  
  31.             }
  32.  
  33.         }
  34.  
  35.     }}
  36.  
  37. )
  38.  
  39. Show-FarMessage 'Registered, use F11 \ FarNet \ Drawers \ Cyrillic'
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Редактор: как выделить цветом неск-ко слов

Post by AleXH »

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

Re: Colorer: как выделить неск-ко слов

Post by John Doe »

zg wrote:как-то так.
17 скачиваний, и только у меня одного не работает?
Функция ProcessCrest не определена.
Видимо надо исправить на ProcessColors.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Редактор: как выделить цветом неск-ко слов

Post by John Doe »

AleXH wrote:zg, спасибо, сам бы такой скрипт не одолел. Может у вас ещё есть и вариант с подсветкой всей кириллицы в тексте, независимо от латиницы? - Чтобы "национальность" отдельно стоящих букв ACEHTOPKXBM можно было увидеть по шоркату.
Так доработайте. В обычный lua переводится легко http://moonscript.org/compiler/
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Colorer: как выделить неск-ко слов

Post by zg »

John Doe wrote:
zg wrote:как-то так.
17 скачиваний, и только у меня одного не работает?
видимо больше никто постоянно не делает macro:load при хотя бы одном открытом редакторе.
перезалил.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу

Post by AleXH »

Модификация скрипта zg - включение/отключение подсветки всех кириллических символов в редакторе по F3. Скрипт работает, вместе с тем он не оптимален, так как перерисовывает экран и при отключенной подсветке.
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 »

John Doe, знаний не хватает :) Но zg огромное спасибо - очень удобно. Возможно имело бы смысл раскрашивать не во всех окнах редактора, а только в инициированном, но победить не смогу.
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 »

А какие тут знания нужны? Достаточно условие поставить в обработчике.
Вот кстати мой вариант, я по совпадению тоже баловался:


Насколько я помню, всё что потребовалось, это ввести переменную active, и добавить её в условие в обработчике: if active and event==F.EE_REDRAW then.
Плюс макрос на CtrlF1
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 »

Для вашего случая можно упростить логику (достаточно одного регэкспа).
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 wrote:Возможно имело бы смысл раскрашивать не во всех окнах редактора, а только в инициированном, но победить не смогу.
Если менять минимально, то можно в обработчике EE_READ сбрасывать флаг.
Но в идеале чуть иначе: действие EE_READ перенести в макрос, а качестве флага использовать саму таблицу editors (+маленько оптимизировать):
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу

Post by AleXH »

Кстати, регэсп не матчит случаи с лидирующей кириллицей, типа йййqqqq.

Универсальный вариант. Подсветка всей кириллицы, либо только смешанной с латиницей.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: [MoonScript] Подсветить в смешанном тексте всю кириллицу

Post by AleXH »

В редакторе открыт файл в одну строку 128К символов, кодовая страница 65001 (utf8), текущий вариант красит её 44сек, но если получать и обрабатывать строку в utf-16LE, , то время раскраски составит менее секунды. Что-то в фаре не так, иначе откуда такая катастрофическая разница?
Post Reply

Return to “Полезные макросы и скрипты”