Lua Explorer „Advanced“

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

Lua Explorer „Advanced“

Post by John Doe » Sun 05 May, 2013 20:26

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

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

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

P.S.
Свои пожелания уже почти полностью реализовал.
Но идеи принимаются.
Если кто пожертвует функцию для форматирования больших чисел, то включу (сам не сталкиваюсь).
Attachments
le.r2.7z
r2
(4.82 KiB) Downloaded 398 times

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

Re: Lua Explorer — изучаем среду Lua в Far manager

Post by John Doe » Thu 16 May, 2013 11:47

Очередное обновление.

* Защита (pcall) от ошибок при индексации таблиц с метаметодом __index
* Защита от ошибок при редактировании значения, и вставке значения в таблицу (F4, Ins)
* При просмотре многострочных значений текст больше не центрируется
* Не проглатываются амперсанды в меню и при просмотре значений (в заголовке)
* При отсутствии метатаблицы по CtrlM теперь не показывается message c 'nil'
* таблицы и функции в списке помечаются
* по F3 для объектов типа 'thread' показывается debug.traceback
* для функций:
  • * CtrlUp: просмотр и редактирование upvalues (полезно при вызове из собственных скриптов, в отладочных целях)
    * CtrlDown: просмотр и редактирование окружения функций (environment).
    Используется debug.getfenv, что также позволяет получить окружение объектов типа 'userdata' и 'thread'
    * AltF4: открытие модального редактора в месте определения функции
* F9: debug.getregistry: http://www.lua.ru/doc/3.5.html
* при вызове из собственных скриптов доступен просмотр и редактирование локальных переменных
Ctrl1 - Ctrl9: выбор уровня стека вызовов
Более наглядный просмотр стека будет позже, отдельной утилитой (пока прототип)


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

Re: Lua Explorer — изучаем среду Lua в Far manager

Post by John Doe » Thu 16 May, 2013 12:45

P.S.
При показе локальных переменных не учитывается что вызовы собственных функций lua_explorer могут быть многократно вложены.
Т.е. сейчас уровни стека показываются исходя из допущения, что вложенных вызовов нет (так и есть сразу после открытия списка).
Это упущение, "базовый" уровень надо всегда "вычислять" заново.

Или...
А будет ли нормальным решением запускать lua_explorer корутиной (чтобы исходный стек оставался нетронутым)?

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

Re: Lua Explorer — изучаем среду Lua в Far manager

Post by John Doe » Fri 17 May, 2013 09:28

* Уровень стека (для информации о локальных переменных) теперь вычисляется относительно вызова функции 'process'
Переходы по уровням больше не вложены

* Хоткей CtrlG для открытия таблицы _G

* Отображение амперсандов было исправлено не там где надо
Также выяснилось что флаги меню FMENU_AUTOHIGHLIGHT и FMENU_SHOWAMPERSAND несовместимы.
Возможно баг в меню. Отключил пока автохоткеи.

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

* Обработка статуса возвращаемого pcall при запуске функций.
При ошибке выдаётся соответствующее сообщение

* Ключи и значения в списке закавычиваются только в случае пустой строки "", или наличии концевых пробелов

* Обрезка чрезмерно длинных ключей

* Копирование в буфер:
- значение: CtrlIns
- ключ: CtrlShiftIns


Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: Lua Explorer — изучаем среду Lua в Far manager

Post by Shmuel » Fri 17 May, 2013 09:37

* Ключи и значения закавычиваются только в случае пустой строки "", или наличии концевых пробелов
Возможно, в случае начальных пробелов (или любых пробелов) тоже стоит закавычивать (по аналогии с файлами и путями).

Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.

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

Re: Lua Explorer — изучаем среду Lua в Far manager

Post by John Doe » Fri 17 May, 2013 09:47

Shmuel wrote:Возможно, в случае начальных пробелов (или любых пробелов) тоже стоит закавычивать (по аналогии с файлами и путями).
Тут скорее по аналогии с полями диалогов, где фар показывает концевые пробелы точками.
Shmuel wrote:Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.
При просмотре это не проблема, а при редактировании всё закавычивается.

В общем-то при просмотре _G меня кавычки не особо напрягали, но как только начал использовать lua_explorer для разных других нужд, то сразу почувствовал что они лишние и отвлекают от реальной информации в списке.

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: Lua Explorer — изучаем среду Lua в Far manager

Post by Shmuel » Fri 17 May, 2013 10:08

John Doe wrote:
Shmuel wrote:Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.
При просмотре это не проблема, а при редактировании всё закавычивается.
Не согласен: при просмотре неверно представленная информация может ввести в заблуждение и повлиять на процесс принятия решений.

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

Re: Lua Explorer — изучаем среду Lua в Far manager

Post by John Doe » Fri 17 May, 2013 11:54

В меню кавычки мне однозначно мешают.
А при просмотре по Enter (и в прочих местах) верну их.

Update
Исправил, перевыложил.

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

Re: Lua Explorer „Advanced“

Post by John Doe » Fri 17 May, 2013 21:19

Изменений накопилось много, не знаю примет ли их EGez, в том или ином виде.
На всякий случай выделю в отдельную тему.

И по случаю релиза небольшое, но важное для меня изменение: при вызове из собственных скриптов можно третьим параметром указать необходимое действие: 'upvalues', 'locals', 'env', 'mt', 'info', 'jitinfo', 'registry'



Подробности в шапке, скачать можно там же.

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

r2

Post by John Doe » Tue 21 May, 2013 14:18

Обновление по случаю перехода на luajit.
  • [jit|5.2] При запуске функции показывается список её параметров.
    Актуально для lua-функций, а C-функции принимают в основном vararg (все, или по крайней мере большинство).
    vararg отображается тремя точками
  • [jit|5.2] При просмотре локальных переменных также показывается vararg, в виде таблицы '(*vararg)'
    Значения доступны для редактирования
  • При просмотре локальных переменных также добавляется ещё один псевдоэлемент - сама функция, находящаяся на заданном уровне стека вызовов (т.е. та самая, для которой показываются локальные переменные).
    Функция помещается в тот же список, что и переменные, как элемент с именем ('(*func: %s)'):format(info.name or '<noname>')
    Мне кажется это не лучший способ представления, если будут идеи получше, то переделаю.
  • Новый хоткей - Ctrl-T, переключает режим сортировки (по имени/по типу)
  • lua_explorer теперь не спотыкается при обработке 'не очень корректных значений' (Windows XP)
  • Пара других исправлений

Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 1 time

Re: Lua Explorer „Advanced“

Post by Acerbic » Thu 23 May, 2013 05:53

А не хочешь переоформить в lua-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Lua Explorer „Advanced“

Post by Smitis » Thu 23 May, 2013 07:10

Acerbic wrote:А не хочешь переоформить в lua-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.
А разве lua-плагины видят друг друга?
Разум когда-нибудь победит.

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

Re: Lua Explorer „Advanced“

Post by John Doe » Thu 23 May, 2013 07:23

Smitis
Как и все прочие, посредством API. Но как это связано с вопросом?

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

Re: Lua Explorer „Advanced“

Post by John Doe » Thu 23 May, 2013 09:42

Acerbic wrote:А не хочешь переоформить в lua-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.
На плагринг можно и так, правда для автообновления нужна поддержка со стороны плагина-апдейтера, и пока ничего такого (насколько мне известно) не планируется.

А в lua-плагин преобразовать не выйдет, потому что данный скрипт это прежде всего модуль, предназначенный для использования из других скриптов.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Lua Explorer „Advanced“

Post by Smitis » Thu 23 May, 2013 09:56

John Doe wrote:Но как это связано с вопросом?
Можно ли из одного lua-плагина получить глобальную таблицу другого lua-плагина? Иначе теряется смысл делать LuaExplorer плагином.
Где-то вроде проскакивало, что плагины совершенно независимы.
Разум когда-нибудь победит.

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

Re: Lua Explorer „Advanced“

Post by John Doe » Thu 23 May, 2013 10:05

Smitis wrote:Можно ли из одного lua-плагина получить глобальную таблицу другого lua-плагина? Иначе теряется смысл делать LuaExplorer плагином.
Где-то вроде проскакивало, что плагины совершенно независимы.
Полагаю сейчас ничего такого не предусмотрено, но подумать над реализацией можно.
Во-первых библиотека LuaFAR могла бы предоставить какие-то средства.
Во-вторых, плагины вероятно тоже могут обмениваться данными (через C API)

Post Reply

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

Who is online

Users browsing this forum: No registered users and 2 guests