Lua Explorer „Advanced“

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Lua Explorer „Advanced“

Post by John Doe »

Представляет собой развитие замечательной утилиты Lua Explorer © EGez.
Началось всё с небольшой модификации, позволяющей вызывать lua explorer из других скриптов.
Но у автора свободного времени не было, а необходимость в изменениях у меня назрела.
В частности потому что я начал применять lua explorer в Macro Browser alt. и других скриптах.

Не знаю примет ли EGez мои изменения, поэтому пока форк.
В данный момент отличия от оригинального скрипта таковы:
  1. Скрипт преобразован в модуль, имя выбрано короткое "le", для быстрого доступа.
  2. Изменения
  3. Новая функциональность
Использование:

Подробнее об использовании для отладки собственных скриптов:

P.S.
Свои пожелания уже почти полностью реализовал.
Но идеи принимаются.
Если кто пожертвует функцию для форматирования больших чисел, то включу (сам не сталкиваюсь).

Описание устарело, см. viewtopic.php?p=156615#p156615

source | download
Last edited by John Doe on Wed 11 Dec, 2019 09:05, edited 1 time in total.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Lua Explorer „Advanced“

Post by Smitis »

Latest post of the previous page:

John Doe wrote:Но как это связано с вопросом?
Можно ли из одного lua-плагина получить глобальную таблицу другого lua-плагина? Иначе теряется смысл делать LuaExplorer плагином.
Где-то вроде проскакивало, что плагины совершенно независимы.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Lua Explorer „Advanced“

Post by John Doe »

Smitis wrote:Можно ли из одного lua-плагина получить глобальную таблицу другого lua-плагина? Иначе теряется смысл делать LuaExplorer плагином.
Где-то вроде проскакивало, что плагины совершенно независимы.
Полагаю сейчас ничего такого не предусмотрено, но подумать над реализацией можно.
Во-первых библиотека LuaFAR могла бы предоставить какие-то средства.
Во-вторых, плагины вероятно тоже могут обмениваться данными (через C API)
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Re: Lua Explorer „Advanced“

Post by Acerbic »

Smitis wrote: Можно ли из одного lua-плагина получить глобальную таблицу другого lua-плагина? Иначе теряется смысл делать LuaExplorer плагином.
Где-то вроде проскакивало, что плагины совершенно независимы.
Даже если нельзя, то функциональность будет как минимум не хуже, чем в текущем варианте - из макроса ведь тоже таблицу плагина не посмотришь (поправьте, если не прав). Зато можно будет конфигурировать (если вдруг такая надобность появится) стандартизированным образом, из меню конфигурации плагинов. Но это всё, конечно, "если бы да кабы". В принципе, мне нет разницы, вызвать через require или Plugin.Call - вопрос вкуса.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Lua Explorer „Advanced“

Post by John Doe »

Acerbic wrote:Даже если нельзя, то функциональность будет как минимум не хуже
Если нельзя, то функциональность вообще невозможна, т.к. lua explorer показывает таблицу плагина luamacro.
Acerbic wrote:В принципе, мне нет разницы, вызвать через require или Plugin.Call - вопрос вкуса.
Отнюдь, во-первых Plugin.Call ещё надо реализовать (без понятия как).
Во-вторых через Plugin.Call невозможно передать типы lua (table,function и пр.).
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Lua Explorer „Advanced“ - Ломает код

Post by xarx »

L.E.A. r2 (и тоже r1) ломает строки (string) содержащие "--". Например такой код

Code: Select all

  action = function()
    msg = "\n----- abc -----\n"..
      "c--df\n"
  end;
}
изменяет на

Code: Select all

  action = function()
    msg = "\n
      "c
  end
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Lua Explorer „Advanced“

Post by John Doe »

Не верю.
Покажите как.
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Lua Explorer „Advanced“

Post by xarx »

:-)

Code: Select all

Macro {
  area="Common"; key="Test"; description="...";
  action = function()
    msg = "\n----- abc -----\n"..
      "c--df\n"
  end;
}
После того из L.E.A. нажимите F4 на этом макросе, и в Macro Body вы увидите

Code: Select all

function()
    msg = "\n
      "c
  end
После сохранения сломанный и файл.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Lua Explorer „Advanced“

Post by John Doe »

Lua Explorer к редактированию макросов отношения не имеет.
Вероятно вы хотели написать в тему Менеджер Lua-скриптов для Fara
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Lua Explorer „Advanced“

Post by xarx »

John Doe wrote:Lua explorer к редактированию макросов отношения не имеет.
Вероятно вы хотели написать в тему Lua Manager
Да? Извините :-(.
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Re: Lua Explorer „Advanced“

Post by Acerbic »

кстати работает и для отладки плагинов на lua, надо только закомментить строчку

Code: Select all

assert(Far, 'This is a LuaMacro for Far manager')
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Lua Explorer „Advanced“

Post by John Doe »

Ещё надо заменить два msgbox на far.Message. Достались в наследство от оригинала.
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Re: Lua Explorer „Advanced“

Post by EGez »

User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Lua Explorer „Advanced“

Post by buniak_a_h »

John Doe, я нарвался на ошибку вызова функции в случае, если срени параметров (но не последний) - nil. Вот исправление:
  1. 161c161
  2.  
  3. <       if res[1] then  table.remove(res,1);  return res,expr
  4.  
  5. ---
  6.  
  7. >       if res[1] then  table.remove(res,1);  return res,expr,f  -- BAX, 04.11.2019
  8.  
  9. 239c239
  10.  
  11. <     local args,argstr = luaexp_prompt('CALL:'..title,
  12.  
  13. ---
  14.  
  15. >     local args,argstr, ArgFunc = luaexp_prompt('CALL:'..title,  -- BAX, 04.11.2019
  16.  
  17. 245c245
  18.  
  19. <       local res = {pcall(obj, unpack(args))}
  20.  
  21. ---
  22.  
  23. >       local res = {pcall(obj, ArgFunc())}  -- BAX, 04.11.2019
Подробности там
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Lua Explorer „Advanced“

Post by John Doe »

Выяснилось, что тут выложена далеко не последняя версия скрипта...
Я им не занимался уже много лет, но в записях сохранились такие изменения:
  • При вставке в таблицу, и редактировании значений теперь введённые параметры проверяются на корректность
    (количество и значение~=nil)
  • Функции Lua для работы с массивами не рассчитаны на то, что элементами массива могут быть значиния типа nil
    Теперь это учитывается.
    (При отображении возвращаемых функциями значений, возможно ещё где-то)
  • Символ с кодом 0 в ключах и значениях теперь заменяется на '\000'
  • Ctrl+I управляет режимом сортировки "различать регистр", начальное значение в опции ignore_case.
  • Не пытаемся работать с upvalues C-функций.
  • При просмотре объектов типа thread улучшено форматирование traceback.
  • * mf.msgbox -> far.Message (для возможности использования в luafar плагинах)
  • Экспериментально: расширение возможностей скрипта, путём добавления новых действий в виде BreakKeys.
    le(actions,nil,'addBrKeys')
    - actions - таблица - список действий, в том же формате, что и штатная brkeys (см.)
    - (вторым параметром обычно передаётся заголовок, в данном случае не имеет смысла)
    - 'addBrKeys' команда для импорта.
  • Из скрипта убрана работа с локальными переменными функций.
    Действия могут быть добавлены отдельным скриптом se.lua.
  • Поддержка cfgscript / ScriptsBrowser
Update: v2.4
  • Бинарные строки (непредставимые в utf-8) отображаются с псевдотипом `#string`, в кодировке Ansi.
    Редактирование тоже поддерживается.
  • Символы помечающие таблицы и функции теперь настраиваются в options.
  • Восстановлена работа jit.util.funcinfo (Shift-F3)
source | download
Last edited by John Doe on Mon 11 Nov, 2019 17:25, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Lua Explorer „Advanced“

Post by buniak_a_h »

John Doe wrote: Tue 05 Nov, 2019 13:16 Выяснилось, что тут выложена далеко не последняя версия скрипта...
А где последняя? В первом сообщении темы - старый... :-(
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Lua Explorer „Advanced“

Post by HaRT »

John Doe wrote: Tue 05 Nov, 2019 13:16 А где последняя?
В предыдущем сообщении появились ссылки.

@John Doe Не помешала бы краткая инструкция по установке.
В частности, пока я не положил le.lua в Macros\modules, при пере-/загрузке макросов возникала ошибка (предсказуемо), но сейчас не срабатывает макрос. Как починить?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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