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

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

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

Post by AleXH » Thu 29 May, 2014 08:17

Image

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

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

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

Скрипт-прототип

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

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

Post by John Doe » Thu 29 May, 2014 10:41

По уму их надо было бы раскрашивать цветом фона редактора + 8, но как это сделать, не знаю
Это как?
AleXH wrote:До конца не уверен в правильности алгоритма - если обменять местами if ruEnd и if spEnd (с содержимым разумеется), то между латиницей и кириллицей расцветка пробелов будет отсутствовать, почему - не знаю.
Потому что от их порядка зависит результирующее значение переменной posl.

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

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

Post by AleXH » Thu 29 May, 2014 10:53

Это как?
Это разумно - получить значение текущего фона, увеличить его на 8, сделав светлее. Сейчас же рассчитано на стандартную цветовую схему, в которой текст голубой на синем, а так можно будет юзать без переделки и на других схемах.
Потому что от их порядка зависит результирующее значение переменной posl.
:) Это-то понятно, но если затестить на строке типа "йqqй qйq qййq й q q й й", то становится очевидным, что нужно либо 2 отдельных счётчика позиций, либо, что разумнее, один, но учитывающий состояние другого.

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

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

Post by John Doe » Thu 29 May, 2014 11:08

AleXH wrote:Это разумно - получить значение текущего фона, увеличить его на 8, сделав светлее.
Для RGB нужен Conemu.
Update: если без Conemu, то фар будет пытаться подбирать наиболее подходящий цвет из консольной палитры.
AleXH wrote:
Потому что от их порядка зависит результирующее значение переменной posl.
:) Это-то понятно, но[...]
Поскольку это уже говорит об ошибке в логике, то дальше я смотреть не стал.

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

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

Post by zg » Thu 29 May, 2014 11:12

AleXH wrote:Это разумно - получить значение текущего фона, увеличить его на 8, сделав светлее.
и что мешает так сделать?
AleXH wrote:Сейчас же рассчитано на стандартную цветовую схему
а так будет рассчитано только на 4х битные схемы с тёмным фоном.

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

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

Post by AleXH » Thu 29 May, 2014 11:15

Правильно раскрашивает такой вариант , но оптимален ли он?
zg wrote:и что мешает так сделать?
- риторический вопрос. Видимо отсутствие необходимых знаний, не?

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

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

Post by John Doe » Thu 29 May, 2014 11:23

Как-то так (не проверялось):

Code: Select all

          ruEnd,spEnd=0,0
          while ruEnd
            ruBegin,ruEnd=ruSymbols\find line,ruEnd+1
            if ruEnd
              editor.AddColor ei.EditorID,ii,ruBegin,ruEnd,0,ruColor,190,colorguid
          while spEnd
            spBegin,spEnd=spSymbols\find line,spEnd+1
            if spEnd
              editor.AddColor ei.EditorID,ii,spBegin,spEnd,0,spColor,190,colorguid
А про RGB почитайте, кто ж не даёт.

P.S.
AleXH wrote:Это-то понятно, но если затестить на строке типа "йqqй qйq qййq й q q й й", то становится очевидным, что нужно либо 2 отдельных счётчика позиций, либо, что разумнее, один, но учитывающий состояние другого.
А это за пределами моего понимания.

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

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

Post by AleXH » Thu 29 May, 2014 11:40

zg wrote:а так будет рассчитано только на 4х битные схемы с тёмным фоном.
Для 4х битных - если полученное значение больше 8, то отнять 8. RGB не юзаю - RGB схемы из дистриба моему монику не очень, а править их в моём случае не оправданно, и так есть чем заниматься.

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

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

Post by John Doe » Thu 29 May, 2014 12:03

Подозреваю можно использовать любые RGB-цвета, а фар при необходимости подберёт из палитры наиболее подходящий.
(При чём тут какие-то RGB-схемы я не понял)

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

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

Post by John Doe » Thu 29 May, 2014 16:14

Подумалось, что для пробельных символов интересно было бы красить не фон а текст, для режима [x] Show white space

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

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

Post by AleXH » Fri 30 May, 2014 05:50

John Doe, так и сделано изначально: Получать цвет фона нужно для того, чтобы сделать пробельные символы малозаметными, не лезущими в глаза при чтении основного текста.

Текущий вариант скрипта

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

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

Post by John Doe » Fri 30 May, 2014 08:54

AleXH wrote:Получать цвет фона нужно для того, чтобы сделать пробельные символы малозаметными, не лезущими в глаза при чтении основного текста.
Так а где же вы их получаете (я не нашёл). Вижу повсюду жестко забитые числовые значения. 0xe, 0xc, 0x9, 0x1.
AleXH wrote:Текущий вариант скрипта[...]
Может шапку оформите?

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

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

Post by AleXH » Fri 30 May, 2014 12:17

John Doe wrote:Так а где же вы их получаете (я не нашёл). Вижу повсюду жестко забитые числовые значения. 0xe, 0xc, 0x9, 0x1.
- Нигде, потому что не знаю как. - Потыкался, в энциклопедии, api.farmanager.com, не нашёл. Плюнул - нет ни времени, ни здоровья, поэтому поставил жёстко - на стандартной схеме работает, кто захочет - для своей схемы исправит.

Если кто-то знает, как сделать скрипт лучше - предлагайте, я только за. - Шапку я поправлю.

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

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

Post by John Doe » Fri 30 May, 2014 12:21

AleXH wrote:Нигде, потому что не знаю как.
ACTL_GETCOLOR?

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

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

Post by AleXH » Fri 30 May, 2014 17:43

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

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

Строку в 512К колорер красит 4сек, а сабж - подождал 4-е минуты и пристрелил, загружая при этом ядро на 100%.
Строку в 64К колорер красит около секунды, сабж 8 сек, снимает раскраску 4 сек. Замеры делались на глаз, визуально. Луа вариант скрипта дал такие же, как и муна результаты.

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

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

Post by zg » Fri 30 May, 2014 18:30

фар отдаёт ссылку на внутренние данные, колорер работает с ними, луафар — копирует себе. в принципе было бы логично расширить.
а зачем вообще нужно красить файлы со строками в 11mb? я конечно втречал в жизни xml-ы размером в пару мегабайт в одну строку, но от раскраски там было мало толку.

Post Reply

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