Менеджер 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 95 times
LuaManager.5.2.0.7z
Версия для Far 3.0.0.5210+
(58.78 KiB) Downloaded 221 times
LuaManager.5.0.6.7z
Последняя опубликованная версия, поддерживающая Far 3.0.0.4000 и выше
(59.02 KiB) Downloaded 354 times
LuaManager.3.1.11.7z
Последняя версия, выполненная не в виде модуля
(50.56 KiB) Downloaded 521 times
Last edited by IgorZ on Wed 25 Oct, 2023 10:02, edited 24 times in total.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by t-rex »

Latest post of the previous page:

Да и вроде как логично что плагин предоставляющий макросы будет предоставлять и функционал их посмотреть/настроить/т.п..
Одно там тока криво, так это языки - рус or анг прямо в коде.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

John Doe wrote:

Code: Select all

      local m = m1:gsub("%-%-%[%[.-%]%]","") -- выкинем комменты, ибо!
Не стоит на это сильно полагаться, комменты могут быть и --[=[ ... ]=], и --[==[ ... ]==], и т.п.
Впрочем, это ж функция анализа lua-файла, и там всё работает "с натяжкой".
Надеюсь получится найти другое решение вместо парсинга файла.

P.S.
http://www.lua.org/pil/23.1.html
debug.getinfo
linedefined --- The line of the source where the function was defined.
По крайней мере можно определить местоположение action и condition:

P.P.S.
debug.traceback
По идее так LuaMacro сам может определить откуда вызвана функция Macro, и сохранить эту позицию среди прочей информации о макросе.
Пример:
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

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

Остальное надо бы утрясти
А может и базовых возможностей будет достаточно "из коробки".

Update
Например так: http://forum.farmanager.com/viewtopic.p ... 21#p109121
User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

Re: Менеджер Lua-скриптов для Fara

Post by lazyeugene »

В чём может быть проблема?

Code: Select all

╔═══════════════════════════════════════════════════════════════ LuaMacro ════════════════════════════════════════════════════════════════╗
║ ...Roaming\Far3\Lazy\Macros\scripts\LuaManager1.0.2.lua:923: invalid format (width or precision too long)                               ║
║ stack traceback:                                                                                                                        ║
║ ○[C]: in function 'format'                                                                                                              ║
║ ○...Roaming\Far3\Lazy\Macros\scripts\LuaManager1.0.2.lua:923: in function <...Roaming\Far3\Lazy\Macros\scripts\LuaManager1.0.2.lua:819> ║
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                                 { OK }                                                                  ║
╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Фар 3.0.3355 если что. Вижу место, но с lua, видимо, недостаточно глубоко знаком, чтобы быстро разобраться.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

В функции ShortArea ошибка - неправильно названы области автодополнения.
А саму функцию я написал бы так:
  1. local function makeArray(Str)
  2.  
  3.   local A = {}; for S in Str:gmatch("%w+") do A[#A+1] = S end; return A
  4.  
  5. end
  6.  
  7. local full = makeArray([[Shell Info QView Tree Search FindFolder Viewer Editor Dialog Menu MainMenu
  8.  
  9.                          UserMenu Disks ShellAutoCompletion DialogAutoCompletion Help Other Common]])
  10.  
  11. local short = makeArray"S I Q T s F V E D m M U d A a H O C"
  12.  
  13. --local short = makeArray"Sh In QV Tr Se FF Vi Ed Di Me MM UM Ds SA DA He Ot Co"
  14.  
  15. assert(#full==#short and #full==18)
  16.  
  17. local function ShortArea(area) -- сворачивает список областей в короткую строку фиксированной длины
  18.  
  19.   local a = ""
  20.  
  21.   for i,v in ipairs(full) do
  22.  
  23.     a = a..(area:find(v) and short[i] or ".")
  24.  
  25.   end
  26.  
  27.   return a
  28.  
  29. end
Можно обойтись без вспомогательной makeArray, но я сильно не люблю сборище кавычек и запятых
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер Lua-скриптов для Fara

Post by IgorZ »

Версия 1.0.3 - Исправление ошибок, оптимизация, фильтры областей и групп, опция открытия файла в редакторе по ALtF4, даже если не смог найти макрос.

John Doe:
Пожелание насчёт группировки: очень сильно нужно? А то пока есть куда более актуальные направления допиливания.

На мой взгляд, скрипт пока сыроват для включения в стандартную поставку. Слишком много камней, на которых он спотыкается. Да вот, к примеру, задание области или клавиш с помощью переменной.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

IgorZ wrote:Пожелание насчёт группировки: очень сильно нужно? А то пока есть куда более актуальные направления допиливания.
Это лишь пожелание.
Насколько это повысит удобство понять сложно, пробовать надо.

Допиливайте согласно ваших приоритетов )

P.S.
А для чего вам вычислять области/клавиши заданные переменной?
Более правильное решение вверху страницы, требуется маленькое изменение LuaMacro.
А продолжать вместо этого городить костыли - тупик.

P.P.S.
Получить позицию action/condition можно без модификаций в LuaMacro, но для ваших целей этого мало, т.к. action/condition могут быть за пределами определения Macro { ... }.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

P.P.P.S.
Кстати переменные можно вычислить выполняя этот макрофайл (Macro/Event только заглушить надо)
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

<Отсутствует или не удалось найти>
Почему ИЛИ?
Отсутствие вроде однозначно определяется по type(m.action)~="function"

А насчёт "не удалось найти" то это возможно если файл редактировался (или не существует).
Или возможны другие проблемы?

P.S.
LuaManager1.0.3 почему-то не может найти макрос если в description встречаются квадратные скобки
Уже сообщал
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Менеджер Lua-скриптов для Fara

Post by Max Rusov »

John Doe wrote:Это лишь пожелание. Насколько это повысит удобство понять сложно, пробовать надо.
Если делать группировку, то, желательно, чтобы это было опционально. Мне, например, гораздо важнее, чтобы можно было отфильтровать макросы по имени и они показывались все в в едином списке вне зависимости от области.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

Чуть не пропустил фильтры. Понравилось.

Пожелания:

Совместить фильтры CtrlM и CtrlE
Добавить обработку пробела (а от Ins ожидается переход на следующий элемент)
Раз есть Ins, то ожидается и Del
Было бы удобно также Ctrl-<*>, Ctrl-<+>, Ctrl-<->

Возможно будет удобно запоминать состояние фильтра между вызовами (но не между сеансами)
И выделить клавишу для сброса фильтра.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

Пожелание.
Выделить функции создания и редактирования макроса/события, чтобы была возможность использовать их отдельно (назначив макросы редактора для *.lua).
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Менеджер Lua-скриптов для Fara

Post by Shmuel »

Области и группы в LuaMacro - регистроНЕзависимые.
Можно указать area="eDiTor" или group="eXitFaR", и будет нормально работать.

Но сабж этого не учитывает, он это "отфильтровывает". В результате одни макросы могут "исчезнуть", а в других будут показаны не все их области.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

Пожелание.
Фильтр по нажатой клавише.
Т.е. считывается клавиша, и в списке остаются только макросы реагирующие на неё.
На области можно не смотреть.

Update: http://forum.farmanager.com/viewtopic.p ... 97#p109197
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Менеджер Lua-скриптов для Fara

Post by John Doe »

John Doe wrote: Пожелания:

Совместить фильтры CtrlM и CtrlE
Сюда же можно добавить
- фильтр по маскам
- фильтр по флагам
Post Reply

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