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

Здесь выкладываются готовые к использованию макросы и скрипты.
GorDAn
Posts: 49
Joined: Sun 26 Jun, 2011 09:47
Has thanked: 6 times

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

Post by GorDAn »

Latest post of the previous page:

При старте Far выдает следующее:

Code: Select all

  ╔════════════════════════════════════════════ LuaMacro ════════════════════════════════════════════╗
  ║ U:\Far_Profile\Macros\scripts\lua_explorer.lua:43: attempt to call global 'assert' (a nil value) ║
  ╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
  ║                                              { OK }                                              ║
  ╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
Как поправить?
Shmuel
Posts: 6839
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

GorDAn wrote:Как поправить?
Смотрите здесь и здесь.
User avatar
ur4ltz
Posts: 76
Joined: Fri 08 Jan, 2010 14:07
Location: Харьков
Has thanked: 1 time

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

Post by ur4ltz »

Удалось убить FAR! ;)

os.exit в скрипте закрывало SciteRU и Scite без сохранения открытых в редакторе файлов даже если они изменены..
EGez
Posts: 145
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 »

ur4ltz wrote:Удалось убить FAR! ;)
[. . .]
os.exit в скрипте закрывало SciteRU и Scite без сохранения открытых в редакторе файлов даже если они изменены..
Не убить, а совершенно нормально закрыть программу, это то же самое, что и exit() в C/C++.
Просто сам фар, перед нормальным закрытием, которое он ожидает, спрашивает, сохранить там чего-нибудь или нет.


EDIT:
Обновлено: Версия 1.1.1 (Hotfix)
User avatar
ur4ltz
Posts: 76
Joined: Fri 08 Jan, 2010 14:07
Location: Харьков
Has thanked: 1 time

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

Post by ur4ltz »

EGez wrote:
ur4ltz wrote:Удалось убить FAR! ;)
[. . .]
os.exit в скрипте закрывало SciteRU и Scite без сохранения открытых в редакторе файлов даже если они изменены..
Не убить, а совершенно нормально закрыть программу, это то же самое, что и exit() в C/C++.
Просто сам фар, перед нормальным закрытием, которое он ожидает, спрашивает, сохранить там чего-нибудь или нет.


EDIT:
Обновлено: Версия 1.1.1 (Hotfix)
Но он не спросил.. и не будет, lua права имеет больше..
EGez
Posts: 145
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 »

ur4ltz wrote:Но он не спросил.. и не будет, lua права имеет больше..
Дело не в правах вовсе.

Во время завершения по желанию пользователя, перед тем как вызвать эту функцию, Фар сам проверяет, нет ли чего-нибудь несохраненного, и если есть, то спрашивает: "А не хотите ли вы чего-нибудь сохранить?". И если пользователь действительно не ошибся (сохранил или не хочет сохранять, это не важно) и хочет завершить, только тогда Фар вызывает функцию exit().

А тут, из Lua, эту функцию вызывает плагин LuaMacro, причем напрямую без всяких вопросов, а для процесса, точнее для операционной системы, совсем не важно кто и где ее вызвал, но это совершенно нормальное, корректное завершение программы.
User avatar
ur4ltz
Posts: 76
Joined: Fri 08 Jan, 2010 14:07
Location: Харьков
Has thanked: 1 time

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

Post by ur4ltz »

Может ты и прав, но не нужно ее выполнять так как фар роняет...
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

не нужно ее выполнять
вот и не выполняйте.
на луа ещё много чего можно сделать, лучше вообще его не используйте.
User avatar
ur4ltz
Posts: 76
Joined: Fri 08 Jan, 2010 14:07
Location: Харьков
Has thanked: 1 time

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

Post by ur4ltz »

2useven10 wrote:
не нужно ее выполнять
вот и не выполняйте.
на луа ещё много чего можно сделать, лучше вообще его не используйте.
А вот тут я не согласен переход на луа ОЧЕНЬ продвинул фар!
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

да. но как использовать топор, каждый папуас решает сам, это может быть опасно.
User avatar
ur4ltz
Posts: 76
Joined: Fri 08 Jan, 2010 14:07
Location: Харьков
Has thanked: 1 time

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

Post by ur4ltz »

2useven10 wrote:да. но как использовать топор, каждый папуас решает сам, это может быть опасно.
))
Я просто указал одно из уязвимых мест..
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

Хватит троллить!!! (это - моё и предыдущие сообщения надо удалить), думаю EGez не против?
SimSU ··· ·· -- ··· ··-
EGez
Posts: 145
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 »

Обновил: Версия 1.1.2
  • Мелкое уточнение
  • Косметика
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Захотелось использовать Lua Explorer для просмотра произвольных таблиц, вызывая из других скриптов.
Логично превратить макрос в модуль, что я и собрался сделать.
И тут обратил внимание, на то, что в lua_explorer.lua 3 функции определены как глобальные, что макросу не вредит, а вот модулю очень даже.
Просто добавить к определению функций local недостаточно, необходимо ещё и переместить инициализацию brkeys в конец.

Организовав модуль, можно использовать возвращаемую им функцию отовсюду.
Например вот макрос
  1. Macro { description = "Lua Explorer";
  2.  
  3.   area="Common"; key="CtrlShiftF12"; action=require"lua_explorer";
  4.  
  5. }
P.S.
В прилагаемом файле есть ещё одно изменение.
Раз мы делаем функцию доступной другим скриптам, то стоит предусмотреть защиту от вызова без параметров.
  1. local function process(obj, title)
  2.  
  3.   -- if called w/o params - start with the global context
  4.  
  5.   obj, title = obj or _G, title or ""
[/s]

P.P.S.
Впрочем зря, опциональным стоит сделать только title
Обновлённая версия далее в теме.
EGez
Posts: 145
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 »

Спасибо, некоторые вещи учту в след. релизе, думаю не за горами.

ЗЫ: Шапку переработал, согласно правилам раздела, нельзя ли прикрепить на все страницы?
Благодарю
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

По мотивам обсуждения.

Выяснилось, что разделение на модуль и макросы не всем нравится.

Но оба подхода можно совместить в 1 файле: кто хочет просто макрос - копирует в scripts
Кому нужен модуль, для использования в собственных скриптах - копирует в modules.

Ниже пример того, как это можно организовать:
  1. -- в конце файла:
  2.  
  3. if not Macro then return process end
  4.  
  5.  
  6.  
  7. Macro { description = "Lua Explorer";
  8.  
  9.   area="Common"; key="CtrlShiftF12"; action=function()
  10.  
  11.     process(_G,'_G')
  12.  
  13.   end
  14.  
  15. }
Такой файл, лежащий например в папке scripts, можно вызвать также из командной строки или меню пользователя:
lm:post dofile(win.GetEnv"FARPROFILE"..[[\Macros\scripts\lua_explorer.lua]])(_G,'_G')

Довольно громоздко, модуль вызвать было бы проще: lm:post require"lua_explorer"(_G,'_G')
Post Reply

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