Page 25 of 28

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

Posted: Thu 25 Apr, 2013 04:00
by IgorZ
Выводит список всех Lua-скриптов Farа и позволяет манипулировать ими.









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

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


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

Posted: Mon 10 Dec, 2018 09:27
by IgorZ

Latest post of the previous page:

Версия 5.0.3 -
  • Добавлена фильтрация по фиктивному/отстутствующему key. Теперь, если при фильтрации клавиш установить фильтр в "none" (регистр неважен), то покажутся только те макросы, у которых поле key не указано, или в него записано не название клавиши и не регулярное выражение (к примеру: "none", "Dummy", "Нет клавиши" и т. п.).
    Замечание: Клавиатурные комбинации MacroEx, к сожалению, отфильтровать, как корректные, пока не получилось.
  • Доработана поддержка несохранённых клавиатурных макросов: теперь более кореектно выводится информация, и, вроде бы, нет больше возможных ошибок из-за отсутствия имени файла.

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

Posted: Mon 09 Sep, 2019 14:31
by skipik
Небольшой фикс от Victor_VG:

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

Posted: Wed 11 Sep, 2019 12:24
by IgorZ
Версия 5.0.4 - отпускная (а что ещё делать вечерами, если интернет внезапно и надолго ёк?) и послеотпускная работа над ошибками.
  • Исправлена редкая ошибка, когда LuaManager по какой-то причине не мог правильно определить текст скрипта и зацикливался.
  • Исправлена ошибка с обращением к Description при редактировании панельного модуля.
  • Исправлена функция сохранения одного параметра в БД Far.
  • Ну и, естественно, исправлена ошибка с лишним "%" в новом значении в gsub.

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

Posted: Sat 14 Sep, 2019 15:39
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 достанем строки с текстом функции

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

Posted: Fri 08 Nov, 2019 06:54
by IgorZ
Версия 5.0.5 -
  • Исправлена ошибка (не то что б моя, но...) с :match со слишком большим количеством строк в шаблоне. Небыстро, но - когда время появилось.
  • Небольшой рефакторинг. В основном - проверка и упорядочение использования регулярных выражений.

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

Posted: Sun 17 Nov, 2019 20:16
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.) Если сделать Еск или Ок, то в итоге благополучно все же возвращаемся в окно Луа-манагера где и были, т.е. в принципе ничего страшного

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

ЛуаМанагер - классный, автору глубочайший респект

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

Posted: Fri 22 Nov, 2019 07:20
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 ЛуаМанагер - классный, автору глубочайший респект
Спасибо. Всегда приятно читать подобное.

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

Posted: Fri 22 Nov, 2019 11:03
by Xerox
IgorZ, спасибо огромнейшее, а то у меня подозрения что делаю не так, неправильная конфигруация может у меня, или подобное.
И вообще круто что чинится, а то у всяких Майкрософтов баг на баге и чинить не собираются, а ты думай кто тут дурак

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

Posted: Sun 03 May, 2020 16:48
by skipik
IgorZ, такой баг вылез: http://forum.ru-board.com/topic.cgi?for ... tart=720#2

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

Posted: Sat 09 May, 2020 12:53
by citRiks
skipik, ну функция редактируется в редакторе, что круто, только редактор сохраняет с бимбомом этим.
кому то надо посмотреть эти настройки в своем редакторе
Хотя, в редакторе кажется было что-то что задает сохранять ли с бимбомом или без него,
и вроде этим можно управлейт через скрипт, но не могу сказать очень точно
Т.е. если кому-то надо срочно, то пусть пороют в этом направлении.
Ну или ждем Игоря что лучше всего :)

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

Posted: Wed 13 May, 2020 10:04
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 из содержимого временного файла. Но, на мой взгляд, куда логичнее не вставлять его автоматически туда, где его не было.

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

Posted: Fri 15 May, 2020 09:35
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.
  • Рефакторинг. Много всего повсюду.

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

Posted: Sat 16 May, 2020 12:29
by skipik

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

Posted: Mon 18 May, 2020 06:23
by IgorZ
Версия 5.1.1 -
  • Поправлено обрезание BOM. Всё никак не привыкну к тому, что сейчас не всякая строка - UTF8. Заодно поэкспериментировал и выяснил, что при любых (какие мне удалось придумать) реальных ситуациях добавляется исключительно UTF8 BOM. Так что теперь пробуем обрезать только его.

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

Posted: Fri 08 Jan, 2021 13:01
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,
Может почините, или скажите в чем я не прав?

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

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