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
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

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

* Защита (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: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

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

Или...
А будет ли нормальным решением запускать lua_explorer корутиной (чтобы исходный стек оставался нетронутым)?
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 — изучаем среду Lua в Far manager

Post by John Doe »

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

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

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

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

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

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

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

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

Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

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

Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.
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 — изучаем среду Lua в Far manager

Post by John Doe »

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

В общем-то при просмотре _G меня кавычки не особо напрягали, но как только начал использовать lua_explorer для разных других нужд, то сразу почувствовал что они лишние и отвлекают от реальной информации в списке.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote:
Shmuel wrote:Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.
При просмотре это не проблема, а при редактировании всё закавычивается.
Не согласен: при просмотре неверно представленная информация может ввести в заблуждение и повлиять на процесс принятия решений.
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 — изучаем среду Lua в Far manager

Post by John Doe »

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

Update
Исправил, перевыложил.
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 »

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

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



Подробности в шапке, скачать можно там же.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

r2

Post by John Doe »

Обновление по случаю перехода на 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: 2 times

Re: Lua Explorer „Advanced“

Post by Acerbic »

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

Acerbic wrote:А не хочешь переоформить в lua-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.
А разве lua-плагины видят друг друга?
Разум когда-нибудь победит.
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
Как и все прочие, посредством API. Но как это связано с вопросом?
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-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.
На плагринг можно и так, правда для автообновления нужна поддержка со стороны плагина-апдейтера, и пока ничего такого (насколько мне известно) не планируется.

А в lua-плагин преобразовать не выйдет, потому что данный скрипт это прежде всего модуль, предназначенный для использования из других скриптов.
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 »

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

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