Набор макросов от SimSU

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Набор макросов от SimSU

Post by SUSim »

Вычисление математических выражений. © SimSU
Календарь. © SimSU
Выполнение команды через меню пользователя. © SimSU
Получение названия клавиши. © SimSU
Ускорение скроллинга колёсиком мышки. © SimSU
Меню плагинов с последнего пункта. © SimSU
Вставка разделённых путей и имён файлов. © SimSU
Редактирование строки ввода диалога в редакторе. © SimSU
Первая строка всегда на экране полезно в качестве заголовков столбцов. © SimSU
Создание резервной копии редактируемого файла. © SimSU
Открытие редактора из редактора. © SimSU
Вставка шаблона мароса. / Insert macro template. © Shmuel SimSU
Простое импортирование макроса FAR. © SimSU
Список завершения LuaMacro. © SimSU
Работа мышкой с выделением в редакторе. © SimSU
Перемещение строк в редакторе. © SimSU
Два синхронных редактора. © SimSU
Быстрый поиск в редакторе. © SimSU
Комментирование/разкомментирование помеченного блока. © SimSU
Памятливый редактор. © SimSU
Работа с помеченным блоком в редакторе. © SimSU
Подсветка табуляции и перевода строк. © SimSU
Умный Del. © SimSU
Умные Home & End. © SimSU
Лёгкое изменение размеров табуляции. © SimSU
Транспонирование (строки превращаются в столбцы) текста. © SimSU
Удаление конечных пробелов и символов табуляции и пустых строк. © SimSU
Завершения слов в редакторе. © SimSU
Запуск приложения в DOSBox [http://www.dosbox.com]. © SimSU
Работа с файлами через контекстное меню (плагин EMenu). © SimSU
Работа с файлами через FastCopy (FastCopy.exe © http://ipmsg.org/tools/fastcopy.html). © SimSU
работа с LNK-файлами (плагин LnkView). © SimSU
Переход по вкладкам плагина Panel Tabs (плагин Panel Tabs © Максим Русов) © SimSU"
Работа с файлами через TeraCopy (TeraCopy.exe © http://www.codesector.com). © SimSU
Визуальное сравнение файлов (плагин VisualCompare © Максим Русов). © SimSU
Работа с псевдонимами (синонимами). © SimSU
Смена диска активной панели RCtrl+стрелки. © SimSU
Работа в командной строке. © SimSU
Удаление резервных и временных файлов. © SimSU
Редактирование описания в файле. © SimSU
Фавориты (избранные папки и плагины) в меню дисков. © SimSU
Работа с датой/временем файлов/папок. © SimSU
Возврат в предыдущую папку, отмена возврата. © SimSU
Включение/отключение поиска на панели после отпускания RAlt. © SimSU
Сохранение/восстановление выделения файлов. © SimSU
Такой же путь & Текущая папка. © SimSU
Выделение файлов аля Explorer. © SimSU
Работа с пометкой файлов. © SimSU
Расширение функциональных клавиш копирования, переноса, создания папки. © SimSU
При смене панели ширина активной панели остается постоянной. © SimSU
Attachments
SimSU20230526.7z
(83.62 KiB) Downloaded 204 times
SimSU20230324.7z
(78 KiB) Downloaded 146 times
Last edited by SUSim on Fri 26 May, 2023 19:11, edited 22 times in total.
SimSU ··· ·· -- ··· ··-
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Набор макросов от SimSU

Post by HaRT »

Latest post of the previous page:

Фар есть инструмент, а не нянька. © 2009 DrKnS
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

Набор макросов от SimSU

Post by Volodya »

С прошедшим днём рождения!
Спасибо за правки/новые макросы.
Пара поправок/пожеланий.
Shell_FileTime.lua
У меня добавлено: скопировать времена текущего файла на все выбранные файлы и "Скопировать даты на все файлы с именами как у выбранных файлов". По последнему пункту объясню что это и для чего нужно. Вы обрабатываете фотографии и у вас появляются файлы с дополнениями в имени. Например, начальные файлы были DSC_1234.raw и DSC_1235.raw. Появились файлы DSC_1234_mod1.jpg, DSC_1234_mod2.jpg,DSC_1234_1920x1080.jpg и DSC_1235_mod1.jpg. DSC_1235_BW.jpg. Моя (с помощью BAX) добавка позволяет скопировать время со всех оригинальных файлов на новые. Обратите внимание, что расширения не учитываются.
Shell_SelectingEx.lua
Описка октивной панели -> должно быть активной.
Добавить пункт: "Перейти к первому файлу". Когда нужно? Есть много директорий и много файлов. Ты стоишь где-то посередине этого моря. Чтобы перейти к первому файлу сейчас я делаю следующее. Выбираю все файлы и перехожу к первому выделенному. Развыделяю файлы. При этом теряется старое выделение. Хотелось бы избежать этого.
У меня добавлено два действия. Скопировать/переместить выделенные файлы в поддиректории с именами YYYY-MM-DD по дате файла
Есть отдельный макрос, написанный BAX, который выделяет все файлы с датами, как у отмеченных.
Добавить к "Пометка тех же файлов на пассивной панели что и на активной" возможность выбора как описано выше.
Plugin_VisualCompare.lua
Позволяет сравнивать два файла на разных панелях. Хотелось бы иметь действие для сравнения текущего и такого же файла на второй панели, без предварительного перепрыгивания на него. Сравнивал новые и старые ваши макросы. Перемещаешься в новых и надо перейти на панель со старыми, выбрать одноименный файл и только после это сравнивать. Лишние действия.
Last edited by Volodya on Fri 24 Mar, 2023 23:56, edited 1 time in total.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Набор макросов от SimSU

Post by Shmuel »

Yegor wrote: Fri 24 Mar, 2023 19:25 Если курсор стоит на дне от 1 до 9 в Марте 2023, то появляется артефакт на этом же дне след месяца:
Исправляется в строке 166:

Code: Select all

-        elseif day.wDay==dT.wDay then
+        elseif day.wMonth==dT.wMonth and day.wDay==dT.wDay then
P.S. Возможно, что автор сделал это сознательно, как фичу, - тогда и исправлять ничего не надо.
Last edited by Shmuel on Sat 25 Mar, 2023 10:07, edited 1 time in total.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Набор макросов от SimSU

Post by SUSim »

Shmuel, Спасибо поправил 166 стоку ;) я так и не решил тогда фича это или нет, ну раз кого-то смущает...
А вообще, этот макрос писался, в основном, из спортивного интереса - окно диалога с автоматической генерацией полей.
Я им не пользуюсь, ну, точнее пользуюсь, только функциями Today() и IncDay(DateTime,Days)

Присылайте пожелания и исправленные/измененные/дополненные макросы и я отредактирую, как время будет...
Last edited by SUSim on Mon 27 Mar, 2023 13:34, edited 4 times in total.
SimSU ··· ·· -- ··· ··-
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Набор макросов от SimSU

Post by SUSim »

Volodya, Присылай исправленные макросы, и лучше целиком :good:
Last edited by SUSim on Sat 25 Mar, 2023 10:35, edited 1 time in total.
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Набор макросов от SimSU

Post by Shmuel »

SUSim wrote: Sat 25 Mar, 2023 10:25 Кстати хотел убрать разделитель и просто закомментировал строку 123
После этого все номера элементов диалога "поехали".
Поскольку в скрипте везде вызовы функции far.SendDlgMessage идут с указанием номеров элемента, то такое закомментирование не может работать в принципе. Другое дело, когда диалог построен с использованием специального модуля, там, как правило, можно закомментировать элементы без тяжёлых последствий.

Что касается падения Фара - у него где-то не хватает защиты от некорректного вызова far.SendDlgMessage.

P.S. Насчёт "поехавших" номеров элементов касательно данного скрипта я был не прав.
Но при закомментировании образуется дырка на позиции 2, а это значит, что выражение #Items может работать неправильно.
Last edited by Shmuel on Sat 25 Mar, 2023 10:48, edited 2 times in total.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Набор макросов от SimSU

Post by Shmuel »

Shmuel wrote: Sat 25 Mar, 2023 10:42 Что касается падения Фара - у него где-то не хватает защиты от некорректного вызова far.SendDlgMessage.
Опять был неправ. Это падение при инициализации диалога. Не думаю, что Фар может защититься от любого мусора на входе.

@Far Group: предлагаю сделать защиту в LuaFAR.
patch.diff
(348 Bytes) Downloaded 44 times
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Набор макросов от SimSU

Post by John Doe »

SUSim wrote: Sat 25 Mar, 2023 10:25 Присылайте пожелания
Common_Calculator.lua

Editor_FromEditor.lua

Editor_Remarks.lua

(...to be continued)
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Набор макросов от SimSU

Post by John Doe »

Для скриптов, которые попадутся под руку, диффы я приложу. Но общие соображения такие:
  1. (На примере Editor_MoveStr.lua, но этот ошибочный паттерн встречается и в других скриптах:)

    Code: Select all

    local function filename(args)
      if args[1]=="Up"   then return Up() end
      if args[1]=="Down" then return Down() end
    end
    На самом деле вместо args передаётся vararg, поэтому надо записать как-то так:
  2. В некоторых случаях имеет смысл предусмотреть значение по-умолчанию, например:
  3. Кроме того, может быть удобно не различать регистр, например:
  4. И последнее. Для многих скриптов сейчас вызов из командной строки как-бы предусмотрен, но не слишком полезен, т.к. работа основной функции завязана на дополнительные макросы (которые при таком вызове конечно же не подгружаются).
    Пример: Editor_Pair.lua
    Решением могли бы стать динамические макросы (far.MacroAdd).
    (Просто идея, я понимаю что подобная доработка может быть вам лично просто не нужна)
https://t.me/FarManager — Telegram чат
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

Набор макросов от SimSU

Post by Volodya »

SUSim wrote: Sat 25 Mar, 2023 10:35 исправленные макросы
SelAllDate - макрос написанный BAX
Два других - мною совместно с BAX.
Attachments
SelAllDate.lua
(1.2 KiB) Downloaded 44 times
Shell_FileTime.lua
(10.07 KiB) Downloaded 45 times
Shell_SelectingEx.lua
(19.62 KiB) Downloaded 46 times
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Набор макросов от SimSU

Post by John Doe »

Начал было смотреть Shell_FileTime.lua
Для использования CopyTimes/PasteTimes из командной строки нужна ещё доработка - сохранять bufFileTimes либо где-то глобально (либо в базе Luamacro).

Однако я обнаружил что в данном наборе макросов вообще многое сильно не оптимально, например:
  1. Code: Select all

      if Area.Shell then
    Это условие во всех местах лишнее, т.к. макрос и так назначен на область Shell
  2. В коде гремучая смесь из макроапи и плагинового, без реальной необходимости.
    При том в ряде случаев с плагиновым апи получается лаконичнее: вместо достаточно использовать
    Снятие пометки с обработанных файлов тоже очень громоздко и избыточно с макроапи.
  3. Но главная проблема: копипаста. Один и тот же код для итерации по выбранным элементам панели повторяется в каждом макросе.
    Код сам по себе довольно громоздкий, и надо напрячься, чтобы рассмотреть что реально делает каждый макрос и чем они отличаются.
    Намного удобнее как-то так:
P.S.
И ещё небольшой недостаток: макросы не работают во временной панели (как и в прочих плагиновых панелях с реальными именами файлов).
Для получения полного имени файла вместо склейки строк лучше использовать far.ConvertPath.
(Кстати с её помощью можно и родительские директории вычислять).
Last edited by John Doe on Sun 26 Mar, 2023 23:07, edited 1 time in total.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Набор макросов от SimSU

Post by Shmuel »

Shmuel wrote: Sat 25 Mar, 2023 12:07 @Far Group: предлагаю сделать защиту в LuaFAR.
Можно назвать это защитой, но фактически это багфикс. Так что рекомендую применить.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Набор макросов от SimSU

Post by SUSim »

Common_Calendar.lua
Yegor wrote: Fri 24 Mar, 2023 19:25 А можно тогда уже немного эстетики добавить:
Эстетики добавил, но с цветами заморачиваться не буду (я придерживаюсь минимализма при требуемой функциональности). А красивый календарик - dimfish_Calendar.
я также добавил настройку формата даты и первого дня недели.
John Doe wrote: Sat 25 Mar, 2023 12:47 SUSim писал(а): ↑Сб 25 мар, 2023 12:25
Присылайте пожелания
Common_Calculator.lua может так и кстати где почитать про sh и _cmdline
Editor_FromEditor.lua
Editor_Remarks.lua
продолжение следует
SimSU.7z
сhangelog.txt
Common_Calculator.lua
Common_Calendar.lua
Editor_FromEditor.lua
Editor_Remarks.lua
(19.5 KiB) Downloaded 45 times
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Набор макросов от SimSU

Post by John Doe »

  • SUSim wrote: Mon 27 Mar, 2023 09:57 Common_Calculator.lua может так
    Нет, так не очень
    SUSim wrote: Mon 27 Mar, 2023 09:57 и кстати где почитать про sh и _cmdline
    Эти идентификаторы присутствуют в окружении скрипта, если он запущен с помощью Luashell
  • Editor_FromEditor.lua - переменная FileName объявлена далековато от места её использования.
    condition=function(_,data) FileName=GetFileName() return FileName end; - аргументы (_,data) не используются
    Вызывать EditFile(...) из командной строки смысла мало, считаю что достаточно иметь доступ к основной функции скрипта.
  • Editor_Remarks.lua - - лучше оставить мой вариант, поскольку _cmdline не будет, если скрипт исполняется через lua:@filename. Про защиту от неверного аргумента см. выше.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Набор макросов от SimSU

Post by SUSim »

Volodya, Проверь
Attachments
Shell_SelectingEx.lua
только для проверки!
(21.87 KiB) Downloaded 44 times
Last edited by SUSim on Mon 27 Mar, 2023 13:32, edited 1 time in total.
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Набор макросов от SimSU

Post by John Doe »

SUSim, я дополнил своё предыдущее сообщение.

И ещё хочу спросить.
Во всех скриптах предусмотрен вызов в качестве модуля (если я верно понимаю), например:

Code: Select all

if not Macro then return {Editor_Remarks=Editor_Remarks} end
Для чего тут обрамлять всё в ещё одна таблицу? Ведь Editor_Remarks уже таблица.
(касается всех скриптов)
https://t.me/FarManager — Telegram чат
Post Reply

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