Набор макросов от 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
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Latest post of the previous page:

SUSim wrote: Mon 31 Jan, 2022 13:56 <…>
Keys("CtrlY") mf.print(Text)
Так, кстати, было раньше (разница только в том, что вместо print стало mf.print, но это - одно и то же на самом деле).Именно из-за возникавшей ошибки attempt to yield across C-call boundary и была, видимо, сделана попытка Dlg.SetValue. Увы, нет такой функции…
dir123
Posts: 2
Joined: Mon 24 Jan, 2022 18:11
Has thanked: 1 time

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

Post by dir123 »

все заработало ура, спасибо
Attachments
Dialog_ToEditor.lua
рабочий скрипт
(4.6 KiB) Downloaded 115 times
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_DlgExt.lua и она работает, но я не публиковал этот макрос расширений.
Мне не понятно почему возникает ошибка у dir123? ведь проверка на наличие у Dlg такой функции есть.
SimSU ··· ·· -- ··· ··-
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

SUSim, а наберите просто в комстроке:
lua:=Dlg.SetValue
Если Вы думаете, что получите nil, так нет - получите вылет!
Почему - я не знаю.
P/S. Делать надо в стандартном FAR-е, без Ваших улучшений. Ну, думаю, это - ясно.
Last edited by buniak_a_h on Wed 02 Feb, 2022 15:44, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

SUSim, у меня маленький вопрос.
Во всех Ваших скриптах встречается строка:

Code: Select all

if _filename then return filename(...) end
При этом переменная (глобальная?) _filename нигде ни разу не определяется.
В чём смысл такой конструкции? Она у Вас определяется где-то в другом (засекреченном) скрипте? И в чем смысл вызова "главной" функции скрипта, которая почти всегда вызывается из filename()? Причем во время загрузки макросов! Т.е., если определить _filename, то она будет вызываться по команде Macro:load во всех скриптах. Я чего-то не понимаю ?
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Wed 02 Feb, 2022 15:57 _filename нигде ни разу не определяется.

Code: Select all

lua: [=] @<filename> [<args>] 
moon: [=] @<filename> [<args>]
Исполнить скрипт <filename>, написанный соответственно на Lua или MoonScript.

Если нужно передать скрипту аргументы, их следует указать после имени файла через пробел. 
Аргументы являются списком выражений, разделённых запятыми. 
Выражения должны использовать тот же язык программирования, что и скрипт. 
Глобальная (в пределах окружения скрипта) переменная _filename содержит имя файла. 
Т.е. скрипт можно исполнить из командной строки, не устанавливая в качестве макроса.
Об этом же: viewtopic.php?p=167950#p167950
https://t.me/FarManager — Telegram чат
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

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

Post by Tim Sobolev »

Добавил хоткей для сброса всех дат/времён файла к дате/времени последней записи, возможно кого-то заинтересует.
Shell_FileTime.lua
Добавлен хоткей для сброса всех дат/времён файла к дате/времени последней записи
(5.83 KiB) Downloaded 121 times
Last edited by Tim Sobolev on Thu 10 Feb, 2022 20:13, 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 »

Обновился, пробуйте...
Если что забыл, прошу напомнить!
SimSU ··· ·· -- ··· ··-
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

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

Post by Volodya »

SUSim, большое спасибо за набор макросов.
Некоторые хотелки и замечания.
Shell_SelectingEx.lua
1) Выбрано несколько файлов. Иметь возможность выделить все файлы с датами как у этих файлов за один шаг. Сейчас это рабтает иногда очень странно. Выбрано два файла и текущий один из них. Вызов DayMark приводит к сбросу выделения у текушего файла. И всё.
2) Для выбранных файлов скопировать/переместить их в директории по шаблону YYYY-MM-DD

Shell_FileTime.lua
3) Для выбранных файлов установить времена текущего файла. Это можно сделать и сейчас предварительно скопировав его даты с помощью имеющегося макроса. Но мне кажется, что за один шаг это было бы удобней.
4) На одной панели выбраны файлы. Установить такое же время для файлов с другой панели с этими же началами файлов.
Пример. На левой панели выбраны файлы DSC_1234.nef и DSC_5678.nef На правой панели есть файлы с именами DSC_1234.jpg, DSC_1234.txt,
DSC_1234_BW.jpg, DSC_5678_HDR.jpg, DSC_5678_small.jpg Времена всех этих файлов должны быть заменены на времена соответственно DSC_1234.nef и DSC_5678.nef. Что делать в случае, если в выбранных файлах на левой панеле есть файл a.qwe и файл a.rty? Ничего сначала установить как для первого файла, потом для второго. Пользователь виноват сам. Но если не трудно, то можно и предупредить пользователя о проблеме.
5) Сделана функция скопировать LastWriteTime на все времена файла. Хотелось бы иметь то же самое CreateTime, что совсем просто и что труднее сделать это для всех выделенных файлов.

Editor_Pair.lua
6) Описка не влияющая на работу макроса. Вместо Down в названии переменных используется Doun
7) Наверное, такой макрос уже есть: выбрать на пассивной панели файл с именем как на активной панели. Это было бы удобно для макроса Editor_Pair.lua. Не надо было бы искать самому тот же файл на пассивной панели перед запуском макроса.

Shell_RememberSelected.lua
8 ) Конфликтует из-за хоткея CtrlShiftPgDn с Panel.CtrlShiftPgUpDn.lua, что делает работу не очень удобной. На мой взгляд, правильнее было бы переделать Panel.CtrlShiftPgUpDn.lua в Panel.CtrlAltPgUpDn.lua с соответствющими сменами хоткеев внутри макроса. Но Panel.CtrlShiftPgUpDn.lua сильно старше и его хоткеи работают на полном автоматизме. У меня CtrlShiftPgDn в Shell_RememberSelected.lua
переделан в CtrlAltPgDn

Editor_ShowWhiteSpace.lua
9) Этот макрос по умолчанию включен. На мой взгляд, он нужен не всегда. Приходится при первом входе в редактор его выключать. Мне кажется, что было бы удобно внутри макроса иметь строку, которая бы показывала состояние расцветки при первом запуске. Кто-то бы оставил "включена", а я бы руками установил её в выключена и пользовался бы макросом только тогда, когда я хочу видеть результаты его работы.

P.S. Большинство моих хотелок (2-5) у меня реаkизовано с помощью buniak_a_h, но мне кажется, что кроме специфичной хотелки 4, остальные могут быть полезны многим.
Ещё раз спасибо SimSU и buniak_a_h за замечательные макросы.
Last edited by Volodya on Mon 14 Feb, 2022 10:42, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Volodya wrote: Mon 14 Feb, 2022 10:41 P.S. Большинство моих хотелок (2-5) у меня реаkизовано с помощью buniak_a_h, но мне кажется, что кроме специфичной хотелки 4, остальные могут быть полезны многим.
На самом деле считаю "хотелку" (3) капризом. Функционал полностью перекрывается возможностью copy-paste, экономия в одно нажатие пимпочки на клавиатуре. ;-)
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

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

Post by Volodya »

buniak_a_h wrote: Mon 14 Feb, 2022 13:02 считаю "хотелку" (3) капризом
Спасибо за напоминание.
Есть ещё один подобный каприз.
При работе с блоками, если выбрать дублирование блока при НЕ выбранном блоке, копировать текущую строку. В своё оправдание скажу, что в Intellij IDEA такая функциональность есть. :)
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Volodya wrote: Mon 14 Feb, 2022 19:48 Есть ещё один подобный каприз.
Хотя это, по-моему, и офтопик, но, может, SUSim включит это в свой набор-чик-чик-чик.
Задачка решается следующим макросом:
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, в пункте 1 другая логика - проходимся по нужным файлам и вместо выделения вызываем макрос.
Макрос не только ставит, но и снимает выделение.
SimSU ··· ·· -- ··· ··-
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

SUSim, спасибо за скрипты! Пользуюсь ими в том числе и как учебником.
Позволю себе некоторые мелкие дополнения к скрипту Editor_QuickSearch.lua. Но сначала обоснование. Замечание имеет смысл при включённой опции редактора
[x] Persistent blocks
Очень частое использование макросов NextWord / PrevWord такое: нужно вставить блок после некоторого примерно одинакового куска. Делаю я это так: отмечаю блок, затем перехожу на следующее вхождение некоторого характерного слова и копирую блок. Соответственно, параметр SelectResult (кстати, бывший SelectFound; предупреждать надо!) выключен, и в результате найденное слово не выделяется на экране и невидимо. Это не очень удобно. Предлагаю небольшое дополнение, "раскрашивающее" найденное слово (у меня - в сиреневый цвет 0x5f, но можно добавить в настройки)
Editor_QuickSearch.lua
Мои дополнения помечены комментарием «-- BAX»
(14.51 KiB) Downloaded 107 times
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Volodya wrote: Mon 14 Feb, 2022 10:41 1) Выбрано несколько файлов. Иметь возможность выделить все файлы с датами как у этих файлов за один шаг.
Предлагаю такой небольшой макрос:
  1. Macro{
  2.  
  3.   id="A093220D-305A-4D9D-AFBD-096A7BDC6B80";
  4.  
  5.   area="Shell";
  6.  
  7.   key="CtrlAltAdd CtrlShiftAdd";
  8.  
  9.   description="Отметка файлов с датами как у уже отмеченных";
  10.  
  11.   flags="Selection";
  12.  
  13.   condition=function(key, data)
  14.  
  15.     data.whatpanel = key == 'CtrlShiftAdd' and 0 or 1;
  16.  
  17.     data.Pan = key == 'CtrlShiftAdd' and PPanel or APanel;
  18.  
  19.     return true
  20.  
  21.   end;
  22.  
  23.   action=function(data)
  24.  
  25.     local aDates = {}
  26.  
  27.     for i=1,APanel.SelCount do
  28.  
  29.       local SysTime = win.FileTimeToSystemTime(win.FileTimeToLocalFileTime(panel.GetSelectedPanelItem(nil, 1, i).LastWriteTime))
  30.  
  31.       aDates[('%d%.2d%.2d'):format(SysTime.wYear, SysTime.wMonth, SysTime.wDay)] = true
  32.  
  33.     end
  34.  
  35.     local ai = {}
  36.  
  37.     for i=1,data.Pan.ItemCount do
  38.  
  39.       local ii = panel.GetPanelItem(nil, data.whatpanel, i)
  40.  
  41.       if not ii.FileAttributes:match'd' then
  42.  
  43.         local SysTime = win.FileTimeToSystemTime(win.FileTimeToLocalFileTime(ii.LastWriteTime))
  44.  
  45.         if aDates[('%d%.2d%.2d'):format(SysTime.wYear, SysTime.wMonth, SysTime.wDay)] then
  46.  
  47.           ai[#ai+1] = i
  48.  
  49.         end
  50.  
  51.       end
  52.  
  53.     end
  54.  
  55.     if next(ai) then
  56.  
  57.       panel.SetSelection(nil, data.whatpanel, ai, true)
  58.  
  59.       panel.RedrawPanel(nil, data.whatpanel)
  60.  
  61.     end
  62.  
  63.   end;
  64.  
  65. }
Сейчас этот макрос повешен на CtrlAltAdd - для пометки файлов на активной панели, и на CtrlShiftAdd - для отметки на пассивной панели файлов с теми же датами, что у файлов, отмеченных на активной панели. Работает только при наличии отмеченных файлов на активной панели.
Last edited by buniak_a_h on Thu 17 Feb, 2022 00:56, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

В макрос предыдущего поста вкралась ошибочка (в строке 15 пропущен аргумент i). Исправлено.
:bang: :oops: :facepalm:
Last edited by buniak_a_h on Thu 17 Feb, 2022 06:57, edited 1 time in total.
Post Reply

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