Менеджер Lua-скриптов для Farа

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 695
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Данный скрипт содержит следующие макросы:
  1. Выводит список всех Lua-скриптов Farа и позволяет манипулировать ими.

    Клавиша вызова по умолчанию: AltShiftF11.
  2. Вставка Lua/Moon скрипта (с выбором, какого типа) в редактируемый .lua/.moon файл.
    Клавиша вызова по умолчанию: LCtrlF11.
  3. Вставка Lua/Moon Macro в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  4. Вставка Lua/Moon Event в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  5. Вставка Lua/Moon MenuItem в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  6. Вставка Lua/Moon CommandLine в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  7. Вставка Lua/Moon PanelModule в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  8. Редактирование Lua/Moon скрипта из редактируемого файла.
    Клавиша вызова по умолчанию: CtrlF12.
  9. Вставка строки guid в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlU.
  10. Перезагрузка всех скриптов.
    Клавиша вызова по умолчанию: CtrlF9.
Требуемая версия Far 3.0.5210+.

Начиная с версии 4.0, скрипт выполнен в виде модуля и набора вызывающих макросов.

Attachments
LuaManager.5.1.1.7z
(58.36 KiB) Downloaded 37 times
LuaManager.5.0.6.7z
Последняя опубликованная версия, поддерживающая Far 3.0.0.4000 и выше
(59.02 KiB) Downloaded 90 times
LuaManager.3.1.11.7z
Последняя версия, выполненная не в виде модуля
(50.56 KiB) Downloaded 287 times
Last edited by IgorZ on Mon 18 May, 2020 06:26, edited 15 times in total.

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

Менеджер Lua-скриптов для Farа

Post by John Doe »

Latest post of the previous page:

sToLp wrote:
Wed 08 Nov, 2017 12:18
Поэтому, вероятно, целесообразно дополнить макрос вызова чем-то вроде
В результате LuaManager перестанет запускаться из этого меню.
С чего бы?

Рекомендую поступить наоборот.
Например измените приоритет конфликтующего макроса.
Или того макроса, который у вас реализует шоркаты в самом меню конфликта.

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Менеджер Lua-скриптов для Farа

Post by sToLp »

John Doe wrote:
Wed 08 Nov, 2017 12:49
Например измените приоритет конфликтующего макроса.
Для меня они не конфликтующие, а преднамеренно назначенные на данный шорткат. Для удобства их визуального выбора. Поэтому и приоритеты у них должны оставаться равными.
Или того макроса, который у вас реализует шоркаты в самом меню конфликта.
Не существенно какой шорткат может быть произвольно задан для срабатывания из меню выбора макросов. Само то меню выбора всё равно будет вызываться изначальным клавишесочетанием.

Поэтому на текущий момент мне представляется более удобным оставить таки в основном запускающем макросе ограничение на запуск макробраузера из меню выбора. И дополнительно сделать отдельный макрос для запуска LuaManager`а только из этого меню, но по несколько другому шорткату.

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

Менеджер Lua-скриптов для Farа

Post by John Doe »

Что-то мы друг друга не понимаем.
sToLp wrote:
Wed 08 Nov, 2017 12:18
При наличии других макросов, назначенных на AltShiftF11 (как у меня), выводится меню выбора, которое при повторных нажатиях шортката зацикливается.
Что вы имеете ввиду под "зацикливается?

Если макрос назначен срабатывать (во всех) меню, то неудивительно, что он срабатывает.
Что вы ожидаете второй раз нажимая тот же шорткат?

Второй (конфликтующий) макрос на ту же клавишу ведёт себя иначе? Почему?

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Менеджер Lua-скриптов для Farа

Post by sToLp »

John Doe wrote:
Wed 08 Nov, 2017 16:38
Что вы имеете ввиду под "зацикливается?
Вновь и вновь, и вновь ... вызывает всё то же меню выбора.
Если макрос назначен срабатывать (во всех) меню, то неудивительно, что он срабатывает.
Что вы ожидаете второй раз нажимая тот же шорткат?
Разумеется, это вполне ожидаемо. Но в данном конкретном случае не удобно. В данном конкретном случае хочется то чтобы макрос и в меню появлялся, и не возобновлял вызов этого же меню из него же.
Второй (конфликтующий) макрос на ту же клавишу ведёт себя иначе? Почему?
Он же вызван из другой макрообласти и не предназначен для вызова вновь из этой. В отличие от сабжевого.

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

Менеджер Lua-скриптов для Farа

Post by John Doe »

sToLp wrote:
Wed 08 Nov, 2017 16:57
Вновь и вновь, и вновь ... вызывает всё то же меню выбора.
Ну сначала понятно: это выбор между "Менеджером ..." и вашим "другим" макросом.
А если повторно нажать, то что в списке?

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Менеджер Lua-скриптов для Farа

Post by sToLp »

John Doe wrote:
Wed 08 Nov, 2017 17:08
sToLp wrote:
Wed 08 Nov, 2017 16:57
Вновь и вновь, и вновь ... вызывает всё то же меню выбора.
Ну сначала понятно: это выбор между "Менеджером ..." и вашим "другим" макросом.
А если повторно нажать, то что в списке?
Да. Вы правы! Похоже, что я где-то подзапутался. Вернул всё в изначальный вид и убедился, что при повторном нажатии вызывается LuaManager.
Спасибо большое за настойчивое разъяснение!

Дополнено:
Кажется, нашёл и причину своего нелепого заблуждения. В рабочем экземпляре Far`а было две версии макроса. Новая и предыдущая. facepalm2
Last edited by sToLp on Wed 08 Nov, 2017 18:12, edited 1 time in total.

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Менеджер Lua-скриптов для Farа

Post by sToLp »

Назначение одного и того же клавишесочетания нескольким макросам может происходить не только случайным образом. Такое преднамеренное действие позволяет активно использовать меню выбора макросов для визуализизации макросов и назначенных на них клавиш. В т.ч. составлять удобные контекстные меню. А для исключения "наслаивания" меню выбора макросов одного над другим в макрообласти Menu, кажется, удалось-таки подобрать подходящий способ:

Code: Select all

condition=function() local cmt=Object.Title; return mf.index(cmt,"Исполнить макрос: Menu")==-1 end;
-- кондишен для предотвращения "наслаивания" меню выбора макросов его повторными вызовами

IgorZ
Posts: 695
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Версия 4.0.4 -
  • Опциональное поле имени файла без пути.
    Может включаться быстрой клавишей и через меню конфигурации.
    • Через меню конфигурации можно отключить показ имени файла (длина=0), ограничить длину поля с обрезанием имени (длина<0) и ограничить длину с переносом остатка имени файла на следующие строки (длина>0).
    • С помощью быстрой клавиши (AltF) можно оперативно отключить показ поля имени файла или включить его, при этом имя файла будет выводиться в одну строку (ну, если оно не больше 1000 символов :)). Данные изменения действуют только на период текущего запуска LuaManager.
  • Доработано сохранение позиции в главном меню.
    Теперь, по идее, при почти любых действиях курсор будет оставаться на том же пункте меню (если тот не исчезнет с экрана).

IgorZ
Posts: 695
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Версия 5.0.0 -
  • Добавлена поддержка PanelModule.
  • Шаблоны для диалогов редактирования вынесены в отдельный файл "templates". Формат - lua.
  • При чтении параметра из БД и записи в БД производится автозамена переменных окружения FARPROFILE, FARLOCALPROFILE и FARHOME. То есть, при работе в списке будет фигурировать C:\Program files\FarManager\Profile\Macros\modules\?.lua, а в БД будет храниться %FARPROFILE%\Macros\modules\?.lua. Переносимость улучшится.
  • Более корректное определение номеров строк в .moon файлах. Если вкратце - стандартная функция не учитывает строки с комментариями.
  • Доработана индикация фильтрации в главном меню.
  • Пункты меню плагинов фильтруются по областям аналогично макросам. Раньше выводились все, независимо от состояния фильтра областей.
  • В целях единообразия показ/скрытие макросов и пунктов меню плагинов не из текущей области перенесён с CtrlH на AltH.
  • Тотальный рефакторинг. За годы доработок в коде накопились костыли, подпорки, подпорки костылей и костыли для подпорок. Изведены все (вроде бы).

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

Менеджер Lua-скриптов для Farа

Post by John Doe »

IgorZ wrote:
Thu 03 May, 2018 06:41
Если вкратце - стандартная функция не учитывает строки с комментариями.
Хотелось бы подробностей

IgorZ
Posts: 695
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

John Doe wrote:
Thu 03 May, 2018 07:26
IgorZ wrote:
Thu 03 May, 2018 06:41
Если вкратце - стандартная функция не учитывает строки с комментариями.
Хотелось бы подробностей
Вот как ожидаешь работу конвертора moon->lua и связанных с этим функций? Запоминает номера строк, преобразует, сохраняет соответствие исходных строк конечным. Потом, получив номер строки .lua-текста, соответствующая функция выдаёт номер строки в исходном .moon-тексте.
На самом же деле всё работает почти так: вначале конвертор выкидывает все строки, содержащие только комментарии, из исходного текста (вероятно, комментарии из строк с кодом тоже обрезаются, но на определение номеров строк это не влияет в любом случае). И только потом запоминает номера строк обескомментаренного .moon и далее по тексту. Что интересно, полностью пустые строки, не содержащие даже комментария, при конвертации не выбрасываются и учитываются в нумерации.
В результате, если, скажем, я получаю номер первой строки функции=200, с помощью errors.reverse_line_number получаю, что в исходнике.moon это строка 50, то чтобы получить реальную строку, надо отсчитать 49 строк, при этом пропуская, но не считая, строки, состоящие только из комментария. Во всяком случае, когда я стал высчитывать реальные строки в .moon-файлах именно по такому алгоритму, все ранее имевшиеся проблемы исчезли, и результат стал выдаваться точно, а не "куда-то туда".

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

Менеджер Lua-скриптов для Farа

Post by John Doe »

Наверно стоит сюда написать https://github.com/leafo/moonscript/issues

Shmuel
Posts: 6152
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 320 times

Менеджер Lua-скриптов для Farа

Post by Shmuel »

John Doe wrote:
Thu 03 May, 2018 12:10
Наверно стоит сюда написать https://github.com/leafo/moonscript/issues
Предварительно проверив, что это ещё не починили в репозитории.

IgorZ
Posts: 695
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 63 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

John Doe wrote:
Thu 03 May, 2018 12:10
Наверно стоит сюда написать https://github.com/leafo/moonscript/issues
Возможно, было бы неплохо, но для этого надо сначала убедиться, что в новых версиях (а в Far, как я понимаю, Moon не обновляется, так же, как Lua) это не исправлено, затем зарегистрироваться, писать, общаться - и всё это на английском, в котором я не особо силён: прочитать или написать примитивный текст смогу, но медленно, а в случае общения с носителем языка могу просто забуксовать из-за непонимания неформальных оборотов. Так что с радостью уступлю кому-либо более подкованному в английском, или же более заинтересованному в исправлении.

User avatar
zg
zero-gravity
Posts: 5844
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 153 times
Contact:

Менеджер Lua-скриптов для Farа

Post by zg »

IgorZ wrote:
Thu 03 May, 2018 12:25
что в новых версиях (а в Far, как я понимаю, Moon не обновляется, так же, как Lua)
в фар версия 0.5.0. на сайте новее я не вижу, обновляться на транк без достаточных оснований (возможно я что-то пропустил, всегда можно написать в соответствующей теме) — не вижу смысла.

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

Менеджер Lua-скриптов для Farа

Post by John Doe »

IgorZ wrote:
Thu 03 May, 2018 12:25
Так что с радостью уступлю кому-либо более подкованному в английском, или же более заинтересованному в исправлении.
Готов запостить, если напишете (в ЛС) текст на русском, с примитивным примером, который не требует фара для воспроизведения.
(Тут можно проверить http://moonscript.org/compiler/)

Post Reply

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