shmuel 23.06.2017 10:09:22 +0200 - build 608

1. LuaFAR: minor refactoring and GCC warnings.

shmuel 16.05.2017 11:42:28 +0200 - build 607

1. LuaFAR: (FIX) функция far.ShowHelp неправильно обрабатывала флаг FHELP_GUID.

shmuel 11.05.2017 13:00:01 +0200 - build 606

1. M#3432: Краткая справка по синтаксису командной строки LuaMacro (lua:)

shmuel 01.05.2017 22:01:38 +0200 - build 605

1. LuaFAR: Запретить обработку событий в редакторе, вьювере и панелях во время вывода сообщения
   об ошибке (продолжение build 523).

shmuel 12.04.2017 22:47:30 +0200 - build 604

1. LuaFAR: ещё раз дополнительная оптимизация unicode.utf8.sub.

shmuel 10.04.2017 11:12:30 +0200 - build 603

1. LuaFAR: дополнительная оптимизация unicode.utf8.sub.

shmuel 08.04.2017 14:16:00 +0200 - build 602

1. LuaFAR: оптимизация unicode.utf8.sub для неотрицательных аргументов + рефакторинг.

shmuel 07.04.2017 00:52:17 +0200 - build 601

1. LuaFAR (продолжение build 165):
   сброс разрешения floating point exceptions при вызове макрофункций (в частности: Plugin.SyncCall).

shmuel 31.03.2017 19:41:21 +0200 - build 600

1. LuaFAR: refactoring.

shmuel 15.03.2017 17:05:28 +0200 - build 599

1. LuaFAR: suppress compiler warning.

shmuel 15.03.2017 16:18:38 +0200 - build 598

1. LuaFAR: suppress compiler warning.

shmuel 13.02.2017 01:39:25 +0200 - build 597

1. LuaFAR: refactoring.

shmuel 23.01.2017 11:29:08 +0200 - build 596

1. M#3387: Словосочетание "Sort mode" в меню режимов сортировки не переводится на язык интерфейса

shmuel 29.11.2016 15:21:02 +0200 - build 595

1. Убрана поддержка старого формата файла клавиатурного макроса (см. комментарий к билду 454).

shmuel 13.11.2016 17:59:43 +0200 - build 594

1. M#3303: far.Menu: клавиши для BreakKeys
   LuaFAR: 3-й параметр far.Menu может быть и строкой - перечислением ключей, разделённых пробелами.
           Однако на семантике возвращаемых значений функции это изменение не сказывается, например
           при 3-м параметре равном "Ins CtrlF1" и нажатии CtrlF1, первое возвращаемое значение
           будет сформировано как таблица {BreakKey="CtrlF1"}.

shmuel 11.11.2016 18:17:36 +0200 - build 593

1. LuaFAR: editor.DeleteSessionBookmark(EditorId,position) - make parameter 'position' 1-based.

shmuel 25.10.2016 18:53:41 +0200 - build 592

1. M#3303: far.Menu: клавиши для BreakKeys
   LuaFAR: far.Menu теперь понимает обозначения AccelKey также именами, принятыми в Far-макросах.

shmuel 22.10.2016 19:36:48 +0200 - build 591

1. M#3303: far.Menu: клавиши для BreakKeys
   LuaFAR: наряду с "виртуальными" именами ключей, far.Menu теперь понимает и обозначения BreakKey
           именами, принятыми в Far-макросах.

shmuel 20.10.2016 19:36:54 +0200 - build 590

1. M#3275: Allow plugins to load and edit unsaved macro
   Макробраузер при нажатии F4/AltF4 на несохранённом клавиатурном макросе вызывает фаровский диалог "Macro settings".

zg 06.10.2016 21:01:03 +0200 - build 589

1. LuaFAR: far.CreateUserControl().rawhandle возвращает адрес буфера в виде light userdata.

2. LuaFAR: far.GetDlgItem[6] для DI_USERCONTROL возвращает адрес буфера в виде light userdata.

zg 01.10.2016 15:20:33 +0200 - build 588

1. moonscript 0.5.0.

zg 01.10.2016 15:07:26 +0200 - build 587

1. LuaFAR: в таком коде
   buffer=far.CreateUserControl(10,10)
   buffer[1]={Char="1"}
   вместо 1 выводился символ с кодом 1.

shmuel 29.09.2016 18:57:45 +0200 - build 586

1. LuaFAR: улучшено сообщение об ошибке при передаче аргумента - несуществующего флага типа string.
   Сообщение теперь включает в себя переданный флаг.

shmuel 25.09.2016 21:29:41 +0200 - build 585

1. Продолжение 584: заменяем в traceback табы тремя пробелами - для лучшего восприятия.

shmuel 25.09.2016 00:04:30 +0200 - build 584

1. M#3013: Отображать traceback при ошибках, возникающих в процессе загрузки макрофайлов.

shmuel 06.09.2016 09:45:50 +0200 - build 583

1. MCT_GETMACRO дополнительно возвращает информацию о том, является ли макрос клавиатурным.

shmuel 22.08.2016 19:14:55 +0200 - build 582

1. LuaFAR: BreakKey в far.Menu() сделан полностью регистронезависимым.

shmuel 13.08.2016 18:24:05 +0200 - build 581

1. Уточнения 579,580.

shmuel 18.07.2016 17:55:32 +0200 - build 580

1. Макро-браузер отображает поле "id" в диалоге информации о макросе.

shmuel 18.07.2016 15:59:19 +0200 - build 579

1. В таблицы определений Macro и Event добавлено опциональное поле "id" типа string.

shmuel 04.07.2016 17:35:59 +0200 - build 578

1. LuaFAR: добавлена функция win.GetKeyState.

shmuel 26.06.2016 19:28:14 +0200 - build 577

1. Уточнение 576.2.

shmuel 26.06.2016 16:39:39 +0200 - build 576

1. Расширение возможностей функции Panel.SetCustomSortMode().

2. Расширение возможностей функции Panel.CustomSortMenu().

shmuel 14.06.2016 14:26:10 +0200 - build 575

1. LuaFAR (generic plugin): ExitFARW экспортируется всегда (убраны директивы условной компиляции).

shmuel 14.06.2016 12:35:08 +0200 - build 574

1. LuaFAR: LF_ExitFAR(), после вызова export.ExitFAR(), удаляет все незакрытые таймеры (если таковые
   имеются), что предотвращает падения: (1) на выходе из Far и (2) при пересоздании lua_State
   с помощью _G.RecreateLuaState=true.

shmuel 11.06.2016 20:36:21 +0200 - build 573

1. LuaFAR: экспериментальная альтернативная реализация far.Timer и свойств/методов объекта таймера.
   (Как побочное явление данной реализации, LuaFAR больше не поддерживает Windows 2000).

shmuel 08.06.2016 15:00:53 +0200 - build 572

1. LuaFAR: far.Timer(N, ...) при N<1 подвешивал Far.

shmuel 08.06.2016 00:23:44 +0200 - build 571

1. LuaFAR: fix unicode.utf8.gmatch and add a specific test for it.

zg 08.05.2016 13:40:15 +0200 - build 570

1. LuaFAR: поддержка WTYPE_COMBOBOX.

shmuel 21.04.2016 23:04:40 +0200 - build 569

1. LuaFAR: функция far.PasteFromClipboard теперь возвращает всю строку, полученную от Far,
   а не до первого символа '\0'.

shmuel 10.04.2016 14:36:10 +0200 - build 568

1. Изменение в поведении mf.iif() при Expr==0 для более полной совместимости с оригиналом.

shmuel 17.03.2016 18:18:54 +0200 - build 567

1. Кастомные сортировки в панелях повреждали содержимое внутренних структур FileListItem
   (это проявлялось при сборке Far с GCC 5.2 или 5.3).
   Алгоритм кастомной сортировки пришлось изменить, теперь нет прямой манипуляции с памятью.

shmuel 13.03.2016 21:46:38 +0200 - build 566

1. Уточнение 565.

shmuel 13.03.2016 01:28:38 +0200 - build 565

1. В функции Panel.LoadCustomSortMode таблица параметров может включать в себя опциональное поле
   'Condition' (функцию). Данная функция может использоваться, например, в интерактивном режиме
   работы для изменения параметров сортировки, а также для её отмены.

shmuel 08.03.2016 23:42:18 +0200 - build 564

1. Рефакторинг.

shmuel 07.03.2016 19:41:34 +0200 - build 563

1. LuaFAR: продолжение M#3175.
   - Убрана функция win.DeleteRegKeyEx.
   - Функция win.DeleteRegKey принимает дополнительный параметр AccessMask (который игнорируется,
     если операционная система не поддерживает функцию RegDeleteKeyExW).

shmuel 06.03.2016 17:37:26 +0200 - build 562

1. LuaFAR: фикс во внутренней функции GetFarColor для совместимости с LuaJIT 2.1.0-beta2.

shmuel 03.03.2016 21:40:00 +0200 - build 561

1. В определение стационарных макросов добавлено опциональное поле sortpriority - для управления
   порядком расположения макросов в меню "Исполнить макрос".

shmuel 25.02.2016 16:15:44 +0200 - build 560

1. В winapi.lua добавлены 2 константы и 5 определений функций.

shmuel 20.02.2016 00:08:38 +0200 - build 559

1. Исправлен мелкий баг в функции Panel.CustomSortMenu.

shmuel 19.02.2016 23:36:00 +0200 - build 558

1. Меню, выводимому функцией Panel.CustomSortMenu, присвоен GUID "C323FBCF-6803-4F2C-B8B4-E576E7F125DC".

shmuel 19.02.2016 21:32:01 +0200 - build 557

1. M#3175: "Отключить в LuaMacro редирект WOW64 для функций работы с реестром"
   LuaFAR: добавлена функция win.DeleteRegKeyEx. Описание в мануале.

shmuel 12.02.2016 12:41:32 +0200 - build 556

1. LuaFAR: fix handling PPIF_SELECTED.

shmuel 08.02.2016 23:14:30 +0200 - build 555

1. M#3175: "Отключить в LuaMacro редирект WOW64 для функций работы с реестром"
   LuaFAR: Во все функции работы с реестром, кроме win.DeleteRegKey, добавлен параметр "AccessMask".

shmuel 02.02.2016 12:53:04 +0200 - build 554

1. Функция Keys: добавлены новые специальные ключи:
     "EnOut"  - разрешить вывод на экран (то же, что mmode(1,0))
     "DisOut" - запретить вывод на экран (то же, что mmode(1,1))

2. Функция Keys: перед каждым ключом может быть указан множитель, например "3*Down" эквивалентно "Down Down Down".

shmuel 26.01.2016 16:09:42 +0200 - build 553

1. Префиксы, добавляемые функцией CommandLine, не работали, если не состояли полностью из "символов слова" ("%w+").
   Теперь в этих префиксах допускаются любые символы, кроме двоеточия и пробелов.

shmuel 20.12.2015 15:08:21 +0200 - build 552

1. LuaFAR: fix function win.SetRegKey.

shmuel 18.12.2015 22:09:39 +0200 - build 551

1. Ещё одно уточнение 549.

shmuel 18.12.2015 20:17:25 +0200 - build 550

1. Уточнение 549.

shmuel 18.12.2015 18:48:29 +0200 - build 549

1. LuaFAR: добавлена функция win.DeleteRegValue.

shmuel 18.12.2015 14:09:39 +0200 - build 548

1. Удалена макрофункция printf (mf.printf и _G.printf).

shmuel 13.12.2015 08:52:51 +0200 - build 547

1. При старте Фар не исполнялись автостартующие макросы, у которых area="Common".

zg 08.12.2015 03:51:59 +0200 - build 546

1. moonscript 0.4.0.

shmuel 15.11.2015 09:10:25 +0200 - build 545

1. Уточнение 543.

shmuel 11.11.2015 12:17:37 +0200 - build 544

1. MoonScript 0.3.2.

shmuel 10.11.2015 18:19:12 +0200 - build 543

1. LuaFAR (generic plugin):
   Очередная (после билда 533) попытка справиться с ситуацией, когда экспортируемые функции плагина
   вызываются из разных потоков с перекрытием во времени. "Перекрывающие" вызовы, поступающие не из
   "перекрываемого" потока, должны игнорироваться (холостой возврат без исполнения).

shmuel 01.11.2015 14:10:39 +0200 - build 542

1. Откат 540-541. Данный вид события может быть получен имеющимися средствами (mf.postmacro() из макрофайла).

shmuel 31.10.2015 22:34:42 +0200 - build 541

1. Уточнение 540.

shmuel 31.10.2015 19:33:22 +0200 - build 540

1. Добавлен новый вид события: group="MacrosLoaded". Обработчики вызываются по завершению загрузки макрофайлов.

shmuel 28.10.2015 19:17:43 +0200 - build 539

1. Рефакторинг (синхронный с рефакторингом в Far build 4450).

shmuel 28.10.2015 13:23:40 +0200 - build 538

1. Изменение API: загрузочные функции 'Macro' и 'Event' теперь возвращают true в случае успеха,
   а не число-идентификатор макроса/события, как было раньше.

2. Рефакторинг.

shmuel 26.10.2015 19:07:00 +0200 - build 537

1. Приоритет по умолчанию у общих (area="Common") макросов теперь такой же, как у прочих макросов, то-есть 50.

shmuel 25.10.2015 17:24:57 +0200 - build 536

1. Продолжение 516:
   a) пункты меню выбора макроса выводятся отсортированными;
   б) заголовок консоли показывает заголовок данного меню;

shmuel 16.10.2015 19:08:56 +0200 - build 535

1. Откат билда 533 (перестал работать макро-API в FarNet и PowerShellFar).

shmuel 13.10.2015 16:17:58 +0200 - build 534

1. LuaFAR (generic plugin):
   Возвращение установки переменной _G.IsLuaStateRecreated = true, отменённой в билде 529.

shmuel 13.10.2015 13:37:15 +0200 - build 533

1. LuaFAR (generic plugin):
   Полное игнорирование вызовов экспортируемых плагином функций, произведенных из неосновного потока Фара.
   Пусть лучше не работает, но не падает.
   (Защита, сделанная в build 127, снимается как излишняя).

shmuel 06.10.2015 07:38:08 +0200 - build 532

1. Рефакторинг.

shmuel 02.10.2015 00:42:24 +0200 - build 531

1. LuaFAR: несколько изменилась интерпретация значения, возвращаемого export.ProcessConsoleInput - см. мануал.

2. M#2944: Добавить обработку ProcessConsoleInputW.

shmuel 26.09.2015 00:42:09 +0200 - build 530

1. Загрузка макросов: при обнаружении несуществующих имён флагов выдаются сообщения об ошибке.

shmuel 23.09.2015 19:34:14 +0200 - build 529

1. LuaFAR + generic plugin:
   a) При загрузке и перезагрузке стартового скрипта плагина ему передаётся один аргумент булевого типа:
        true - при первой загрузке скрипта и при загрузке, вызванной значением _G.RecreateLuaState.
        false - при перезагрузке скрипта, вызванной значением far.ReloadDefaultScript.
   b) Отменяется установка _G.IsLuaStateRecreated = true перед перезагрузкой, вызванной значением
      _G.RecreateLuaState (в этом более нет надобности, в связи с пунктом "a").

2. LuaMacro: косметическая правка в плагине, связанная с пунктом "1".

shmuel 18.09.2015 19:42:34 +0200 - build 528

1. Уточнение 526.

shmuel 18.09.2015 13:00:27 +0200 - build 527

1. Уточнение 526.

shmuel 18.09.2015 12:29:10 +0200 - build 526

1. LuaFAR: M#2384: Нужна глобальная таблица guid'ов диалогов фара.
   --> Таблица far.Guids.

shmuel 04.09.2015 21:48:41 +0200 - build 525

1. M#3067: LuaFAR: far.SubscribeDialogDrawEvents не срабатывает в момент Msg==F.DN_INITDIALOG and Event==F.DE_DLGPROCINIT

shmuel 31.08.2015 18:33:16 +0200 - build 524

1. M#3068: LuaFAR: не работает изменение цветовых атрибутов в DN_CTLCOLORDLGITEM

shmuel 17.08.2015 18:56:17 +0200 - build 523

1. M#3035: LuaFAR: Запретить обработку событий в диалогах во время вывода сообщения об ошибке

shmuel 06.08.2015 22:31:56 +0200 - build 522

1. M#3050: Падение при непрерывном вызове DM_KEY

shmuel 26.07.2015 03:06:22 +0200 - build 521

1. LuaFAR: убрано лишнее поле StructSize из таблицы, возвращаемой по DM_GETDIALOGINFO.

shmuel 17.06.2015 23:31:43 +0200 - build 520

1. Меню выбора макроса присвоен GUID ("165AA6E3-C89B-4F82-A0C5-C309243FD21B").

shmuel 16.06.2015 14:56:31 +0200 - build 519

1. Уточнение 518.

shmuel 16.06.2015 14:16:24 +0200 - build 518

1. Продолжение 516: если пользователь назначил свой хоткей, то он имеет преимущество перед
   автоматически назначаемым.

shmuel 16.06.2015 12:37:41 +0200 - build 517

1. Вместо локальной переменной 'status' использовалась глобальная.

shmuel 15.06.2015 17:46:15 +0200 - build 516

1. Пункты меню выбора макроса (выводимого, когда есть несколько макросов, назначенных на одно
   кнопкосочетание) автоматически нумеруются, и их номера являются горячими клавишами.

shmuel 04.06.2015 21:57:25 +0200 - build 515

1. Вызов error() без параметра при загрузке макросов полностью нарушал эту самую загрузку.

shmuel 21.05.2015 23:38:29 +0200 - build 514

1. M#2794: MenuItem: возможность определить имя пункта строкой, а не функцией.

shmuel 07.05.2015 16:59:03 +0200 - build 513

1. LuaFAR: добавлены функции win.GetCurrentDir и win.SetCurrentDir.

shmuel 03.05.2015 16:07:30 +0200 - build 512

1. LuaFAR (generic plugin): запуск плагином "%FARPROFILE%\luafar_init.lua" обусловлен флагом
   компиляции -DRUN_LUAFAR_INIT при сборке плагина.

2. Плагин LuaMacro собирается с заданным флагом компиляции -DRUN_LUAFAR_INIT.

shmuel 02.05.2015 19:57:59 +0200 - build 511

1. LuaFAR (generic plugin):
   - Параметр ENV_PREFIX ликвидирован. Переменные окружения при инициализации плагина теперь
     игнорируются, за исключением %FARPROFILE%.
   - Перед первой загрузкой стартового Lua-файла плагина производится исполнение скрипта
     "%FARPROFILE%\luafar_init.lua", если таковой имеется.
     - Скрипт исполняется также при перезагрузках, вызванных исполнением _G.RecreateLuaState = true.
     - Скрипт не исполняется при перезагрузках, вызванных установкой far.ReloadDefaultScript = true.

zg 22.04.2015 21:33:27 +0200 - build 510

1. Far 3.0 API 4353.

shmuel 21.04.2015 16:19:03 +0200 - build 509

1. LuaFAR (generic plugin):
   Параметр ENV_PREFIX больше не имеет значения по умолчанию: ни в C-файле, ни в мейк-файле.
   Теперь для того, чтобы LuaFAR-плагин при инициализации обрабатывал переменные окружения,
   параметр ENV_PREFIX должен быть задан явно при сборке плагина.

shmuel 17.04.2015 00:31:25 +0200 - build 508

1. M#2986: far /e падает при попытке вызвать юзер меню макросом.

shmuel 12.04.2015 23:18:52 +0200 - build 507

1. Рефакторинг.

shmuel 10.04.2015 17:44:53 +0200 - build 506

1. LuaFAR: изменения, связанные с функцией far.SubscribeDialogDrawEvents:
   - Функция не обрабатывает параметры и не возвращает значения.
   - При открытии каждого нового диалога группа событий перерисовки не передаётся
     в export.ProcessDialogEvent, покуда не будет вызвана far.SubscribeDialogDrawEvents.

shmuel 10.04.2015 01:00:29 +0200 - build 505

1. Рефакторинг.

shmuel 08.04.2015 21:29:15 +0200 - build 504

1. Командная строка: символ '=' можно использовать также и при вызове файла-скрипта, то-есть перед
   символом '@'.

shmuel 07.04.2015 13:05:26 +0200 - build 503

1. Мелкий рефакторинг.

shmuel 07.04.2015 00:27:31 +0200 - build 502

1. M#2685: Выполнять заданные в командной строке lua: скрипты синхронно.

shmuel 30.03.2015 16:43:55 +0200 - build 501

1. LuaFAR: оптимизация по скорости far.MakeMenuItems (и, опосредованно, far.Show).

shmuel 27.03.2015 14:27:00 +0200 - build 500

1. LuaFAR: мелкий рефакторинг.

2. Уточнение 493: eval(s,0) снова исполняется в окружении вызывающего его макроса.

shmuel 26.03.2015 09:34:26 +0200 - build 499

1. Добавлена функция-заглушка NoCommandLine, по аналогии с функциями NoMacro, NoEvent, NoMenuItem.

shmuel 25.03.2015 16:11:10 +0200 - build 498

1. Добавлена возможность загрузки из макрофайлов пользовательских префиксов командной строки.
   Этим занимается новая загрузочная функция 'CommandLine'.

zg 21.03.2015 14:29:00 +0200 - build 497

1. LuaFAR-плагины без ExitFARW, использующие luaplug.c могли падать при выгрузке, если оставались
   не удалённые lua-переменные, в __gc методе которых вызывались функции farapi.

zg 21.03.2015 00:39:48 +0200 - build 496

1. Far 3.0 API 4321

shmuel 19.03.2015 09:18:45 +0200 - build 495

1. Уточнение 494.

shmuel 18.03.2015 20:34:15 +0200 - build 494

1. LuaFAR (библиотека regex): падение при большом количестве captures (несколько десятков) из-за
   отсутствовавшего вызова lua_checkstack.

shmuel 17.03.2015 17:57:24 +0200 - build 493

1. С форума: Запуск lua: mf.postmacro(eval,"F1") приводит к ошибке "bad argument #1 to 'getfenv'
             (invalid level)".

shmuel 15.03.2015 15:48:33 +0200 - build 492

1. LuaFAR (библиотека bit64): устранение зависимости результатов сдвиговых операций при величинах
   сдвига >= 64 от применяемого компилятора.

shmuel 13.03.2015 16:38:56 +0200 - build 491

1. LuaFAR: неправильно работал far.AdvControl("ACTL_GETARRAYCOLOR").

zg 08.03.2015 02:30:10 +0200 - build 490

1. moonscript 0.3.1.

zg 07.03.2015 02:15:16 +0200 - build 489

1. moonscript: issue #177 fix.

zg 05.03.2015 02:31:50 +0200 - build 488

1. moonscript 0.3.0.

shmuel 02.03.2015 19:01:59 +0200 - build 487

1. LuaFAR: убрана функция far.LuafarVersion.

shmuel 21.02.2015 19:30:30 +0200 - build 486

1. Рефакторинг.

shmuel 21.02.2015 00:56:10 +0200 - build 485

1. Рефакторинг.

shmuel 17.02.2015 00:44:37 +0200 - build 484

1. Расширение API в области возвращаемых значений для eval(S,2).

2. Рефакторинг.

shmuel 14.02.2015 16:35:25 +0200 - build 483

1. LuaFAR: неправильная передача обработчику диалога параметра Param2 при событии DN_HOTKEY.

shmuel 08.02.2015 17:47:16 +0200 - build 482

1. LuaFAR (generic plugin):
   Размер структур PluginStartupInfo и FarStandardFunctions определяется теперь не при компиляции,
   а динамически, по значениям полей StructSize в аргументе, полученном от Far в SetStartupInfoW().
   Это позволит LuaFAR-плагинам автоматически поддерживать добавляемые функции Plugins API без
   необходимости перекомпиляции плагина.

shmuel 06.02.2015 17:07:16 +0200 - build 481

1. Уточнение build 476: после вызова Plugin.Call и завершения макроса не производилась перерисовка редактора.

shmuel 03.02.2015 01:48:32 +0200 - build 480

1. LuaFAR: добавлена функция far.FarClock. Документация следует.

shmuel 28.01.2015 22:30:52 +0200 - build 479

1. LuaFAR: x64 warnings.

shmuel 28.01.2015 19:19:30 +0200 - build 478

1. LuaFAR: добавлена функция win.system.

shmuel 21.01.2015 23:59:12 +0200 - build 477

1. Рефакторинг.

shmuel 21.01.2015 16:51:11 +0200 - build 476

1. Рефакторинг.

zg 20.01.2015 03:10:50 +0200 - build 475

1. 0002912: В диалогах DM_SETTEXT, DM_GETTEXT не позволяют работать со строками содержащими '\0'.

shmuel 17.01.2015 23:05:52 +0200 - build 474

1. Рефакторинг.

shmuel 15.01.2015 16:59:48 +0200 - build 473

1. LuaFAR: исправлены два бага в библиотеке bit64.

shmuel 14.01.2015 00:19:06 +0200 - build 472

1. Рефакторинг.

shmuel 13.01.2015 19:29:57 +0200 - build 471

1. Рефакторинг, уточнения.

shmuel 12.01.2015 20:52:17 +0200 - build 470

1. Уточнение 465.1.

2. Уточнение 469.

3. Рефакторинг.

shmuel 11.01.2015 19:58:26 +0200 - build 469

1. Рефакторинг.

shmuel 07.01.2015 10:26:06 +0200 - build 468

1. LuaFAR: добавлена функция win.OutputDebugString.

shmuel 06.01.2015 23:42:23 +0200 - build 467

1. Уточнение 465.1.

shmuel 06.01.2015 18:27:55 +0200 - build 466

1. Уточнение 465.1.

shmuel 03.01.2015 21:20:32 +0200 - build 465

1. eval(S,2) снова, как это было до перевода макросистемы на Lua, запускает на исполнение
   соответствующий макрос, а не просто вызывает его функцию 'action'.

2. Рефакторинг.

shmuel 01.01.2015 20:34:10 +0200 - build 464

1. Рефакторинг.

shmuel 31.12.2014 00:11:10 +0200 - build 463

1. Far.DisableHistory(-1) не запрещал добавления в историю при последующих вызовах Panel.SetPath().

2. Рефакторинг.

shmuel 26.12.2014 19:26:13 +0200 - build 462

1. Рефакторинг: прекращено использование фаровских регулярных выражений для внутренних нужд плагина.

shmuel 15.12.2014 00:46:09 +0200 - build 461

1. LuaFAR: добавлена обработка функций export.GetContentFields и export.GetContentData.

zg 06.12.2014 00:17:49 +0200 - build 460

1. Panel.AddCustomDataCallback удалена.

zg 03.12.2014 17:52:55 +0200 - build 459

1. уточнение 457. данные для одной и той же колонки не замещают друг друга, а склеиваются.

zg 03.12.2014 11:22:55 +0200 - build 458

1. в обработчик Panel.AddCustomDataCallback данные приходят в виде {guid="строка"}.

zg 03.12.2014 03:57:46 +0200 - build 457

1. экспериментально. продолжение 456. поддержка колонок C1-C9.

zg 30.11.2014 12:05:23 +0200 - build 456

1. Panel.AddCustomDataCallback: добавляет новый обработчик данных для кастом колонок.

zg 29.11.2014 13:27:38 +0200 - build 455

1. уточнение поддержки UTF-8 BOM для moonscript.

shmuel 28.11.2014 20:27:54 +0200 - build 454

1. Продолжение 452: добавлена поддержка загрузки старого формата файла клавиатурного макроса.
   * Сохранение будет производиться в новом формате.
   * Через полгода поддержку старого формата следует убрать.

shmuel 27.11.2014 23:44:56 +0200 - build 453

1. Уточнение 452.

shmuel 27.11.2014 21:06:15 +0200 - build 452

1. Файловый формат клавиатурного макроса сделан подобным формату стационарного макроса.
   Сохранённые клавиатурные макросы прежнего формата должны быть преобразованы в новый.

shmuel 24.11.2014 02:05:58 +0200 - build 451

1. LuaFAR: в функциях editor.Editor и viewer.Viewer значение по умолчанию параметра Title,
   передаваемое в Фар - NULL, а не FileName, как было до сих пор. См. M#2867.

shmuel 19.11.2014 13:16:10 +0200 - build 450

1. M#2609: LuaFAR: защита от ошибок в far.SaveScreen/RestoreScreen.

shmuel 13.11.2014 13:42:23 +0200 - build 449

1. LuaFAR: меню, выводимое функцией far.Show, может быть закрыто и нажатием клавиши Space.

shmuel 05.11.2014 13:21:11 +0200 - build 448

1. Из окружения макроса не убирались "загрузочные" функции MenuItem и NoMenuItem.

shmuel 05.11.2014 12:25:16 +0200 - build 447

1. Ещё раз M#2726.

shmuel 04.11.2014 23:09:39 +0200 - build 446

1. M#2726: mbrowser.lua:73: bad argument #3 to 'format' (invalid multibyte string).

shmuel 02.11.2014 16:46:25 +0200 - build 445

1. LuaFAR: устранён ещё один баг в обработке флагов типа userdata ("int64").

shmuel 02.11.2014 00:52:08 +0200 - build 444

1. LuaFAR: устранены 2 однотипных бага в обработке флагов типа userdata ("int64").

shmuel 01.11.2014 20:06:42 +0200 - build 443

1. LuaFAR: рефакторинг.

shmuel 30.10.2014 22:51:40 +0200 - build 442

1. LuaFAR (generic plugin): рефакторинг.

shmuel 29.10.2014 18:14:31 +0200 - build 441

1. Команды macro:post и lm:post больше не поддерживаются.

2. LuaFAR: добавлена экспортируемая функция LF_GetLuafarAPI, позволяющая LuaFAR-плагину (той его
   части, что на C) пользоваться многими сервисными функциями LuaFAR.

shmuel 29.10.2014 01:04:04 +0200 - build 440

1. При многократной перезагрузке макросов (far.MacroLoadAll) среднее время перезагрузки устойчиво
   возрастало. Заметил, что для проявления этого нежелательного эффекта необходимы два фактора:
       а) перезагрузка библиотеки MoonScript
       б) хотя бы один вызов pcall(require,"inexistent") при загрузке какого-либо макрофайла
   Эффект убран прекращением перезагрузки библиотеки MoonScript при перезагрузке макросов.
   Механизм данного эффекта мне на данный момент не ясен.

shmuel 27.10.2014 16:31:01 +0200 - build 439

1. LuaFAR (generic plugin): рефакторинг.

shmuel 27.10.2014 13:55:29 +0200 - build 438

1. LuaFAR (generic plugin): рефакторинг.

shmuel 25.10.2014 19:08:38 +0200 - build 437

1. LuaFAR: рефакторинг.

shmuel 22.10.2014 10:28:20 +0200 - build 436

1. Исправлен баг в функции mf.msave.

shmuel 20.10.2014 21:01:14 +0200 - build 435

1. M#2840: mload/msave: работать с локальным профилем.

w17 09.10.2014 02:53:15 +0200 - build 434

1. LuaFAR: build recovered after plugin.hpp changes

shmuel 02.10.2014 21:47:41 +0200 - build 433

1. Продолжение 328.2.

shmuel 21.09.2014 12:16:52 +0200 - build 432

1. Продолжение 431: mf.msave сохраняет связи между таблицами и их метатаблицами.

shmuel 20.09.2014 19:34:52 +0200 - build 431

1. Переделка сериализации данных, в результате чего функция mf.msave дополнительно поддерживает:
   (1) ключи-таблицы
   (2) таблицы с рекурсивными вложениями

shmuel 07.09.2014 19:22:01 +0200 - build 430

1. Небольшая оптимизация 429.2.

shmuel 06.09.2014 13:36:28 +0200 - build 429

1. Уточнение 428.

2. M#2793: MenuItem: нужна возможность задать разный текст для пунктов в разных меню.

shmuel 06.09.2014 00:51:16 +0200 - build 428

1. M#2792: MenuItem: заменить wtype на area.
   Подробности - в мануале (статья "Добавление пунктов в меню плагинов").

shmuel 03.09.2014 23:52:40 +0200 - build 427

1. Продолжение 425.

shmuel 03.09.2014 16:13:53 +0200 - build 426

1. Продолжение 425.

shmuel 03.09.2014 01:25:51 +0200 - build 425

1. M#2705: Far.GetConfig (на замену Far.Cfg_Get).

shmuel 01.09.2014 23:48:28 +0200 - build 424

1. M#2724: LuaFAR: MIF_SELECTED для far.Menu.

shmuel 28.08.2014 21:36:52 +0200 - build 423

1. 'MacroPath' в luamacro.ini должно быть внутри секции [General].

shmuel 27.08.2014 21:22:51 +0200 - build 422

1. LuaFAR: продолжение 419.2.

shmuel 27.08.2014 00:29:48 +0200 - build 421

1. Уточнение 420.

shmuel 26.08.2014 23:15:21 +0200 - build 420

1. macro:load поддерживает явное указание путей, с которых будут грузиться макрофайлы.

shmuel 26.08.2014 21:16:27 +0200 - build 419

1. MCTL_LOADALL поддерживает явное указание путей, с которых будут грузиться макрофайлы.

2. LuaFAR: far.MacroLoadAll поддерживает явное указание путей, с которых будут грузиться макрофайлы.

shmuel 25.08.2014 20:23:55 +0200 - build 418

1. Мелкий рефакторинг.

shmuel 24.08.2014 11:37:48 +0200 - build 417

1. Уточнение 414.

shmuel 23.08.2014 09:43:48 +0200 - build 416

1. Уточнение 414.

shmuel 23.08.2014 03:11:07 +0200 - build 415

1. Поддержка UTF-8 BOM в luamacro.ini.

shmuel 23.08.2014 02:13:33 +0200 - build 414

1. M#2469: Общие макросы.
   Добавлен файл luamacro.example.ini, активируется при его переименовании в luamacro.ini.
   В нём может быть установлено значение `MacroPath`, указывающее, с каких путей будут загружаться
   стационарные макрофайлы. Значение по умолчанию: %FARPROFILE%\Macros\scripts.

shmuel 23.08.2014 00:31:33 +0200 - build 413

1. mf.usermenu: режим "синхронного вызова" был сломан (в билде Far 3.0.3914).

shmuel 20.08.2014 12:25:13 +0200 - build 412

1. Упрощение вызова макробраузера, ставшее возможным благодаря изменениям в Far 3.0.4059.

shmuel 15.08.2014 19:20:35 +0200 - build 411

1. `eval(S,2)` возвращает `-3`, если было выведено меню выбора макроса, и это меню было отменено пользователем.

shmuel 14.08.2014 23:55:27 +0200 - build 410

1. Могли исполняться макросы во время загрузки макросов (например, при выводе диалога).

shmuel 01.08.2014 22:52:40 +0200 - build 409

1. LuaFAR: функция 'editor.GetSelection' выдавала неправильные результаты для вертикальных блоков нулевой ширины
   в начальной позиции строк.

shmuel 01.08.2014 12:38:19 +0200 - build 408

1. LuaFAR + generic plugin: уточнение 382; плагин падал при следующих обстоятельствах:
   - из макроса A добавляем новый макрос B посредством far.MacroAdd, параметр callback - функция;
   - после завершения макроса A вызываем макрос B;
   - падаем, т.к. в callback() происходит обращение к уже невалидному lua_State макроса A.

2. LuaFAR: если при вызове callback() макроса, добавленного по far.MacroAdd, происходила ошибка,
   то возвращалось TRUE, и макрос мог быть исполнен.

shmuel 28.07.2014 15:40:16 +0200 - build 407

1. LuaFAR + generic plugin: новая функция far.SubscribeDialogDrawEvents.

shmuel 22.07.2014 10:13:18 +0200 - build 406

1. LuaFAR: в таблице, возвращаемой вызовом export.ProcessEditorEvent(EE_CHANGE),
   значения поля 'StringNumber' отсчитываются от 1.

shmuel 22.07.2014 09:07:35 +0200 - build 405

1. Уточнение 404.

shmuel 22.07.2014 08:00:07 +0200 - build 404

1. Функция editor.SubscribeChangeEvent не работала, будучи вызвана из макроса.
   (Она работала только если был загружен хотя бы один обработчик с group="EditorEvent").

shmuel 21.07.2014 20:32:05 +0200 - build 403

1. LuaFAR: новая функция editor.GetTitle.

shmuel 19.07.2014 20:47:27 +0200 - build 402

1. LuaFAR: функция editor.ClearSessionBookmarks возвращает булевое значение, а не число.

shmuel 18.07.2014 07:46:24 +0200 - build 401

1. LuaFAR: функции editor.GetBookmarks и editor.GetSessionBookmarks неправильно работали и вызывали падение.

shmuel 17.07.2014 16:38:07 +0200 - build 400

1. LuaFAR: функции panel.* не работали с хэндлами панелей, полученными от panel.GetPanelInfo().

shmuel 16.07.2014 18:28:05 +0200 - build 399

1. Новая функция: mf.acall. Подробности - в мануале.

shmuel 15.07.2014 00:22:49 +0200 - build 398

1. Мелкий рефакторинг.

shmuel 14.07.2014 21:01:59 +0200 - build 397

1. Игнорируем неправильные команды от вызовов Plugin.Command().

shmuel 08.07.2014 16:11:57 +0200 - build 396

1. Уточнение 389.2 : была ошибка при запуске Far /w /e <filename>.

shmuel 07.07.2014 15:48:17 +0200 - build 395

1. Уточнение 389.2 : ошибка при исполнении функции text() одного пункта меню
   приводила к тому, что и остальные пункты меню плагина не загружались.

shmuel 07.07.2014 00:08:44 +0200 - build 394

1. Уточнение 389.2 : поле "area" сделано опциональным.

shmuel 06.07.2014 13:00:38 +0200 - build 393

1. Уточнение 389.2 : поле "title" переименовано в "text".

shmuel 05.07.2014 22:37:25 +0200 - build 392

1. Мелкий рефакторинг.

shmuel 05.07.2014 22:27:12 +0200 - build 391

1. Уточнение 389.2.

shmuel 05.07.2014 17:29:40 +0200 - build 390

1. Уточнение 389.2.

shmuel 05.07.2014 16:58:08 +0200 - build 389

1. Продолжение 387.2.

2. Добавление пунктов в меню плагинов/дисков/конфигурации плагинов из макрофайлов. Подробности - в мануале.

shmuel 03.07.2014 12:38:39 +0200 - build 388

1. LuaFAR (generic plugin): защита от вызовов Фаром экспортируемых функций плагина, производимых
   до возвращения из SetStartupInfoW(), то-есть когда плагин ещё не полностью инициализирован.

shmuel 01.07.2014 00:02:47 +0200 - build 387

1. Откат 383-386.

2. Возможность открытия редактора из диалога ошибки (пока только при загрузке макросов, и то не во всех случаях).

3. При переходе на MoonScript 0.2.6 сломалось нахождение номера строки в .moon-файлах.

shmuel 30.06.2014 14:02:24 +0200 - build 386

1. Продолжение 383: аргументы, передаваемые обработчикам события "CommandLine", задаются списком Lua-выражений.

shmuel 28.06.2014 19:47:38 +0200 - build 385

1. Продолжение 383: плагин передаёт обработчикам события "CommandLine" не таблицу, а последовательность аргументов.

shmuel 28.06.2014 00:21:04 +0200 - build 384

1. Продолжение 383: плагин передаёт обработчикам события "CommandLine" таблицу - массив аргументов.

shmuel 27.06.2014 16:54:07 +0200 - build 383

1. Новая команда macro:user (lm:user) и новый тип обработчика событий group="CommandLine". Подробности - в мануале.

shmuel 25.06.2014 13:37:44 +0200 - build 382

1. LuaFAR: far.MacroAdd и far.MacroDelete могут работать не только из основного lua_State, но и из дополнительных.

shmuel 24.06.2014 01:36:45 +0200 - build 381

1. MoonScript: в сборку не был включён файл moon.lua.

shmuel 23.06.2014 22:46:06 +0200 - build 380

1. Уточнение 377.2.

shmuel 23.06.2014 20:38:21 +0200 - build 379

1. LuaFAR: мелкий рефакторинг.

shmuel 22.06.2014 13:11:38 +0200 - build 378

1. MoonScript 0.2.6.

shmuel 21.06.2014 18:09:57 +0200 - build 377

1. LuaFAR: при создании и инициализации дополнительного lua_State, и вызове из него диалога, было падение.

2. LuaFAR (generic plugin): экспортируемая функция luaopen_luaplug сделана доступной из Lua, в виде глобальной
   переменной _luaplug. Подробнее - в мануале.

shmuel 18.06.2014 20:47:47 +0200 - build 376

1. Уточнение 366.

shmuel 17.06.2014 16:35:54 +0200 - build 375

1. Уточнение 372.

shmuel 17.06.2014 16:14:51 +0200 - build 374

1. LuaFAR: функция editor.InsertTextW теперь сама обеспечивает два нулевых байта в конце текста,
   передаваемого Фару. Таким образом, вызывающая функция может об этом не заботиться.

shmuel 16.06.2014 20:52:25 +0200 - build 373

1. Уточнение 371.

shmuel 16.06.2014 13:38:25 +0200 - build 372

1. FIX: макросы, добавленные с помощью far.MacroAdd, работали с глобальным окружением.

shmuel 15.06.2014 20:38:11 +0200 - build 371

1. Если перезагрузка макросов прерывалась по ошибке в обработчике ExitFAR, то макросы переставали
   вызываться по нажатию клавиш, причём последующие перезагрузки уже не помогали.

shmuel 08.06.2014 22:47:43 +0200 - build 370

1. Восстановим поломанное во время рефакторингов поведение при выводе меню выбора макроса.

shmuel 08.06.2014 12:28:07 +0200 - build 369

1. M#2696: Отображать версии LuaFAR и luajit среди прочих выводимых по команде far:ver.
   В плагин добавлена команда macro:about (lm:about).

shmuel 07.06.2014 16:00:14 +0200 - build 368

1. Исправление двух редких, но возможных ситуаций, вызывающих падение Фара (одна в LuaFAR, другая в LuaMacro).

shmuel 06.06.2014 23:40:12 +0200 - build 367

1. Уточнение 366.

shmuel 06.06.2014 21:37:13 +0200 - build 366

1. LuaFAR-плагины (включая LuaMacro), использующие luaplug.c:
   Добавлена возможность "воссоздать" виртуальную машину (lua_State), используемую плагином, то-есть:
   закрыть текущую и создать новую.

   * Для этого нужно присвоить глобальной переменной 'RecreateLuaState' значение true.
   * Анализ переменной 'RecreateLuaState' и воссоздание lua_State производятся в экспортируемой функции OpenW,
     непосредственно перед возвращением управления из неё Фару.
   * Перед воссозданием lua_State производится вызов экспортируемой функции ExitFARW (для плагина LuaMacro
     вызываются обработчики события ExitFAR, если таковые загружены).
   * После воссоздания lua_State производятся все действия, которые производятся при загрузке плагина Фаром,
     в том числе исполняется "входной" Lua-файл плагина.
   * После воссоздания lua_State глобальная переменная 'IsLuaStateRecreated' установлена в значение true.

   Плагин LuaMacro при этом автоматически загружает макросы и обработчики событий из макрофайлов.

shmuel 06.06.2014 16:19:53 +0200 - build 365

1. FIX: при незагруженных или выгруженных стационарных макросах не исполнялись вновь записанные клавиатурные.

2. FIX: рекурсивное зацикливание и вылет Фара, если загружаемый макрофайл вызывал far.MacroLoadAll().

3. FIX: не работали автостартующие макросы, у которых key="".

zg 05.06.2014 18:06:43 +0200 - build 364

1. Macro Browser: более корректный переход к телу макроса на moonscript по f4/altf4.

shmuel 05.06.2014 00:51:14 +0200 - build 363

1. Оптимизация обработки ключей при загрузке макросов.

shmuel 04.06.2014 16:35:43 +0200 - build 362

1. LuaFAR: panel.GetPanelInfo().PluginHandle устанавливается в nil, если от Фара пришёл NULL
   (раньше и в этом случае создавалась userdata).

shmuel 03.06.2014 22:53:34 +0200 - build 361

1. Поле 'key' в спецификации макроса сделано опциональным.

shmuel 03.06.2014 20:47:06 +0200 - build 360

1. Fix 359.

shmuel 03.06.2014 20:14:25 +0200 - build 359

1. Рефакторинг.

shmuel 02.06.2014 18:16:01 +0200 - build 358

1. Рефакторинг.

shmuel 02.06.2014 00:18:56 +0200 - build 357

1. Рефакторинг.

shmuel 01.06.2014 16:49:47 +0200 - build 356

1. В диалоге редактирования клавиатурного макроса не детектировались синтактические ошибки в параметрах файла-скрипта.

2. MSSC_POST: устранён двойной парсинг.

3. Рефакторинг.

shmuel 31.05.2014 21:22:42 +0200 - build 355

1. Продолжение 353: теперь не только не падаем, но и выполняем скрипт из архива по ассоциации
   (раньше выдавалось сообщение об ошибке, т.к. на момент запуска макроса временный файл уже был удалён).

shmuel 31.05.2014 17:32:08 +0200 - build 354

1. Рефакторинг.

shmuel 29.05.2014 21:10:14 +0200 - build 353

1. Фар падал при выдаче плагином сообщения об ошибке при запуске скрипта из архива по ассоциации
   lua:@"!\!.!"

shmuel 29.05.2014 09:27:11 +0200 - build 352

1. M#2389: mmode(1,x): Вывод на экран включается/отключается не вовремя.

shmuel 28.05.2014 13:00:02 +0200 - build 351

1. LuaFAR: M#2674: Возврат хэндла панели при работе из макроса - поддержка для LuaFAR-плагинов.

shmuel 28.05.2014 12:52:34 +0200 - build 350

1. Плагин падал при начальной загрузке макросов, если на package.cpath
   находилась lpeg.dll версии 0.10 при том, что в %farhome% была версия 0.12.

shmuel 26.05.2014 20:20:14 +0200 - build 349

1. Завершение рефакторинга, начатого в 332.

shmuel 25.05.2014 21:14:54 +0200 - build 348

1. Продолжение 332.

shmuel 25.05.2014 18:17:51 +0200 - build 347

1. Продолжение 332.

shmuel 24.05.2014 20:09:27 +0200 - build 346

1. Починим вложенные макросы.

shmuel 24.05.2014 17:26:49 +0200 - build 345

1. Продолжение 332.

shmuel 24.05.2014 00:37:50 +0200 - build 344

1. Уточнение 343.

shmuel 23.05.2014 19:52:47 +0200 - build 343

1. Продолжение 332.

shmuel 23.05.2014 01:47:14 +0200 - build 342

1. Продолжение 332.

shmuel 21.05.2014 18:08:08 +0200 - build 341

1. Продолжение 332.

shmuel 17.05.2014 23:58:48 +0200 - build 340

1. Продолжение 332.

shmuel 15.05.2014 23:27:15 +0200 - build 339

1. LuaFAR: compilation warnings.

shmuel 15.05.2014 00:12:19 +0200 - build 338

1. Продолжение 332.

shmuel 14.05.2014 17:11:46 +0200 - build 337

1. M#2673: LuaFAR: дополнительные параметры для far.Timer.

zg 13.05.2014 20:18:30 +0200 - build 336

1. %farprofile%\Macros\modules добавлен в package.moonpath.

shmuel 13.05.2014 17:22:27 +0200 - build 335

1. Из-за 328.1 не инициализировался package.moonpath.

zg 13.05.2014 04:31:07 +0200 - build 334

1. %farprofile%\Macros\modules добавлен в package.cpath.

shmuel 13.05.2014 00:35:01 +0200 - build 333

1. Продолжение 332.

shmuel 12.05.2014 13:05:51 +0200 - build 332

1. Рефакторинг в системе макросов.

shmuel 11.05.2014 02:47:01 +0200 - build 331

1. Из форума: ошибка moonscript.lua:677: too many pending calls/choices
   Ошибка проявлялась после перезагрузки макросов на вложенном цикле глубиной 8.

shmuel 07.05.2014 16:59:17 +0200 - build 330

1. LuaFAR: добавлен метод "send" хэндлу диалога.
   Выражение hDlg:send(...) соответствует выражению far.SendDlgMessage(hDlg, ...)

shmuel 05.05.2014 22:50:22 +0200 - build 329

1. Рефакторинг.

shmuel 05.05.2014 15:24:35 +0200 - build 328

1. Force MoonScript to load lpeg.dll residing in %farhome%.

2. M#2388: При ошибках сообщения системы на русском могут не отображаться.

shmuel 04.05.2014 11:24:24 +0200 - build 327

1. LuaFAR: ряд функций приведен в соответствие с документацией в отношении их возвращаемых значений.
   Эти функции могли возвращать 0 значений, тогда как по документации должны были возвращать nil или false.

shmuel 04.05.2014 02:12:28 +0200 - build 326

1. Откат build 325.

shmuel 03.05.2014 17:51:18 +0200 - build 325

1. Экспериментально:
   Перед обработкой комстроки Фар передаёт её плагину LuaMacro, который вызывает глобальную функцию
   ProcessFarCommandLine(CmdLine), если таковая существует. Если функция не существует, либо возвращает
   false/nil/ничего, Фар продолжает обработку комстроки. Если возвращает стринг, то Фар обрабатывает
   его как новое значение комстроки. Если возвращает true, дальнейшая обработка комстроки Фаром не
   производится.

shmuel 02.05.2014 23:00:20 +0200 - build 324

1. Командная строка: если в `lua: <code>` или `moon: <code>`
   `<code>` начинается с символа `=`, то вызывается `far.Show()`, например:
   `lua:=5+2,6,"foo"` эквивалентно `lua:far.Show(5+2,6,"foo")`.

shmuel 01.05.2014 17:05:32 +0200 - build 323

1. В файл moonscript.lua не была включена стандартная библиотека языка.

2. Рефакторинг.

shmuel 30.04.2014 20:57:47 +0200 - build 322

1. Мелкий рефакторинг.

shmuel 29.04.2014 17:51:59 +0200 - build 321

1. По просьбе трудящихся: команды "lm:post" и "macro:post" оставлены на полгода,
   в качестве синонимов команды "lua:".

shmuel 28.04.2014 19:42:31 +0200 - build 320

1. Не, "lm:" никому не мешала, пусть живёт как синоним "macro:".

shmuel 28.04.2014 18:18:11 +0200 - build 319

1. Команда "lm:" убрана, вместо неё - команда "macro:".

2. Из таблицы mf убраны функции: band,bor,bnot,bxor,lshift,rshift.

shmuel 28.04.2014 13:42:55 +0200 - build 318

1. Убраны команды "luacheck:" и "mooncheck:".

2. В функции eval добавлен опциональный 3-й параметр 'Lang'.

shmuel 27.04.2014 13:32:54 +0200 - build 317

1. Продолжение build 316 + обновлена документация.

shmuel 27.04.2014 01:33:41 +0200 - build 316

1. Новый синтаксис командной строки плагина:
       lm:        load
       lm:        save
       lm:        unload
       lua:       <sequence> | @<filename> [<params>]
       moon:      <sequence> | @<filename> [<params>]
       luacheck:  <sequence> | @<filename> [<params>]
       mooncheck: <sequence> | @<filename> [<params>]
   Документация ещё не обновлена.

shmuel 26.04.2014 17:56:39 +0200 - build 315

1. Продолжение 314, документация обновлена:
   -- команды lm:post2 и lm:check2 в плагине LuaMacro.

shmuel 25.04.2014 21:32:52 +0200 - build 314

1. Поддержка MoonScript в API плагинов (документация ещё не обновлена).

shmuel 23.04.2014 16:34:49 +0200 - build 313

1. moonscript.dll заменена на moonscript.lua.

shmuel 23.04.2014 10:28:06 +0200 - build 312

1. Откат build 311, в связи с вынесением LPeg из moonscript.dll в отдельную lpeg.dll.

shmuel 23.04.2014 08:12:28 +0200 - build 311

1. Fix build 310: при перезагрузке скриптов выгружался LPeg, без которого
   не может работать MoonScript.

shmuel 23.04.2014 01:08:10 +0200 - build 310

1. Добавлена поддержка MoonScript (автор идеи и первой реализации - Вадим Егоров).
   Используется слегка патченый MoonScript 0.2.5: в функции moonscript.loadfile
   добавлена 1 строчка для пропуска UTF-8 BOM, если таковой имеется.

shmuel 18.04.2014 13:26:34 +0200 - build 309

1. Refactoring.

shmuel 14.04.2014 13:37:00 +0200 - build 308

1. LuaFAR: реализована обработка DM_KEY.

shmuel 12.04.2014 16:23:58 +0200 - build 307

1. Fix: ключ макроса, заданный регулярным выражением, содержащий альтернативы
        верхнего уровня, разделённые символом '|', не срабатывал при наличии
        полностью валидной альтернативы, в случае, если ей предшествовала
        альтернатива, дающая частичное совпадение.

shmuel 11.04.2014 18:34:10 +0200 - build 306

1. Fix: ключ макроса, заданный регулярным выражением, преобразовывался в нижний
        регистр, что приводило к обработке \D как \d и т.п.

zg 09.04.2014 18:05:25 +0200 - build 305

1. LuaFAR: удалена поддержка DN_ACTIVATEAPP.

shmuel 08.04.2014 10:39:15 +0200 - build 304

1. LuaFAR: refactoring.

shmuel 07.04.2014 23:31:55 +0200 - build 303

1. LuaFAR: refactoring.

shmuel 07.04.2014 21:08:04 +0200 - build 302

1. LuaFAR: добавилась поддержка DN_ACTIVATEAPP.

shmuel 06.04.2014 18:45:15 +0200 - build 301

1. LuaFAR fix: require 'unicode' возвращало не ту таблицу.

shmuel 22.03.2014 23:20:01 +0200 - build 300

1. LuaFAR: добавлена обработка новых диалоговых сообщений и событий:
   DM_GETDIALOGTITLE, DN_DROPDOWNOPENED, DN_DRAWDLGITEMDONE.

shmuel 14.03.2014 00:46:28 +0200 - build 299

1. lua51.dll и lua5.1.dll меняются ролями: теперь lua51.dll - основная, а lua5.1.dll - proxy.

shmuel 08.03.2014 01:07:28 +0200 - build 298

1. LuaFAR: снято ограничение на длину строки, получаемой посредством DM_GETTEXT.

shmuel 08.03.2014 00:08:20 +0200 - build 297

1. Уточнение build 296.

shmuel 07.03.2014 22:30:54 +0200 - build 296

1. Расширение winapi.lua (от John Doe).

shmuel 06.03.2014 13:24:27 +0200 - build 295

1. M#2612: LuaFAR: метод для получения "сырого" значения хэндла диалога.

shmuel 02.03.2014 10:01:12 +0200 - build 294

1. LuaFAR: все параметры функции far.Text сделаны опциональными.

shmuel 21.02.2014 20:43:53 +0200 - build 293

1. LuaFAR: автоматическая вставка <plugin_path>\?.lua в package.path больше не производится.
   Те LuaFAR-плагины, которым это надо, должны об этом позаботиться сами.

shmuel 19.02.2014 16:22:00 +0200 - build 292

1. Fix: в функции eval при исполнении скрипта-файла (@<filename> [<params>]),
   вместо указанных параметров скрипту передавалась функция.

shmuel 18.02.2014 00:06:10 +0200 - build 291

1. LuaFAR: в следующих функциях теперь допускается вместо таблицы FarColor передавать число:
     - editor.AddColor
     - far.AdvControl(ACTL_SETARRAYCOLOR)
     - far.CreateUserControl
     - диалоговые процедуры (DN_CTLCOLORDLGLIST, DN_CTLCOLORDLGITEM, DN_CTLCOLORDIALOG)
   Передача числа подразумевает стандартные 4-битные цвета (обрабатывается только младший байт числа).

shmuel 16.02.2014 21:41:56 +0200 - build 290

1. LuaFAR: far.RecursiveSearch принимает произвольное количество дополнительных аргументов.

shmuel 16.02.2014 19:48:43 +0200 - build 289

1. LuaFAR: добавлен 5-й параметр в функцию far.RecursiveSearch.

shmuel 12.02.2014 22:50:28 +0200 - build 288

1. Убрана локализация coroutine.create - для удобства отладки с ZeroBrane Studio.

shmuel 11.02.2014 16:56:31 +0200 - build 287

1. LuaFAR: очередное исправление обработки DM_LISTSETDATA/DM_LISTGETDATA.
   В качестве идентификатора данных теперь используем GetPluginData(L), а не L,
   поскольку L разное для разных макросов.

shmuel 10.02.2014 09:34:12 +0200 - build 286

1. LuaFAR: уточнение обработки DM_LISTSETDATA/DM_LISTGETDATA.
   DM_LISTGETDATA возвращает light userdata для "чужих" данных (см. мануал LuaFAR).

shmuel 09.02.2014 22:27:26 +0200 - build 285

1. LuaFAR: исправление обработки DM_LISTGETDATASIZE (номер элемента списка отсчитывался от 0, а не 1).

2. LuaFAR: небольшое изменение алгоритма обработки DM_LISTSETDATA.

shmuel 08.02.2014 00:41:08 +0200 - build 284

1. Уточнение билда 283.

shmuel 07.02.2014 22:37:35 +0200 - build 283

1. LuaFAR: far.SendDlgMessage(DM_LISTSETDATA) при повторной установке данных по тому же индексу
   не затирал предыдущее значение, что приводило к росту потребления памяти.

shmuel 06.02.2014 18:28:38 +0200 - build 282

1. LuaFAR: доработка far.GetDlgItem и far.SendDlgMessage(DM_GETDLGITEM):
   для элементов типа DI_LISTBOX и DI_COMBOBOX элемент 6 (ListItems) передавался нулём.

2. LuaFAR: мелкий рефакторинг.

shmuel 30.01.2014 11:20:16 +0200 - build 281

1. LuaFAR: откат билда 279 (сломалось получение пустых строк).

shmuel 29.01.2014 18:46:57 +0200 - build 280

1. Мелкий рефакторинг.

zg 29.01.2014 14:10:34 +0200 - build 279

1. LuaFAR: уточнение 276 - для несуществующих элементов DM_GETTEXT возвращает nil.

shmuel 29.01.2014 09:42:12 +0200 - build 278

1. Откат изменения DM_LISTGETCURPOS предыдущего коммита.

shmuel 28.01.2014 23:23:52 +0200 - build 277

1. LuaFAR: уточнения в DM_GETCONSTTEXTPTR и DM_LISTGETCURPOS.

zg 28.01.2014 12:07:51 +0200 - build 276

1. LuaFAR: DM_GETTEXT для несуществующих элементов диалога возвращало мусор.

shmuel 28.01.2014 01:28:32 +0200 - build 275

1. LuaFAR: работали скрипты с двумя BOM'ами (один удалял LuaFAR, второй - LuaJIT).

shmuel 24.01.2014 20:19:11 +0200 - build 274

1. LuaFAR: M#2572: far.MakeMenuItems: добавлять в таблицу не только строковое представление, но и сами объекты.

2. LuaFAR: M#2573: far.Show: возвращать выбранный пункт меню.

shmuel 21.01.2014 22:03:31 +0200 - build 273

1. LuaFAR (far.Message): добавлен флаг 'n', означающий "не делать свёртку длинных строк".

shmuel 18.01.2014 13:18:11 +0200 - build 272

1. M#2561: far.MacroPost: возможность задавать SequenceText функцией (а не строкой).
   Добавлена функция mf.postmacro.

shmuel 14.01.2014 11:15:34 +0200 - build 271

1. Адаптация к Far 3.0.3770 ("рефакторинг в системе макросов").

shmuel 12.01.2014 20:21:37 +0200 - build 270

1. LuaFAR (far.MacroAdd) - доработка build 150:
   -- Callback(Id,Flags) получает первым параметром не число, а light userdata.

shmuel 10.01.2014 16:45:19 +0200 - build 269

1. LuaFAR-плагины, собираемые GCC:
   автоматическое включение экспорта FreeFindDataW при наличии GetFindDataW.

shmuel 07.01.2014 11:00:53 +0200 - build 268

1. Кастомная сортировка: косметика.

shmuel 06.01.2014 17:09:29 +0200 - build 267

1. Кастомная сортировка: возможность указания функции сортировки при загрузке режима сортировки.

shmuel 06.01.2014 13:33:30 +0200 - build 266

1. Кастомная сортировка: адаптация "альтернативной" функции сортировки (qsort) к Far 3.0.3751+.

shmuel 05.01.2014 19:22:10 +0200 - build 265

1. Рефакторинг кастомной сортировки.

drkns 03.01.2014 13:38:35 +0200 - build 264

1. Немного упростим 263.

t-rex 03.01.2014 04:58:00 +0200 - build 263

1. Фикс кастомной сортировки, уродливо но чтоб намёк был понят.

[ Примечание от shmuel: кастомная сортировка сломалась в Far 3.0.3751 ]

shmuel 28.12.2013 13:05:44 +0200 - build 262

1. M#2550: Возвращаемое значение для загрузочных функций Macro и Event.
   При успешной загрузке данные функции возвращают число-идентификатор
   загруженного макроса или обработчика события.

shmuel 25.12.2013 18:55:20 +0200 - build 261

1. LuaFAR (far.Timer):
   после закрытия таймера его обработчик не может быть автоматически вызван,
   поэтому больше нет необходимости проверять в обработчике, закрыт ли таймер.

shmuel 16.11.2013 23:14:32 +0200 - build 260

1. LuaFAR: доработана передача параметров функции export.ProcessPanelEvent.

shmuel 12.11.2013 00:06:37 +0200 - build 259

1. LuaFAR: Оказывается, хэндл панели, возвращаемый OpenW(), должен быть уникальным не в пределах
   плагина, а в пределах Фара. Поэтому добавим к нему смещение, равное адресу lua_State плагина.

shmuel 02.11.2013 18:36:31 +0200 - build 258

1. LuaFAR: для элементов плагиновых панелей не заполнялся массив CustomColumnData.

shmuel 30.09.2013 13:54:30 +0200 - build 257

1. LuaFAR (unicode.utf8.format): уточнение билда 141.

shmuel 29.09.2013 21:08:52 +0200 - build 256

1. Уточнение билда 255: сделано одинаково для Lua 5.1 и 5.2.

shmuel 29.09.2013 19:28:05 +0200 - build 255

1. LuaFAR: предотвратим исключение при невалидном 2-м аргументе io.open().
   Из форума: Вот такая строчка в макросе роняет ФАР
     io.open("file","xyz")

shmuel 26.09.2013 12:37:08 +0200 - build 254

1. Macro Browser: по F3 выводится информация о макросе/обработчике события.

shmuel 24.09.2013 16:50:11 +0200 - build 253

1. Уточнение 252.

shmuel 24.09.2013 13:56:53 +0200 - build 252

1. Продолжение M#2390: Передавать параметры скрипту, запущенному через lm:post @
   Глобальная (в пределах окружения скрипта) переменная `_filename` содержит имя файла-скрипта.
   См. начало в лог-записи билда 196.

shmuel 22.09.2013 18:57:29 +0200 - build 251

1. Добавка и уточнение сообщений об ошибках. Мини-рефакторинг.

shmuel 21.09.2013 19:24:13 +0200 - build 250

1. Небольшие уточнения.

shmuel 21.09.2013 11:50:29 +0200 - build 249

1. Рефакторинг.

shmuel 20.09.2013 20:08:09 +0200 - build 248

1. Расширены файлы winapi.lua и farapi.lua.

shmuel 19.09.2013 23:53:41 +0200 - build 247

1. LuaFAR: добавлена функция far.IsPluginLoaded.

shmuel 19.09.2013 19:45:15 +0200 - build 246

1. Мелкий рефакторинг и приведение переводов строк к единообразному виду.

shmuel 19.09.2013 00:01:45 +0200 - build 245

1. M#2486: Разрешить использование Plugin.Call в Condition.
   Добавлена макрофункция Plugin.SyncCall, см. macroapi_manual.chm.

shmuel 16.09.2013 20:04:27 +0200 - build 244

1. Если у Фара выставлена опция ReadOnlyConfig != 0, плагин не создаёт папки
   и не сохраняет клавиатурные макросы в файлы.

shmuel 15.09.2013 21:01:09 +0200 - build 243

1. Рефакторинг.

shmuel 12.09.2013 18:59:27 +0200 - build 242

1. Рефакторинг.

shmuel 11.09.2013 08:18:35 +0200 - build 241

1. Не все вхождения PluginPanelItemEx были переименованы в 240.

shmuel 10.09.2013 23:58:49 +0200 - build 240

1. Переименование PluginPanelItemEx -> SortingPanelItem.

shmuel 10.09.2013 22:19:08 +0200 - build 239

1. Кастомные сортировки в панелях используют структуру PluginPanelItemEx вместо PluginPanelItem.
   (Это ломающее изменение, пересмотрите свой код).

shmuel 08.09.2013 20:47:29 +0200 - build 238

1. Кастомные сортировки: поля спецификации сортировки DirectoriesFirst,
   SelectedFirst, RevertSorting и SortGroups ошибочно обрабатывались как
   булевые величины, в то время как они могут принимать 3 значения.

shmuel 06.09.2013 02:21:33 +0200 - build 237

1. Кастомные режимы сортировки выгружаются при выгрузке макросов.

shmuel 05.09.2013 22:41:24 +0200 - build 236

1. Рефакторинг.

shmuel 04.09.2013 19:59:11 +0200 - build 235

1. Уточнение 234: вызов макроса из меню сортировок панели (CtrlF12) с последующим
   выбором кастомного режима сортировки приводили к падению Фара.

shmuel 04.09.2013 19:31:48 +0200 - build 234

1. Меню сортировок панели (CtrlF12) включает в себя и кастомные режимы сортировки, если таковые имеются.

shmuel 02.09.2013 10:35:41 +0200 - build 233

1. LuaFAR: far.CopyToClipboard(nil) очищает буфер обмена.

shmuel 25.08.2013 22:48:35 +0200 - build 232

1. Продолжение 231: функция InitSort получает один параметр - таблицу опций сортировки.

shmuel 25.08.2013 15:25:46 +0200 - build 231

1. Параметр Settings функции Panel.LoadCustomSortMode может содержать опциональные поля - функции InitSort и EndSort.

shmuel 20.08.2013 20:54:52 +0200 - build 230

1. Кастомные сортировки панелей восстанавливаются при перезапуске Фара, если setup был сохранён,
   при условии, что соответствующие вызовы Panel.LoadCustomSortMode() производятся в процессе загрузки макросов.
   Восстановление происходит после окончания загрузки макросов, до начала исполнения автостартующих макросов.

shmuel 17.08.2013 13:30:57 +0200 - build 229

1. Уточнение 228.

shmuel 17.08.2013 11:56:31 +0200 - build 228

1. M#2468: некорректная работа Editor.Value и Editor.GetStr() при наличии в строке символа \x00.

shmuel 15.08.2013 00:36:48 +0200 - build 227

1. Рефакторинг.

shmuel 14.08.2013 15:56:53 +0200 - build 226

1. Временно убираем C.wcscmp из panelsort.lua (LuaJIT, скомпилированный с msvcr100.dll, её не находит).

shmuel 14.08.2013 00:12:38 +0200 - build 225

1. Переименование: Panel.InstallCustomSortMode -> Panel.LoadCustomSortMode.

shmuel 13.08.2013 18:53:50 +0200 - build 224

1. Добавлена макрофункция Panel.CustomSortMenu.

shmuel 12.08.2013 20:55:13 +0200 - build 223

1. Добавлена макрофункция Panel.InstallCustomSortMode.

shmuel 12.08.2013 14:42:45 +0200 - build 222

1. Уточнение 219.

shmuel 11.08.2013 20:26:08 +0200 - build 221

1. Уточнение 219.

shmuel 11.08.2013 01:20:02 +0200 - build 220

1. Уточнение 219.

shmuel 10.08.2013 19:32:13 +0200 - build 219

1. Кастомная сортировка в панелях. Уже работает.
   Добавлена макрофункция Panel.SetCustomSortMode.

shmuel 09.08.2013 20:01:49 +0200 - build 218

1. Кастомная сортировка в панелях. Пока не работает.

shmuel 05.08.2013 20:20:50 +0200 - build 217

1. LuaFAR: добавлена функция panel.SetDirectoriesFirst.

shmuel 04.08.2013 19:29:15 +0200 - build 216

1. Уточнение билда 209 (были падения при большом количестве возвращаемых значений от Plugin.Call).

shmuel 04.08.2013 00:39:23 +0200 - build 215

1. LuaFAR: мелкий рефакторинг.

shmuel 04.08.2013 00:17:43 +0200 - build 214

1. LuaFAR: уточнение билда 211: элемент DI_USERCONTROL *не обязан* содержать в 6-й позиции тип "far_usercontrol"
   (например, плагин LuaFAR History перестал работать, т.к. у него этот тип не используется).

shmuel 02.08.2013 08:06:45 +0200 - build 213

1. Порядок вывода пунктов в меню выбора макроса (при наличии более одного макроса на сочетание area/key)
   не был постоянным, он мог меняться после каждой перезагрузки макросов (следствие переделки в билде 191).

zg 01.08.2013 18:20:23 +0200 - build 212

1. LuaFAR: usercontrol.new -> far.CreateUserControl.

zg 31.07.2013 21:24:49 +0200 - build 211

1. LuaFAR: добавлена поддержка буфера для DI_USERCONTROL. использовать примерно так:

   local buffer=usercontrol.new(10,10)
   local textel={Char="a",Attributes={Flags=bit64.bor(F.FCF_FG_4BIT,F.FCF_BG_4BIT),ForegroundColor=9,BackgroundColor=8}}
   for ii=1,#buffer do
     buffer[ii]=textel
   end
   local items={
     {"DI_DOUBLEBOX",0,0,11,11,0,0,0,0,""},
     {"DI_USERCONTROL",1,1,10,10,buffer,0,0,0,""}
   }

shmuel 30.07.2013 22:19:16 +0200 - build 210

1. LuaFAR: в far.MacroExecute неправильно обрабатывался тип FMVT_BINARY.

shmuel 30.07.2013 19:30:59 +0200 - build 209

1. Рефакторинг передачи параметров из Фара в плагин при OpenFrom==OPEN_LUAMACRO
   (параметры помещаются непосредственно на Lua-стек, без создания таблицы).

shmuel 19.07.2013 10:45:16 +0200 - build 208

1. Событие ExitFAR теперь вызывается также при операциях выгрузки и перезагрузки макросов.

shmuel 17.07.2013 21:51:48 +0200 - build 207

1. При загрузке макросов первым всегда исполняется макрофайл %FARPROFILE%\Macros\scripts\_macroinit.lua,
   если такой файл существует. Порядок исполнения прочих макрофайлов не определён.

shmuel 17.07.2013 16:44:15 +0200 - build 206

1. LuaFAR: export.ProcessEditorEvent(EE_SAVE) получает параметром таблицу (M#2446).

shmuel 16.07.2013 15:03:34 +0200 - build 205

1. LuaFAR: export.ProcessEditorEvent(EE_SAVE) получает параметром имя сохраняемого файла (M#2446).

shmuel 07.07.2013 00:59:38 +0200 - build 204

1. LuaFAR: fix compatibility with Lua 5.2.

shmuel 06.07.2013 20:57:39 +0300 - build 203

1. LuaFAR: рефакторинг.

shmuel 06.07.2013 18:17:47 +0300 - build 202

1. LuaFAR: win.CreateDir почти полностью переписана.

2. Мелкий рефакторинг.

shmuel 04.07.2013 17:39:47 +0300 - build 201

1. Мелкий рефакторинг.

shmuel 04.07.2013 15:54:01 +0300 - build 200

1. LuaFAR: расширены возможности ф-ции win.CreateDir.

2. Отмена импорта ф-ции Фара CreatePath.

shmuel 03.07.2013 21:13:37 +0200 - build 199

1. Из форума: "Зачем фар создает каталоги с корне С".
   Внутренняя функция Фара CreatePath импортирована в плагин LuaMacro и используется вместо win.CreateDir.

shmuel 03.07.2013 13:24:32 +0300 - build 198

1. Вызов скрипт-файлов с аргументами:
   Аргументы от имени файла отделяются пробелом, то-есть разделитель :: упразднён.
   Друг от друга аргументы по-прежнему отделяются запятыми.

shmuel 01.07.2013 17:29:01 +0200 - build 197

1. LuaFAR: уточнение обработки DN_GETVALUE.

shmuel 30.06.2013 13:12:37 +0200 - build 196

1. Добавлена возможность вызывать скрипт-файлы с аргументами.
   Это касается: MCTL_SENDSTRING, MCTL_ADDMACRO, eval, lm:post, lm:check.

shmuel 24.06.2013 17:17:36 +0300 - build 195

1. Macro Browser: при нажатии Enter ("исполнить выделенный макрос")
   передаётся аргумент для функции condition и работает функция akey,
   (но не во всех случаях, т.к. реального ключа, запустившего макрос, нет).

shmuel 21.06.2013 20:55:30 +0200 - build 194

1. Мелкий рефакторинг.

shmuel 21.06.2013 18:31:26 +0200 - build 193

1. Рефакторинг функции GetMacro.

shmuel 21.06.2013 12:38:30 +0200 - build 192

1. Рефакторинг функции GetMacro.

shmuel 20.06.2013 21:25:25 +0200 - build 191

1. Почти полностью переписана функция GetMacro - возможны баги. Но теперь её должно быть легче поддерживать.

shmuel 18.06.2013 18:28:33 +0200 - build 190

1. LuaFAR: bit64.new имела неоправданно узкий диапазон при аргументе типа "number".

shmuel 18.06.2013 10:44:58 +0200 - build 189

1. Имена флагов макросов перемещены из Фара в плагин LuaMacro.

shmuel 16.06.2013 12:02:57 +0200 - build 188

1. LuaFAR: far.MacroExecute поддерживает передачу скрипту аргументов.

shmuel 15.06.2013 20:14:26 +0200 - build 187

1. Уточнение 186.

shmuel 15.06.2013 12:30:47 +0200 - build 186

1. Поддержка изменений в MCTL_EXECSTRING.

shmuel 14.06.2013 16:34:43 +0200 - build 185

1. Поддержка FMVT_NIL.

2. LuaFAR: LuaFAR-плагины при вызове OPEN_FROMMACRO теперь _всегда_ возвращают Фару указатель на структуру
   FarMacroCall, даже если плагин ничего не вернул. Исключение - только возврат в результате runtime error.

shmuel 14.06.2013 00:46:43 +0300 - build 184

1. Fix 183.2.

shmuel 14.06.2013 00:22:19 +0200 - build 183

1. Поддержка MCTL_EXECSTRING.

2. LuaFAR: добавлена функция far.MacroExecute.

shmuel 10.06.2013 12:27:20 +0200 - build 182

1. LuaFAR: fix FileFilter:IsFileInFilter().

shmuel 09.06.2013 13:09:46 +0200 - build 181

1. LuaFAR: добавлена функция unicode.utf8.utf8valid. Описание - в мануале LuaFAR.

shmuel 05.06.2013 20:37:32 +0200 - build 180

1. LuaFAR: функция far.Menu:
   Из флагов по умолчанию убран FMENU_AUTOHIGHLIGHT, поскольку приводит к диким тормозам на больших меню
   (например, меню из 10000 пунктов, каждый с текстом в 1000 символов).
   Кому надо - установит этот флаг в коде аппликации.

shmuel 30.05.2013 16:03:15 +0200 - build 179

1. M#2336: LuaMacro не сканирует каталоги-симлинки.

shmuel 30.05.2013 11:34:15 +0200 - build 178

1. Выбор автостартующих макросов производится не по соответствию области макроса текущей области,
   а по соответствию области макроса области запуска Фара (определяемой ключами /e и /v).

shmuel 29.05.2013 19:17:49 +0200 - build 177

1. Была ошибка при запросе от Фара макроса в незагруженных областях (например, область "Disks" при запуске Фара
   с ключом /e или /v).

shmuel 29.05.2013 17:53:38 +0200 - build 176

1. Экспериментально: автостартующие макросы работают при запуске Фара с ключами /e и /v.

shmuel 26.05.2013 11:20:07 +0200 - build 175

1. LuaFAR: в сообщениях об ошибках при отображении traceback начальные табы в строках заменяются на 3 пробела
   для улучшения читаемости.

shmuel 25.05.2013 23:51:14 +0300 - build 174

1. LuaFAR: в функции editor.GetString добавлено значение параметра mode==3
   (не меняет текущую позицию в редакторе, возвращает: StringText,StringEOL).

shmuel 24.05.2013 20:20:51 +0300 - build 173

1. Из форума:
      lm:post error()
      1. Хотелось бы выравнивание по левому краю
      2. Зацикливается на Step: called on macro in dead status

shmuel 23.05.2013 12:02:55 +0300 - build 172

1. M#2365: Передавать макросам полный путь к файлу скрипта при загрузке.

   Полный путь передаётся макрофайлу первым параметром.
   Если в начале макрофайла определить переменную, например,
       local MacroFileName = ...
   то эта переменная будет доступна всем макросам и обработчикам событий в данном файле.

shmuel 22.05.2013 18:15:06 +0300 - build 171

1. Плагин создаёт таблицу package.nounload, ключи которой - имена модулей,
   которые требуется не выгружать при выгрузке или перезагрузке иперосов.
   Подробнее - в macroapi_manual.

shmuel 22.05.2013 00:19:37 +0200 - build 170

1. LuaFAR: функция far.Message больше не разрывает длинные строки на одинарных и двойных кавычках.

shmuel 21.05.2013 18:13:57 +0300 - build 169

1. Добавлено "?\\init.lua" в package.path.

shmuel 20.05.2013 15:11:46 +0300 - build 168

1. Рефакторинг.

shmuel 18.05.2013 19:46:39 +0200 - build 167

1. Macro Browser: меню ограничивается по высоте, чтобы не занимать весь экран.

shmuel 17.05.2013 20:01:52 +0300 - build 166

1. При "конфликте" макросов, в меню выбора макроса работает AltF4 - открытие модального редактора.

shmuel 17.05.2013 16:55:00 +0200 - build 165

1. LuaFAR: сброс разрешения floating point exceptions теперь делается в начале всех экспортируемых
   плагинами функций. Это делает возможным совместную работу с плагинами, которые устанавливают
   данное разрешение (плагины, использующие Delphi или FreePascal).
   Существовавшей защиты оказалось недостаточно при проверке на Windows 7 x64 с LuaJIT 2.

2. Рефакторинг.

shmuel 15.05.2013 23:23:16 +0200 - build 164

1. Рефакторинг.

shmuel 14.05.2013 23:32:46 +0200 - build 163

1. Если в процессе начальной загрузки макросов выводилось меню или диалог, то тут же (то-есть преждевременно)
   начиналось исполнение цикла автостартующих макросов.

shmuel 14.05.2013 21:05:41 +0200 - build 162

1. LuaFAR: функция far.Message при разрыве длинных строк больше не отдаёт предпочтения пробелам и табам
   перед прочими разделителями.

2. В сообщениях об ошибках при отображении traceback начальные табы в строках заменяются на 3 пробела
   для улучшения читаемости.

shmuel 14.05.2013 09:05:48 +0200 - build 161

1. LuaFAR: рефакторинг.

shmuel 13.05.2013 22:46:37 +0200 - build 160

1. Macro Browser: добавлена операция перехода к макрофайлу по CtrlPgUp.

shmuel 13.05.2013 20:23:41 +0200 - build 159

1. Macro Browser: состояние показа/скрытия неактивных макросов запоминается между вызовами.

shmuel 13.05.2013 13:22:40 +0300 - build 158

1. Локализация плагина, добавление lng-файлов.

shmuel 12.05.2013 20:58:40 +0200 - build 157

1. Рефакторинг и мелкие исправления.

shmuel 12.05.2013 17:22:33 +0200 - build 156

1. Macro Browser: добавлены операции:
   -- исполнение макроса по Enter
   -- скрытие/показ неактивных макросов по CtrlH

shmuel 11.05.2013 23:09:54 +0200 - build 155

1. Macro Browser: refactoring.

shmuel 11.05.2013 17:28:56 +0300 - build 154

1. Added "Macro Browser" utility.

shmuel 07.05.2013 00:29:54 +0200 - build 153

1. Рефакторинг.

t-rex 07.05.2013 00:14:27 +0200 - build 152

1. Коррекция 151 в связи с исправление в Far 3389.

shmuel 06.05.2013 23:19:36 +0200 - build 151

1. LuaFAR: fix editor.SaveFile
   -- Поле CodePage было не инициализировано, что приводило к нулевому размеру сохраняемого файла.
   -- Теперь CodePage является опциональным 4-м параметром функции.

shmuel 06.05.2013 19:48:08 +0200 - build 150

1. LuaFAR: небольшая ломка API, для единообразия между LuaFAR-плагинами и прочими плагинами.
   -- far.MacroAdd возвращает не число, а light userdata.
   -- far.MacroDelete получает не число, а light userdata.

shmuel 04.05.2013 15:49:15 +0200 - build 149

1. Уточнение 148.

shmuel 04.05.2013 08:46:57 +0200 - build 148

1. Макросы, загруженные по MCTL_ADDMACRO, больше не выгружаются по MCTL_LOADALL и lm:unload.
   (Восстановлено исходное поведение данного типа макросов, сломанное в процессе перехода с макроязыка на Lua).

shmuel 02.05.2013 21:26:30 +0200 - build 147

1. В режиме запуска "Far /m" происходила ошибка "attempt to index upvalue 'Areas' (a nil value)"
   при попытке выполнения любой из следующих операций:
   (1)MCTL_ADDMACRO, (2)MSSC_POST, (3)ручная запись макроса и (4)просмотр списка макросов в хелпе.

shmuel 02.05.2013 13:12:26 +0200 - build 146

1. Небольшая оптимизация обработки ключей при загрузке макросов.

shmuel 30.04.2013 11:39:55 +0200 - build 145

1. Вызов far.MacroAdd из макрофайла при загрузке приводил к тому, что для всех макросов этого файла,
   загружаемых после вызова far.MacroAdd, поле FileName не устанавливалось.

shmuel 29.04.2013 20:35:33 +0200 - build 144

1. LuaFAR: fix DM_LISTGETTITLES.

shmuel 29.04.2013 18:50:02 +0200 - build 143

1. Для макросов-обработчиков событий:

   * Функция editor.SubscribeChangeEvent переопределена, и вызов оригинальной функции происходит только при переходе
     "счётчика подписок" из 0 в 1 (если аргумент Subscribe==true), либо из 1 в 0 (если аргумент Subscribe==false).
     Поэтому нужно, чтобы в каждом обработчике, делающем вызов Subscribe==true, был и парный вызов Subscribe==false.

   * В отличие от плагинов, событие EE_CHANGE может приходить независимо от того, вызывал ли данный обработчик
     функцию editor.SubscribeChangeEvent или не вызывал.

   * Счётчики подписок отдельные для каждой сессии редактора.

shmuel 29.04.2013 14:17:24 +0200 - build 142

1. Уточнение 135.

shmuel 29.04.2013 12:19:52 +0200 - build 141

1. LuaFAR: unicode.utf8.format допускает 3 цифры в спецификации ширины вывода величины (было: 2).

shmuel 28.04.2013 16:32:41 +0200 - build 140

1. LuaFAR: новая функция editor.SubscribeChangeEvent.

2. В связи с появлением ECTL_SUBSCRIBECHANGEEVENT, ECTL_UNSUBSCRIBECHANGEEVENT (Фар 3.0.3371)
   откатываем 137.1 и 137.2.

shmuel 26.04.2013 02:38:10 +0200 - build 139

1. LuaFAR: Объекты FarSettings не подбирались сборщиком мусора.

shmuel 25.04.2013 14:31:15 +0200 - build 138

1. LuaFAR: far_FreeSettings больше не вызывается автоматически перед возвращением из экспортируемых функций в Фар,
   поскольку исполнение одного макроса может состоять из нескольких вызовов плагина.

shmuel 23.04.2013 18:01:28 +0200 - build 137

1. LuaFAR: экспортируемая функция ProcessEditorEventW теперь соответствует двум Lua-функциям:
       a) export.ProcessEditorChange - если параметр Event==EE_CHANGE;
       b) export.ProcessEditorEvent - для остальных значений параметра Event.
   Это изменение - продолжение билда 136.

2. В макросах-событиях добавилась группа: group="EditorChange".

shmuel 21.04.2013 23:49:25 +0300 - build 136

1. После загрузки событий, обработчик каждого типа события (Lua-функция) создаётся только в случае,
   если загружено хоть одно событие данного типа. Это значительно снижает время обработки для тех
   экспортируемых функций, для которых не загружено ни одного события, так как не происходит вызова
   Lua-функции из LuaFAR.

   Это особенно актуально для ProcessEditorEventW(EE_CHANGE) во время массовой замены в редакторе.

shmuel 20.04.2013 11:42:53 +0200 - build 135

1. LuaFAR: editor.Editor: во время слома LuaFAR API зря сдвинули смещение у параметров StartLine и StartChar.

shmuel 19.04.2013 16:49:21 +0200 - build 134

1. LuaFAR: M#2375: Pattern %<multibyte char> in unicode.utf8.

shmuel 18.04.2013 08:54:23 +0200 - build 133

1. LuaFAR: panel.GetPanelItem и panel.GetSelectedPanelItem возвращают nil для неположительных индексов элемента.

shmuel 18.04.2013 08:14:21 +0200 - build 132

1. LuaFAR: рефакторинг.

shmuel 18.04.2013 00:36:55 +0200 - build 131

1. LuaFAR: M#2372: string:format неправильно учитывает длину юникодной строки.

shmuel 16.04.2013 12:03:47 +0200 - build 130

1. LuaFAR (SettingsControl/Enum): параметр Root можно указывать и стрингом (например, "FSSF_HISTORY_CMD").

shmuel 10.04.2013 17:23:01 +0200 - build 129

1. lm:post @filename работает без указания полного пути, если filename есть в активной панели.

shmuel 05.04.2013 15:31:22 +0200 - build 128

1. LuaFAR: при ломке API забыли про параметры ProcessDialogEvent.

shmuel 04.04.2013 16:12:53 +0300 - build 127

1. Предотвращение падения Фара при запуске макроса в диалоге "Find file".
   Фар вызывает OpenW, не дожидаясь возврата плагина из ProcessDialogEventW,
   запускаемого из дополнительного потока.

shmuel 02.04.2013 18:02:11 +0300 - build 126

1. mf.msave сохраняет таблицы произвольной степени вложенности.
   Рекурсивные вложения не сохраняются (пропускаются).
   /С использованием кода от SUSim/.

shmuel 02.04.2013 10:44:44 +0200 - build 125

1. Из форума: far.SendDlgMessage(id,far.Flags.DM_GETFOCUS,0,0) возвращает от 0.

shmuel 31.03.2013 23:36:30 +0200 - build 124

1. LuaFAR: продолжение ломки API.

   dialog procedure:
     * Param1: 1-based where it is element index, 0-based otherwise.

   far.SendDlgMessage:
     * Param1: 1-based where it is element index, 0-based otherwise.

   far.GetDlgItem, far.SetDlgItem:
     * 2-nd parameter ('numitem') is 1-based.

   far.DialogRun, far.Dialog, far.Message:
     * Return value: 1-based where it is element index, -1 otherwise.

shmuel 31.03.2013 00:36:33 +0200 - build 123

1. LuaFAR: far.AdvControl(ACTL_GETWINDOWINFO) в случае неудачи возвращает nil.

shmuel 29.03.2013 23:51:37 +0200 - build 122

1. LuaFAR: продолжение ломки API.
   viewer.GetInfo, viewer.SetPosition:
     * LeftPos: number, 1-based.

shmuel 28.03.2013 17:51:48 +0200 - build 121

1. LuaFAR: продолжение ломки API.

   far.AdvControl, ACTL_GETWINDOWINFO:
     * Param1:  window number; 1-based integer (optional; default=0).

   far.AdvControl, ACTL_SETCURRENTWINDOW:
     * Param1:  window number; 1-based integer.

shmuel 28.03.2013 12:53:29 +0200 - build 120

1. LuaFAR: продолжение ломки API.
   far.SendDlgMessage, операции DM_GETSELECTION, DM_SETSELECTION, DM_GETEDITPOSITION, DM_SETEDITPOSITION:
     * Начала отсчёта выделений и позиций приведены в соответствие с функциями editor.xxx.

shmuel 27.03.2013 18:37:53 +0200 - build 119

1. LuaFAR: из-за неинициализированной переменной были падения в LuaFAR-плагинах,
   создающих панели.

shmuel 26.03.2013 23:04:35 +0200 - build 118

1. LuaFAR: far.RecursiveSearch, в случае, если первое возвращённое значение
   callback() не false и не nil, возвращает все значения, возвращённые этим
   вызовом callback.

shmuel 25.03.2013 21:18:35 +0200 - build 117

1. LuaFAR: коррекция editor.SaveFile в связи с изменением в Far 3 build 3275.

shmuel 22.03.2013 17:22:55 +0200 - build 116

1. LuaFAR: начало ограниченной ломки API (перевод индексов с базы 0 на базу 1).
   Функции editor.xxx:
     * Номера строк:                                             +1 по отношению к Far API
     * Номер строки начала выделения:                            +1 по отношению к Far API
     * Позиция курсора в строке:                                 +1 по отношению к Far API
     * Позиция начала выделения в строке:                        +1 по отношению к Far API
     * Позиция конца выделения в строке:                         +0 по отношению к Far API (без изменения)
     * editor.AddColor, параметры StartPos и EndPos:             +1 по отношению к Far API

     * Обозначение номера текущей строки по умолчанию:           nil или 0
     * Обозначение текущей позиции в строке по умолчанию:        nil или 0
     * Обозначение конца выделения, включающего перевод строки:  nil или -1 (без изменения)

2. LuaFAR: добавлена функция panel.SetActivePanel.

shmuel 22.03.2013 00:31:09 +0200 - build 115

1. Рефакторинг.

shmuel 22.03.2013 00:10:43 +0200 - build 114

1. Рефакторинг.

shmuel 18.03.2013 21:11:45 +0200 - build 113

1. LuaFAR (fix): игнорировался 6-й параметр far.Message (Id).

shmuel 18.03.2013 15:10:06 +0200 - build 112

1. Fix: eval("<area>/<key>",2): при указании несуществующего <area> исполнялись макросы из текущей области или "Common".

shmuel 16.03.2013 12:18:03 +0200 - build 111

1. При операциях выгрузки и перезагрузки макросов очищается кэш модулей
   (за исключением "исходных" модулей).

shmuel 14.03.2013 20:20:39 +0200 - build 110

1. Откат 101 и 102 (т.к. сломалось MCTL_ADDMACRO).

shmuel 13.03.2013 16:31:55 +0200 - build 109

1. Fix: при расчёте текущих приоритетов событий не учитывалось, что обработчик
   событий - рекурсивная функция.

shmuel 12.03.2013 15:47:57 +0200 - build 108

1. LuaFAR: защита от плагинов, устанавливающих разрешение floating point
   exceptions в контрольном слове процессора, перенесена в начало LF_Open().

shmuel 09.03.2013 22:50:25 +0200 - build 107

1. MCTL_LOADALL и far.MacroLoadAll возвращают true только если не было ни одной ошибки при загрузке.

shmuel 09.03.2013 10:30:50 +0200 - build 106

1. Обработчики событий ничего не возвращали Фару.

shmuel 08.03.2013 12:44:18 +0200 - build 105

1. Уточнение 104.

shmuel 08.03.2013 11:51:14 +0200 - build 104

1. Добавлено событие 'EditorInput', т.е. в спецификации события надо указывать group="EditorInput".
   Параметры функций action и condition, а также возвращаемое значение функции action - согласно
   описанию функции export.ProcessEditorInput в мануале LuaFAR.

shmuel 06.03.2013 08:00:28 +0200 - build 103

1. При вызове eval(str,2) целевой макрос выбирается обычным алгоритмом выбора,
   с учётом флагов, приоритетов и функции condition.

shmuel 04.03.2013 21:29:11 +0200 - build 102

1. Рефакторинг.

shmuel 04.03.2013 20:18:04 +0200 - build 101

1. Рефакторинг.

shmuel 02.03.2013 11:27:47 +0200 - build 100

1. Рефакторинг.

shmuel 02.03.2013 01:17:54 +0200 - build 99

1. Продолжение 97: mf.usermenu. Описание - в macroapi_manual.chm.

shmuel 28.02.2013 21:37:28 +0200 - build 98

1. Продолжение 97: расширение функциональности mf.usermenu. Полное описание - в macroapi_manual.chm.

shmuel 28.02.2013 17:22:41 +0200 - build 97

1. Добавлена макрофункция mf.usermenu(filename [,mode]).
   Если 'mode' равен 0 или не задан, файл открывается "как есть", т.е. по заданному 'filename'.
   Если 'mode' равен 1, файл открывается в %farprofile%\Menus (папка создаётся автоматически).

shmuel 27.02.2013 00:12:33 +0200 - build 96

1. LuaFAR: функция export.ProcessDialogEvent возвращает одно значение, а не два.

2. Добавлено событие 'DialogEvent', т.е. в спецификации события надо указывать group="DialogEvent".
   Параметры функций action и condition, а также возвращаемое значение функции action - согласно
   описанию функции export.ProcessDialogEvent в мануале LuaFAR.

shmuel 26.02.2013 18:07:30 +0200 - build 95

1. Добавлено событие 'ExitFAR', т.е. в спецификации события надо указывать group="ExitFAR".
   Обработчики события вызываются при любой выгрузке плагина LuaMacro.

shmuel 25.02.2013 22:21:19 +0200 - build 94

1. При вызове error и других исключительных ситуациях при исполнении скриптов,
   в сообщения об ошибках будет включаться стек вызовов функций.

shmuel 24.02.2013 22:30:21 +0200 - build 93

1. Добавлена экспортируемая функция 'GetLuaState', для возможности использования
   Lua API непосредственно мз Фара.

shmuel 21.02.2013 23:24:02 +0200 - build 92

1. LuaFAR: в editor.AddColor() добавлен параметр 'Owner'.

shmuel 20.02.2013 18:26:48 +0200 - build 91

1. Фикс билда 68: при вызове макроса по eval(str,2), сначала вызывалась его функция condition().

shmuel 16.02.2013 22:52:12 +0200 - build 90

1. Функция condition() вызывается с одним аргументом-строкой: имя ключа.
   * Это не касается макросов, вызываемых во время 'RunAfterFARStart'.
   * Это не касается событий.
   * Это сделано потому, что akey() не работает, будучи вызвана из condition().

shmuel 12.02.2013 22:39:04 +0200 - build 89

1. LuaFAR: в far.Menu() обозначение BreakKey стало регистронезависимым,
   например, можно указать BreakKey="cS+rEtUrN".

shmuel 11.02.2013 23:24:08 +0200 - build 88

1. Макросы, ключи которых содержали Ctrl или Alt, показывались в хелпе более одного раза.

shmuel 11.02.2013 18:19:46 +0200 - build 87

1. Очерёдность в событиях - определяется динамическими приоритетами.
   * Динамический приоритет определяется так же, как и для макросов, при помощи полей
     'condition' и 'priority'.
   * Вызывается функция action() для всех событий, исключая те, для которых вызов
     condition() вернул false/nil/ничего, в порядке убывания динамических приоритетов.

shmuel 11.02.2013 11:14:37 +0200 - build 86

1. Новая спецификация событий (несовместимая с предыдущей):
   1.1. Проверка флагов не делается, поле 'flags' не используется.
   1.2. Отменяется поле 'name'.
   1.3. Функции condition() и action() получают 3 аргумента: Id,Event,Param
        (см. мануал LuaFAR, ф-ции ProcessEditorEvent, ProcessViewerEvent).

shmuel 10.02.2013 16:53:05 +0200 - build 85

1. Продолжение 82.
   * В группе ViewerEvent, 'name' может иметь следующие значения:
     'Read', 'Close', 'KillFocus', 'GotFocus'.

shmuel 09.02.2013 13:20:11 +0200 - build 84

1. LuaFAR: в export.ProcessEditorEvent(Id,Event,Param) во всех случаях,
   кроме Event==EE_CHANGE, Param передаёт в Lua число, полученное от Фара.

shmuel 08.02.2013 01:16:32 +0200 - build 83

1. Продолжение 82.
   * В группе EditorEvent, 'name' может иметь следующие значения:
     'Read', 'Save', 'Change', 'Close', 'Redraw', 'KillFocus', 'GotFocus'.

shmuel 07.02.2013 20:15:14 +0200 - build 82

1. Новая спецификация обработчика событий (модифицирует спецификацию от 05.02.2013).
   * Ключ key="Read" в таблице-параметре функции Macro отменяется.
   * Новая загрузочная функция 'Event'; также, как и функция 'Macro', она принимает единственный параметр - таблицу.
   * Отличия полей от полей таблицы-параметра функции Macro: вместо полей 'area' и 'key' - поля 'group' и 'name'.
   * 'group' на данный момент может иметь следующие значения: 'EditorEvent' и 'ViewerEvent'.
   * В группе EditorEvent, 'name' может иметь значения 'Read' и 'Save'.
   * В группе ViewerEvent, 'name' может иметь значение 'Read'.
   * Новая функция NoEvent аналогичная NoMacro.
   * Из функции action нельзя вызывать функции, перечисленные в статье
     "Ограничения в использовании некоторых функций" мануала MacroAPI.
     Если эти функции необходимы, можно их вызвать посредством far.MacroPost().
   * Пример:
       Event {
         group="EditorEvent"; name="Read"; flags="DisableOutput";
         action=function() ...... end;
       }

shmuel 06.02.2013 09:05:25 +0200 - build 81

1. Рефакторинг.

shmuel 05.02.2013 19:54:59 +0200 - build 80

1. Уточнение 79.

shmuel 05.02.2013 17:11:26 +0200 - build 79

1. Спецификация макросов: новое опциональное поле "filemask" типа string.
   * Для областей Editor и Viewer, при наличии этого поля, проверяется
     соответствие имени файла (без пути) заданной маске файла.
   * Маска должна соответствовать правилам, применяемым для масок файлов
     в диалоге поиска файлов (Alt-F7 из панелей).
   * При проверке макроса на запуск, данное поле проверяется в первую очередь,
     то-есть до проверки флагов и вызова функции condition.

2. В областях Editor и Viewer спецификации макросов обрабатывается специальный
   ключ "Read". Это значит, что макрос может сработать по событию загрузки
   файла соответственно в редактор или просмотрщик. Для подобных макросов
   производятся следующие действия:

     a) Проверяется соответствие поля "filemask" (если оно указано) имени файла.
     b) Проверяются условия по флагам.
     c) Если есть функция condition, то она вызывается, и ей передаётся параметр
        ID (идентификатор данного экземпляра редактора или просмотрщика).
     d) Если условия (a,b,c) не препятствуют, то вызывается функция action.

   * Поле priority не используется.
   * При вызове condition() имеет значение только логическая истинность
     возвращаемого значения.
   * Данные макросы исполняются один за другим, то-есть все, а не один из всех.

t-rex 01.02.2013 21:20:11 +0200 - build 78

1. При загрузке всегда создаём папочку %FARPROFILE%\Macros\scripts чтоб тупой юзер как я мог понять куда ложить свои макросы.

shmuel 30.01.2013 13:18:49 +0200 - build 77

1. LuaFAR: добавлена функция 'win.EnumRegValue'.

shmuel 29.01.2013 20:19:19 +0200 - build 76

1. LuaFAR: добавлена функция 'win.EnumRegKey'.

shmuel 29.01.2013 10:46:39 +0200 - build 75

1. При отмене меню выбора макроса ключ передавался Фару для дальнейшей обработки.

shmuel 27.01.2013 16:01:35 +0200 - build 74

1. LuaFAR: если в far.Menu передавался невалидный BreakKey, то все последующие
   BreakKey игнорировались. Теперь игнорируются только невалидные BreakKey.

shmuel 26.01.2013 15:55:37 +0200 - build 73

1. Автостартующий макрос, назначенный на CtrlAltF8, запускался 4 раза
   при старте Фара (т.е. для всех сочетаний левых/правых модификаторов).

shmuel 23.01.2013 21:26:52 +0200 - build 72

1. LuaFAR: функция 'dofile' сделана юникодной и понимающей UTF-8 BOM.

shmuel 18.01.2013 21:07:42 +0200 - build 71

1. Рефакторинг.

shmuel 15.01.2013 21:23:50 +0200 - build 70

1. Рефакторинг.

shmuel 14.01.2013 18:20:29 +0200 - build 69

1. Рефакторинг.

shmuel 13.01.2013 11:40:40 +0200 - build 68

1. Изменения, связанные с макросами.

1.1. Интерпретация нажатия ключа, появление левосторонних модификаторов.
     При поступлении ключа, он рассматривается с различением лево- и правосторонних модификаторов.
     То-есть, не может поступить "CtrlX", а может либо "LCtrlX", либо "RCtrlX".

1.2. "Точные" и "обобщённые" модификаторы в спецификациях ключей.
     * Точные модификаторы - это LCtrl, LAlt, RCtrl и RAlt. Обобщённые модификаторы - это Ctrl и Alt.
     * Каждый из обобщённых модификаторов обозначает "любой", т.е. левый или правый модификатор.
       Таким образом, спецификация "CtrlAltX" эквивалентна спецификации "LCtrlLAltX LCtrlRAltX RCtrlLAltX RCtrlRAltX".
     * В одной и той же спецификации ключа могут указываться как точные модификаторы, так и обобщённые,
       например, "CtrlRAltX".

1.3. Ключи, заданные регулярным выражением.
     * При поступлении ключа, производится регистронезависимое сопоставление его имени (см. п.1) регулярному выражению,
       по правилам регулярных выражений Фара.
     * Регулярное выражение "/CtrlX/" никогда не сработает, поскольку на сопоставление может поступить
       либо "LCtrlX", либо "RCtrlX".
     * Примеры регулярных выражений, независимых от типа модификатора: "/.CtrlX/" или "/[LR]CtrlX/".
       У кого есть макросы со спецификациями ключей типа "/R?CtrlX/" - нужно поправить, как указано выше.

1.4. Спецификации ключей не имеют приоритетов друг перед другом.
     Если есть макросы 1 (key="RCtrlX"), 2 (key="CtrlX") и 3 (key="/.CtrlX/"), то при нажатии RCtrlX все они
     будут рассматриваться на одинаковых основаниях, а выбор будет производиться по совокупности заданных полей:
     flags (включая возможный вызов callback для макросов MCTL_ADDMACRO), condition и priority.

1.5. При записи макросов с клавиатуры, всегда используются обобщённые модификаторы ключей, то-есть нельзя
     с клавиатуры назначить макрос на LCtrlX или RCtrlX, а только на CtrlX.

1.6. Макросы, назначенные на область "Common", имеют приоритет по умолчанию = 40.

shmuel 11.01.2013 17:50:52 +0200 - build 67

1. Из форума: если при старте ФАРа на одной из панелей открывается сетевая папка, _может_ быть выдано такое сообщение:
   attempt to index upvalue 'Areas' (a nil value).

shmuel 07.01.2013 19:41:07 +0200 - build 66

1. Рефакторинг.

shmuel 07.01.2013 12:08:17 +0200 - build 65

1. LuaFAR: поддержка UTF-8 BOM в Lua-файлах.

shmuel 06.01.2013 15:18:45 +0200 - build 64

1. Из форума: C макросом Panel.Esc.lua в Macros\scripts перестала работать отмена копирования файлов по Esc.

shmuel 05.01.2013 00:02:17 +0200 - build 63

1. LuaFAR: M#2242: regex.match()

shmuel 04.01.2013 13:27:23 +0200 - build 62

1. Снято ограничение доступа к глобальным переменным на этапе загрузки макросов.

shmuel 03.01.2013 00:39:45 +0200 - build 61

1. Уточнение 60.1

shmuel 02.01.2013 22:46:02 +0200 - build 60

1. Файл luamacro.lua разделён на два файла (luamacro.lua и utils.lua).

2. В файлах макросов допустима директива NoMacro {...} для быстрого запрещения
   загрузки макроса (то-есть нужно дописать "No" перед директивой Macro). Хотя
   предпочтительным способом запрещения загрузки является закомментирование
   секции Macro {...}.

shmuel 02.01.2013 00:48:54 +0200 - build 59

1. Рефакторинг.

shmuel 01.01.2013 13:48:46 +0200 - build 58

1. ExitFARW больше не экспортируется.

shmuel 31.12.2012 00:00:49 +0200 - build 57

1. Неправильно работали ключи-регекспы при наличии группировки в ().

shmuel 30.12.2012 20:03:25 +0200 - build 56

1. В хелпе не отображались макросы, введенные с клавиатуры.

shmuel 29.12.2012 17:37:45 +0200 - build 55

1. 'area' в описании макроса может включать несколько областей, разделённых только пробелами.

shmuel 29.12.2012 15:09:01 +0200 - build 54

1. 'area' в описании макроса может включать несколько областей, разделённых пробелами/запятыми/точками с запятой.

2. 'key' в описании макроса может включать несколько ключей, разделённых пробелами.

3. 'key' в описании макроса может быть обозначен как фаровское регулярное выражение, обрамлённое слешами (/).
   В этом случае /Ctrl/ не сработает при нажатии RCtrl, надо явно обозначать /R?Ctrl/ и т.п.

4. Допустимо более одного макроса на сочетание (key,area). В этом случае выполняется только макрос с наибольшим
   приоритетом (как описано в 4a,4b,4c). Если есть более одного макроса с одинаковым приоритетом - выводится меню.
   Для автостартующих макросов - выполняются все, независимо от приоритета.

4a. Опциональное поле 'priority' в описании макроса: число от 0 до 100. Значение по умолчанию = 50.

4b. Опциональное поле 'condition' в описании макроса: функция. Eсли возвращает false/nil/ничего, то макрос
    не исполняется. Если возвращает число, то это число используется вместо 'priority'. При других значениях
    возврата (например, true) используется 'priority'.

4c. Макросы, добавляемые посредством MCTL_ADDMACRO, имеют приоритет = 50.

5. Макросы, записанные с клавиатуры, обрабатываются особо. Их может быть не более одного на сочетание (key,area).
   Их приоритет выше приоритета любых других макросов.

6. Формат макросов, записываемых с клавиатуры, изменился. Если у кого-то есть такие макросы, сохранённые в папке
   Macros/internal, перенесите эти файлы в папку Macros/scripts.

shmuel 15.12.2012 00:00:28 +0200 - build 53

1. Увеличена длина строки "Последовательность", используемой в диалогах
   удаления или модификации макросов.

shmuel 14.12.2012 20:26:02 +0200 - build 52

1. После перезагрузки плагина LuaMacro вызовы макросов приводили к ошибкам.
   Теперь после перезагрузки плагина макросы не загружены, но их можно загрузить командой lm:load.

2. Плагин LuaMacro: новая команда lm:unload - выгружает все макросы.

shmuel 12.12.2012 19:20:43 +0200 - build 51

1. Опечатка.

shmuel 12.12.2012 13:37:03 +0200 - build 50

1. При сохранении макроса "action=function()" записывается в текущей строке записи,
   для удобства просмотра аутлайнером колорера.

shmuel 12.12.2012 00:08:24 +0200 - build 49

1. Уточнение build 46:
   "<" = "Less"
   ">" = "More"

shmuel 11.12.2012 15:34:44 +0200 - build 48

1. Уточнение предыдущих двух коммитов.

shmuel 11.12.2012 15:27:15 +0200 - build 47

1. Добавление к предыдущему коммиту:
   "." = "Dot"

shmuel 11.12.2012 15:04:09 +0200 - build 46

1. Кодирование 'key' в имени файла-макроса при сохранении производится путём
   замены некоторых символов, с помощью следующего соответствия:
   "<" = "Lt"
   ">" = "Gt"
   "|" = "Pipe"
   "/" = "Slash"
   ":" = "Colon"
   "?" = "Question"
   "*" = "Asterisk"
   '"' = "Quote"

shmuel 11.12.2012 01:11:46 +0200 - build 45

1. Кодирование 'key' в имени файла-макроса при сохранении производится только в случае,
   если 'key' содержит символы, которые являются невалидными для имени файла.

shmuel 09.12.2012 22:32:32 +0200 - build 44

1. Рефакторинг.

shmuel 09.12.2012 20:26:09 +0200 - build 43

1. У функций, определённых вне таблицы-аргумента загрузочной функции Macro(),
   не было доступа к глобальным переменным.

shmuel 09.12.2012 16:03:52 +0200 - build 42

1. Макросы переехали из macros.db в папку %FARPROFILE%\Macros и содержатся в Lua-файлах.

shmuel 27.11.2012 16:12:25 +0200 - build 41

1. Рефакторинг.

shmuel 25.11.2012 19:39:47 +0200 - build 40

1. Экспериментально: использование секции "farconfig/macros/variables" базы данных для Lua-модулей (библиотек).
   Каждая переменная - модуль. Имена модулей регистрозависимы.
   Например: <variable name="shmuel.utils" type="text"> ...... </variable>
   Пример использования в макросе: utils=require "shmuel.utils"
   ВНИМАНИЕ: "variables" больше не грузятся при старте Фара. Используйте для этого "constants".

shmuel 25.11.2012 11:05:58 +0200 - build 39

1. Добавлено свойство Mouse.LastCtrlState, которое (в отличие от Mouse.CtrlState)
   обновляется как по мышиным, так и по клавиатурным событиям.

shmuel 23.11.2012 13:33:16 +0200 - build 38

1. LuaFAR: чистим структуру PluginPanelItem перед заполнением.

shmuel 23.11.2012 12:14:12 +0200 - build 37

1. M#2206: Соответствие структуры таблицы FindData со структурой PluginPanelItem.

shmuel 10.11.2012 00:05:31 +0200 - build 36

1. LuaFAR: рефакторинг.

shmuel 08.11.2012 10:43:21 +0200 - build 35

1. Перенос вызова _control87 из Фара в плагин LuaMacro.

shmuel 07.11.2012 15:30:22 +0200 - build 34

1. LuaFAR: фикс багов с передачей указателей на данные внутри блока наружу.

shmuel 02.11.2012 18:07:06 +0200 - build 33

1. Упорядочена структура FarMacroCall.

shmuel 01.11.2012 22:47:59 +0200 - build 32

1. LuaFAR: Far API 3.0.2918.

shmuel 31.10.2012 20:32:30 +0200 - build 31

1. Plugin.Call: для симметрии, величины типа FMVT_BINARY, возвращаемые плагином,
   передаются в макрос в таблице, как 1-й элемент таблицы.

shmuel 30.10.2012 23:06:44 +0200 - build 30

1. LuaFAR-плагины при вызове OPEN_FROMMACRO получают таблицу-массив аргументов
   без явного указания их типов.

shmuel 30.10.2012 20:42:17 +0200 - build 29

1. LuaFAR: фикс багов с передачей указателей на данные внутри блока наружу.

shmuel 30.10.2012 18:16:01 +0200 - build 28

1. Уточнение build 26.

2. Far API 3.0.2912.

zg 30.10.2012 00:32:37 +0200 - build 27

1. LuaFAR: Far API 3.0.2912.

shmuel 29.10.2012 22:58:41 +0200 - build 26

1. Поддержка передачи "бинарных величин" (FMVT_BINARY) из Lua в C, то-есть:
     а) из макроса в (любой) плагин
     б) из LuaFAR-плагина в макрос
   Каждая такая величина должна передаваться в таблице, как 1-й элемент таблицы.

shmuel 28.10.2012 22:23:05 +0200 - build 25

1. Рефакторинг.

zg 28.10.2012 02:04:17 +0200 - build 24

1. LuaFAR: ACTL_GETWINDOWINFO возвращает userdata для Id также и для WTYPE_VMENU.

shmuel 27.10.2012 20:55:55 +0200 - build 23

1. LuaFAR: warnings.

shmuel 25.10.2012 00:12:09 +0200 - build 22

1. LuaFAR: рефакторинг.

shmuel 22.10.2012 11:20:01 +0200 - build 21

1. LuaFAR: поддержка последних изменений в Plugin.Call для LuaFAR-плагинов.

w17 21.10.2012 20:36:46 +0400 - build 20

1. luafar3.vcxproj postbuild - copy lua5.1.dll added

shmuel 21.10.2012 10:33:29 +0200 - build 19

1. LuaFAR: рефакторинг.

shmuel 20.10.2012 19:49:43 +0200 - build 18

1. LuaFAR: к четырём типам данных, которые может возвращать Plugin.Call,
   добавился ещё один: "бинарная величина" - это string, который может содержать
   любые данные и который не подвергается преобразованию UTF-16LE -> UTF-8.

shmuel 20.10.2012 08:36:00 +0200 - build 17

1. Plugin.Call может возвращать одну или более величин, каждая из которых
   может быть: целым 64-битным числом, числом с плавающей точкой, строкой
   (UTF-16LE) или булевой величиной.

shmuel 19.10.2012 15:48:43 +0200 - build 16

1. LuaFAR: рефакторинг.

shmuel 19.10.2012 11:41:44 +0200 - build 15

1. LuaFAR: удалены препроцессорные директивы FAR_LUA.

svs 15.10.2012 12:40:38 +0400 - build

1. Форматирование кода
   AStyle --style=ansi --indent=tab=4 --brackets=break --indent-classes --indent-switches --indent-namespaces --indent-preprocessor --break-blocks --delete-empty-lines --unpad-paren --keep-one-line-statements --keep-one-line-blocks "!\!.!"


svs 15.10.2012 11:46:00 +0400 - build 14

1. ФАРоконстанты в api.lua и luamacro.lua

shmuel 14.10.2012 21:22:40 +0200 - build 13

1. Добавлена функция `unicode.utf8.cfind` (она будет автоматически вызываться
   при использовании метода `cfind`).

zg 14.10.2012 19:42:19 +0200 - build 12

1. warnings.

shmuel 14.10.2012 15:33:27 +0200 - build 11

1. Немного упрощён протокол передачи данных Far->LuaFAR->LuaMacro.

shmuel 12.10.2012 20:55:00 +0200 - build 10

1. LuaFAR: удалена неиспользуемая функция far.DefDlgProc.

shmuel 11.10.2012 17:35:57 +0200 - build 9

1. Восстановлена работа функции MacroControl(MCTL_GETLASTERROR).

shmuel 10.10.2012 20:36:46 +0200 - build 8

1. LuaFAR: исправлена ошибка, приводящая к падению.

shmuel 10.10.2012 06:48:48 +0200 - build 7

1. Более корректная обработка командной строки.

2. LuaFAR: закомментирован кусок с ошибкой, приводящей к падению. На работу
   плагина не влияет. Исправление займёт некоторое время.

shmuel 09.10.2012 11:44:09 +0200 - build 6

1. Добавлена поддержка командной строки (префикс LM).
   Операции те же, что в плагине FarCmds: load, save, post, check.
   Имя файла задаётся как @filename, а не <filename.
   Теперь можно производить операции с командной строки, независимо от наличия плагина FarCmds.

shmuel 09.10.2012 06:37:50 +0200 - build 5

1. Refactor.

shmuel 09.10.2012 00:07:33 +0200 - build 4

1. Добавлена возможность интроспекции "свойств" глобальных таблиц API макроязыка.
   Например, свойства таблицы Editor можно просмотреть так:
     for k,v in pairs(Editor.properties) do .... end

t-rex 06.10.2012 18:48:30 +0200 - build 3

1. Обновил для Far build 2871.

shmuel 05.10.2012 20:00:00 +0200 - build 2

1. Macro API: все глобальные функции, относящиеся к этому API, продублированы также в таблице mf.
   Например, eval и mf.eval - это одна и та же функция.

drkns 29.09.2012 22:52:06 +0200 - build 1

1. Импорт & адаптация под систему сборки.
