LuaFAR — библиотека для создания плагинов на языке Lua

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14498
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 90 times
Been thanked: 499 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Библиотека LuaFAR делает возможным написание плагинов на языке Lua, предоставляя им адаптированную версию FAR API.

Входит в состав FAR manager (начиная с 3.0 build 2851), и доступна для использования в макросах.

Справка по функциям библиотеки — luafar_manual.chm (в дистрибутиве, папка Encyclopedia).
Мануал весьма лаконичен, предполагает что вы ориентируетесь в FAR Plugins API (FarEncyclopedia.ru.chm, в дистрибутиве)

Дополнения к мануалу:

Полезное по теме: См. также:
IgorZ
Posts: 819
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 97 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by IgorZ »

Latest post of the previous page:

Обнаружил очень странное поведение функций, работающих с временем файла.
Собственно, вот что конкретно:

Для "1" время последней записи возвращается корректно, для "2" - на час меньше. В третьей строке - время запуска макроса. Проверял, не изменится ли результат через час. Не изменился.
Вот макрос:
Пробовал заменять win.GetFileInfo на win.GetFileTimes - происходит то же самое.
При этом сам Far и другие плагины (проверил на TmpPanel и NTFS File Information) выводят время обоих файлов корректно. Куда копать - просто не понимаю.
Far v3.0.6631.0 x86. ОС - Windows XP Professional SP3. Файловая система на диске - NTFS.
Прилагаю в архиве макрос и тестовые файлы на всякий случай.
Attachments
TEST.7z
(442 Bytes) Downloaded 3 times
User avatar
HaRT
Moderator
Posts: 11398
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 263 times
Been thanked: 408 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by HaRT »

IgorZ wrote: Tue 20 Jan, 2026 12:0526.10.2014
[…]
Windows XP Professional SP3. Файловая система на диске - NTFS.
Это последнее воскресенье октября, а время в начале суток.
Я предполагаю, что на эту WinXP не накачено обновление, отменяющее перевод часов (да и было ли такое для экспишки?). Смущает только то, что мы видим переход не с 03:00 на 02:00, а с 00:01 на 00:00. Подозреваю, что тут какое-то неожиданное взаимодействие с текущим часовым поясом.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 7171
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 621 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

IgorZ wrote: Tue 20 Jan, 2026 12:05 Обнаружил очень странное поведение функций, работающих с временем файла.
Это объясняется тем, FileTimeToLocalFileTime не полностью учитывает "особенности" time zone.
Чтобы это учитывалось, нужно использовать SystemTimeToTzSpecificLocalTime, которая (пока что?) не была добавлена в LuaFAR.
image.png
Last edited by Shmuel on Tue 20 Jan, 2026 15:28, edited 2 times in total.
IgorZ
Posts: 819
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 97 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by IgorZ »

HaRT wrote: Tue 20 Jan, 2026 12:20
IgorZ wrote: Tue 20 Jan, 2026 12:0526.10.2014
[…]
Windows XP Professional SP3. Файловая система на диске - NTFS.
Это последнее воскресенье октября, а время в начале суток.
Я предполагаю, что на эту WinXP не накачено обновление, отменяющее перевод часов (да и было ли такое для экспишки?).
Обновление такое было, и установлено. Компьютер рабочий, на предприятии с этим строго, системщики бдят.
HaRT wrote: Tue 20 Jan, 2026 12:20Смущает только то, что мы видим переход не с 03:00 на 02:00, а с 00:01 на 00:00. Подозреваю, что тут какое-то неожиданное взаимодействие с текущим часовым поясом.
Подозреваю, что взаимодействие очень неожиданное:
╔═══════════════ C:\TEST ════════╤═════╗╔════════════ ║р Имя │Размер│ Дата │Время║║р Имя ║ .. │ Вверх│21.01.26│08:46║║ .. ║ 1 │ 0│26.10.13│02:00║║ 1 ║ 2 │ 0│26.10.15│01:00║║ 2 ║ │ │ │ ║║ ║ │ │ │ ║║ ║ │ │ │ ║║ ║ │ │ │ ║║ ║ │ ║ │ ╔═════════════════════════╗ ║ │ ║ 1│ 26.10.2013 1:00:00 ║ ║ │ ║ 2│ 26.10.2015 1:00:00 ║ ║ │ ║ 3│ 21.01.2026 8:47:41 ║ ║ │ ╚══════ 3 arguments ══════╝
Исправил год: у более позднего на 2013, у более раннего на 2015. Теперь минусуется время у того, у которого 02:00. Поигрался ещё с утра пораньше, со свежей головой. Результат: от 26.10.2014 01:59:59,9999999 включительно и ранее минусуется час, начиная с 26.10.2014 02:00:00,0000000 преобразуется корректно. Не зависит ни от месяца, ни от числа, ни от времени суток. Магический миг, не иначе!
P. S. Предположил, что это связано с отменой перехода на зимнее время в РФ - но нет, отменили в 2011 году.
P. P. S. Нашёл, кажется! Википедия:
Список событий октября 2014 года.
. . .
26 октября
В России вступили в силу поправки в закон «Об исчислении времени»: московское время, от которого отсчитываются остальные часовые зоны, теперь соответствует UTC+3 вместо прежнего UTC+4, а общее количество часовых зон в России увеличивается с 9 до 11. Перевод стрелок на летнее время, отменённый осенью 2011 года, по-прежнему производиться не будет. Большинство регионов перевели стрелки на час назад, ряд регионов не переводили стрелки совсем, а Забайкальский край и Магаданская область перевели стрелки на 2 часа назад
Да уж!
И такого обновления Microsoft, скорее всего, для XP просто не выпускала.
IgorZ
Posts: 819
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 97 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by IgorZ »

Shmuel wrote: Tue 20 Jan, 2026 15:23
IgorZ wrote: Tue 20 Jan, 2026 12:05 Обнаружил очень странное поведение функций, работающих с временем файла.
Это объясняется тем, FileTimeToLocalFileTime не полностью учитывает "особенности" time zone.
Чтобы это учитывалось, нужно использовать SystemTimeToTzSpecificLocalTime, которая (пока что?) не была добавлена в LuaFAR.
Спасибо за разъяснение. Какова вероятность, что SystemTimeToTzSpecificLocalTime в относительно ближайшее время будет добавлена в LuaFAR?
Shmuel
Posts: 7171
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 621 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

IgorZ wrote: Wed 21 Jan, 2026 05:18 Какова вероятность, что SystemTimeToTzSpecificLocalTime в относительно ближайшее время будет добавлена в LuaFAR?
Что конкретно я этим займусь в скором времени вероятность невелика.
IgorZ
Posts: 819
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 16 times
Been thanked: 97 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by IgorZ »

Ладно, тогда сделаю костылик.
Post Reply

Return to “Обсуждение макросов”