StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

StackTracePlus @Xer0X — расширенный анализ стека, дает ПОЛНЫЙ обзор контекста ошибки, + любого другого runtime контекстa

Post by John Doe »

Latest post of the previous page:

buniak_a_h wrote: Mon 22 Feb, 2021 11:06 Про шаблон не понял.
Например тут предусмотрены шаблоны для быстрого ввода разнообразных конструкций Луа: http://raidar.github.io/Programs/FarScr ... Rh_Scripts
Аналогичным образом можно намакросить и подключение любого частоиспользуемого скрипта.
buniak_a_h wrote: Mon 22 Feb, 2021 11:06 Здесь же в строке писать require… - совсем запутаешься
Рекомендую консольные алиасы: viewtopic.php?f=60&t=8546

Можно и без скриптов, через doskey
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, дает ПОЛНЫЙ обзор контекста ошибки, + любого другого runtime контекстa

Post by citRiks »

John Doe,
Rh_Scripts, о да.
Лучший способ огрести проблемы с УТФ8 по самое не хочу.
Хотя он и до внедрения УТФ8 был не рабочий.
Последние несколько лет АПИ фара менялись, а Rh_Scripts нет.
Я его вылечил однако, лежит в загашнике, ждет своего часа.
Планирую его оформить, но пока некогда, и неизвестно когда будет.

Но вроде TrueTemplate рабочий для темплэйтов, не?
Я не фанат TrueTemplate, но он по крайней мере еще живой и даже относительно активный
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, дает ПОЛНЫЙ обзор контекста ошибки, + любого другого runtime контекстa

Post by citRiks »

John Doe wrote: Mon 22 Feb, 2021 15:05 Рекомендую консольные алиасы: viewtopic.php?f=60&t=8546
Идея интересная, я проверил, да действительно можно так:

Code: Select all

..
CtlTab=lua:Keys("CtrlTab")
LuaExplore=lua:require("LuaExplorer-@Xer0X")($*)
LuaExplore2=lua:le($*)
..
..\> LuaExplore _G, "Привет"
но это все же не то,
потому что надо что-то такое произвольное:
lua:local t1 = { hello = "world"}; le(t1)

.. хотя, если развить идею, то можно и так:

Code: Select all

..
LuaExplore3=lua:local le = require("LuaExplorer-@Xer0X"); 
..
..\> luaexplore3 local t1 = { hello = "world"}; le(t1)
да, можно считать что убедили в пользе для этого алиасов :)
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus @Xer0X — расширенный анализ стека, дает ПОЛНЫЙ обзор контекста ошибки, + любого другого runtime контекстa

Post by Ann »

citRiks,

Обновил StackTracePlusPlus-@Xer0X.lua из https://github.com/dr-dba/far-lua-diagnostics И, при желании, корректность кода данного скрипта можно проверить, например, лежащей в этой же папке утилитой Editor_MacroCheck.lua.

А вот, подскажите, пожалуйста, как Вы убеждаетесь, что модуль правильно работает? Вероятно, у Вас для этого есть тестовые скрипты с заведомыми ошибками?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, дает ПОЛНЫЙ обзор контекста ошибки, + любого другого runtime контекстa

Post by citRiks »

Ann, Ну как бэ, уж чем-чем, а ошибками я точно не обделен :)
Ну а так - да, проверяю правильность работы,
тем что или вижу стек полный и правильный,
или не вижу, или вижу, но что-то не так.

МакроЧек заслуживает отдельного упоминания и обяснения,
на которое сейчас нет возможности сделать.
Он много для чего предназначен, но то что добавил туда @Xer0X.
это возможность загрузить произвольный скрипт как макрос,
или перезагрузить существующий не трогая остальные,
или удалить существущий из макросов.
Удалить например можно так:
1.) открыть скрипт с макросами в редакторе
2.) написать вначале "if true then return end"
Что делает "[load one]":
1.) очистка: Удлаяет ВСЕ максоры принадлежащие этому фалу
2.) Загрузка: Загружет это файл в макросы заново
а так как в скрипте стоит в начале "if true then return end",
то ничего заново не загрузится, но прежнее сотрется.
На всяк случ. уточню: речь про стрирание не файлов, а обьектов в памяти
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by citRiks »

Другой пример использования

Code: Select all

--[[
if true then return end --]] 
require("StackTracePlusPlus-@Xer0X")

Macro { description = "my cool macro test";
	area = "Editor"; key = "CtrlSpace";
	priority = 100;
	action = function()
		local abc = 12345
		Xer0X.STP.traceback("Hello World!")
	end;
}
Kaк используем, инструкция:
image.png
image.png (7.68 KiB) Viewed 1352 times
image.png
image.png (7.86 KiB) Viewed 1352 times
Что используем:
1.) Загрузку (можно и выгрузку вышеуказанным способом) одичного файла макросов
ИЗ ПРОИЗВОЛьНОЙ ДИРЕКТОРИИ без перезагрузки
(обратите внимание из какой трешевой папки это было загружено)
2.) Использование StackTracePlus@Х для просмотра контекста
(a не как показыватель ошибок в примере ранее)
3.) Можно наставить таких tracebacks в любом месте кода,
и различать их по переданного типа маркера.
в примере это "Hello World"
Attachments
image.png
Last edited by citRiks on Thu 25 Feb, 2021 00:52, edited 4 times in total.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by Ann »

citRiks,

А в первой строке "нереально крутого теста" намеренно или ошибочно после двух минусов перед скобками пробел стоит?

Code: Select all

-- [[
а то пока я не догадался этот пробел убрать макрос не взлетал и даже не показывался в Мacro Browser Alt.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by citRiks »

Ann,
сорян, это я так регулирую видимость макроса как-бы, добавлением и убиранием пробела,
и я его добавил после проверки чтобы убрать макрос, и так и сохранил.
но вопщет я как раз и описывал этот способ парой сообщений выше
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by Ann »

citRiks wrote: Thu 25 Feb, 2021 00:27это я так регулирую видимость макроса как-бы, добавлением и убиранием пробела
И хотя нечаянно и получилось несколько в провокационном стиле, однако для меня это было всё же сугубо полезно однозначно. Спасибо за опыт и спасибо за разъяснения по МакроЧеку. Пытаюсь осознать и освоить его возможности.
но вопщет я как раз и описывал этот способ парой сообщений выше
Однако, обратите, пожалуйста, внимание на то, что у этого способа отключения макросов есть и один сходу незаметный, но существенный недостаток. А именно тот, что извне файла не видно включён он или выключен. Поэтому, по моему опыту, целесообразнее отключать файл не изнутри, а небольшим переименованием его расширения. Т.е. вместо .lua делать .lu_a, например. Тогда заходя в папку, сразу же видно отключённые файлы. Особенно если расцветка файлов удобно настроена.

А у МакроЧека, как Вы указали, есть замечательное свойство отключённые файлы включать не чохом, а по одному и, причём из любой папки. В т.ч. и находящейся за пределами %FarProfile%\Macros\scripts\. И для того, чтобы МакроЧек обрабатывал файлы, отключённые внешним образом (т.е. через изменение расширений), в его поле filemask выставляется не *.lua, а *.lu*. И всё прекрасно работает. Очень удобно так, например, новые версии скриптов опробовать и с проектами работать. Спасибо, что акцентировали моё внимание на этом инструменте.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by buniak_a_h »

citRiks wrote: Thu 25 Feb, 2021 00:27 это я так регулирую видимость макроса как-бы, добавлением и убиранием пробела,
В какой-то теме кто-то из корифеев приводил способ вулючать-выключать часть текста так:

Code: Select all

--[[
x=1  --выключено
--]]
──────────────────────────
---[[
x=1  --включено
--]]
Т.е. добавлением минуса. Это заметнее
P/S. А собственно макрос удобнее выключать заменой Macro на NoMacro. У этого способа ещё плюс, что работает синтаксический контроль.
Last edited by buniak_a_h on Thu 25 Feb, 2021 07:41, edited 1 time in total.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by Ann »

citRiks wrote: Wed 24 Feb, 2021 20:253.) Можно наставить таких tracebacks в любом месте кода,
и различать их по переданного типа маркера.
в примере это "Hello World"
Пробую расставлять в разных скриптах строки, аналогичные Xer0X.STP.traceback("Ну и ну!"), по несколько штук с неповторяющимися объявлениями. А МакроЧек показывает их по одному в беспорядочной, на мой взгляд, последовательности. И я не понимаю, как можно было бы переходить от одного traceback`а к другому и обратно. М.б. я чего-то не учитываю?

И ещё. Для тестирования макросов было бы удобно, чтобы МакроЧек мог бы временно отключать и затем включать все макросы, кроме находящихся в определённой папке, расположенной в т.ч. и за пределами %FarProfile%\Macros\scripts\
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by citRiks »

Ann wrote: Thu 25 Feb, 2021 13:33 А МакроЧек показывает их по одному в беспорядочной, на мой взгляд, последовательности. И я не понимаю, как можно было бы переходить от одного traceback`а к другому и обратно. М.б. я чего-то не учитываю?
да, там была некоторая некорректность, кое-что подправил, посмотрите сейчас:
https://github.com/dr-dba/far-lua-diagnostics
обновлено вместе с:
https://github.com/dr-dba/far-lua-general-utils
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by citRiks »

Ann wrote: Thu 25 Feb, 2021 13:33 Для тестирования макросов было бы удобно, чтобы МакроЧек мог бы временно отключать и затем включать все макросы, кроме находящихся в определённой папке, расположенной в т.ч. и за пределами %FarProfile%\Macros\scripts\
Частичный ответ для вас есть в этих двух функциях,
которые можно вызывать отдельно, и как угодно:
_G.Xer0X.fnc_macro_dir_load("<a-directory-with-file-macros>")
_G.Xer0X.fnc_macro_one_load("<a-file-macros-path>")
и можно сделать самому что-то вроде:
lua:Xer0X.fnc_macro_one_load([[c:\aaa\bbb\ccc.lua]])
или для целой директории:
lua:Xer0X.fnc_macro_dir_load([[c:\aaa\bbb]])
Эти добавляют макросы, "убавится" макрос только если у него в самом файле есть нейтрализация.
Относительно несложно доделать удаление безусловное, но..
Вот честно, как часто и зачем вам приходится загружать-выгружать директории?
99.999% народу (кроме меня самого) вполне устраивает:
1.) добавить некую новую директорию в "..Profile\Macros\scripts\"
2.) Перезагрузить все макросы
3.) Потестить
4.) Если надо или не надо, то удалить добавленную директорию и:
5.) если надо, то еще раз перезагрузить
Last edited by citRiks on Fri 26 Feb, 2021 10:12, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by John Doe »

citRiks wrote: Fri 26 Feb, 2021 10:11 _G.Xer0X.fnc_macro_dir_load("<a-directory-with-file-macros>")
_G.Xer0X.fnc_macro_one_load("<a-file-macros-path>")
А зачем через _G.
https://t.me/FarManager — Telegram чат
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

StackTracePlus @Xer0X — расширенный анализ стека, полный обзор контекста ошибки или любого другого runtime-контекстa

Post by Ann »

citRiks wrote: Fri 26 Feb, 2021 10:02посмотрите сейчас:
https://github.com/dr-dba/far-lua-diagnostics
обновлено вместе с:
https://github.com/dr-dba/far-lua-general-utils
В начале файла StackTracePlusPlus-@Xer0X.lua в разделе ЗАВИСИМОСТИ не приведена ссылка на модуль LuaExplorer-@Xer0X.Lua. А только на исходный:
Теперь при испытании теста test_isolated_macro_stack.lu_a из внешней по отношению к Фару папки хорошо проявляется последовательность переходов между traceback-закладками. Я туда ещё несколько добавлял, и всё хор.

В т.ч. посмотрел работу traceback-закладок на свежем скрипте PassGenerate.lu_a (опубликован здесь), перемещённом в C:\tmp\ из "родной" папки. Расставил в нём 10 закладок: 4 по коду скрипта от начала файла до MenuItem, 2 в MenuItem, и по 2 в каждом из двух Macro.

– при загрузке скрипта посредством Editor_MacroCheck по Reload One проявились первые 4 закладки в последовательности 4, 3, 2, 1 (потому что окна EXEC/E.tbl_dbg_stack.0>.1>.2>.3>.4|CUR> (6) так наслоились);

– при вызове MenuItem через Меню плагинов проявились закладки в последовательности 5 и 6;

– при вызове ключом первого макроса проявились закладки в последовательности 7 и 8;

– при вызове ключом второго макроса проявились закладки в последовательности 9 и 10;

т.е. все расставленные закладки сработали.

Между прочим: титульная запись в dbg-окнах для пользователя выглядит как загадочный ребус.

Остальное (изложенное в следующем Вашем посте) пока что не успел посмотреть.
Post Reply

Return to “Обсуждение макросов”