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

Здесь выкладываются готовые к использованию макросы и скрипты.
EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

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

Post by EGez »

Проект остановлен ввиду наступивших (хороших) перемен в жизни и связанным с ними изменением приоритетов. Возобновление работ над проектом в ближайшие годы на мой взгляд к сожалению не предвидится.

В связи с этим публикую код в том состоянии, в котором он пребывает на данный момент.

Помимо того, со спокойной совестью, могу назвать альтернативу, т.к. идея была подхвачена и развивается дальше: Lua Explorer „Advanced“

Кто хочет свою альтернативу - дерзайте...


Изначальное сообщение оставлю прежним:

─────════════════════════─────

Вы пишете макросы? Вызывая данный скрипт макросом из макрообласти Common, можно напр. заранее изучить некоторые свойства диалогов, будь то Id, индекс кнопки OK, значения плагиновых панелей, и т.д. Думаю, это может сильно помочь вам в понимании/ловле жуков.

Вот, писал сначала для себя, но потом решил и со всеми поделиться.

С помощью данного скрипта можно изучать среду Lua в Far manager перемещаясь по структурам в виде системы вложенных меню, элементы которых содержат ключ/имя, тип и значение элементов текущей таблицы.

На данный момент реализованы следующие возможности:
  • Просмотр, редактирование, удаление и создание новых элементов.
  • Запуск любой функции с возможностью задать любые параметры.
  • В качестве параметров, ключей или новых значений можно использовать любой валидный код Lua, будь то константы или существующие в текущем контексте переменные.
  • История для параметров или редактируемых значений. Для каждой функции/переменной - своя.
  • Просмотр/редактирование мета-таблиц.
  • Информация о функциях.
  • Краткая помощь по клавишам.




Предложения по доработке и изменениям, как говорят немцы, sind herzlich willkommen.

ВНИМАНИЕ: О вызове некоторых функций. (Особенно новичкам читать обязательно!)




Удачных экспериментов...
Attachments
lua_explorer.lua.7z
NOT RELEASED YET (без релиза, как есть)
(2.87 KiB) Downloaded 247 times
lua_explorer.lua.7z
Версия 1.1.2
(2.67 KiB) Downloaded 751 times
lua_explorer.lua.7z
Первый релиз
(1.55 KiB) Downloaded 278 times

2useven10
Posts: 4025
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 181 times

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

Post by 2useven10 »

интроспекция в 3-х килобайтном макросе :wacko:

Shmuel
Posts: 6068
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 300 times

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

Post by Shmuel »

EGez
Спасибо, что поделились!
У меня тоже лежит подобная утилита, называется TableView, автор maxdrfl, с моими модификациями. Пока не выкладываю, так как она не позволяет заглянуть в "свойства" (в ту пору макросы ещё были не на Lua, и утилита использовалась только с LuaFAR-плагинами).

User avatar
HaRT
Moderator
Posts: 9333
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 213 times

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

Post by HaRT »

Эх, подобную бы интроспекцию в виде панельного плагина — чтобы немодально и с закладками.
Пример желаемого, но для .NET — панели PowerShellFar.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
NightRoman
Posts: 5924
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 13 times
Been thanked: 14 times
Contact:

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

Post by NightRoman »

EGez, спасибо, хорошая полезная вещь. Не бросайте, если есть пути улучшить :)

HaRT, да, но панели хороши не всегда. В том же PowerShellFar в отладчике только модальные инструменты применимы, и подход с меню мог бы пригодиться (там, правда, есть альтернатива - редактор-консоль).

2useven10
Posts: 4025
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 181 times

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

Post by 2useven10 »

очень полезная тулза.
одно пожелание - хочется прятать/показывать функции (по Ctrl-H или Ctrl-F).

User avatar
SUSim
Posts: 1543
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 10 times

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

Post by SUSim »

Отличная вещь, я не успел доделать свою подобную, но более скромную = простую... У Вас получилось очень удачно!
Есть пожелание(и что я собирался сделать у себя) - редактирование свойств, а не только выполнять функций. (сейчас я обхожусь своим калькулятором, чтобы править/тестировать всё что можно в луа окружении, а не только складывать и умножать :) ).
SimSU ··· ·· -- ··· ··-

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

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

Post by EGez »

SUSim wrote: [. . .]
Есть пожелание(и что я собирался сделать у себя) - редактирование свойств, а не только выполнять функций. [. . .]
Редактирование свойств я уже и сам наметил следующим шагом, даже представляю себе как это могло бы выглядеть, но, похоже, придется как-то иначе обходиться с фаровскими "свойствами", хотя некоторые надумки есть.
2useven10 wrote: [. . .]
одно пожелание - хочется прятать/показывать функции (по Ctrl-H или Ctrl-F).
В уже открытом меню выполнение макроса полностью останавливается, т.к. функция Menu.Show(...) блокирует до выбора какого-нибудь пункта. Разве можно в таком случае вообще как-то обрабатывать нажатия клавиш? Или, может быть, параллельно второй макрос запускать?

В описании что-то говорилось о фильтрах, но, похоже, это не совсем то. Судя по всему, скрыть функции, в данном случае просто по типу, можно только во время сборки меню, напр. пропуская все то, что имеет тип 'function'.

Если у кого есть примеры с оброботкой клавиатуры в меню, или какая-нибудь "симуляция" такого поведения, с удовольствием бы посмотрел.

И да, спасибо за отзывы...

2useven10
Posts: 4025
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 181 times

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

Post by 2useven10 »

Если у кого есть примеры с оброботкой клавиатуры в меню, или какая-нибудь "симуляция" такого поведения, с удовольствием бы посмотрел.
я такого к сожалению не умею...
но меня устроит альтернативный вариант: первый пункт каждого меню <Show/Hide functions>

Shmuel
Posts: 6068
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 300 times

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

Post by Shmuel »

EGez wrote:Редактирование свойств я уже и сам наметил следующим шагом, даже представляю себе как это могло бы выглядеть, но, похоже, придется как-то иначе обходиться с фаровскими "свойствами", хотя некоторые надумки есть.
Здесь, видимо, путаница в терминологии. Все "свойства" (properties) в макро-API - read only, изменить их значения из макроса простым присваиванием - нельзя.
EGez wrote: В уже открытом меню выполнение макроса полностью останавливается, т.к. функция Menu.Show(...) блокирует до выбора какого-нибудь пункта. Разве можно в таком случае вообще как-то обрабатывать нажатия клавиш? Или, может быть, параллельно второй макрос запускать?
Используйте far.Menu вместо Menu.Show, и обратите внимание на так называемые BreakKeys.
EGez wrote:Если у кого есть примеры с оброботкой клавиатуры в меню, или какая-нибудь "симуляция" такого поведения, с удовольствием бы посмотрел.
Возьмите на github исходники плагина LuaFAR for Editor.

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

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

Post by EGez »

Shmuel wrote:
EGez wrote: [. . .] но, похоже, придется как-то иначе обходиться с фаровскими "свойствами", хотя некоторые надумки есть.
Здесь, видимо, путаница в терминологии. Все "свойства" (properties) в макро-API - read only, изменить их значения из макроса простым присваиванием - нельзя.

[. . .]

Используйте far.Menu вместо Menu.Show, и обратите внимание на так называемые BreakKeys.

[. . .]

Возьмите на github исходники плагина LuaFAR for Editor.
Да, я в курсе, что для Lua это вовсе не свойства даже, говоря "иначе обходиться" имел ввиду пропускать их ;)

В far.Menu заглянул, тут уже интереснее. Исходники тоже гляну, но не сейчас, работа, обед...

User avatar
zg
zero-gravity
Posts: 5773
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 142 times
Contact:

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

Post by zg »

dialog+listbox точно решит все проблемы.

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

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

Post by EGez »

Shmuel wrote:[. . .]
Используйте far.Menu вместо Menu.Show, и обратите внимание на так называемые BreakKeys.

[. . .]
Возьмите на github исходники плагина LuaFAR for Editor.
Ого, похоже я раньше только вершину большого айсберга в LuaMacro видел, такая работа достойна уважения...

Вернусь к редактированию:
При более детальном осмотре выяснилось, что в принцыпе изменить можно все.
Неким, исключением, на первый взгляд, являются свойства Far API, установленные функцией SetProperties(...) в ...\LuaMacro\api.lua, но эту защиту можно обойти.



Функции же LuaMacro API, или даже целые таблицы, можно перезаписать без всяких препятствий.

К чему это я все?

Сначала я думал как-нибудь блокировать редактирвоание вещей принадлежащих Far- или LuaMacro API, но со временем пришел к выводу, что сама функция редактирования в таком случае полностью теряет свой смысл.
Т.е. либо, делая ее, придежриваться принципа "хозяин - барин", либо не делать вообще.

Кстати, о rawset(...) еще подумаю, возможно будет на выбор... Если есть какие мысли по этому поводу, не стесняемся ;)

Если кому интересно поиграться на эту тему:



И да, кстати
HaRT wrote:Эх, подобную бы интроспекцию в виде панельного плагина — чтобы немодально и с закладками.
Пример желаемого, но для .NET — панели PowerShellFar.
пока скриптом ограничусь...

Shmuel
Posts: 6068
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 300 times

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

Post by Shmuel »

EGez wrote:

Code: Select all

rawset(_G.APanel, 'Bof', 'rawset(...) - против лома нет приема...')
А разве кто-то утверждал, что эту защиту нельзя обойти? Можно, конечно, но смысл?
Данные свойства являются read-only по их дизайну. У меня была мысль сделать некоторые свойства read/write (как это, например, в Delphi делается), но не стал, ввиду нехватки времени. Например, при выполнении APanel.Bof=true, курсор панели перемещался бы на начальный элемент.

EGez
Posts: 144
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

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

Post by EGez »

Shmuel wrote: А разве кто-то утверждал, что эту защиту нельзя обойти? Можно, конечно, но смысл?
Данные свойства являются read-only по их дизайну. У меня была мысль сделать некоторые свойства read/write (как это, например, в Delphi делается), но не стал, ввиду нехватки времени. Например, при выполнении APanel.Bof=true, курсор панели перемещался бы на начальный элемент.
Я, видимо, не очень удачно выразился.

Речь вовсе не о защите и т.д., просто обычное присваивание таким свойствам значений осознанно заперто, но дело не в этом, я вовсе не ставил под сомнение правильность данного решения и более того, не подвергал его никакой оценке и т.д., я просто констатировал факт размышляя и делясь мыслями по поводу редактирования свойств из Lua Explorer, в частности, о возможном использовании rawset(...) в таких случаях и результате таких манипуляций...

Post Reply

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