View Issue Details

IDProjectCategoryView StatusLast Update
0001655Far ManagerMacropublic2012-01-13 23:04
ReporterRaistlinAssigned Tovskirdin 
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version 
Target VersionFixed in Version3.0 
Summary0001655: Неверное сообщение об ошибке при разборе макроса
DescriptionВыполняем такой неправильный макрос:
macro:post %a=substr(menu.getvalue(22),0,index(menu.getvalue(22));
Получаем:
╔═══════════════ Ошибка при разборе макроса ════════════════╗
║ Строка 1, позиция 54: ║
║ Неверное количество параметров у функции 'menu.getvalue' ║
╟───────────────────────────────────────────────────────────╢
║ "%a=substr(menu.getvalue(22),0,index(menu.getvalue(22));" ║
║ ↑ ║
╟───────────────────────────────────────────────────────────╢
║ { OK } ║
╚═══════════════════════════════════════════════════════════╝
На самом же деле неверное количество параметров указано у функции index().
TagsNo tags attached.
Build2367

Activities

vskirdin

2011-01-12 13:01

administrator   bugnote:0006088

проверяем:
http://skirda-file.googlecode.com/files/mantis1655.1.7z
желательно всю диагностику парсера :-)

Raistlin

2011-01-12 15:52

reporter   bugnote:0006091

Проверил. ОК.
Всю диагностику парсера - с удовольствием, вот только алгоритм диагностики бы придумать...

Raistlin

2011-01-19 03:52

reporter   bugnote:0006189

Выполняем:
macro:post panel.setpath(0,"\\raistlin\ddd")

Получаем:
╔════ Ошибка при разборе макроса ═════╗
║ Строка 1, позиция 17: ║
║ Неправильный управляющий символ ║
╟─────────────────────────────────────╢
║ "panel.setpath(0,"\\raistlin\ddd")" ║
║ ↑ ║
╟─────────────────────────────────────╢
║ { OK } ║
╚═════════════════════════════════════╝

Выполняем:
macro:post panel.setpath(0,"HKEY_CURRENT_USER\Software\Far1\CodeTables1")

Получаем:
г=================== Ошибка при разборе макроса ===================¬
¦ Строка 1, позиция 17: ¦
¦ Неправильный управляющий символ ¦
¦------------------------------------------------------------------¦
¦ "panel.setpath(0,"HKEY_CURRENT_USER\Software\Far1\CodeTables1")" ¦
¦ ^ ¦
¦------------------------------------------------------------------¦
¦ { OK } ¦
L==================================================================-

В обоих случаях стрелка тычет не туда.

JohnDoe

2011-01-19 14:15

updater   bugnote:0006195

Стрелка указывает на начало ошибочной строки, подозреваю так и задумано.

Raistlin

2011-01-19 15:06

reporter   bugnote:0006199

Last edited: 2011-01-19 15:07

View 2 revisions

А смысл тогда в этой стрелке? Строка-то всегда одна.
Говорим о "неверном управляющем символе", а тычем непонятно во что.

Raistlin

2011-01-24 01:53

reporter   bugnote:0006237

Last edited: 2011-01-24 02:04

View 2 revisions

Пытаемся через MacroView повесить на хоткей макрос (забыли сделать eval для глобальной переменной):
%%CloneFPanel panel.setpath(0,"P:\Reg\Common\Far")

Получаем:
╔══════ Ошибка при разборе макроса Shell\RCtrl1 ═══════╗
║ Строка 1, позиция 16: ║
║ Ожидается '=' ║
╟──────────────────────────────────────────────────────╢
║ "%%CloneFPanel panel.setpath(0,"P:\Reg\Common\Far")" ║
║ ↑ ║
╟──────────────────────────────────────────────────────╢
║ { OK } ║
╚══════════════════════════════════════════════════════╝

Может, '=' и ожидается, но, наверное, не там, куда указывает стрелка (на "a" в слове "panel").

Raistlin

2011-09-02 12:08

reporter   bugnote:0007603

Last edited: 2011-09-02 12:09

View 2 revisions

Неправильно написали макрос:
F7 print("%Temp%\q") Enter

Парсер выдает неадекватное сообщение (стрелка тычет в первую кавычку, а не в 'q'):
г= Error parsing macro Common\CtrlAltS =¬
¦ Line 1, Pos 10: ¦
¦ Bad Control Char ¦
¦---------------------------------------¦
¦ "F7 print("%Temp%\q") Enter" ¦
¦ ^ ¦
¦---------------------------------------¦
¦ { OK } ¦
L=======================================-

vskirdin

2012-01-12 16:31

administrator   bugnote:0008390

build 2367

   Ахтунг: Не забывает, что для строки в макроса - аля Це.
           Это означает, что после символа '\' Far ожидает управляющий символ
           Так же помним, что для разных путей юзаем verb-строки
           (с символом '@' перед открывающей двойной кавычкой) или дублируем символ '\'.

     Ошибка: panel.setpath(0,"HKEY_CURRENT_USER\Software\Far1\CodeTables1")
     Верно : panel.setpath(0,"HKEY_CURRENT_USER\\Software\\Far1\\CodeTables1")
     Верно : panel.setpath(0,@"HKEY_CURRENT_USER\Software\Far1\CodeTables1")

Raistlin

2012-01-13 16:56

reporter   bugnote:0008414

Все ОК, кроме
%%CloneFPanel panel.setpath(0,"P:\Reg\Common\Far")

Стрелка указывает на "p" в слове "panel", а должна, наверное, на пробел перед словом.

vskirdin

2012-01-13 18:16

administrator   bugnote:0008415

Не должна.
Тебе указывают на место, где ты "облажался", т.е. ФАР берет "%%CloneFPanel", понимает, что это переменная. Ага, знать следом идет какое-то присваивание ей, родимой (подразумевается, что следом через кучу пробельных символов идет символ '=').
Запускается процесс анализа "после переменной" с терминальными символами '=' (спереди) и ';' в конце (при этом не относящиеся к делу пробельные символы игнорируются).

Т.е. фактически в анализатор попадает 'panel.setpath(0,"P:\Reg\Common\Far")', но ФАР ожидает: '=' 'кучу_возможных_пробельных_символов' 'panel.setpath(0,"P:\Reg\Common\Far")' и ';'.

Raistlin

2012-01-13 18:48

reporter   bugnote:0008418

Я был не в курсе, что парсер такие пробелы умеет игнорировать. Тогда ОК.

Issue History

Date Modified Username Field Change
2011-01-12 03:33 Raistlin New Issue
2011-01-12 13:01 vskirdin Note Added: 0006088
2011-01-12 13:01 vskirdin Assigned To => vskirdin
2011-01-12 13:01 vskirdin Status new => feedback
2011-01-12 15:52 Raistlin Note Added: 0006091
2011-01-12 15:52 Raistlin Status feedback => assigned
2011-01-12 15:52 Raistlin Status assigned => resolved
2011-01-13 11:22 vskirdin Build => 1786
2011-01-13 11:22 vskirdin Status resolved => closed
2011-01-13 11:22 vskirdin Resolution open => fixed
2011-01-13 11:22 vskirdin Fixed in Version => 2.0
2011-01-19 03:52 Raistlin Note Added: 0006189
2011-01-19 03:52 Raistlin Status closed => feedback
2011-01-19 03:52 Raistlin Resolution fixed => reopened
2011-01-19 14:15 JohnDoe Note Added: 0006195
2011-01-19 15:06 Raistlin Note Added: 0006199
2011-01-19 15:06 Raistlin Status feedback => assigned
2011-01-19 15:07 Raistlin Note Edited: 0006199 View Revisions
2011-01-24 01:53 Raistlin Note Added: 0006237
2011-01-24 02:04 Raistlin Note Edited: 0006237 View Revisions
2011-09-02 12:08 Raistlin Note Added: 0007603
2011-09-02 12:09 Raistlin Note Edited: 0007603 View Revisions
2012-01-12 16:31 vskirdin Note Added: 0008390
2012-01-12 16:31 vskirdin Status assigned => feedback
2012-01-13 16:56 Raistlin Note Added: 0008414
2012-01-13 16:56 Raistlin Status feedback => assigned
2012-01-13 18:16 vskirdin Note Added: 0008415
2012-01-13 18:48 Raistlin Note Added: 0008418
2012-01-13 18:48 Raistlin Status assigned => resolved
2012-01-13 23:04 vskirdin Build 1786 => 2367
2012-01-13 23:04 vskirdin Status resolved => closed
2012-01-13 23:04 vskirdin Resolution reopened => fixed
2012-01-13 23:04 vskirdin Fixed in Version 2.0 => 3.0