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 » Tue 27 Nov, 2012 22:01

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

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

Помимо того, со спокойной совестью, могу назвать альтернативу, т.к. идея была подхвачена и развивается дальше: 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 202 times
lua_explorer.lua.7z
Версия 1.1.2
(2.67 KiB) Downloaded 648 times
lua_explorer.lua.7z
Первый релиз
(1.55 KiB) Downloaded 251 times

2useven10
Posts: 3682
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 147 times

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

Post by 2useven10 » Tue 27 Nov, 2012 22:36

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

Shmuel
Posts: 5648
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

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

Post by Shmuel » Tue 27 Nov, 2012 22:49

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

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

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

Post by HaRT » Wed 28 Nov, 2012 12:12

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

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

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

Post by NightRoman » Wed 28 Nov, 2012 12:55

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

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

2useven10
Posts: 3682
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 147 times

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

Post by 2useven10 » Wed 28 Nov, 2012 17:55

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

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

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

Post by SUSim » Wed 28 Nov, 2012 18:36

Отличная вещь, я не успел доделать свою подобную, но более скромную = простую... У Вас получилось очень удачно!
Есть пожелание(и что я собирался сделать у себя) - редактирование свойств, а не только выполнять функций. (сейчас я обхожусь своим калькулятором, чтобы править/тестировать всё что можно в луа окружении, а не только складывать и умножать :) ).
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 » Wed 28 Nov, 2012 23:53

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

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

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

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

2useven10
Posts: 3682
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 147 times

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

Post by 2useven10 » Thu 29 Nov, 2012 00:27

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

Shmuel
Posts: 5648
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

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

Post by Shmuel » Thu 29 Nov, 2012 07:00

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 » Thu 29 Nov, 2012 13:18

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: 5527
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

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

Post by zg » Thu 29 Nov, 2012 20:04

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 » Sat 01 Dec, 2012 17:20

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: 5648
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

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

Post by Shmuel » Sat 01 Dec, 2012 17:52

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 » Sat 01 Dec, 2012 18:55

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

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

Shmuel
Posts: 5648
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

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

Post by Shmuel » Sat 01 Dec, 2012 19:13

EGez
TableView, о котором я упоминал выше, лежит на github в папке lua_share/far2 плагина LuaFAR for Editor. Сегодня обновил после полугодового перерыва. Можете глянуть, может некоторые детали вам подойдут. Хотя мне кажется, ваш Lua Explorer не хуже, если не лучше.

Чтобы запускать TableView как макрос, надо установить в базу содержимое файла dialog.lua из той же папки как модуль под именем far2.dialog.

P.S. Описание оригинального автора.

Post Reply

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