View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001280 | Far Manager | Macro | public | 2010-02-15 22:01 | 2013-09-24 06:39 |
Reporter | max rusov | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Fixed in Version | 3.0 | ||||
Summary | 0001280: Не работает автодополнение в диалогах плагинов, если они вызываются через 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" | ||||
Tags | No tags attached. | ||||
Build | 3677 | ||||
|
|
|
Валя, это к тебе. Сабж из-за того, что при таком вызове плагина не сбрасывается состояние макродвижка "Executing", а при выполняющихся макросах дополнение отключается. |
|
Да, тут проблема глубже, чем автодополнение. При таком вызове вообще перестают работать все макросы :(. Считать это ошибкой или фичей CallPlugin - вам решать, но если это будет признано фичей, то ее надо бы документировать. Это сильно ограничивает возможности использования CallPlugin... |
|
Ну в общем то всё логично, пока CallPlugin не вышел макрос то всё ещё бежит. |
|
Как бы да. Но открытие модального диалога, это как бы запуск нового процесса. Не знаю, способен ли макродвижек на такое, есть ли в нем понятие процесса или что-то типа такого. Авторам виднее :) |
|
Почему я при "живом" все еще работающем макросе должен скидывать Executing? Плюс... можем впасть в рекурсию... max rusov, кстати (может и не в тему), ты учитываешь флаг OPEN_FROMMACRO у OpenFrom? Хотя, можно попробовать сделать обработку CallPlugin по аналогии с eval... ...так, проверь - http://skirda-file.googlecode.com/files/mantis0001280.1.rar Но не только эту багу, а вообще - в смысле не зациклится ли при макросах. |
|
max rusov, я сделал временное правило. от 1412 и дальше, выстави себе KeyMacros/CallPluginRules:dword = 1 и в таком режиме поработай. |
|
Поставил, тестирую. На первый взгляд все Ok. Если что всплывет - отпишу. |
|
Наблюдается ряд проблем: 1. Иногда после закрытия диалога в текстовый редактор вставляется мусорный символ. 2. Довольно часто после закрытия диалога внутри FAR возникают исключения. Обычно они гасятся и наружу не вылазят, и видны только под отладчиком. Но иногда роняют FAR. Прикладываю trap-log такого падения. |
|
|
|
так это точно при CallPluginRules=1? |
|
Да. |
|
а посвежее фар (из ночной сборки, например) так же падает? |
|
|
|
Build 1419 - тот же эффект. Trap-log приложил. |
|
как повторить? поподробнее, pls |
|
Ошибка проявляется нестабильно, и точного рецепта нет. Надо поставить плагин EdtFind: http://far-plugins.googlecode.com/files/EdtFindW.v1.rar Назначить ему макрос, типа того что выше приведен и поискать. У меня чаще всего проявляется при поиске регулярок, типа "\i", ".", на больших файлах. Может где-то memory-overrun?... |
|
погоняй под app verifier может чё покажет. но мне кажется что всю эту затею с callplugin надо выкидывать когда будет новый api с guid, т.е. вернутся к старым простым макросам "F11 hotkey" только вместо hotkey юзать guid но смысл останется один - посылка нажатия кнопки в меню плагинов (а не вызов плагина на прямую). |
|
Callplugin сильно быстрее, чем F11. Для некоторых ситуаций это очень заметно - например в FarHints. Не стоит от него отказываться. Если не получается вариант c CallPluginRules=1, то оставьте как было. Просто надо документировать, что CallPlugin - "синхронный" вызов и не стоит в нем показывать диалоги... |
|
так че там у нас с CallPluginRules этим тикетом и bug#981 ? |
|
А что? Я же написал - глючит. Ошибка воспроизводится, надо только несколько минут потратить - поискать на разных текстах с разными регулярками. Чинить или запретить - это сами решайте, но текущем варианте этим пользоваться нельзя. |
|
чё мы делаем с этим тикетом в свете последних изменений? (mmode(3)) |
|
чё мы делаем с этим тикетом в свете последних изменений? (mmode(3)) |
|
Почему в свете mmode(3), а не например в свете Plugin.call. P.S. А при синхронном вызове автодополнение, как и вызов макросов всё так же невозможны. |
|
> Почему в свете mmode(3), а не например в свете Plugin.call. а потому, что его официально нет. |
|
А зачем тогда здесь спешить? Я например считаю что тема не раскрыта - при синхронном вызове не работает ни автодополнение, ни макросы. |
|
Что значит не работает? А кто обещал то? Мне теперь в подпись ставить текст в стопятсот строк о принципах работы callplugin? |
|
В подпись - не надо. А в документацию - надо. А пока нет ни в подписи, ни в документации. И даже на форуме вопросы никак не прокомментированы: http://forum.farmanager.com/viewtopic.php?p=91894#p91894 http://forum.farmanager.com/viewtopic.php?p=92098#p92098 |
|
Я с вами окончательно запутался. mmode(3,x) - делает CallPlugin асинхронным или реентрантным? |
|
по умолчанию вызов callplugin останавливает выполнение макропоследовательности, до закрытия диалога плагина. а при mmode(3,1) выполнение макропоследовательности не останавливается, а продолжается прямо в диалоге плагина Я называю это синхронность/асинхронность. Как это называется "по-научному", я не знаю, поправьте если что не так. |
|
Круто конечно. Странно, только, что до этого Валентин говорил совершенно другое: > Асинхронным callplugin никогда не будет по причинам описанным выше. > mmode(3,1) - это не ассинхронный режим (не параллельный, не многонитевый). > Это обычная заморозка основной последовательность и разрешение повторно > войти в макродвиг. Все переиграли? На первый взгляд callplugin действительно становится асинхронным. Но теперь меня уже тоже смущает то, что это moode. Все таки синхронный/асинхронный слишком глобальное отличие, чтобы неявно зависеть от глобального режима... Мне кажется более правильным решением было бы добавить новый вызов, типа AsyncCallPlugin... |
|
Max Rusov: каково состояние этого тикета по отношению к текущему билду Фара? |
|
В настоящий момент все вопросы так или иначе разрешены. Тикет можно закрывать. |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-02-15 22:01 | max rusov | New Issue | |
2010-02-15 22:01 | max rusov | File Added: EdtFind.rar | |
2010-02-16 17:31 | DrKnS | Note Added: 0004963 | |
2010-02-16 17:31 | DrKnS | Assigned To | => vskirdin |
2010-02-16 17:31 | DrKnS | Status | new => assigned |
2010-02-16 20:29 | max rusov | Note Added: 0004964 | |
2010-02-16 20:34 | alexy | Note Added: 0004965 | |
2010-02-16 21:09 | max rusov | Note Added: 0004966 | |
2010-02-19 08:25 | vskirdin | Note Added: 0004986 | |
2010-02-19 08:26 | vskirdin | Note Edited: 0004986 | |
2010-02-19 14:18 | vskirdin | Note Added: 0004987 | |
2010-02-20 22:30 | max rusov | Note Added: 0004992 | |
2010-02-22 22:34 | max rusov | Note Added: 0004996 | |
2010-02-22 22:34 | max rusov | File Added: FStd_trap.log | |
2010-02-23 06:52 | vskirdin | Note Added: 0004997 | |
2010-02-23 09:14 | max rusov | Note Added: 0004998 | |
2010-02-23 13:17 | vskirdin | Note Added: 0004999 | |
2010-02-23 18:18 | max rusov | File Added: FStd_trap2.log | |
2010-02-23 18:20 | max rusov | Note Added: 0005000 | |
2010-02-26 08:11 | vskirdin | Note Added: 0005003 | |
2010-02-26 19:30 | max rusov | Note Added: 0005006 | |
2010-02-26 19:36 | alexy | Note Added: 0005007 | |
2010-02-26 19:42 | max rusov | Note Added: 0005008 | |
2010-03-18 09:37 | vskirdin | Relationship added | related to 0000981 |
2010-03-18 09:38 | vskirdin | Note Added: 0005064 | |
2010-03-18 11:05 | max rusov | Note Added: 0005072 | |
2012-03-02 08:39 | vskirdin | Note Added: 0008672 | |
2012-03-05 07:52 | vskirdin | Note Added: 0008688 | |
2012-03-05 07:52 | vskirdin | Status | assigned => feedback |
2012-03-05 09:55 | JohnDoe | Note Added: 0008694 | |
2012-03-05 09:59 | vskirdin | Note Added: 0008695 | |
2012-03-05 10:36 | JohnDoe | Note Added: 0008697 | |
2012-03-05 11:13 | vskirdin | Note Added: 0008698 | |
2012-03-05 12:07 | JohnDoe | Note Added: 0008700 | |
2012-03-05 14:12 | max rusov | Note Added: 0008701 | |
2012-03-05 14:12 | max rusov | Status | feedback => assigned |
2012-03-05 14:54 | JohnDoe | Note Added: 0008703 | |
2012-03-05 15:55 | max rusov | Note Added: 0008704 | |
2013-09-23 08:06 | shmuel | Note Added: 0011443 | |
2013-09-23 08:22 | max rusov | Note Added: 0011444 | |
2013-09-23 08:33 | shmuel | Status | assigned => resolved |
2013-09-24 06:39 | shmuel | Build | => 3677 |
2013-09-24 06:39 | shmuel | Status | resolved => closed |
2013-09-24 06:39 | shmuel | Resolution | open => fixed |
2013-09-24 06:39 | shmuel | Fixed in Version | => 3.0 |