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

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

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

Post by IgorZ »

Выводит список всех Lua-скриптов Farа и позволяет манипулировать ими.









Требуемая версия Far 3.0.5210+.

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

Attachments
LuaManager.6.0.2.7z
Версия для Far 3.0.0.5934+
(65.47 KiB) Downloaded 81 times
LuaManager.5.2.0.7z
Версия для Far 3.0.0.5210+
(58.78 KiB) Downloaded 215 times
LuaManager.5.0.6.7z
Последняя опубликованная версия, поддерживающая Far 3.0.0.4000 и выше
(59.02 KiB) Downloaded 347 times
LuaManager.3.1.11.7z
Последняя версия, выполненная не в виде модуля
(50.56 KiB) Downloaded 510 times
Last edited by IgorZ on Wed 25 Oct, 2023 10:02, edited 24 times in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Latest post of the previous page:

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

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

Post by skipik »

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

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

Post by IgorZ »

Версия 5.0.4 - отпускная (а что ещё делать вечерами, если интернет внезапно и надолго ёк?) и послеотпускная работа над ошибками.
  • Исправлена редкая ошибка, когда LuaManager по какой-то причине не мог правильно определить текст скрипта и зацикливался.
  • Исправлена ошибка с обращением к Description при редактировании панельного модуля.
  • Исправлена функция сохранения одного параметра в БД Far.
  • Ну и, естественно, исправлена ошибка с лишним "%" в новом значении в gsub.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 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: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 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: 395
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: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 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: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

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

Post by Xerox »

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

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

Post by skipik »

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

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

Post by citRiks »

skipik, ну функция редактируется в редакторе, что круто, только редактор сохраняет с бимбомом этим.
кому то надо посмотреть эти настройки в своем редакторе
Хотя, в редакторе кажется было что-то что задает сохранять ли с бимбомом или без него,
и вроде этим можно управлейт через скрипт, но не могу сказать очень точно
Т.е. если кому-то надо срочно, то пусть пороют в этом направлении.
Ну или ждем Игоря что лучше всего :)
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 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: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 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: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

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

Post by skipik »

IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 5.1.1 -
  • Поправлено обрезание BOM. Всё никак не привыкну к тому, что сейчас не всякая строка - UTF8. Заодно поэкспериментировал и выяснил, что при любых (какие мне удалось придумать) реальных ситуациях добавляется исключительно UTF8 BOM. Так что теперь пробуем обрезать только его.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

В чем я был не слишком прав (ранее немного ругался на тормоза)
* GetMacroCopy оказалось что не виноват
* LuaManager сделан довольно красиво и умно, залазит во внутря LuaMacro
* большие тормоза есть на просмотре модулей,
но лишь потому что у меня в модулях (директория "modules") лежит большая свалка всякого

В чем я был не слишком НЕправ:
* Есть 2-х секундные тормоза и при открытии, и при каждом действии пользователя,
а все еще это довольно чуствительные тормоза
* тормоза возникают поскольку при каждом действии перестраивается полностью таблица и переоткрывается меню
а этого явно можно избежать
* зачем все же делать полный обход с GetMacroCopy каждый раз?
когда во внутря мы залазить прекрасно умеем.
А во внутрях уже там есть все отсортировано и готово в таблицах:
AddedMenuItems
AddedPrefixes
ContentColumns
Events
LoadedPanelModules

Т.е. великое множество кода наподобие:

Code: Select all

...
	-- PanelModule всегда имеет Info.Guid
	elseif 	item.Info and item.Info.Guid 
	then	-- переберём всех кандидатов
		for _, v in ipairs(tbl) 
		do	if item.Info.Guid == v.t.Info.Guid 
			then	-- нашли? запомним номер первой строки
				res.sstarty = v.l
				...
.. оно предствляется излишним

IgorZ,
Может почините, или скажите в чем я не прав?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

citRiks wrote: Fri 08 Jan, 2021 13:01
IgorZ,
Может почините, или скажите в чем я не прав?
  1. Практически всегда лучше выбирать конвенциональные способы работы вместо неконвенциональных. Исключения - когда конвенциональных нет вообще, или они неработоспособны.
  2. Данный скрипт разрабатывался, когда Шмуэль активно работал над ЛуаМакро, поэтому риск, что скрипт внезапно начнёт работать по-разному на разных версиях Фара, перестанет работать совсем или вообще сломает что-то из-за того, что Шмуэль поменял внутренности ЛуаМакро, был сочтён слишком большим. Сейчас Шмуэль свернул разработку, но он не клялся и даже не обещал, что никогда к ней не вернётся.
  3. У меня, на стареньком компьютере, меню (полное, включая и модули, и всё остальное) перестраивается за доли секунды. Кроме Вас, насколько помню, никто не жаловался на быстродействие. Уже очень давно.
Выводы:
  1. Рекомендую отследить, что именно у Вас вызывает такое снижение быстродействия.
  2. Пока что, возможный крохотный выигрыш в скорости не стоит поломки совместимости и потенциальных проблем. Да и времени на радикальную переделку тоже нет в обозримом будущем.
Post Reply

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