1. Часть ПЕРВАЯ
Модули:
C:\FarTst\Profile\Macros\modules\
CRC32-@XeR0X.lua
C:\FarTst\Profile\Macros\modules\
CRC64-@Xer0X.Lua
C:\FarTst\Profile\Macros\modules\
introspection-@Xer0X.lua
C:\FarTst\Profile\Macros\modules\le.lua
C:\FarTst\Profile\Macros\modules\
Lib-Common-@Xer0X.Lua
C:\FarTst\Profile\Macros\modules\
StackTracePlusPlus-@Xer0X.lua
Макрос:
C:\FarTst\Profile\Macros\scripts\_macroinit.lua
Code: Select all
if not Xer0X then Xer0X = { } end
require("Lib-Common-@Xer0X")
require("introspection-@Xer0X")
local ok, err_msg, le = Xer0X.fnc_safe_require("LE")
if ok
then _G.LE = le
_G.le = le
end
if not debug.traceback__orig
and debug.getinfo(debug.traceback, "S").what == "C"
then debug.traceback__orig = debug.traceback
end
local ok, err_msg, stp = Xer0X.fnc_safe_require("StackTracePlusPlus-@Xer0X")
Xer0X.STP = stp
local sz_err_dir = win.GetEnv("temp")
if stp and true
then debug.traceback = function(...)
local err_rep_1, err_rep_2, err_rep_3, err_rep_4, err_rep_5 = debug.traceback__orig(...)
Xer0X.fnc_file_text_save(sz_err_dir.."\\far_err_rpt_orig.txt", err_rep_1)
local tbl_stack, tbl_path = stp.fnc_stack_trace(..., 2, "no_header", true)
Xer0X.fnc_file_text_save(sz_err_dir.."\\far_err_rpt_plus.txt", tbl_stack.message_new)
far.Timer(1, function(sender)
sender.Enabled = false;
sender:Close();
LE(tbl_stack, "EXEC ", nil, nil, tbl_path)
end)
return err_rep_1.."\n"..tbl_stack.message_new
end
end
2. Часть ВТОРАЯ
Практический результат такой, что при загрузке Фара так:
Code: Select all
LuaMacro
C:\FarTst\Profile\Macros\scripts\_macroinit.lua:4: attempt to call field 'fnc_safe_require' (a nil
value)
stack traceback:
C:\FarTst\Profile\Macros\scripts\_macroinit.lua:4: in main chunk
[C]: in function 'xpcall'
C:\FarTst\Plugins\LuaMacro\utils.lua:780: in function 'LoadRegularFile'
C:\FarTst\Plugins\LuaMacro\utils.lua:845: in function <C:\FarTst\Plugins\LuaMacro\utils.lua:676>
3. Часть ТРЕТЬЯ
А если ещё добавить макрос Dialog_ReXiZeR.@Xer0X.Lua, то после первого сообщения появляется и второе:
Code: Select all
LuaMacro
C:\FarTst\Profile\Macros\scripts\Dialog_ReXiZeR.@Xer0X.Lua:168: attempt to call a nil value
stack traceback:
C:\FarTst\Profile\Macros\scripts\Dialog_ReXiZeR.@Xer0X.Lua:168: in main chunk
[C]: in function 'xpcall'
C:\FarTst\Plugins\LuaMacro\utils.lua:780: in function <C:\FarTst\Plugins\LuaMacro\utils.lua:757>
[C]: in function 'RecursiveSearch'
C:\FarTst\Plugins\LuaMacro\utils.lua:849: in function <C:\FarTst\Plugins\LuaMacro\utils.lua:676>
и макрос Dialog_ReXiZeR.@Xer0X.Lua в списке макросов не показывается:
- 3MacroBrowser.png (21.56 KiB) Viewed 2854 times
4. Часть ЧЕТВЁРТАЯ
Если же вместо макроса Dialog_ReXiZeR.@Xer0X.Lua добавить макрос key2proxy.@Xer0X.lua, то при загрузке Фара появляется только первое сообщение, без второго.
И в Macro Browser`е появляются две строки: