View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002290 | Far Manager | Macro | public | 2013-02-05 13:51 | 2013-03-06 06:11 |
Reporter | JohnDoe | Assigned To | shmuel | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0002290: Функция akey() не работает в condition | ||||
Description | Функция востребована при проверке условия запуска. http://forum.farmanager.com/viewtopic.php?p=102845#p102845 | ||||
Tags | No tags attached. | ||||
Build | 3203.5 | ||||
|
shmuel 16.02.2013 23:01:07 +0200 - build 1. Макросы: функция condition() вызывается с одним аргументом-строкой: имя ключа. * Это не касается макросов, вызываемых во время 'RunAfterFARStart'. * Это не касается событий. * Это сделано потому, что akey() не работает, будучи вызвана из condition(). |
|
Работает. Но обнаружилось несоответствие функции akey(1,1), при вызове макроса через eval(S,2) Пример: Macro {area="Common"; key="F2"; action=function() mf.eval("F1",2) end;} Macro { area="Common"; key="F1"; condition=function(akey) msgbox(akey); return true end; action=function() msgbox(akey(1,1)) end; } В результате при нажатии F2 мы получим разные значения в condition поступит "F1", а в action "F2". Похоже на баг в функции mf.akey() |
|
Ещё веселее, если запускать из панелей через lm:post mf.eval("F1",2) В этом случае akey вернёт ☺ (это смайлик, символ с десятичным кодом 11) |
|
Проверил в Far 2 - там всё нормально. Однозначно это баг функции akey, внесённый в тройке Полагаю, это выходит за рамки тикета, создам отдельный. |
|
По данному тикету тоже есть вопрос для обсуждения: В функцию передаётся название клавиши, на которую назначен макрос. Но если пользоваться eval, то бывает нужно знать и реальную, изначально нажатую клавишу. Для этого в action служит (временно поломанный) akey(1,1). |
|
Давайте не отходить от исходно заявленной темы. В condition() всегда приходит аргументом реально нажатая клавиша. На мой взгляд, данный тикет разрешён, все прочие вопросы должны обсуждаться не здесь. |
|
Формально тикет не решён: akey всё так же не работает в condition Реализована замена для akey(1,0) А akey(1,1) заменить пока нечем. Возможно стоит передавать в condition параметр-таблицу с двумя полями |
|
А что значит сейчас "клавиша, на которую назначен макрос"? Это может быть и несколько клавиш, и регулярное выражение. И вообще я не собираюсь слепо копировать функциональность макроязыка. |
|
Это клавиша, на которую определён макрос. Но не список и не регэксп, а одна реально сработавшая клавиша. Как правило akey(1,1)=akey(1,0) Кроме случая когда макрос вызван из другого макроса, с помощью eval(Key,2) |
|
> Реализована замена для akey(1,1) Неверно. И вообще, никакая "замена" не реализовывалась. Реализована передача имени реально нажатой клавиши в функцию condition, так как она бывает там востребована. |
|
Я понимаю, что это не было вашей целью, однако это не меняет факта. Передаваемое имя в точности соответствует поведению akey(1,0), если akey починить. |
|
John Doe: > Передаваемое имя в точности соответствует поведению akey(1,1), > если akey починить. Из Энциклопедии: > Type = 0 - возвращает реально нажатое сочетание, которым вызывался макрос, > Type = 1 - возвращает клавишу, на которую назначен макрос. Функция condition получает аргументом реально нажатое сочетание, то-есть соответствует akey(1,0). |
|
100%, исправил своё сообщение. |
|
Не очень логично исправлять сообщения после того, как они уже процитированы. |
|
Я исправил не для того, чтобы показать какой я молодец, а для того, чтобы прояснить сказанное, не внося ещё большую путаницу. |
|
Как раз при этом путаница и вносится. Человек, который это будет читать сверху вниз, не поймёт в чём дело. Написано одно, процитировано другое. |
|
Возможно вы и правы, не буду сейчас спорить. Проблему с akey(1,1) я заявил в 0002309 После её решения (если такое произойдёт) вернёмся к теме тут. |
|
Навряд ли я вернусь, с моей точки зрения данный тикет разрешён (по сути, а не по форме). |
|
Давайте тогда начнём сначала. Нужна ли возможность вызвать макрос из макроса? Макрос, привязанный к клавише, из другого макроса, привязанного на клавишу. |
|
> Нужна ли возможность вызвать макрос из макроса? При вызове макроса из макроса не вызывается condition(). |
|
Вызывается, см. выше 0002290:0010331 |
|
Сейчас проверил, вызывается, но это оказался баг, внесённый в билде 3078. Не будет вызываться. |
|
John Doe, к сведению, изменение в плагине LuaMacro: shmuel 06.03.2013 08:00:28 +0200 - build 103 1. При вызове eval(str,2) целевой макрос выбирается обычным алгоритмом выбора, с учётом флагов, приоритетов и функции condition. |
Date Modified | Username | Field | Change |
---|---|---|---|
2013-02-05 13:51 | JohnDoe | New Issue | |
2013-02-16 21:07 | shmuel | Note Added: 0010305 | |
2013-02-16 21:07 | shmuel | Assigned To | => shmuel |
2013-02-16 21:07 | shmuel | Status | new => feedback |
2013-02-20 13:19 | JohnDoe | Note Added: 0010331 | |
2013-02-20 13:19 | JohnDoe | Status | feedback => assigned |
2013-02-20 13:25 | JohnDoe | Note Edited: 0010331 | |
2013-02-20 13:27 | JohnDoe | Note Added: 0010332 | |
2013-02-20 13:28 | JohnDoe | Note Edited: 0010332 | |
2013-02-20 13:38 | JohnDoe | Note Added: 0010333 | |
2013-02-20 13:42 | JohnDoe | Note Added: 0010334 | |
2013-02-20 13:59 | shmuel | Note Added: 0010336 | |
2013-02-20 14:06 | JohnDoe | Note Added: 0010337 | |
2013-02-20 14:13 | shmuel | Note Added: 0010338 | |
2013-02-20 14:17 | JohnDoe | Note Added: 0010339 | |
2013-02-20 14:19 | JohnDoe | Note Edited: 0010339 | |
2013-02-20 14:20 | JohnDoe | Note Edited: 0010339 | |
2013-02-20 14:29 | shmuel | Note Added: 0010340 | |
2013-02-20 14:29 | shmuel | Assigned To | shmuel => |
2013-02-20 14:29 | shmuel | Status | assigned => new |
2013-02-20 14:35 | JohnDoe | Note Added: 0010341 | |
2013-02-20 14:40 | JohnDoe | Note Edited: 0010341 | |
2013-02-20 14:41 | JohnDoe | Note Edited: 0010339 | |
2013-02-20 14:41 | shmuel | Note Added: 0010342 | |
2013-02-20 14:42 | JohnDoe | Note Added: 0010343 | |
2013-02-20 14:47 | shmuel | Note Added: 0010344 | |
2013-02-20 14:49 | JohnDoe | Note Added: 0010345 | |
2013-02-20 14:51 | shmuel | Note Added: 0010346 | |
2013-02-20 15:00 | JohnDoe | Note Added: 0010347 | |
2013-02-20 15:04 | shmuel | Note Added: 0010348 | |
2013-02-20 15:37 | JohnDoe | Note Added: 0010352 | |
2013-02-20 15:39 | JohnDoe | Note Edited: 0010352 | |
2013-02-20 15:39 | shmuel | Note Added: 0010353 | |
2013-02-20 15:45 | JohnDoe | Note Added: 0010354 | |
2013-02-20 16:10 | shmuel | Note Added: 0010355 | |
2013-02-20 16:16 | JohnDoe | Status | new => resolved |
2013-02-20 16:36 | shmuel | Build | => 3203.5 |
2013-02-20 16:36 | shmuel | Status | resolved => closed |
2013-02-20 16:36 | shmuel | Assigned To | => shmuel |
2013-02-20 16:36 | shmuel | Resolution | open => fixed |
2013-02-20 16:36 | shmuel | Fixed in Version | => 3.0 |
2013-03-06 06:11 | shmuel | Note Added: 0010463 |