Проверка корректности скрипта в редакторе + выполнение

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

Набор макросов, помогающих в отладке lua-скриптов, открытых в редакторе.
Активируются только при filemask="*.lua;*.moon"

* CtrlEnter
  • Предназначен для проверки корректности редактируемого макроса.
    При наличии выделения — работает с выделением.
    Если ошибок нет, то предлагаются действия на выбор:
    • Reload All выполняет перезагрузку макросов.
      Файл предварительно сохраняется, если в процессе сохранения возникли вопросы, то макросы не перезагружаются
    • Execute выполнить сам скрипт, или выделенную часть.
      Если скрипт возвращает значения, то они отображаются.
    • Variables после исполнения скрипта или выделенной части отображает результирующие значения переменных скрипта: локальных и окружения (если присутствуют). Если скрипт возвращает значения, то они тоже отображаются.
      Требуется модуль Lua Explorer.
    Если редактируемый файл расположен не в папке scripts, то курсор устанавливается на кнопку Execute.
* CtrlShiftEnter (только при наличии выделения)
  • После исполнения выделенной части скрипта отображает список возвращённых значений (если в тексте отсутствует ключевое слово return, то оно добавляется в начало).
    Перед запуском запрашиваются значения переменных (environment), можно перечислить через запятую
При отображении возвращаемых значений возможен их дальнейший просмотр в Lua Explorer.
Требования: FAR 3 build >=4261.


source | download
Last edited by John Doe on Wed 11 Dec, 2019 09:08, 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:

Re: Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

Latest post of the previous page:

Variables: функция стала проще и надёжнее (используется debug.hook). Теперь также отображаются возвращаемые значения (если есть)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

v1.1
Из существенных изменений:
  • Поддержка Moonscript
  • Позиционирование на места ошибок
  • Добавляет в меню плагинов ряд пунктов .
    Настраивается опциями в начале файла, или настройками в пользовательском scriptscfg (пример прилагается)
  • Файл скрипта переименован
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Проверка корректности скрипта в редакторе + выполнение

Post by HaRT »

buniak_a_h wrote: Sun 01 Dec, 2019 02:46 Добрый день.
При использовании макроса MacroCheck я заметил одну особенность: в far.Message (с тремя кнопками) иногда активной бывает первая кнопка (которая в фигурных скобках; видимо - DIF_DEFAULTBUTTON, а иногда - вторая (в исходном скрипте это - строка 169)
[…]
От чего зависит эта "стартовая кнопка" в указанном скрипте? А то очень неудобно бывает - она иногда на первой кнопке (Reload All), а иногда - на второй (Execute).
Во избежание офтопика там просьба обсуждать тут.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

buniak_a_h wrote: От чего зависит эта "стартовая кнопка" в указанном скрипте?
От расположения проверяемого скрипта: если он в Scripts, то предлагается перезагрузить макросы.
Если в другом месте - то запустить скрипт открытый в редакторе.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by buniak_a_h »

John Doe wrote: Mon 02 Dec, 2019 14:21 От расположения проверяемого скрипта: если он в Scripts, то предлагается перезагрузить макросы.
Если в другом месте - то запустить скрипт открытый в редакторе.
Спасибо, я уже поискал слово Keys и понял логику. Просто у меня для перезагрузки макросов другой скрипт используется, а "плавающая" стартовая кнопка - не удобно. Но идею я понял. Спасибо. А то иногда хочется в подтверждении "опасных" действий сделать умолчательной кнопку "Нет"; приходится менять их местами (вместо ";YesNo" указывать "No;Yes". Некузяво…)
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by buniak_a_h »

Новая версия FAR-а (увы, не нашёл, с какой версии. На 5511 ещё работало; на 5523 уже нет) перестала работать проверка и запуск. Проблема в том, что в макросе указано action=checkMacro;. Раньше это означало вызов без параметров. Теперь передаётся параметр - таблица. Замените, пожалуйста, action=checkMacro; на

Code: Select all

action=function() checkMacro(); end;
Думаю, так будет правильно ...
Last edited by buniak_a_h on Wed 11 Dec, 2019 05:26, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

Исправлено, v1.2
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by buniak_a_h »

Жму download получаю 404: Not Found . ЧЯДНТ?
Last edited by buniak_a_h on Wed 11 Dec, 2019 09:41, 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:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

Исправлено
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by buniak_a_h »

У меня одного такая беда?
При вызове из МЕНЮ плагинов пункта [ Reload Macro ] требуется модуль tooltip . А где его берут?
Строка 126:
require"tooltip" ("(re)loaded in "..elapsed.." ms","Macros",1000)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

Подозреваю что я его не выкладывал.
Но вы можете без особого вреда для функциональности просто закомментировать эту строку. (а две предыдущие можете попробовать раскомментировать)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

buniak_a_h wrote: Sat 01 Feb, 2020 03:11 требуется модуль tooltip
Это был эксперимент по реализации подобия "тултипа" немодальным диалогом, чтобы на время его отображения выполнение прочих действий не останавливалось.
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

Проверка корректности скрипта в редакторе + выполнение

Post by citRiks »

Скрипт интересный
А почему бы в него не добавить загрузку открытого макроса?
"Загрузить все" работает конечно, но не мгновенно скажем так,
а хотелось бы быстренько перезагрузить именно редактируемый макрос
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by John Doe »

Апи не предусматривает такой возможности.
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

Проверка корректности скрипта в редакторе + выполнение

Post by citRiks »

John Doe,
Интересно, на поверхности АПИ вроде действительно не лежит.
Но не может же такого быть чтобы совсем нельзя было бы?
Загрузить новый макрос вроде как можно не залезая слишком глубоко:


С другой стороны, действительно не совсем понятно как удалять созданный или уже существующий.
С третьей стороны, мировая практика показывает, что все что можно добавляется то и удаляется.
Если скрестить эту странцу:
https://api.farmanager.com/ru/service_f ... ntrol.html
..с этим файлом:
%FARHOME%\Plugins\LuaMacro\utils.lua
.. то наверное что-то получится.

Как вы думаете, может открыть еще одно неуспешное рац. предложение? ))
практическая польза:
Если изменил один макрос, то не надо перезагружать все на свете
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Проверка корректности скрипта в редакторе + выполнение

Post by buniak_a_h »

citRiks wrote: Sat 11 Apr, 2020 14:03 Как вы думаете, может открыть еще одно неуспешное рац. предложение?
Ей бо, игра не стоит свеч. Ну, выиграете пару микросекунд … К тому же перезагрузка макросов переинициализирует локальные переменные.
Ну и:
citRiks wrote: Sat 11 Apr, 2020 14:03 мировая практика показывает, что все что можно добавляется то и удаляется.
Мировая практика как раз показывает, что это - не так. Всё, что добавляется, можно пометить на удаление (заблокированные файлы, например), или сделать невидимыми (в инете, как известно, ничего не пропадает, только прячется).
Как Вы могли заметить, макросы не удаляются, а только disable-ятся. В общем, понятно: не нужно париться с освобождением ресурсов, сборкой мусора, не надо бояться, что какой-нить хендл повторится (новому будет выделен тот, что был у старого). Многие так делают, в т.ч. и СУБД разные (запись не удаляется до регламентных работ). В нашем случае реальное удаление произойдёт после перезапуска ФАРа. Вряд ли это - то, что Вы бы хотели (перезагрузить один макрос и перезапустить ФАР) .)
Post Reply

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