Менеджер Lua-скриптов для Farа

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Данный скрипт содержит следующие макросы:
  1. Выводит список всех Lua-скриптов Farа и позволяет манипулировать ими.

    Клавиша вызова по умолчанию: AltShiftF11.
  2. Вставка Lua/Moon скрипта (с выбором, какого типа) в редактируемый .lua/.moon файл.
    Клавиша вызова по умолчанию: LCtrlF11.
  3. Вставка Lua/Moon Macro в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  4. Вставка Lua/Moon Event в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  5. Вставка Lua/Moon MenuItem в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  6. Вставка Lua/Moon CommandLine в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  7. Вставка Lua/Moon PanelModule в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  8. Редактирование Lua/Moon скрипта из редактируемого файла.
    Клавиша вызова по умолчанию: CtrlF12.
  9. Вставка строки guid в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlU.
  10. Перезагрузка всех скриптов.
    Клавиша вызова по умолчанию: CtrlF9.
Требуемая версия Far 3.0.5210+.

Начиная с версии 4.0, скрипт выполнен в виде модуля и набора вызывающих макросов.

Attachments
LuaManager.5.1.1.7z
(58.36 KiB) Downloaded 47 times
LuaManager.5.0.6.7z
Последняя опубликованная версия, поддерживающая Far 3.0.0.4000 и выше
(59.02 KiB) Downloaded 94 times
LuaManager.3.1.11.7z
Последняя версия, выполненная не в виде модуля
(50.56 KiB) Downloaded 292 times
Last edited by IgorZ on Mon 18 May, 2020 06:26, edited 15 times in total.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Latest post of the previous page:

Версия 5.0.3 -
  • Добавлена фильтрация по фиктивному/отстутствующему key. Теперь, если при фильтрации клавиш установить фильтр в "none" (регистр неважен), то покажутся только те макросы, у которых поле key не указано, или в него записано не название клавиши и не регулярное выражение (к примеру: "none", "Dummy", "Нет клавиши" и т. п.).
    Замечание: Клавиатурные комбинации MacroEx, к сожалению, отфильтровать, как корректные, пока не получилось.
  • Доработана поддержка несохранённых клавиатурных макросов: теперь более кореектно выводится информация, и, вроде бы, нет больше возможных ошибок из-за отсутствия имени файла.
skipik
Posts: 205
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 33 times
Been thanked: 22 times

Менеджер Lua-скриптов для Farа

Post by skipik »

Небольшой фикс от Victor_VG:
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Версия 5.0.4 - отпускная (а что ещё делать вечерами, если интернет внезапно и надолго ёк?) и послеотпускная работа над ошибками.
  • Исправлена редкая ошибка, когда LuaManager по какой-то причине не мог правильно определить текст скрипта и зацикливался.
  • Исправлена ошибка с обращением к Description при редактировании панельного модуля.
  • Исправлена функция сохранения одного параметра в БД Far.
  • Ну и, естественно, исправлена ошибка с лишним "%" в новом значении в gsub.
skipik
Posts: 205
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 33 times
Been thanked: 22 times

Менеджер Lua-скриптов для Farа

Post by skipik »

IgorZ, небольшое замечание по новой версии: AltShiftF11 -> перемещаем курсор на менеджер lua/moon скриптов -> F3.
Ловим такое:

Фикс (спасибо Shmuel):
Надо заменить строку 332 в init.lua (LuaManager 5.0.4) на

Code: Select all

if not fmoon then text = regex.match(text,(".*?[\r\n]"):rep(l2-l1+1)) or "" end -- для lua достанем строки с текстом функции
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Версия 5.0.5 -
  • Исправлена ошибка (не то что б моя, но...) с :match со слишком большим количеством строк в шаблоне. Небыстро, но - когда время появилось.
  • Небольшой рефакторинг. В основном - проверка и упорядочение использования регулярных выражений.
Last edited by IgorZ on Fri 08 Nov, 2019 06:56, edited 1 time in total.
User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Менеджер Lua-скриптов для Farа

Post by Xerox »

(сразу говорю что бага не критичная, оставляю для справки, вдруг кому поможет/интересно)
Как у меня воспроизводится:
1.) Делай раз - смело идем в LuaManager по AltShiftF11

Code: Select all

╟───────────────┴──┬──────────────────────────────────────────────────── Modules ─────────────────────────────────────
║  MacroBrowserAlt │ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\?.lua  
║  rebind          │ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\?.lua  
║  LuaManager      │ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\?\init.lua  
╟──────────────────┴────┬─────┬──────────────────────────────────── Plugin menu items ────────────────────────────────
Тут виды знаки вопроса почему-то, ну да ладно, можно догадаться почему, выглядит в том числе и в зависимости от находится ли модуль в свой папке или нет
2.) Далее, делай два - F4 на "..\Profile\Macros\modules\?\init.lua"
Все замечательно - открылось, посмотрелось.
3.) Закрываем по Esc, и тут мы получаем вот что:

Code: Select all

 ╔══════════════════════════════════════════════════════════════════════════════════════════════════════════╗
 ║ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\LuaManager\: No such file or directory   ║
 ╟──────────────────────────────────────────────────────────────────────────────────────────────────────────╢
 ║                                                  { OK }                                                  ║
 ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════╝
4.) Если сделать Еск или Ок, то в итоге благополучно все же возвращаемся в окно Луа-манагера где и были, т.е. в принципе ничего страшного

Пытался сам разгрести как починить, но понял что не по силам, поэтому оставляю здесь на суд истории, могу подробнее расписать свою конфигурацию если автор возьмется чинить или автору кто сможет помочь - в этом и смысл моего замечания

ЛуаМанагер - классный, автору глубочайший респект
Last edited by Xerox on Sun 17 Nov, 2019 20:32, edited 8 times in total.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Xerox wrote: Sun 17 Nov, 2019 20:16

Code: Select all

╟───────────────┴──┬──────────────────────────────────────────────────── Modules ─────────────────────────────────────
║  MacroBrowserAlt │ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\?.lua  
║  rebind          │ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\?.lua  
║  LuaManager      │ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\?\init.lua  
╟──────────────────┴────┬─────┬──────────────────────────────────── Plugin menu items ────────────────────────────────
Тут виды знаки вопроса почему-то
Читаем справку (F1 прямо в окне скрипта), обнаруживаем, что всё корректно: это маска из путей поиска модулей, и в Lua она выглядит именно так.
Xerox wrote: Sun 17 Nov, 2019 20:16 3.) Закрываем по Esc, и тут мы получаем вот что:

Code: Select all

 ╔══════════════════════════════════════════════════════════════════════════════════════════════════════════╗
 ║ C:\Users\xxx\AppData\Roaming\Far Manager\Profile\Macros\modules\LuaManager\: No such file or directory   ║
 ╟──────────────────────────────────────────────────────────────────────────────────────────────────────────╢
 ║                                                  { OK }                                                  ║
 ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════╝
А вот это действительно ошибочка, хоть и не страшная по последствиям. Посему
Версия 5.0.6 -
  • Исправлена ошибка, возникающая после редактировании модуля вида ?\init.lua. Старая, видно или никто не пользуется данной возможностью, или наплевали на сообщение об ошибке, не влекущее неприятных последствий.
Xerox wrote: Sun 17 Nov, 2019 20:16 ЛуаМанагер - классный, автору глубочайший респект
Спасибо. Всегда приятно читать подобное.
User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Менеджер Lua-скриптов для Farа

Post by Xerox »

IgorZ, спасибо огромнейшее, а то у меня подозрения что делаю не так, неправильная конфигруация может у меня, или подобное.
И вообще круто что чинится, а то у всяких Майкрософтов баг на баге и чинить не собираются, а ты думай кто тут дурак
skipik
Posts: 205
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 33 times
Been thanked: 22 times

Менеджер Lua-скриптов для Farа

Post by skipik »

IgorZ, такой баг вылез: http://forum.ru-board.com/topic.cgi?for ... tart=720#2
citRiks
Posts: 807
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 256 times
Been thanked: 46 times

Менеджер Lua-скриптов для Farа

Post by citRiks »

skipik, ну функция редактируется в редакторе, что круто, только редактор сохраняет с бимбомом этим.
кому то надо посмотреть эти настройки в своем редакторе
Хотя, в редакторе кажется было что-то что задает сохранять ли с бимбомом или без него,
и вроде этим можно управлейт через скрипт, но не могу сказать очень точно
Т.е. если кому-то надо срочно, то пусть пороют в этом направлении.
Ну или ждем Игоря что лучше всего :)
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

skipik wrote: Sun 03 May, 2020 16:48 IgorZ, такой баг вылез: http://forum.ru-board.com/topic.cgi?for ... tart=720#2
Проверил на Far 3.0.5590 x86. Не вылазит ни на моей сборке, ни на голом Far c LuaManager 5.0.6 и кодовой страницей втроенного редактора по умолчанию, настроенной в UTF8.
Вообще, там такой алгоритм:
  1. начальное значение записывается стандартными средствами Lua во временный файл;
  2. он открывается во встроенном редакторе Far;
  3. после закрытия редактора новое значение читается, опять же, стандартными средствами Lua в переменную;
  4. старое значение заменяется на новое.
В первом пункте BOM никак не может появиться. Но, на всякий случай, проверим:

Code: Select all

local p = debug.getinfo(function()end).source:match("^@?([^@].*\\)[^\\]*$")
local h = io.open(p.."test.lua","w")
h:write("--Здесь нет BOM!!!")
h:close()
Запускаем этот файл, затем проверяем, что в файле test.lua BOM нет.
Затем для проверки второго пункта запускаем следующий файл:

Code: Select all

local F = far.Flags
local p = debug.getinfo(function()end).source:match("^@?([^@].*\\)[^\\]*$")
editor.Editor(p.."test.lua",nil,nil,nil,nil,nil,F.EF_DISABLEHISTORY+F.EF_DISABLESAVEPOS+F.EF_NONMODAL+F.EF_IMMEDIATERETURN)
Keys("CtrlEnd Enter F2 F10")
Проверяем, не появился ли BOM в файле test.lua. Если появился, значит в данном экземпляре Far есть скрипт или плагин, принудительно добавляющий BOM в файлы без него, но соответствующей кодировки. Если не появился, значит и в LuaManager не должна происходить вставка.
В принципе, если надо, я могу вставить на третьем этапе тупое вырезание BOM из содержимого временного файла. Но, на мой взгляд, куда логичнее не вставлять его автоматически туда, где его не было.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Версия 5.1.0 -
  • Убрана совместимость с очень старыми версиями Far. Посмотрел - и обнаружил, что последнее из изменений, ради которых проверялась версия LuaMacro и держалась куча проверок (и дополнительного кода, порой нетривиального даже для меня самого), вышло больше двух лет назад. Так что избавился от поддержки, за счёт этого упростив ряд участков кода. Кто сидит на более старой версии Far - LuaManager 5.0.6 пока остаётся доступен. Для любопытствующих в архиве 5.1.0 лежат init.lua.5.0.7 и LMMacros.lua.1.0.5 - все изменения после версии 5.0.6 , кроме избавления от совместимости. Предупреждаю: для корректной работы они требуют .lng-файлов от версии 5.0.6.
  • Исправлена ошибка с редактированием нового панельного модуля в диалоге.
  • Улучшена замена фрагмента. Теперь будет работать ещё быстрее и, по идее, надёжнее.
  • Обрезаем лишние BOM. В связи с
    skipik wrote: Sun 03 May, 2020 16:48 IgorZ, такой баг вылез: http://forum.ru-board.com/topic.cgi?for ... tart=720#2
    Может, и лишнее, но несложно и ненапряжно для Far.
  • Рефакторинг. Много всего повсюду.
skipik
Posts: 205
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 33 times
Been thanked: 22 times

Менеджер Lua-скриптов для Farа

Post by skipik »

IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Версия 5.1.1 -
  • Поправлено обрезание BOM. Всё никак не привыкну к тому, что сейчас не всякая строка - UTF8. Заодно поэкспериментировал и выяснил, что при любых (какие мне удалось придумать) реальных ситуациях добавляется исключительно UTF8 BOM. Так что теперь пробуем обрезать только его.
Post Reply

Return to “Полезные макросы и скрипты”