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

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

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

Post by IgorZ » Thu 25 Apr, 2013 04:00

Данный скрипт содержит следующие макросы:
  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.4000+.

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

Attachments
LuaManager.5.0.6.7z
(59.02 KiB) Downloaded 24 times
LuaManager.3.1.11.7z
Последняя версия, выполненная не в виде модуля
(50.56 KiB) Downloaded 253 times
Last edited by IgorZ on Fri 22 Nov, 2019 07:06, edited 12 times in total.

User avatar
t-rex
Страшный и ужасный
Posts: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

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

Post by t-rex » Mon 29 Apr, 2013 15:01

Latest post of the previous page:

Да и вроде как логично что плагин предоставляющий макросы будет предоставлять и функционал их посмотреть/настроить/т.п..
Одно там тока криво, так это языки - рус or анг прямо в коде.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Mon 29 Apr, 2013 15:18

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: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Mon 29 Apr, 2013 18:24

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

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

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 » Mon 29 Apr, 2013 18:53

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

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: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Mon 29 Apr, 2013 19:04


User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Mon 29 Apr, 2013 19:49

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

IgorZ
Posts: 646
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 11 times
Been thanked: 48 times

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

Post by IgorZ » Tue 30 Apr, 2013 10:26

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

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

На мой взгляд, скрипт пока сыроват для включения в стандартную поставку. Слишком много камней, на которых он спотыкается. Да вот, к примеру, задание области или клавиш с помощью переменной.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Tue 30 Apr, 2013 10:34

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

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

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

P.P.S.
Получить позицию action/condition можно без модификаций в LuaMacro, но для ваших целей этого мало, т.к. action/condition могут быть за пределами определения Macro { ... }.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Tue 30 Apr, 2013 10:44

P.P.P.S.
Кстати переменные можно вычислить выполняя этот макрофайл (Macro/Event только заглушить надо)

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Tue 30 Apr, 2013 11:08

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

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

P.S.
LuaManager1.0.3 почему-то не может найти макрос если в description встречаются квадратные скобки
Уже сообщал

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

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

Post by Max Rusov » Tue 30 Apr, 2013 11:22

John Doe wrote:Это лишь пожелание. Насколько это повысит удобство понять сложно, пробовать надо.
Если делать группировку, то, желательно, чтобы это было опционально. Мне, например, гораздо важнее, чтобы можно было отфильтровать макросы по имени и они показывались все в в едином списке вне зависимости от области.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Tue 30 Apr, 2013 12:00

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

Пожелания:

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

Возможно будет удобно запоминать состояние фильтра между вызовами (но не между сеансами)
И выделить клавишу для сброса фильтра.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Tue 30 Apr, 2013 12:53

Пожелание.
Выделить функции создания и редактирования макроса/события, чтобы была возможность использовать их отдельно (назначив макросы редактора для *.lua).

Shmuel
Posts: 5925
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

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

Post by Shmuel » Tue 30 Apr, 2013 13:05

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

Но сабж этого не учитывает, он это "отфильтровывает". В результате одни макросы могут "исчезнуть", а в других будут показаны не все их области.

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Tue 30 Apr, 2013 16:06

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

Update: http://forum.farmanager.com/viewtopic.p ... 97#p109197

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Wed 01 May, 2013 00:23

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

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

User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 239 times

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

Post by John Doe » Wed 01 May, 2013 00:30

Баг

Area: ShellAutoCompletion DialogAutoCompletion

S.......D....Aa...

Post Reply

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