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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 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.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Вместо ECSTATE_MODIFIED советую пользовать ECSTATE_SAVED.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

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

Состояние Modified остаётся даже после сохранения.
Интересно для чего это, и как можно использовать...
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Ещё одна ошибка: при выводе диалога, если пользователь нажимает Esc, производится сохранение файла и перезагрузка макросов.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Исправил, спасибо
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

В нынешнем виде, если в тексте встречается foo=45, то при исполнении будет установлена глобальная переменная _G.foo, что, наверное, нежелательно. Предотвратить это можно либо устанавливая окружение для функции f, либо используя far.MacroPost.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Изменил на setfenv(f,setmetatable({},{__index=_G}))()
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

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

User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Новые возможности макроса на CtrlEnter
  • Reload All без изменений
  • Дополнение для действияExecute: если скрипт возвращает значения, то они отображаются
  • Новое действие Locals: после выполнения отображает результирующие значения локальных переменных скрипта .
Отдельный макрос на CtrlShiftEnter (только при наличии выделения)
  • Выполнить выделенную часть скрипта и показать возвращённые значения.
    Перед запуском запрашиваются значения переменных (environment), их можно перечислить через запятую
Для новых функций требуется модуль Lua Explorer.
Остальное будет работать и без модуля.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Исправлены ошибки.
Вместо Locals теперь действие Variables: локальные переменные и окружение.
Отдельно обрабатываются случаи когда не удаётся получить переменные по причине преждевременного возврата из функции (в этом случае отображаются возвращённые значения)
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Обновление.

Отображение возвращаемых значений теперь осуществляется стандартной функцией far.Show.
При этом возможен дальнейший просмотр таблиц в Lua Explorer, для этого помимо самого модуля Lua Explorer также потребуется FAR 3 build >3784.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Исправлена загрузка модуля Lua Explorer
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

FAR3.0.3787. После обновления сабжа и запуска фар выводится сообщение: , скрипт le.lua лежит в Profile\Macros\scripts рядом со скриптом сабжа.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

le.lua надо скопировать в Macros\modules
Но да, ошибка таки присутствует, в строке 7 надо le_error() изменить на le_error
Исправил, спасибо.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

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

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