View Issue Details

IDProjectCategoryView StatusLast Update
0001280Far ManagerMacropublic2013-09-24 09:39
Reportermax rusovAssigned Tovskirdin 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version 
Target VersionFixed in Version3.0 
Summary0001280: Не работает автодополнение в диалогах плагинов, если они вызываются через CallPlugin
DescriptionНе работает автодополнение в диалогах плагинов, если они вызываются через CallPlugin
Steps To ReproduceУстановить приложенный плагин EdtFind и назначить ему макрос, типа:

[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Consts]
"EdtFind"=dword:444E4645

[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Editor\CtrlS]
"Sequence"="CallPlugin(EdtFind, 1)"
"Description"="EdtFind: Find"

TagsNo tags attached.
Build3677

Relationships

related to 0000981 closedvskirdin Far Manager 1.7x Far падает, после вызова плагина через CallPlugin 

Activities

max rusov

2010-02-16 01:01

reporter  

EdtFind.rar (23,463 bytes)

DrKnS

2010-02-16 20:31

administrator   bugnote:0004963

Валя, это к тебе.

Сабж из-за того, что при таком вызове плагина не сбрасывается состояние макродвижка "Executing", а при выполняющихся макросах дополнение отключается.

max rusov

2010-02-16 23:29

reporter   bugnote:0004964

Да, тут проблема глубже, чем автодополнение. При таком вызове вообще перестают работать все макросы :(. Считать это ошибкой или фичей CallPlugin - вам решать, но если это будет признано фичей, то ее надо бы документировать. Это сильно ограничивает возможности использования CallPlugin...

alexy

2010-02-16 23:34

administrator   bugnote:0004965

Ну в общем то всё логично, пока CallPlugin не вышел макрос то всё ещё бежит.

max rusov

2010-02-17 00:09

reporter   bugnote:0004966

Как бы да. Но открытие модального диалога, это как бы запуск нового процесса. Не знаю, способен ли макродвижек на такое, есть ли в нем понятие процесса или что-то типа такого. Авторам виднее :)

vskirdin

2010-02-19 11:25

administrator   bugnote:0004986

Last edited: 2010-02-19 11:26

View 2 revisions

Почему я при "живом" все еще работающем макросе должен скидывать Executing?
Плюс... можем впасть в рекурсию...

max rusov, кстати (может и не в тему), ты учитываешь флаг OPEN_FROMMACRO у OpenFrom?

Хотя, можно попробовать сделать обработку CallPlugin по аналогии с eval...

...так, проверь - http://skirda-file.googlecode.com/files/mantis0001280.1.rar
Но не только эту багу, а вообще - в смысле не зациклится ли при макросах.

vskirdin

2010-02-19 17:18

administrator   bugnote:0004987

max rusov,
я сделал временное правило.
от 1412 и дальше, выстави себе KeyMacros/CallPluginRules:dword = 1
и в таком режиме поработай.

max rusov

2010-02-21 01:30

reporter   bugnote:0004992

Поставил, тестирую. На первый взгляд все Ok. Если что всплывет - отпишу.

max rusov

2010-02-23 01:34

reporter   bugnote:0004996

Наблюдается ряд проблем:
1. Иногда после закрытия диалога в текстовый редактор вставляется мусорный символ.
2. Довольно часто после закрытия диалога внутри FAR возникают исключения. Обычно они гасятся и наружу не вылазят, и видны только под отладчиком. Но иногда роняют FAR. Прикладываю trap-log такого падения.

max rusov

2010-02-23 01:34

reporter  

FStd_trap.log (32,537 bytes)

vskirdin

2010-02-23 09:52

administrator   bugnote:0004997

так это точно при CallPluginRules=1?

max rusov

2010-02-23 12:14

reporter   bugnote:0004998

Да.

vskirdin

2010-02-23 16:17

administrator   bugnote:0004999

а посвежее фар (из ночной сборки, например) так же падает?

max rusov

2010-02-23 21:18

reporter  

FStd_trap2.log (32,537 bytes)

max rusov

2010-02-23 21:20

reporter   bugnote:0005000

Build 1419 - тот же эффект. Trap-log приложил.

vskirdin

2010-02-26 11:11

administrator   bugnote:0005003

как повторить? поподробнее, pls

max rusov

2010-02-26 22:30

reporter   bugnote:0005006

Ошибка проявляется нестабильно, и точного рецепта нет. Надо поставить плагин EdtFind:

http://far-plugins.googlecode.com/files/EdtFindW.v1.rar

Назначить ему макрос, типа того что выше приведен и поискать. У меня чаще всего проявляется при поиске регулярок, типа "\i", ".", на больших файлах. Может где-то memory-overrun?...

alexy

2010-02-26 22:36

administrator   bugnote:0005007

погоняй под app verifier может чё покажет.
но мне кажется что всю эту затею с callplugin надо выкидывать когда будет новый api с guid, т.е. вернутся к старым простым макросам "F11 hotkey" только вместо hotkey юзать guid но смысл останется один - посылка нажатия кнопки в меню плагинов (а не вызов плагина на прямую).

max rusov

2010-02-26 22:42

reporter   bugnote:0005008

Callplugin сильно быстрее, чем F11. Для некоторых ситуаций это очень заметно - например в FarHints. Не стоит от него отказываться. Если не получается вариант c CallPluginRules=1, то оставьте как было. Просто надо документировать, что CallPlugin - "синхронный" вызов и не стоит в нем показывать диалоги...

vskirdin

2010-03-18 12:38

administrator   bugnote:0005064

так че там у нас с CallPluginRules этим тикетом и bug#981 ?

max rusov

2010-03-18 14:05

reporter   bugnote:0005072

А что? Я же написал - глючит. Ошибка воспроизводится, надо только несколько минут потратить - поискать на разных текстах с разными регулярками. Чинить или запретить - это сами решайте, но текущем варианте этим пользоваться нельзя.

vskirdin

2012-03-02 12:39

administrator   bugnote:0008672

чё мы делаем с этим тикетом в свете последних изменений? (mmode(3))

vskirdin

2012-03-05 11:52

administrator   bugnote:0008688

чё мы делаем с этим тикетом в свете последних изменений? (mmode(3))

JohnDoe

2012-03-05 13:55

updater   bugnote:0008694

Почему в свете mmode(3), а не например в свете Plugin.call.

P.S.
А при синхронном вызове автодополнение, как и вызов макросов всё так же невозможны.

vskirdin

2012-03-05 13:59

administrator   bugnote:0008695

> Почему в свете mmode(3), а не например в свете Plugin.call.
а потому, что его официально нет.

JohnDoe

2012-03-05 14:36

updater   bugnote:0008697

А зачем тогда здесь спешить?

Я например считаю что тема не раскрыта - при синхронном вызове не работает ни автодополнение, ни макросы.

vskirdin

2012-03-05 15:13

administrator   bugnote:0008698

Что значит не работает? А кто обещал то?
Мне теперь в подпись ставить текст в стопятсот строк о принципах работы callplugin?

JohnDoe

2012-03-05 16:07

updater   bugnote:0008700

В подпись - не надо. А в документацию - надо.
А пока нет ни в подписи, ни в документации.

И даже на форуме вопросы никак не прокомментированы:
http://forum.farmanager.com/viewtopic.php?p=91894#p91894
http://forum.farmanager.com/viewtopic.php?p=92098#p92098

max rusov

2012-03-05 18:12

reporter   bugnote:0008701

Я с вами окончательно запутался.

mmode(3,x) - делает CallPlugin асинхронным или реентрантным?

JohnDoe

2012-03-05 18:54

updater   bugnote:0008703

по умолчанию вызов callplugin останавливает выполнение макропоследовательности, до закрытия диалога плагина.

а при mmode(3,1) выполнение макропоследовательности не останавливается, а продолжается прямо в диалоге плагина

Я называю это синхронность/асинхронность.
Как это называется "по-научному", я не знаю, поправьте если что не так.

max rusov

2012-03-05 19:55

reporter   bugnote:0008704

Круто конечно. Странно, только, что до этого Валентин говорил совершенно другое:

> Асинхронным callplugin никогда не будет по причинам описанным выше.
> mmode(3,1) - это не ассинхронный режим (не параллельный, не многонитевый).
> Это обычная заморозка основной последовательность и разрешение повторно
> войти в макродвиг.

Все переиграли?

На первый взгляд callplugin действительно становится асинхронным. Но теперь меня уже тоже смущает то, что это moode. Все таки синхронный/асинхронный слишком глобальное отличие, чтобы неявно зависеть от глобального режима...
Мне кажется более правильным решением было бы добавить новый вызов, типа AsyncCallPlugin...

shmuel

2013-09-23 11:06

developer   bugnote:0011443

Max Rusov: каково состояние этого тикета по отношению к текущему билду Фара?

max rusov

2013-09-23 11:22

reporter   bugnote:0011444

В настоящий момент все вопросы так или иначе разрешены. Тикет можно закрывать.

Issue History

Date Modified Username Field Change
2010-02-16 01:01 max rusov New Issue
2010-02-16 01:01 max rusov File Added: EdtFind.rar
2010-02-16 20:31 DrKnS Note Added: 0004963
2010-02-16 20:31 DrKnS Assigned To => vskirdin
2010-02-16 20:31 DrKnS Status new => assigned
2010-02-16 23:29 max rusov Note Added: 0004964
2010-02-16 23:34 alexy Note Added: 0004965
2010-02-17 00:09 max rusov Note Added: 0004966
2010-02-19 11:25 vskirdin Note Added: 0004986
2010-02-19 11:26 vskirdin Note Edited: 0004986 View Revisions
2010-02-19 17:18 vskirdin Note Added: 0004987
2010-02-21 01:30 max rusov Note Added: 0004992
2010-02-23 01:34 max rusov Note Added: 0004996
2010-02-23 01:34 max rusov File Added: FStd_trap.log
2010-02-23 09:52 vskirdin Note Added: 0004997
2010-02-23 12:14 max rusov Note Added: 0004998
2010-02-23 16:17 vskirdin Note Added: 0004999
2010-02-23 21:18 max rusov File Added: FStd_trap2.log
2010-02-23 21:20 max rusov Note Added: 0005000
2010-02-26 11:11 vskirdin Note Added: 0005003
2010-02-26 22:30 max rusov Note Added: 0005006
2010-02-26 22:36 alexy Note Added: 0005007
2010-02-26 22:42 max rusov Note Added: 0005008
2010-03-18 12:37 vskirdin Relationship added related to 0000981
2010-03-18 12:38 vskirdin Note Added: 0005064
2010-03-18 14:05 max rusov Note Added: 0005072
2012-03-02 12:39 vskirdin Note Added: 0008672
2012-03-05 11:52 vskirdin Note Added: 0008688
2012-03-05 11:52 vskirdin Status assigned => feedback
2012-03-05 13:55 JohnDoe Note Added: 0008694
2012-03-05 13:59 vskirdin Note Added: 0008695
2012-03-05 14:36 JohnDoe Note Added: 0008697
2012-03-05 15:13 vskirdin Note Added: 0008698
2012-03-05 16:07 JohnDoe Note Added: 0008700
2012-03-05 18:12 max rusov Note Added: 0008701
2012-03-05 18:12 max rusov Status feedback => assigned
2012-03-05 18:54 JohnDoe Note Added: 0008703
2012-03-05 19:55 max rusov Note Added: 0008704
2013-09-23 11:06 shmuel Note Added: 0011443
2013-09-23 11:22 max rusov Note Added: 0011444
2013-09-23 11:33 shmuel Status assigned => resolved
2013-09-24 09:39 shmuel Build => 3677
2013-09-24 09:39 shmuel Status resolved => closed
2013-09-24 09:39 shmuel Resolution open => fixed
2013-09-24 09:39 shmuel Fixed in Version => 3.0