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

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

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

Post by John Doe » Fri 24 May, 2013 14:09

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

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

Shmuel
Posts: 5236
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Fri 24 May, 2013 14:18

Вместо ECSTATE_MODIFIED советую пользовать ECSTATE_SAVED.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Fri 24 May, 2013 14:28

В каких случаях это имеет значение?
А, вроде понял.

Состояние Modified остаётся даже после сохранения.
Интересно для чего это, и как можно использовать...

Shmuel
Posts: 5236
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Fri 24 May, 2013 14:41

Ещё одна ошибка: при выводе диалога, если пользователь нажимает Esc, производится сохранение файла и перезагрузка макросов.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Fri 24 May, 2013 14:45

Исправил, спасибо

Shmuel
Posts: 5236
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Sat 25 May, 2013 08:24

В нынешнем виде, если в тексте встречается foo=45, то при исполнении будет установлена глобальная переменная _G.foo, что, наверное, нежелательно. Предотвратить это можно либо устанавливая окружение для функции f, либо используя far.MacroPost.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Sat 25 May, 2013 18:52

Изменил на setfenv(f,setmetatable({},{__index=_G}))()

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Sun 26 May, 2013 20:39

Если в тексте (или выделении) отсутствуют определения макросов (Macro {...}) и обработчиков событий (Event {...}), то курсор устанавливается на кнопку Execute.


User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Mon 13 Jan, 2014 14:41

Новые возможности макроса на CtrlEnter
  • Reload All без изменений
  • Дополнение для действияExecute: если скрипт возвращает значения, то они отображаются
  • Новое действие Locals: после выполнения отображает результирующие значения локальных переменных скрипта .
Отдельный макрос на CtrlShiftEnter (только при наличии выделения)
  • Выполнить выделенную часть скрипта и показать возвращённые значения.
    Перед запуском запрашиваются значения переменных (environment), их можно перечислить через запятую
Для новых функций требуется модуль Lua Explorer.
Остальное будет работать и без модуля.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Tue 14 Jan, 2014 08:35

Исправлены ошибки.
Вместо Locals теперь действие Variables: локальные переменные и окружение.
Отдельно обрабатываются случаи когда не удаётся получить переменные по причине преждевременного возврата из функции (в этом случае отображаются возвращённые значения)

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Mon 27 Jan, 2014 15:54

Обновление.

Отображение возвращаемых значений теперь осуществляется стандартной функцией far.Show.
При этом возможен дальнейший просмотр таблиц в Lua Explorer, для этого помимо самого модуля Lua Explorer также потребуется FAR 3 build >3784.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Mon 27 Jan, 2014 20:45

Исправлена загрузка модуля Lua Explorer

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH » Tue 28 Jan, 2014 20:39

FAR3.0.3787. После обновления сабжа и запуска фар выводится сообщение: , скрипт le.lua лежит в Profile\Macros\scripts рядом со скриптом сабжа.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Tue 28 Jan, 2014 21:11

le.lua надо скопировать в Macros\modules
Но да, ошибка таки присутствует, в строке 7 надо le_error() изменить на le_error
Исправил, спасибо.

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Wed 29 Jan, 2014 13:29

Variables: функция стала проще и надёжнее (используется debug.hook). Теперь также отображаются возвращаемые значения (если есть)

User avatar
John Doe
Бюрократ
Posts: 11433
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 102 times

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

Post by John Doe » Sun 28 Aug, 2016 14:15

Обновление.
Из существенных изменений:
  • Поддержка Moonscript
  • Позиционирование на места ошибок
  • Добавляет в меню плагинов ряд пунктов .
    Настраивается опциями в начале файла, или настройками в пользовательском scriptscfg (пример прилагается)
  • Файл скрипта переименован

Post Reply

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