The FAR File and Archive Manager ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ What's new in macros in the latest version ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [!] Important [+] New [*] Changes [-] Fixed error --------------------------------------------------------------------------- FAR 1.75 (build 2533) (02.03.2009) --------------------------------------------------------------------------- [!] Выполнение макроса можно прервать по CtrlBreak. [!] fexist() и fattr() теперь не работают с панелями, для работы с панелями добавлены новые функции panel.fexist() и panel.fattr(). [!] Dlg.ItemType возвращает то же самое значение, что и Dlg.GetValue(XXX,1). [+] Макросы можно назначать на клавиши мыши. В теле макропоследовательности доступны константы: MsX, MsY, MsButton, MsCtrlState. [+] Функции могут иметь "необязательные" параметры. [+] Новые функции: N=sleep(N) - задержка в макросе на N мс; V=akey(N) - возвращает имя или код клавиши, инициировавшей макрос; N=mod(n1,n2) - остаток от деления n1 на n2; N=Menu.Select(S[,N]) - позиционирует курсор на первый пункт меню, содержащий подстроку S; S=prompt("Title"[,"Prompt"[,flags[, "Src"[, "History"]]]]) - позволяет ввести и передать одну строку в макрос; N=asc(S) - возвращает код символа S; S=chr(N) - возвращает символ, заданный кодом N; N=Panel.SetPosIdx() - позиционирование на файловой панели по индексу; V=waitkey([N,[T]]) - ожидает нажатие клавиши N мс и возвращает её строковое или числовое представление; N=eval(S) - воспроизведение строкового представления макроса; S=gethotkey([N]) - возвращает горячую клавишу для пункта N в списке/меню. S=Replace(Str,Find,Replace[,Cnt]) - замена подстроки Find на подстроку Replace Cnt раз. N=BM.Del([Idx]) - удаляет закладку с указанным индексом; N=BM.Get(Idx,M) - возвращает параметры закладки с указанным индексом; N=BM.Stat(M) - возвращает информацию о закладках; N=panel.SetPath(panelType,pathName,fileName) - переход в каталог; N=FLock(Nkey,NState) - управление режимами Lock; S=trim(S[,n]) - удаляет все пробельные символы из строки S снаружи (n=0 или не указан), слева (n=1) или справа (n=2). S=trim(S[,Mode]) - удаляет все пробельные символы V=Editor.Sel(Action[,Opt]) - позволяет манипулировать блоками в тексте. S=Key(V) - преобразует значение V в строковый эквивалент названия клавиши. N=atoi(S[,radix]) - преобразует число из строкового представления в числовое. [+] Новые состояния: MacroArea - имя текущей макрообласти; Far.Height - высота консоли; Far.Title - заголовок консоли; Title - заголовок текущего объекта; Drv.ShowPos - позиция меню выбора дисков; Drv.ShowMode - флаги отображения меню выбора дисков; Editor.RealPos - текущая позиция в редакторе без привязки к размеру табуляции; Help.FileName - имя просматриваемого файла помощи; Help.Topic - просматриваемый топик; Help.SelTopic - выделенный топик; [A|P]Panel.ColumnCount - количество колонок на активной/пассивной панели. [+] Новые операции: '~' (BitNot); '>>' (shr); '<<' (shl). [+] Новые псевдоклавиши: NumEnter (Enter на цифровой клавиатуре); NumDel (Enter на цифровой клавиатуре); Decimal ('.' на цифровой клавиатуре); CapsLock; ScrollLock; NumLock; MsWheelLeft; MsWheelRight, Sleep. [+] Новые макрокоманды: $AKey - клавиша, вызвавшая данный макрос. $SelWord - выделить слово под курсором. [+] В Editor.State и Viewer.State добавлены следующие константы: 0x08000000 - режим "редактор/просмотрщик" (FAR запущен с ключами /e /v) 0x00000800 - модальный редактор/просмотрщик [+] В panelitem добавлены 3 индекса - 15-17, соответствующие 3-5, но имеющие тип FILETIME (для макросов это __int64). [+] Добавлена макрообласть "Consts" для хранения именованных констант. [+] Параметр "Sequence" может так же иметь тип REG_MULTI_SZ. [+] Комбинация CtrlBreak прерывает выполнение макроса [+] Именованные клавиши (например, CtrlK) могут участвовать в любых выражениях; в этом случае они считаются как числа. [*] Изменены названия сочетаний клавиш с модификаторами: вместо `:` - `;`, а вместо `"` - `'`. Это относится ко всем комбинациям модификаторов, кроме одиночного Shift. [*] Булевые состояния Bof/Eof/Empty/Selected в панелях типа QView/Info/Tree возвращают значения для этих типов панелей. Для обычных панелей возвращают значения из командной строки. [*] Некоторые макро-функции могут иметь опциональные параметры. [*] "AltShift/" и "AltShift-" теперь вместо "AltShift?" (и "AltShift_", соответственно) вводятся как есть. [*] fexist() понимает символы маски '*' и '?'. [*] Если имя содержит символы '*' и '?', то fattr() возвращает атрибуты для первого найденного файлового объекта. [-] Игнорировались имена переменных, начинающихся с подчеркивания. [-] [A|P]Panel.UNCPath возвращали в конце символ '\'. [-] Функция fsplit для имени файла в корне плагиновой панели добавляла префикс плагина. [-] Падение при записи последовательности с клавиатуры. [-] Не воспринимались имена переменных, начинающиеся с цифр (например, %3DO). [-] Некорректная прорисовка при вызове из макроса функции "Ссылки на папки". [-] Если пункт меню не содержит горячую клавишу, то GetHotkey() возвращает "0" вместо "". [-] В панелях быстрого просмотра и информации не работали переменные: ItemCount, CurPos, Selected, Bof, Eof, Empty. [-] Не работали конструкции Eof/Bof/etc в программе просмотра. [-] При удалении общего макроса неправильно формировалось имя ключа в реестре, вследствие чего удаление макроса работало только в текущей сессии. [-] При назначении макроса на клавишу, которой уже был сопоставлен общий макрос, запрашивалось подтверждение удаления общего макроса. [-] Не воспринимались имена переменных, начинающиеся с числа, например, %3Prc. [-] Переменные ItemCount и CurPos возвращали некорректные значение для программы просмотра для файлов больше чем 4 Гб. [ FAR manager development group ]