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

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 725
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 79 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.2.7z
(58.44 KiB) Downloaded 15 times
LuaManager.5.0.6.7z
Последняя опубликованная версия, поддерживающая Far 3.0.0.4000 и выше
(59.02 KiB) Downloaded 119 times
LuaManager.3.1.11.7z
Последняя версия, выполненная не в виде модуля
(50.56 KiB) Downloaded 316 times
Last edited by IgorZ on Tue 11 May, 2021 10:03, edited 16 times in total.
IgorZ
Posts: 725
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 79 times

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

Post by IgorZ »

Latest post of the previous page:

citRiks wrote: Fri 08 Jan, 2021 13:01
IgorZ,
Может почините, или скажите в чем я не прав?
  1. Практически всегда лучше выбирать конвенциональные способы работы вместо неконвенциональных. Исключения - когда конвенциональных нет вообще, или они неработоспособны.
  2. Данный скрипт разрабатывался, когда Шмуэль активно работал над ЛуаМакро, поэтому риск, что скрипт внезапно начнёт работать по-разному на разных версиях Фара, перестанет работать совсем или вообще сломает что-то из-за того, что Шмуэль поменял внутренности ЛуаМакро, был сочтён слишком большим. Сейчас Шмуэль свернул разработку, но он не клялся и даже не обещал, что никогда к ней не вернётся.
  3. У меня, на стареньком компьютере, меню (полное, включая и модули, и всё остальное) перестраивается за доли секунды. Кроме Вас, насколько помню, никто не жаловался на быстродействие. Уже очень давно.
Выводы:
  1. Рекомендую отследить, что именно у Вас вызывает такое снижение быстродействия.
  2. Пока что, возможный крохотный выигрыш в скорости не стоит поломки совместимости и потенциальных проблем. Да и времени на радикальную переделку тоже нет в обозримом будущем.
User avatar
citRiks
Posts: 1421
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 431 times
Been thanked: 90 times

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

Post by citRiks »

IgorZ wrote: Tue 19 Jan, 2021 10:56 Рекомендую отследить, что именно у Вас вызывает такое снижение быстродействия.
общее количество макросов, я предполагаю.
тем не менее, дизайн который не масштабируемый, это не совсем круто :)
что конечно не отменяет справедливость "нет времени и лично мне смысла это переделывать"
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1421
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 431 times
Been thanked: 90 times

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

Post by citRiks »

Как мне кажется, есть такой некритичный баг.
У вас есть настройка MaxDescWidth, которая в части случаев задается как MaxDescWidth,
и в другой части как MacroMaxDescWidth.
В результате эта настройка MaxDescWidth[/c], при задании через диалог настроек не сохраняeтся,
и всегда будет 0, что создает эффект что длинное description не делает wrap на следующую строку,
а уходит за пределы экрана.

Я так понимаю что правильное имя должно быть MaxDescWidth,
поскольку есть еще одна настройка целевая для той же цели MaxFileWidth.
Я у себя везде поменял MacroMaxDescWidth нa MaxDescWidth, и тогда получился правильный wrap.

2.) Еще я понял что тормоза происходят из-за сортировки,
так как функции сортировки тяжеленные.
Здесь я попытался их оптимизировать, какой-то эффект должен быть:
https://github.com/dr-dba/far-lua-manager
Compare_Funcs.Lua
Но основная проблема там с тем что поля по который сравнивается:
* могут быть множественными
* должны конвертиться в строку
* могут быть разной длинны как строка

Может быть надо им задавать постoянную длинну, равнoй длине самого длинного значения,
тогда не придется каждый раз по-многу раз пересчитывать

А можно вообще отменить сортировку, и тогда работает мгновенно
(кроме лазания по модулям)
Last edited by citRiks on Sun 02 May, 2021 18:50, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1421
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 431 times
Been thanked: 90 times

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

Post by citRiks »

UPDATE
https://github.com/dr-dba/far-lua-manager
Добавил еще оптимизации (и убавил багов),
сделал самые тяжелые сортировки (по всем полям),
и работать стало очень существенно быстрее,
хоть и все еще не мгновенно.

Актуально это все конечно только для тех у кого скриптов сотни.
В моем случае, я не удаляю не нужные скрипты,
а оставляю их без назначенной кнопчки,
чтобы их все еще было видно в инвентаре на всякий случай и на будущее.
Поэтому образуются сотни такого, и образуются тормоза
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
IgorZ
Posts: 725
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 79 times

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

Post by IgorZ »

citRiks wrote: Sun 02 May, 2021 18:47
Да, ошибка. Результат сочетания попеременных рефакторинга и оптимизации. MacroMaxDescWidth - старое название, было сохранено для совместимости с имеющимся значением в БД. Если совместимость не нужна, можно и так, как Вы, сделать. В общем, подумаю, заморачиваться ли совместимостью, и поправлю.
citRiks wrote: Sun 02 May, 2021 18:47
Спасибо, посмотрю.
User avatar
citRiks
Posts: 1421
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 431 times
Been thanked: 90 times

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

Post by citRiks »

IgorZ wrote: Fri 07 May, 2021 06:47Спасибо, посмотрю.
я сегодня еще добавил оптимизации, проверьте что у вас последний вариант из ГитХаба
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
IgorZ
Posts: 725
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 79 times

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

Post by IgorZ »

Версия 5.1.2 -
  • Исправлена ошибка с MaxDescWidth и MacroMaxDescWidth. Теперь читает, как из старой, так и из новой переменной БД, пришет в новую. Старую, если обнаружена, заменяет на новую. Спустя какое-то время обработка старой будет вообще выкинута.
  • Оптимизирована сортировка элементов для главного меню. Чем больше элементов в списке, и чем больше критериев сортировки, тем больше должен быть выигрыш времени. У меня на не самой большой коллекции скриптов время построения списка уменьшилось примерно втрое.
IgorZ wrote: Fri 07 May, 2021 06:47
citRiks wrote: Sun 02 May, 2021 18:47
Спасибо, посмотрю.
Посмотрел, в том числе, последнюю версию. Если б я был Богом, написание подобного кода включил бы в список смертных грехов. Мало того, что частично поломан алгоритм сортировки, так ещё и при попытке вставить код в программу для проверки скорости его работы он вызывает ошибку при запуске. В результате, я потратил далеко не лишнее своё время на его изучение, а в итоге всё равно пришлось всю оптимизацию сочинять самому.
User avatar
citRiks
Posts: 1421
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 431 times
Been thanked: 90 times

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

Post by citRiks »

IgorZ, Пытаюсь представить чего я там такого натворил.
Я убрал использование far.LIsUpper (закомментрировав),
кроме этого прегрешения, не могу представить чего еще плохого.
А в остальном алгоритм ровно тот же, цели менять алгоритм не было.
Со своей стороны, для меня серьезным прегрешением является,
например является пересоздание таблиц в каждом вызове,
которые неизменяемые нигде в коде, т.е. по сути константы.
(areas and groups в compare)
ну ладно, спора эта тема явно не стоит
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
John Doe
Бюрократ
Posts: 13181
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 45 times
Been thanked: 333 times

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

Post by John Doe »

IgorZ wrote: Tue 11 May, 2021 10:22 а в итоге всё равно пришлось всю оптимизацию сочинять самому.
Получается основную свою функцию код выполнил - мотивировал автора на улучшения)
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1421
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 431 times
Been thanked: 90 times

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

Post by citRiks »

IgorZ wrote: Tue 11 May, 2021 10:22 при попытке вставить код в программу для проверки скорости его работы он вызывает ошибку при запуске.
все что нужно для кода есть в гитхабе в том самом скрипте, и никаких внешних зависимостей,
ошибок быть не должно, я бы взглянул что за ошибка,
можете мне послать (или не посылать, на ваш выбор)
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
IgorZ
Posts: 725
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 79 times

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

Post by IgorZ »

John Doe wrote: Tue 11 May, 2021 11:47
IgorZ wrote: Tue 11 May, 2021 10:22 а в итоге всё равно пришлось всю оптимизацию сочинять самому.
Получается основную свою функцию код выполнил - мотивировал автора на улучшения)
Да нет, мотивацией послужила жалоба на быстродействие+сообщение об ошибке (без него я бы, скорее всего не стал заниматься оптимизацией, а так, раз уж полез в код, то заодно и посмотрел, что там можно сделать.
citRiks wrote: Tue 11 May, 2021 11:47 IgorZ, Пытаюсь представить чего я там такого натворил.
Поломана обратная сортировка - это о порче алгоритма. А главное - если взять предоставленный Вами код и вставить в соответствующее место в LuaManager, при проверке LuaCheck выдаст кучу предупреждений, а при запуске LuaManager будет падать.

P. S. Странно. Почему-то нет кнопки цитирования на последнем сообщении; на остальных по-прежнему есть. Раньше, сколько мне помнится, была.
User avatar
citRiks
Posts: 1421
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 431 times
Been thanked: 90 times

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

Post by citRiks »

IgorZ wrote: Tue 11 May, 2021 12:07 Поломана обратная сортировка - это о порче алгоритма
она не поломана, она урезана, - убрана обратная сортировка.
может быть возвращена обратно простым раскомментированием.
я думаю что вы не все скопировали, упустив например этот блок:

опять же, как я считаю опубликованный мною код - 100% самодостаточный,
ничего лишнего не содержит, и, что называется, "straightforward logic".
при этом мне интересна его оценка Вами, которого вас я глубокo уважаю как одного из ветеранов фароводства и луаведения.
и к сожалению, оценка "все плохо" не является слишком информативной :)
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
John Doe
Бюрократ
Posts: 13181
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 45 times
Been thanked: 333 times

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

Post by John Doe »

IgorZ wrote: Tue 11 May, 2021 12:07 P. S. Странно. Почему-то нет кнопки цитирования на последнем сообщении; на остальных по-прежнему есть. Раньше, сколько мне помнится, была.
viewtopic.php?p=166481#p166481
https://t.me/FarManager — Telegram чат
IgorZ
Posts: 725
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 79 times

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

Post by IgorZ »

citRiks wrote: Tue 11 May, 2021 12:24
IgorZ wrote: Tue 11 May, 2021 12:07 Поломана обратная сортировка - это о порче алгоритма
она не поломана, она урезана, - убрана обратная сортировка.
То есть, сознательно поломана.
citRiks wrote: Tue 11 May, 2021 12:24 я думаю что вы не все скопировали, упустив например этот блок:
Увы Вам. Я не настолько глуп, чтобы даже не попытаться вставить всё целиком. И кстати, данный код тоже вызывает предупреждения.
citRiks wrote: Tue 11 May, 2021 12:24 опять же, как я считаю опубликованный мною код - 100% самодостаточный,
ничего лишнего не содержит, и, что называется, "straightforward logic".
Он нерабочий. При попытке использовать его получаем ошибку, при проверке - кучу предупреждений. То есть, Вы, похоже, даже не попытались проверить работоспособность своего творения. Если же в Вашем окружении он всё-таки работает, значит он 100% несамодостаточный. Об остальном в такой ситуации говорить уже излишне.
citRiks wrote: Tue 11 May, 2021 12:24 при этом мне интересна его оценка Вами, которого вас я глубокo уважаю как одного из ветеранов фароводства и луаведения.
и к сожалению, оценка "все плохо" не является слишком информативной :)
Она достаточно информативна, чтобы Вы, при желании, занялись его совершенствованием. А у меня, увы, нет свободного времени на правку и отладку ещё и чужого кода. У меня, к сожалению, даже на свои проекты его не хватает.
Post Reply

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