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

Здесь обсуждается всё, что касается макросов.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

Image

Исходный код: 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.
User avatar
John Doe
Бюрократ
Posts: 12867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

По уму их надо было бы раскрашивать цветом фона редактора + 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 »

Это как?
Это разумно - получить значение текущего фона, увеличить его на 8, сделав светлее. Сейчас же рассчитано на стандартную цветовую схему, в которой текст голубой на синем, а так можно будет юзать без переделки и на других схемах.
Потому что от их порядка зависит результирующее значение переменной posl.
:) Это-то понятно, но если затестить на строке типа "йqqй qйq qййq й q q й й", то становится очевидным, что нужно либо 2 отдельных счётчика позиций, либо, что разумнее, один, но учитывающий состояние другого.
User avatar
John Doe
Бюрократ
Posts: 12867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

AleXH wrote:Это разумно - получить значение текущего фона, увеличить его на 8, сделав светлее.
Для RGB нужен Conemu.
Update: если без Conemu, то фар будет пытаться подбирать наиболее подходящий цвет из консольной палитры.
AleXH wrote:
Потому что от их порядка зависит результирующее значение переменной posl.
:) Это-то понятно, но[...]
Поскольку это уже говорит об ошибке в логике, то дальше я смотреть не стал.
User avatar
zg
zero-gravity
Posts: 5861
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 155 times
Contact:

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

Post by zg »

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 »

Правильно раскрашивает такой вариант , но оптимален ли он?
zg wrote:и что мешает так сделать?
- риторический вопрос. Видимо отсутствие необходимых знаний, не?
User avatar
John Doe
Бюрократ
Posts: 12867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

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

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 »

zg wrote:а так будет рассчитано только на 4х битные схемы с тёмным фоном.
Для 4х битных - если полученное значение больше 8, то отнять 8. RGB не юзаю - RGB схемы из дистриба моему монику не очень, а править их в моём случае не оправданно, и так есть чем заниматься.
User avatar
John Doe
Бюрократ
Posts: 12867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

Подозреваю можно использовать любые RGB-цвета, а фар при необходимости подберёт из палитры наиболее подходящий.
(При чём тут какие-то RGB-схемы я не понял)
User avatar
John Doe
Бюрократ
Posts: 12867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

Подумалось, что для пробельных символов интересно было бы красить не фон а текст, для режима [x] Show white space
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

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

Текущий вариант скрипта
User avatar
John Doe
Бюрократ
Posts: 12867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

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 »

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

Если кто-то знает, как сделать скрипт лучше - предлагайте, я только за. - Шапку я поправлю.
User avatar
John Doe
Бюрократ
Posts: 12867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

AleXH wrote:Нигде, потому что не знаю как.
ACTL_GETCOLOR?
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

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

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

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

Return to “Обсуждение макросов”