Lua Explorer „Advanced“
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Lua Explorer „Advanced“
Представляет собой развитие замечательной утилиты Lua Explorer © EGez.
Началось всё с небольшой модификации, позволяющей вызывать lua explorer из других скриптов.
Но у автора свободного времени не было, а необходимость в изменениях у меня назрела.
В частности потому что я начал применять lua explorer в Macro Browser alt. и других скриптах.
Отличий от оригинального скрипта накопилось много, см. changelog.md.
Использование:
Подробнее об использовании для отладки собственных скриптов:
source | download | archive
Началось всё с небольшой модификации, позволяющей вызывать lua explorer из других скриптов.
Но у автора свободного времени не было, а необходимость в изменениях у меня назрела.
В частности потому что я начал применять lua explorer в Macro Browser alt. и других скриптах.
Отличий от оригинального скрипта накопилось много, см. changelog.md.
Использование:
Подробнее об использовании для отладки собственных скриптов:
source | download | archive
Last edited by John Doe on Wed 11 Dec, 2019 09:05, edited 1 time in total.
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer — изучаем среду Lua в Far manager
Очередное обновление.
* Защита (pcall) от ошибок при индексации таблиц с метаметодом __index
* Защита от ошибок при редактировании значения, и вставке значения в таблицу (F4, Ins)
* При просмотре многострочных значений текст больше не центрируется
* Не проглатываются амперсанды в меню и при просмотре значений (в заголовке)
* При отсутствии метатаблицы по CtrlM теперь не показывается message c 'nil'
* таблицы и функции в списке помечаются
* по F3 для объектов типа 'thread' показывается debug.traceback
* для функций:
* при вызове из собственных скриптов доступен просмотр и редактирование локальных переменных
Ctrl1 - Ctrl9: выбор уровня стека вызовов
Более наглядный просмотр стека будет позже, отдельной утилитой (пока прототип)
* Защита (pcall) от ошибок при индексации таблиц с метаметодом __index
* Защита от ошибок при редактировании значения, и вставке значения в таблицу (F4, Ins)
* При просмотре многострочных значений текст больше не центрируется
* Не проглатываются амперсанды в меню и при просмотре значений (в заголовке)
* При отсутствии метатаблицы по CtrlM теперь не показывается message c 'nil'
* таблицы и функции в списке помечаются
* по F3 для объектов типа 'thread' показывается debug.traceback
* для функций:
- * CtrlUp: просмотр и редактирование upvalues (полезно при вызове из собственных скриптов, в отладочных целях)
* CtrlDown: просмотр и редактирование окружения функций (environment).
Используется debug.getfenv, что также позволяет получить окружение объектов типа 'userdata' и 'thread'
* AltF4: открытие модального редактора в месте определения функции
* при вызове из собственных скриптов доступен просмотр и редактирование локальных переменных
Ctrl1 - Ctrl9: выбор уровня стека вызовов
Более наглядный просмотр стека будет позже, отдельной утилитой (пока прототип)
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer — изучаем среду Lua в Far manager
P.S.
При показе локальных переменных не учитывается что вызовы собственных функций lua_explorer могут быть многократно вложены.
Т.е. сейчас уровни стека показываются исходя из допущения, что вложенных вызовов нет (так и есть сразу после открытия списка).
Это упущение, "базовый" уровень надо всегда "вычислять" заново.
Или...
А будет ли нормальным решением запускать lua_explorer корутиной (чтобы исходный стек оставался нетронутым)?
При показе локальных переменных не учитывается что вызовы собственных функций lua_explorer могут быть многократно вложены.
Т.е. сейчас уровни стека показываются исходя из допущения, что вложенных вызовов нет (так и есть сразу после открытия списка).
Это упущение, "базовый" уровень надо всегда "вычислять" заново.
Или...
А будет ли нормальным решением запускать lua_explorer корутиной (чтобы исходный стек оставался нетронутым)?
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer — изучаем среду Lua в Far manager
* Уровень стека (для информации о локальных переменных) теперь вычисляется относительно вызова функции 'process'
Переходы по уровням больше не вложены
* Хоткей CtrlG для открытия таблицы _G
* Отображение амперсандов было исправлено не там где надо
Также выяснилось что флаги меню FMENU_AUTOHIGHLIGHT и FMENU_SHOWAMPERSAND несовместимы.
Возможно баг в меню. Отключил пока автохоткеи.
* При запуске функций запрос параметров теперь тоже безопасный.
(Функция та же что и при редактировании/вставке)
* Обработка статуса возвращаемого pcall при запуске функций.
При ошибке выдаётся соответствующее сообщение
* Ключи и значения в списке закавычиваются только в случае пустой строки "", или наличии концевых пробелов
* Обрезка чрезмерно длинных ключей
* Копирование в буфер:
- значение: CtrlIns
- ключ: CtrlShiftIns
Переходы по уровням больше не вложены
* Хоткей CtrlG для открытия таблицы _G
* Отображение амперсандов было исправлено не там где надо
Также выяснилось что флаги меню FMENU_AUTOHIGHLIGHT и FMENU_SHOWAMPERSAND несовместимы.
Возможно баг в меню. Отключил пока автохоткеи.
* При запуске функций запрос параметров теперь тоже безопасный.
(Функция та же что и при редактировании/вставке)
* Обработка статуса возвращаемого pcall при запуске функций.
При ошибке выдаётся соответствующее сообщение
* Ключи и значения в списке закавычиваются только в случае пустой строки "", или наличии концевых пробелов
* Обрезка чрезмерно длинных ключей
* Копирование в буфер:
- значение: CtrlIns
- ключ: CtrlShiftIns
-
Shmuel
- Posts: 7246
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 48 times
- Been thanked: 636 times
Re: Lua Explorer — изучаем среду Lua в Far manager
Возможно, в случае начальных пробелов (или любых пробелов) тоже стоит закавычивать (по аналогии с файлами и путями).* Ключи и значения закавычиваются только в случае пустой строки "", или наличии концевых пробелов
Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer — изучаем среду Lua в Far manager
Тут скорее по аналогии с полями диалогов, где фар показывает концевые пробелы точками.Shmuel wrote:Возможно, в случае начальных пробелов (или любых пробелов) тоже стоит закавычивать (по аналогии с файлами и путями).
При просмотре это не проблема, а при редактировании всё закавычивается.Shmuel wrote:Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.
В общем-то при просмотре _G меня кавычки не особо напрягали, но как только начал использовать lua_explorer для разных других нужд, то сразу почувствовал что они лишние и отвлекают от реальной информации в списке.
-
Shmuel
- Posts: 7246
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 48 times
- Been thanked: 636 times
Re: Lua Explorer — изучаем среду Lua в Far manager
Не согласен: при просмотре неверно представленная информация может ввести в заблуждение и повлиять на процесс принятия решений.John Doe wrote:При просмотре это не проблема, а при редактировании всё закавычивается.Shmuel wrote:Но есть одно "но": ключ или значение могут быть уже "закавычены", в этом случае оригинальный вариант (т.е. закавычивание всегда) - более правильный.
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer — изучаем среду Lua в Far manager
В меню кавычки мне однозначно мешают.
А при просмотре по Enter (и в прочих местах) верну их.
Update
Исправил, перевыложил.
А при просмотре по Enter (и в прочих местах) верну их.
Update
Исправил, перевыложил.
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer „Advanced“
Изменений накопилось много, не знаю примет ли их EGez, в том или ином виде.
На всякий случай выделю в отдельную тему.
И по случаю релиза небольшое, но важное для меня изменение: при вызове из собственных скриптов можно третьим параметром указать необходимое действие: 'upvalues', 'locals', 'env', 'mt', 'info', 'jitinfo', 'registry'
Подробности в шапке, скачать можно там же.
На всякий случай выделю в отдельную тему.
И по случаю релиза небольшое, но важное для меня изменение: при вызове из собственных скриптов можно третьим параметром указать необходимое действие: 'upvalues', 'locals', 'env', 'mt', 'info', 'jitinfo', 'registry'
Подробности в шапке, скачать можно там же.
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
r2
Обновление по случаю перехода на 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)
- Пара других исправлений
Re: Lua Explorer „Advanced“
А не хочешь переоформить в lua-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.
- Smitis
- Posts: 1732
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 25 times
- Been thanked: 58 times
Re: Lua Explorer „Advanced“
А разве lua-плагины видят друг друга?Acerbic wrote:А не хочешь переоформить в lua-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.
Разум когда-нибудь победит.
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer „Advanced“
Smitis
Как и все прочие, посредством API. Но как это связано с вопросом?
Как и все прочие, посредством API. Но как это связано с вопросом?
- John Doe
- Бюрократ
- Posts: 14582
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 92 times
- Been thanked: 514 times
- Contact:
Re: Lua Explorer „Advanced“
На плагринг можно и так, правда для автообновления нужна поддержка со стороны плагина-апдейтера, и пока ничего такого (насколько мне известно) не планируется.Acerbic wrote:А не хочешь переоформить в lua-плагин? Модификации минимальны, но зато можно на плагринг и автообновление для желающих.
А в lua-плагин преобразовать не выйдет, потому что данный скрипт это прежде всего модуль, предназначенный для использования из других скриптов.
- Smitis
- Posts: 1732
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 25 times
- Been thanked: 58 times
Re: Lua Explorer „Advanced“
Можно ли из одного lua-плагина получить глобальную таблицу другого lua-плагина? Иначе теряется смысл делать LuaExplorer плагином.John Doe wrote:Но как это связано с вопросом?
Где-то вроде проскакивало, что плагины совершенно независимы.
Разум когда-нибудь победит.