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

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

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

Post by zg » Sun 11 May, 2014 02:09

AleXH wrote:Так, так , так... Пожалуйста, развейте тему - подсветить в смешанном тексте всю кириллицу. Без колорера, а скриптом.
как-то так.
(utf-8)
Attachments
rus.moon.7z
(953 Bytes) Downloaded 111 times

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Sun 11 May, 2014 04:47

Понравилось, полезно. Набросал подобный скрипт для PowerShellFar
  1. $guid = '6c877327-0f38-4735-a6d2-176f065d9a23'
  2. $drawer = $Far.GetModuleAction($guid)
  3. if ($drawer) {
  4.     $drawer.Unregister()
  5.     Show-FarMessage 'Unregistered'
  6.     return
  7. }
  8.  
  9. $null = $Psf.Manager.RegisterModuleDrawer(
  10.     $guid,
  11.     (New-Object FarNet.ModuleDrawerAttribute -Property @{Name = 'Cyrillic'; Mask = ''; Priority = 1}),
  12.     {&{
  13.         foreach($line in $_.Lines) {
  14.             foreach($m in [regex]::Matches($line.Text, '(?<=[a-zA-Z])[а-яёА-ЯЁ]+|[а-яёА-ЯЁ]+(?=[a-zA-Z])')) {
  15.                 $_.Colors.Add((New-Object FarNet.EditorColor $line.Index, $m.Index, ($m.Index + $m.Length), 'Red', 'Yellow'));
  16.             }
  17.         }
  18.     }}
  19. )
  20. 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 » Sun 11 May, 2014 14:12

zg, спасибо, сам бы такой скрипт не одолел. Может у вас ещё есть и вариант с подсветкой всей кириллицы в тексте, независимо от латиницы? - Чтобы "национальность" отдельно стоящих букв ACEHTOPKXBM можно было увидеть по шоркату.

User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

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

Post by John Doe » Sun 11 May, 2014 15:48

zg wrote:как-то так.
17 скачиваний, и только у меня одного не работает?
Функция ProcessCrest не определена.
Видимо надо исправить на ProcessColors.

User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

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

Post by John Doe » Sun 11 May, 2014 16:12

AleXH wrote:zg, спасибо, сам бы такой скрипт не одолел. Может у вас ещё есть и вариант с подсветкой всей кириллицы в тексте, независимо от латиницы? - Чтобы "национальность" отдельно стоящих букв ACEHTOPKXBM можно было увидеть по шоркату.
Так доработайте. В обычный lua переводится легко http://moonscript.org/compiler/

User avatar
zg
zero-gravity
Posts: 5240
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

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

Post by zg » Sun 11 May, 2014 17:25

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 » Wed 21 May, 2014 13:50

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

User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

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

Post by John Doe » Wed 21 May, 2014 13:53

Почему же не сделано оптимально?

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH » Wed 21 May, 2014 13:56

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

User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

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

Post by John Doe » Wed 21 May, 2014 13:58

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


Насколько я помню, всё что потребовалось, это ввести переменную 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 » Wed 21 May, 2014 14:11

Спасибо, не хватило здоровья уже дожать. Я подсвечиваю абсолютно все кириллические символы в тексте. Вот думаю, оптимальны ли такие регэкспы?:

User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

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

Post by John Doe » Wed 21 May, 2014 14:14

Для вашего случая можно упростить логику (достаточно одного регэкспа).

User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

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

Post by John Doe » Wed 21 May, 2014 14:30

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 » Wed 21 May, 2014 14:39

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

Универсальный вариант. Подсветка всей кириллицы, либо только смешанной с латиницей.

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH » Tue 03 Jun, 2014 06:25

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

Shmuel
Posts: 5096
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Tue 03 Jun, 2014 07:50

AleXH wrote:Что-то в фаре не так, иначе откуда такая катастрофическая разница?
Если хотите, чтоб я посмотрел, приложите оба варианта скрипта и обрабатываемый файл - всего 3 файла.

Post Reply

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