Проблемы с mmode(1,0) в редакторе

Здесь обсуждается всё, что касается макросов.
Locked
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Проблемы с mmode(1,0) в редакторе

Post by John Doe »

Code: Select all

macro:post F4 mmode(1,0)
Если открыть файл таким макросом, то он показывается нераскрашеным, но после нажатия любой клавиши колорер таки делает своё дело.

Если mmode убрать, или заменить на mmode(1,1), то редактор показывается раскрашеным сразу, как и положено.

Update:
0001595: Проблемы с mmode(1,0) в редакторе
Last edited by John Doe on Tue 16 Nov, 2010 16:53, edited 1 time in total.
Reason: mantis
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: баги, баги, баги...

Post by SUSim »


Макро:пост, да и евал() иногда ведут себя неожиданно...
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: баги, баги, баги...

Post by John Doe »

Надеюсь понятно, что вышеприведённый код это только фрагмент реального макроса, и "не делать так" не получится.
eval() тут не при чём, как и macro:post.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: баги, баги, баги...

Post by SUSim »

Да согласен я, сталкивался с чем-то подобным, лечил так: mmode(1,1) mmode(1,0)
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: баги, баги, баги...

Post by John Doe »

Нет, толку от этого нету.

Вот фрагмент макроса побольше:

Code: Select all

	F7 print(%SearchString) Enter
	$If (Dialog)
		mmode(1,0)
	$End
Толк есть если mmode разместить до Enter.
Но это убивает всю идею: диалог поиска не должен мелькать...
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: баги, баги, баги...

Post by ctapmex »

это не баг макросов, как и не баг колорера.
колорер ждет сообщение о перерисовке редактора. а mmode(1,0) отключает посыл этого сообщения.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: баги, баги, баги...

Post by John Doe »

mmode(1,0) как раз включает, а до этого "посыл" выключен.
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: баги, баги, баги...

Post by ctapmex »

мда, из текущего хелпа по mmode это не понятно.

тогда да, бага. надо после выполнения mmode(1,0) посылать сообщение о перерисовке
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: баги, баги, баги...

Post by John Doe »

sonar wrote:мда, из текущего хелпа по mmode это не понятно.
Хелп в соответствующем топике я немного уточнил... Но есть мнение, что действительно стоит поменять действие на обратное.
sonar wrote:тогда да, бага. надо после выполнения mmode(1,0) посылать сообщение о перерисовке
В первом случае похоже.
А во втором не знаю: получается, что "посыл" приходит в то время когда открыт диалог. Должен ли колорер в этом случае раскрасить редактор под диалогом?
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: баги, баги, баги...

Post by ctapmex »

John Doe wrote: А во втором не знаю: получается, что "посыл" приходит в то время когда открыт диалог. Должен ли колорер в этом случае раскрасить редактор под диалогом?
я не проверял этот момент, но уже в теме колорера обсуждали, что врятли сообщения посланные из диалога дойдут до редактора. позже проверю
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: баги, баги, баги...

Post by Kildor »

Вот ещё в тему.
Есть макрос, удаляющий столбцы раскрашенного текста. Чтоб не мелькало, я отключаю mmode, и каждые N столбцов дёргаю mmode

Code: Select all

$if (mod(%j,%redrawStep)==0)
mmode(1,0);
mmode(1,1);
$end
Соответственно, редактор перерисовывается, а цвета — нет. Однако как только макрос заканчивается, колорер перекрашивает строку.
Есть ещё пара ситуаций, когда текст изменился, однако колорер это не отработал, и иногда даже передвижение курсора (стрелками) не помогает.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Проблемы с mmode(1,0)

Post by ctapmex »

значится провел эксперимент - из диалога послал редактору сообщение о перерисовки. как и ожидал - редактор не получил это сообщение.

Kildor
колорер реагирует на два сообщения - на сообщение о перерисовке и сообщении об вводе символов. если сообщения не пришли , то и ничего не произойдет. движение курсором не вызывает эти события (если нет каких то других плагинов).
таким образом все зависит от того как макросы работают. подавляют все сообщения или нет
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Проблемы с mmode(1,0)

Post by SUSim »

СПОНТАННО:
Скажу больше есть непонятнось: в макросах при включенном кресте при выделении вертикального блока крест колорера отрисовывается моментально, а при выделении строчного/потокового блока приходится делать в конце макроса editor.sel(...,1), то есть принудительная перерисовка редактора происходит не по mmode, а только по установке конца выделения, Причем эту установку для поточного блока приходится вызывать вручную, а для вертикального она срабатывает автоматом...
Короче чтобы перекрасить редактор с колорером вызовите editor.sel(3,1)... вы думаете почему я макрос выделения блока в редакторе менял? и писал "+костыль" для работы креста колорера? кстати даже простой макрос вызывающий смену позиции курсора не заставляет колорер перекрасить текст - точнее нет сообщения Фара что надо перерисовать:(
SimSU ··· ·· -- ··· ··-
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Проблемы с mmode(1,0)

Post by Kildor »

Да, это помогло. Спасибо.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Проблемы с mmode(1,0)

Post by SUSim »

Спонтанно:
Хорошо что помогло, но вопрос остался открытым...
Почему редактор в некоторых случаях перерисовывается сразу, а в некоторых нет?
Как бы заставить, или хотя бы регламентировать (объяснить причины перерисовки или нет редактора).
Наводка для фартим: почему макросы изменяющие позицию курсора не заставляет перерисовать редактор, а выделение ВЕРТИКАЛЬНОГО блока вызывает???

Может сделать спец команду для обновления редактора, или перерисовывать редактор при любом изменении (правки или позиции) а не только как при выделении вертикально блока?
SimSU ··· ·· -- ··· ··-
Locked

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