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

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

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

Postby IgorZ » Thu 25 Apr, 2013 04:00

Данный скрипт содержит следующие макросы:

  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 скрипта из редактируемого файла.
    Клавиша вызова по умолчанию: CtrlF12.
  8. Вставка строки guid в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlU.
  9. Перезагрузка всех скриптов.
    Клавиша вызова по умолчанию: CtrlF9.

Требуемая версия Far 3.0.4000+.

Attachments
LuaManager.3.1.8.7z
(50.4 KiB) Downloaded 54 times
Last edited by IgorZ on Thu 27 Oct, 2016 08:48, edited 61 times in total.

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Thu 16 Jun, 2016 10:12

Latest post of the previous page:

buniak_a_h wrote:
IgorZ wrote:Source of the post для действий, не уничтожающих информацию
В том-то и дело, что фильтр создаёт видимость уничтожения информации, и если его случайно (?) сохранить, то при следующем вызове макроса создаётся впечатление, что «всё пропало, шеф!»
Вообще-то, наличие фильтрации отображается на экране. Видимо, и на это придётся обратить внимание в справке.
buniak_a_h wrote:
IgorZ wrote:Source of the post Что Вы имеете в виду?
Я имел в виду добавить сочетание, по которому вызывается окошко, доступное по F9 из макроса. Отличие от того F9, что вызывается из макроса, в одном: из макроса кнопка "сохранить" действует только на эту сессию, не запоминается в БД. А из "отдельного окна" - сохранять настройки в базе.
Нажмите F1 в главном окне и прочитайте внимательно справку. Все действия по настройке делаются с помощью горячих клавиш и не сохраняются напостоянно. Возможно, Вас это устроит даже больше, чем то, что Вы предлагаете.
buniak_a_h wrote:
IgorZ wrote:Source of the post А как можно случайно нажать Enter?
Работал. И сейчас изредка приходится. Проблем не вызывает. Видимо, каждому - своё.

HaRT wrote:
IgorZ wrote:Source of the post Если сумеете предложить более гибкую и удобную систему - я Вас слушаю.
Я согласен, что пропадание всего настроенного списка при переключении верхнего пункта пугает и обескураживает. Предлагаю, чтобы вместо удаления последующие пункты „засеривались“ — так пользователю будет сразу понятно, что произошло. Ну и не помешает возможность удалять отдельные поля из списка сортировки, а также передвигать их вверх/вниз.
Это потребует полной переделки диалога. Подумаю, но не факт, что возьмусь.

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

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

Postby John Doe » Thu 16 Jun, 2016 10:35

IgorZ wrote:Source of the post Вообще-то, наличие фильтрации отображается на экране.
Этого мало, имхо.
Например в MacroBrowserAlt фильтрация снимается по Esc.
И по умолчанию не сохраняется между вызовами. Но по отдельному шорткату можно вызвать с прошлым фильтром.

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Thu 16 Jun, 2016 12:21

John Doe wrote:
IgorZ wrote:Source of the post Вообще-то, наличие фильтрации отображается на экране.
Этого мало, имхо.
Например в MacroBrowserAlt фильтрация снимается по Esc.
Несколько независимых одновременно наложенных фильтров снимать по одной клавише нехорошо. Можно, конечно, для каждого фильтра сделать отдельную клавишу сброса. Наверное, так и сделаю. Не помешает.
P. S. Ах да, уточню: отображается не только сам факт наличия фильтра, но и его значение.
John Doe wrote:И по умолчанию не сохраняется между вызовами.
LuaManager позволяет менять настройки постоянно - из диалога конфигурации - и временно - из того же диалога конфигурации и главного меню (шорткатами, описано в справке). Именно последним способом чаще всего на практике и пользуюсь.
John Doe wrote:Но по отдельному шорткату можно вызвать с прошлым фильтром.
С которым из? Их несколько: по областям (для макросов), группам (для эвентов), маскам поиска (для модулей), клавишам (для макросов) и имени файла (для всех). И все их комбинации. Так что проще, пожалуй, заново наложить нужные.

User avatar
HaRT
Moderator
Posts: 7884
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

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

Postby HaRT » Thu 16 Jun, 2016 12:27

IgorZ wrote:Source of the post Это потребует полной переделки диалога. Подумаю, но не факт, что возьмусь.
Если всё же возьмётесь, то вот ещё соображения: я повспоминал, какая настройка сортировки мне была удобна в каких-то других системах, и пришёл к выводу, что она более-менее одинаковая. Можно выбрать несколько полей/свойств, расположить их в нужном порядке и для каждого выбрать возрастание/убывание. Таким образом, по (разумному) минимум требуется возможность вставить поле в текущую позицию (все последующие смещаются вниз) и удалить выбранное поле; хорошо бы иметь возможность двигать выбранное поле вперёд-назад по списку. Ну и, повторюсь, для каждого поля выбор возрастание/убывание.
Выбор полей можно делать так, как сейчас, — из выпадающего списка для каждого поля, — а можно иметь один список (незадействованных полей) слева, другой (задействованных) справа, и между ними кнопки, чтобы перекидывать из одного в другой. Но можно сделать и относительно спартанский вариант — выкатить полный список полей с трёхпозиционными чекбоксами и возможностью ручной перетасовки. “[?]” — поле не влияет на сортировку; “[x]” — сортировка по возрастанию данного поля; “[ ]” — сортировка по убыванию данного поля.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Postby John Doe » Thu 16 Jun, 2016 12:41

IgorZ wrote:Source of the post Несколько независимых одновременно наложенных фильтров снимать по одной клавише нехорошо.
Имхо нормально.
IgorZ wrote:Source of the post позволяет менять настройки постоянно - из диалога конфигурации
Собственно тут логично не снимать даже, а именно возвращать к тем, что запомнены постоянно.
IgorZ wrote:
Но по отдельному шорткату можно вызвать с прошлым фильтром.
Source of the post С которым из?
С тем, что был активен на момент закрытия. Со всей комбинацией фильтров.

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Thu 16 Jun, 2016 21:27

Я прошу прощения, видимо я что-то опять неправильно понял...
Нажал Ins, заполнил всё, что надо. Написал функцию раздела action (то что под цифрой 9), проверил синтаксис. Сохранил (не SaveAs, а просто F2). Оно появилось в окне под "9". Потом нажал на {OK}
1. Получил ошибку в макросе. Диалог типа Ok/Edit - выбрал Edit
2. В редакторе открылся файл LuaManager.lua, там всё перемешано, моя функция вставилась куда-то в середину таблицы - аргумента Macro.
3. Вышел, вызвал из командной строки macro:load - всё ок. Того, что я писал, нигде не нашёл. Дата файла LuaManager.lua - новая.
Что я делал не так? И где искать то, что я писал?
Last edited by buniak_a_h on Thu 16 Jun, 2016 21:37, edited 1 time in total.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Thu 16 Jun, 2016 21:31

А! И,кстати, насчёт даты файла LuaManager.lua каждый раз, когда я жму в макросе Ins, дата меняется (даже если я не сохраняю - вообще ничего не делаю!) Я понимаю, это - не ошибка, а особенность, но пугает... Что я там наменял не ведая?...
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Fri 17 Jun, 2016 10:12

John Doe wrote:
IgorZ wrote:Source of the post Несколько независимых одновременно наложенных фильтров снимать по одной клавише нехорошо.
Имхо нормально.
IgorZ wrote:Source of the post позволяет менять настройки постоянно - из диалога конфигурации
Собственно тут логично не снимать даже, а именно возвращать к тем, что запомнены постоянно.
CtrlL в главном меню уже давно позволяет заново загрузить все настройки из БД. По-моему, это как раз то, о чём Вы говорите.
John Doe wrote:
IgorZ wrote:
Но по отдельному шорткату можно вызвать с прошлым фильтром.
Source of the post С которым из?
С тем, что был активен на момент закрытия. Со всей комбинацией фильтров.
Подумаю. Может, и сделаю, но не в этой версии. А то уже много всего накопилось, надо бы релиз выкатывать с тем, что сделано.

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Fri 17 Jun, 2016 10:12

buniak_a_h wrote:Я прошу прощения, видимо я что-то опять неправильно понял...
Нажал Ins, заполнил всё, что надо. Написал функцию раздела action (то что под цифрой 9), проверил синтаксис. Сохранил (не SaveAs, а просто F2). Оно появилось в окне под "9". Потом нажал на {OK}
Всё правильно. За одним исключением: судя по дальнейшему описанию, Вы пытались вставить макрос в LuaManager.lua (по Ins новый скрипт вставляется в тот файл, в котором находится скрипт под курсором). Это приведёт к тому, что при обновлении LuaManager на новую версию вставленный макрос потеряется. Лучше в таких случаях пользоваться своим файлом.
И кстати, при редактировании .lua-файла можно вставить скрипт в позицию курсора, нажав CtrlF11. В принципе, это всё описано и в справке LuaManager, и в первом посте темы, и в начале LuaManager.lua.
buniak_a_h wrote:1. Получил ошибку в макросе. Диалог типа Ok/Edit - выбрал Edit
Здесь без текста ошибки не могу ничего сказать.
buniak_a_h wrote:2. В редакторе открылся файл LuaManager.lua, там всё перемешано, моя функция вставилась куда-то в середину таблицы - аргумента Macro.
3. Вышел, вызвал из командной строки macro:load - всё ок. Того, что я писал, нигде не нашёл. Дата файла LuaManager.lua - новая.
Что я делал не так? И где искать то, что я писал?
А не был ли увас на тот момент уже открыт LuaManager.lua в этом же или другом экземпляре Far? Такой результат можно получить, если у Вас был открыт файл в редакторе, затем по Edit Вы открыли его вновь, закрыли, а потом сохранили текст из первоначально открытого редактора.
И да, при таком варианте событий искать то, что Вы писали, бесполезно. Разве что в Вашей памяти...
buniak_a_h wrote:А! И,кстати, насчёт даты файла LuaManager.lua каждый раз, когда я жму в макросе Ins, дата меняется (даже если я не сохраняю - вообще ничего не делаю!) Я понимаю, это - не ошибка, а особенность, но пугает... Что я там наменял не ведая?...
А это - ошибка. Впрочем, кажется, не фатальная - я просто зачем-то записываю в файл его же старое содержимое. Надо поправить, а то некрасиво.

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

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

Postby John Doe » Fri 17 Jun, 2016 10:19

IgorZ wrote:Source of the post По-моему, это как раз то, о чём Вы говорите.
Не совсем, т.к. для меня ключевой момент именно в том, чтобы делать это по Esc (по той же клавише которой пользователь закрывает список).
Собственно, управление вашим Менеджером вообще сильно отличается от управления моим Браузером, поэтому не утверждаю, что должно быть как у меня)

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Fri 17 Jun, 2016 11:17

Версия 3.1.0 - При выводе справки используется язык справки фара. Изменена логика настройки ширины колонок - описание в справке. Тем, у кого ширина описания была задана отрицательным числом: для сохранения старого поведения нужно исправить ширину колонки описания на положительное число, большее ширины экрана. 1000, думаю, хватит ;). Изменена логика работы с фильтром клавиш на более разумную. Рефакторинг. Доработана справка, читайте и высказывайтесь. Мелкие правки. Добавлены новые комбинации клавиш, так что ознакомьтесь в той же справке.

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Fri 17 Jun, 2016 11:24

John Doe wrote:
IgorZ wrote:Source of the post По-моему, это как раз то, о чём Вы говорите.
Не совсем, т.к. для меня ключевой момент именно в том, чтобы делать это по Esc (по той же клавише которой пользователь закрывает список).
Не люблю, когда несколько разных функций навешены на одну и ту же клавишу. Особенно, когда это Enter или Esc. Чревато.
John Doe wrote:Собственно, управление вашим Менеджером вообще сильно отличается от управления моим Браузером, поэтому не утверждаю, что должно быть как у меня)
Личность автора неизбежно накладывает отпечаток. Я вот (сугубо субъективно) считаю, что вариант с Esc помимо прочего ещё и неудобен тем, что для выхода из состояния с наложенным фильтром надо жать клавишу два раза.

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Fri 17 Jun, 2016 12:47

IgorZ wrote:Source of the post (по Ins новый скрипт вставляется в тот файл, в котором находится скрипт под курсором)
Файл LuaManager.lua не был открыт. В панели был открыт директорий с моими исходниками (на Паскале), в редакторе был открыт идин из моих исходников. Решил сделать временный скрипт для однообразной работы. Вызвал Ваш макрос горячей клавишей (не закрывая моего исходника, нажал Ins, т.к в хелпе написано, что это - создание нового скрипта. Думал - либо в конце после "Ок" спросит имя файла для получившегося, либо сгенерирует временное имя и запишет скрипт в какой-нить фиксированный директорий типа %FARPROFILE%\Macros\Scripts\LuaManager\ . Видимо, хелп некорректен всё же...
IgorZ wrote:Source of the post Здесь без текста ошибки не могу ничего сказать.
Так если lua-файл перемешан, то там может быть любая диагностика! Это - следствие того, что вновь созданный текст вставился в LuaManager.lua
IgorZ wrote:Source of the post А не был ли у вас на тот момент уже открыт LuaManager.lua
В этом - точно нет. В другом - возможно, я пытался по нему определить, что делать. Но вроде как они не взаимодействуют... Даже через _G
Впрочем, сейчас проверил. Точно не открыт макрос. Точно в этом каталоге ни одна панель не открыта. Диагностика такая:

Code: Select all

...n Data\Far Manager\Profile\Macros\scripts\LuaManager.lua:2549:
'(' expected near 'qqq'

IgorZ wrote:Source of the post А это - ошибка
Пометил файл RO - получаю вылет :-)
Last edited by buniak_a_h on Sat 18 Jun, 2016 22:26, edited 1 time in total.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

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

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

Postby John Doe » Sat 18 Jun, 2016 10:48

RCtrlF11 / Insert command line prefix into current .lua/.moon file
Если в диалоге нажать Enter не заполняя поля, то получим ошибку:

Code: Select all

LuaManager.lua:1647: attempt to concatenate field 'Prefix' (a nil value)

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Mon 20 Jun, 2016 10:01

buniak_a_h wrote:Вызвал Ваш макрос горячей клавишей (не закрывая моего исходника, нажал Ins, т.к в хелпе написано, что это - создание нового скрипта. Думал - либо в конце после "Ок" спросит имя файла для получившегося, либо сгенерирует временное имя и запишет скрипт в какой-нить фиксированный директорий типа %FARPROFILE%\Macros\Scripts\LuaManager\ . Видимо, хелп некорректен всё же...
Скорее, не хелп, а диалог. Надо бы выводить имя файла, куда вставляется, а лучше, дать возможность его редактировать.
buniak_a_h wrote:Диагностика такая:

Code: Select all

...n Data\Far Manager\Profile\Macros\scripts\LuaManager.lua:2549:
'(' expected near 'qqq'
В общем, вставилось в конец LuaManager.lua, как я и предполагал (и как и положено в данной ситуации), но что-то оказалось некорректно. Возможно, в записанном Вами макросе. Точнее не скажу.
buniak_a_h wrote:
IgorZ wrote:Source of the post А это - ошибка
Пометил файл RO - получаю вылет :-)
Ага, на такое я не проверял. Спасибо, поправлю такие моменты.

IgorZ
Posts: 418
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 5 times

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

Postby IgorZ » Mon 20 Jun, 2016 10:02

John Doe wrote:RCtrlF11 / Insert command line prefix into current .lua/.moon file
Если в диалоге нажать Enter не заполняя поля, то получим ошибку:

Code: Select all

LuaManager.lua:1647: attempt to concatenate field 'Prefix' (a nil value)
Ага, понял. Забыл поправить после измеенения имени. Если неохота ждать очередного релиза, надо просто заменить в LuaManager.lua все L.Prefix на L.CommandLine.

buniak_a_h
Posts: 245
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 28 times
Been thanked: 3 times
Contact:

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

Postby buniak_a_h » Mon 20 Jun, 2016 12:34

IgorZ wrote:Source of the post что-то оказалось некорректно. Возможно, в записанном Вами макросе. Точнее не скажу.
Макрос сделал простейший:

Code: Select all

local function qqq()
far.Show('qqq')
end
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании


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

Who is online

Users browsing this forum: No registered users and 3 guests