Как выполнять операции в редакторе из событий плагина?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
xarx
Posts: 123
Joined: Tue 23 Nov, 2010 12:06

Как выполнять операции в редакторе из событий плагина?

Post by xarx » Thu 30 May, 2013 08:27

У меня плагин для редактора, который не делает обработку текста в одной трансакции. Я бы хотел его "исправить" с помощью макросов на Lua.
С нажиманием кнопки "ОК" в диалоге плагина нужно сделать

Code: Select all

Editor.Undo(0) --start transaction
и после операций

Code: Select all

Editor.Undo(1) --end transaction
Как это сделать? Проблема в том, что "Editor" не показывает на редактор, для которого был плагин выполнен, а на какой то локальный редактор диалога плагина.

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

Re: Как выполнять операций на редакторе из собитий плагина?

Post by John Doe » Thu 30 May, 2013 08:47

xarx wrote:Проблема в том, что "Editor" не показывает на редактор, для которого был плагин выполнен, а на какой то локальный редактор диалога плагина.
Encyclopedia\luafar_manual.chm::/283.html
result = editor.UndoRedo (EditorId, Command)

P.S.
Я бы попробовал проще: ставить маркер начала блока перед открытием диалога, и маркер конца - после закрытия, независимо от того какая кнопка в диалоге была нажата.

xarx
Posts: 123
Joined: Tue 23 Nov, 2010 12:06

Re: Как выполнять операций на редакторе из собитий плагина?

Post by xarx » Thu 30 May, 2013 09:40

Спасибо снова! Это только меня, кто не ориентируется в постоянной документации и не сумеет найти чего требует?

xarx
Posts: 123
Joined: Tue 23 Nov, 2010 12:06

Re: Как выполнять операций на редакторе из собитий плагина?

Post by xarx » Thu 30 May, 2013 09:47

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

Code: Select all

Plugin.Menu(GUIDBlockProcessor)
но кажется, что это асинхронное выполнение, то не знаю, где в этом случае завершaть трансакцию.

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

Re: Как выполнять операций на редакторе из собитий плагина?

Post by John Doe » Thu 30 May, 2013 10:00

xarx wrote:Это только меня, кто не ориентируется в постоянной документации и не сумеет найти чего требует?
Не понял вопроса.
xarx wrote:

Code: Select all

Plugin.Menu(GUIDBlockProcessor)
но кажется, что это асинхронное выполнение, то не знаю, где в этом случае завершaть трансакцию.
Я не утверждаю, что предложенный мной вам подходит. Пробуйте по-своему.

xarx
Posts: 123
Joined: Tue 23 Nov, 2010 12:06

Re: Как выполнять операций на редакторе из собитий плагина?

Post by xarx » Thu 30 May, 2013 10:12

John Doe wrote:
xarx wrote:Это только меня, кто не ориентируется в постоянной документации и не сумеет найти чего требует?
Не понял вопроса.
Is it only me who cannot find what he needs in the current far documentation? Because you have already pointed me several times to a page in the documentation that I wasn't able to find myself.
I have written several times, that the documentation looks very scattered to me, but this may be my own personal feeling only.

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

Re: Как выполнять операции в редакторе из событий плагина?

Post by John Doe » Thu 30 May, 2013 10:40

Вопросов на форуме мало потому что мало кто пытается вникнуть.
Документация действительно разбросана, и это реальная проблема для всех.

И объединить документацию это довольно трудоёмкая задача.

1. После перехода на lua макросам доступны 2 разных api
- API макросов
- API плагинов
Во многом они пересекаются, что вносит дополнительную путаницу

2. Новое API макросов описывается в macroapi_manual.chm, но для понимания нужна и старая документация в FarEncyclopedia.ru.chm

3. API lua-плагинов описывается в luafar_manual.chm, но очень кратко, и для пониматия тоже приходится обращаться к FarEncyclopedia.ru.chm

Чтобы было немного проще - я добавлял перекрёстные ссылки в macroapi_manual.chm и luafar_manual.chm (для быстрого перехода к статьям Энциклопеции)
Модифицированные версии можно скачать в шапках тем LuaMacro и LuaFAR

4. По обработке событий документация сильно отстаёт. Кое-что собрано здесь: http://forum.farmanager.com/viewtopic.php?f=15&t=7693

xarx
Posts: 123
Joined: Tue 23 Nov, 2010 12:06

Re: Как выполнять операции в редакторе из событий плагина?

Post by xarx » Thu 30 May, 2013 11:07

Спасибо за ваше время. Я бы помог, но эту работу дольжен сделать кто-нибуть кто разумеет Far-у хорошо, и тоже мои владения русским языком являются недостаточными.
John Doe wrote:Чтобы было немного проще - я добавлял перекрёстные ссылки в macroapi_manual.chm и luafar_manual.chm (для быстрого перехода к статьям Энциклопеции)
Модифицированные версии можно скачать в шапках тем LuaMacro и LuaFAR
И почему это не в дистрибуции?

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

Re: Как выполнять операции в редакторе из событий плагина?

Post by John Doe » Thu 30 May, 2013 11:26

xarx wrote:И почему это не в дистрибуции?
Здесь это оффтопик, поэтому обсуждать не будем. Но примерно так:

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

Re: Как выполнять операций на редакторе из собитий плагина?

Post by John Doe » Thu 30 May, 2013 15:55

xarx wrote:Я выполняю плагин из макроса с использованием

Code: Select all

Plugin.Menu(GUIDBlockProcessor)
но кажется, что это асинхронное выполнение, то не знаю, где в этом случае завершaть трансакцию.
Кстати с помощью mmode(3,x) для Plugin.Call можно выбирать синхронный или асинхронный режим выполнения.
Для Plugin.Menu это не реализовано, но может быть тоже возможно.

Стоит поместить пожелание на багтрекер.

Post Reply

Return to “Нужна помощь”