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

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

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

Postby SUSim » Wed 21 Mar, 2012 18:27

Вычисление математических выражений. © SimSU
Календарь. © SimSU
Выполнение команды через меню пользователя. © SimSU
Получение названия клавиши. © SimSU
Ускорение скроллинга колёсиком мышки. © SimSU
Меню плагинов с последнего пункта. © SimSU
Вставка разделённых путей и имён файлов. © SimSU
Редактирование строки ввода диалога в редакторе. © SimSU
Первая строка всегда на экране полезно в качестве заголовков столбцов. © SimSU
Создание резервной копии редактируемого файла. © SimSU
Открытие редактора из редактора. © SimSU
Вставка шаблона мароса. / Insert macro template. c Shmuel SimSU
Простое импортирование макроса FAR. © SimSU
Список завершения LuaMacro. © 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
Подсказки к файлам (плагин FarHints © Максим Русов). © 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
Включение/отключение поиска на панели после отпускания RAlt. © SimSU
Сохранение/восстановление выделения файлов. © SimSU
Такой же путь & Текущая папка. © SimSU
Выделение файлов аля Explorer. © SimSU
Работа с пометкой файлов. © SimSU
Расширение функциональных клавиш копирования, переноса, создания папки. © SimSU
Attachments
SimSU_20160925.7z
мелкие правки
(51.16 KiB) Downloaded 175 times
SimSU_20160912.7z
(51 KiB) Downloaded 67 times
Last edited by SUSim on Sun 25 Sep, 2016 21:18, edited 139 times in total.
SimSU ··· ·· -- ··· ··-

buniak_a_h
Posts: 257
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 31 times
Been thanked: 4 times
Contact:

Набор макросов от SimSU v2014.10

Postby buniak_a_h » Wed 13 Jan, 2016 05:40

Latest post of the previous page:

SUSim
Вроде, довёл до идеала Ваш скрипт Editor_QuickSearch. С включенной VeryQuick не смотрел внимательно, но с выключенной работает как в большинстве редакторов. Если Вы готовите новую версию библиотеки - посмотрите, пожалуйста.
Текст процедуры исправлен в следующем посте...
Last edited by buniak_a_h on Wed 13 Jan, 2016 11:26, edited 1 time in total.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

buniak_a_h
Posts: 257
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 31 times
Been thanked: 4 times
Contact:

Набор макросов от SimSU v2014.10

Postby buniak_a_h » Wed 13 Jan, 2016 11:25

Сорри, господа, вкралась мелкая ошибка, проявляется при нажатии клавиши с символом после поиска предыдущего-следующего слова. Лечится одной строкой. В процедуре SimSU.Editor_QuickSearch.Go после блока, содержащего ColoredLine = nil добавить строку:
if QSearch == nil then return end
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

buniak_a_h
Posts: 257
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 31 times
Been thanked: 4 times
Contact:

Набор макросов от SimSU v2014.10

Postby buniak_a_h » Fri 15 Jan, 2016 02:24

SUSim
Нашёл ещё 2 ошибки (присутствовавшие в первоначальном тексте макроса):
1. После поиска в обратном направлении (Direction=-1) поиск следующего вхождения слова становился невозможным, только предыдущее вхождение. Причина в функции SimSU.Editor_QuickSearch.NextWord: не указано направления в параметрах вызова функции SimSU.Editor_QuickSearch.Find. Необходимо указать 1.
2. При инкрементальном поиске в обратном направлении (SimSU.Editor_QuickSearch.Back) образец искался при каждом нажатии на клавишу с символом, независимо от параметра VeryQuick. Т.е. макрос при обратном поиске вёл себя также, как при прямом поиске с VeryQuick=true, независимо от значения VeryQuick. Как я уже писал, это может привести к пропуску искомого.
В результате получился макрос (см. вложение), который эти вещи отрабатывает правильно. Хотел бы, чтобы Вы (или ещё кто-нибудь) проверил. Возможно, некоторые куски можно резко сократить (я до сих пор не могу привыкнуть к логическим and и or, возвращающим результат любого типа).
Editor_QuickSearch.lua
(11.21 KiB) Downloaded 23 times
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

Набор макросов от SimSU v2014.10

Postby SUSim » Fri 15 Jan, 2016 07:27

Вы правите не последнюю редакцию макроса,
в текущей редакции макрос не содержит указанных вами недостатков.
В нём только не реализованы Ваши пожелания:
1) при поиске слов ищутся и вхождения - нам это удобно, так как часто ищем не только слова, но и выделенное вхождение.
2) сбрасывается выделение - для нас это не критично, т.к. у всех нас выделение не постоянное.
SimSU ··· ·· -- ··· ··-

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

Набор макросов от SimSU v2014.10

Postby SUSim » Fri 15 Jan, 2016 07:41

Я тут с FFI баловался, причём методом тыка, посмотрите, сильно ли я накосячил?
т.к. Си я читаю то со словарём, а по ФФИ док под рукой не было (кстати посоветуйте небольшую, но понятную доку по FFI).
Code: [Select all] [Expand/Collapse] [Download] (Shell_FileTime.lua)
  1. -------------------------------------------------------------------------------
  2. -- Работа с датой/временем файлов/папок. © SimSU
  3. -------------------------------------------------------------------------------
  4.  
  5. ---- Настройки
  6. local function Settings()
  7. -- Начало файла Profile\SimSU\Shell_FileTime.cfg
  8. return{
  9.   Key="AltD"; --Prior=50;
  10. }
  11. -- Конец файла Profile\SimSU\Shell_FileTime.cfg
  12. end
  13.  
  14. ---- Локализация
  15. _G.far.lang=far.lang or win.GetEnv("farlang")
  16. -- Встроенные языки / Buildin laguages
  17. local function Messages()
  18. if far.lang=="Russian" then
  19. -- Начало файла Profile\SimSU\Shell_FileTimeRussian.lng
  20. return{
  21.   Descr="Обновление даты/времени записи родительских папок. © SimSU";
  22. }
  23. -- Конец файла Profile\SimSU\Shell_FileTimeRussian.lng
  24. else--if far.lang=="English" then
  25. -- Begin of file Profile\SimSU\Shell_FileTimeEnglish.lng
  26. return{
  27.   Descr="Обновление даты/времени записи родительских папок. © SimSU";
  28. }
  29. -- End of file Profile\SimSU\Shell_FileTimeEnglish.lng
  30. end end
  31.  
  32. -------------------------------------------------------------------------------
  33. local M=(loadfile(win.GetEnv("FARPROFILE").."\\SimSU\\Shell_FileTime"..far.lang..".lng") or Messages)()
  34. local S=(loadfile(win.GetEnv("FARLOCALPROFILE").."\\SimSU\\Shell_FileTime.cfg") or loadfile(win.GetEnv("FARPROFILE").."\\SimSU\\Shell_FileTime.cfg") or Settings)()
  35.  
  36. local SimSU=_G.SimSU or {}
  37. SimSU.Shell_FileTime={}
  38. -------------------------------------------------------------------------------
  39.  
  40. local ffi = require "ffi"
  41. local C = ffi.C
  42.  
  43. ffi.cdef [[
  44.  
  45. int GetFileTime(
  46.   DWORD    hFile,
  47.   FILETIME *lpCreationTime,
  48.   FILETIME *lpLastAccessTime,
  49.   FILETIME *lpLastWriteTime
  50. );
  51.  
  52. BOOL SetFileTime(
  53.   DWORD    hFile,
  54.   FILETIME *lpCreationTime,
  55.   FILETIME *lpLastAccessTime,
  56.   FILETIME *lpLastWriteTime
  57. );
  58.  
  59. DWORD CreateFileW(
  60.   LPCTSTR  lpFileName,
  61.   DWORD    dwDesiredAccess,
  62.   DWORD    dwShareMode,
  63.   void     *lpSecurityAttributes,
  64.   DWORD    dwCreationDisposition,
  65.   DWORD    dwFlagsAndAttributes,
  66.   DWORD    hTemplateFile
  67. );
  68.  
  69. BOOL CloseHandle(
  70.   DWORD hObject
  71. );
  72.  
  73. ]]
  74.  
  75. local function FileTime2Msec(FileTime)
  76.   return (FileTime.dwLowDateTime + 0x100000000 * FileTime.dwHighDateTime) / 10000
  77. end
  78.  
  79. local function Msec2FileTime(Msec)
  80.   local result = ffi.new("FILETIME")
  81.   local h,l = math.modf(Msec * 10000 / 0x100000000);
  82.   result.dwHighDateTime = h
  83.   result.dwLowDateTime  = l * 0x100000000
  84.   return result
  85. end
  86.  
  87. function SimSU.Shell_FileTime.Get(FileName)
  88.   local str = ffi.cast("LPCTSTR",win.Utf8ToUtf16(FileName.."\0"))
  89.   local hFile = C.CreateFileW(
  90.     str,
  91.     0x80000000,
  92.     0x00000001,
  93.     nil,
  94.     3,
  95.     0x02000000,
  96.     0
  97.   );
  98.   if hFile~=ffi.cast("HANDLE",-1) then
  99.     local ftCreate = ffi.new("FILETIME")
  100.     local ftAccess = ffi.new("FILETIME")
  101.     local ftWrite  = ffi.new("FILETIME")
  102.     C.GetFileTime(hFile, ftCreate, ftAccess, ftWrite)
  103.     C.CloseHandle(hFile)
  104.     return FileTime2Msec(ftWrite), FileTime2Msec(ftAccess), FileTime2Msec(ftCreate)
  105.   end
  106. end
  107.  
  108. function SimSU.Shell_FileTime.Set(FileName, ftWrite, ftAccess, ftCreate)
  109.   local str = ffi.cast("LPCTSTR", win.Utf8ToUtf16(FileName.."\0"))
  110.   local hFile = C.CreateFileW(
  111.     str,
  112.     0x80000000 + 0x40000000,
  113.     0x00000001 + 0x00000002,
  114.     nil,
  115.     3,
  116.     0x02000000,
  117.     0
  118.   );
  119.   if hFile~=ffi.cast("HANDLE",-1) then
  120.     C.SetFileTime(hFile, Msec2FileTime(ftCreate), Msec2FileTime(ftAccess), Msec2FileTime(ftWrite))
  121.     C.CloseHandle(hFile)
  122.     return true
  123.   end
  124. end
  125.  
  126. function SimSU.Shell_FileTime.UpdateBranch()
  127.   if Area.Shell then
  128.     local Path = APanel.Path0
  129.     local File = Path.."\\"..APanel.Current
  130.     local ftWrite, ftAccess, ftCreate = SimSU.Shell_FileTime.Get(File)
  131.     local result
  132.     repeat
  133.       result = SimSU.Shell_FileTime.Set(Path, ftWrite, ftAccess, ftCreate)
  134.       Path = Path:match("(.*)\\[^\\]+$")
  135.     until (Path:find(":$") ~= nil and result)
  136.     Keys("CtrlR")
  137.     return result
  138.   end
  139. end
  140. -------------------------------------------------------------------------------
  141. if not Macro then return {Shell_FileTime=SimSU.Shell_FileTime} end
  142.  
  143. local ok, mod = pcall(require,"SimSU.Shell_FileTime"); if ok then SimSU=mod else _G.SimSU=SimSU end
  144. -------------------------------------------------------------------------------
  145. Macro {area="Shell"; key=S.Key; priority=S.Prior; description=M.Descr;
  146.   action=function() SimSU.Shell_FileTime.UpdateBranch() end;
  147. }
SimSU ··· ·· -- ··· ··-

Volodya
Posts: 234
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 1 time

Набор макросов от SimSU v2014.10

Postby Volodya » Sun 24 Jan, 2016 02:39

Странное поведение макроса календарь: При вызове календаря, отмеченным является 19 января. Я думаю, что это дата, когда был запущен Фар. Ожидалось увидеть сегодняшнюю дату

Volodya
Posts: 234
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 1 time

Набор макросов от SimSU v2014.10

Postby Volodya » Sun 24 Jan, 2016 02:59

Нельзя ли добавить в макрос "Расширенная выборка" возможность выбора всех файлов с датой как у текущего файла? Подобный макрос есть тут, но он для Far 2 Дополнительно, если выбрано несколько файлов, то выбрать все файлы с датами как у этих файлов. Ну и последняя хотелка: Добавить в макрос Shell_Shift_F5F6F7.lua возможность автоматического раскидывания этих файлов по директориям на пасивной панеле. То есть, выбраны файлы с датами 10.01.2016 и 20.01.2016 Автоматически создаются директории 10.01.2016 и 20.01.2016 на пасивной панеле и соответствующие файлы копируются/переносятся туда

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

Набор макросов от SimSU v2014.10

Postby SUSim » Sun 24 Jan, 2016 11:52

В этом мире всё возможно!
Подумаю, это интерееесно...
SimSU ··· ·· -- ··· ··-

User avatar
dimfish
Posts: 162
Joined: Fri 29 Apr, 2016 13:18
Location: Saint-Petersburg
Has thanked: 1 time
Been thanked: 31 times

Набор макросов от SimSU v2014.10

Postby dimfish » Fri 29 Apr, 2016 13:26

Не успел отследить с какой версии начались проблемы но макрос выхода (AltX) вызывает "F10 Enter" и far виснет на выходе, причем если нажать F10 - не виснет... Причем на старых версиях < 4100 всё работает ок. Есть у кого какие мысли?

User avatar
Vertigo
Posts: 61
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 7 times
Been thanked: 1 time

Набор макросов от SimSU v2014.10

Postby Vertigo » Fri 29 Apr, 2016 16:41

Воспроизводимо? А то проблема с зависанием на выходе обсуждается здесь: http://forum.farmanager.com/viewtopic.php?f=9&t=10207.

User avatar
dimfish
Posts: 162
Joined: Fri 29 Apr, 2016 13:18
Location: Saint-Petersburg
Has thanked: 1 time
Been thanked: 31 times

Набор макросов от SimSU v2014.10

Postby dimfish » Sat 30 Apr, 2016 21:45

Да, конечно, у меня воспороизводится на всех компах 2 десктопа,1 ноут, 2 vmware. И форум уже весь облазил и ту ветку видел - но там симптомы похожие, но говорится про другое - они там запускают проги или чего то делают...
Поставить макрос AltX - находится SimSU/trivial/Shell_AltX.lua - просто запустить свежий фар - сразу AltX - far выходит и остется висеть консоль. Если запустить и нажать F10 - закрыватся как надо. Воспроизводится у меня в 100% случаев. На Far <4100 проблемы нету.

Shmuel
Posts: 4999
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Набор макросов от SimSU v2014.10

Postby Shmuel » Sat 30 Apr, 2016 21:48

dimfish, у меня не воспроизводится. Специально ставил этот макрос для проверки. Может от OS зависит или ещё от чего.

2useven10
Posts: 2920
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 76 times

Набор макросов от SimSU v2014.10

Postby 2useven10 » Sat 30 Apr, 2016 22:01

dimfish wrote:Source of the post у меня воспороизводится на всех компах
Без плагинов и макросов тоже?
add: Хотя, без макросов нельзя, тогда только с одним макросом...

User avatar
dimfish
Posts: 162
Joined: Fri 29 Apr, 2016 13:18
Location: Saint-Petersburg
Has thanked: 1 time
Been thanked: 31 times

Набор макросов от SimSU v2014.10

Postby dimfish » Sun 01 May, 2016 17:41

2useven10 wrote:Без плагинов и макросов тоже?
Удалил все плагины кроме LuaMacro, взял чистый profile всё также...Правда у меня везде win 10... Приду 4 мая на работу посмотрю на win 8...

2useven10
Posts: 2920
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 76 times

Набор макросов от SimSU v2014.10

Postby 2useven10 » Tue 03 May, 2016 10:53

dimfish wrote:Source of the post Правда у меня везде win 10
У меня тоже, но не воспроизводится...
PS: проверяю только на транке...

User avatar
dimfish
Posts: 162
Joined: Fri 29 Apr, 2016 13:18
Location: Saint-Petersburg
Has thanked: 1 time
Been thanked: 31 times

Набор макросов от SimSU v2014.10

Postby dimfish » Wed 04 May, 2016 14:34

Специально скачал последний 4660 x64 - на чистой виртуалке 8.1 также не закрывается консоль по AltX, а по F10 всё ок...
На win 10 build 4660 x64 всё также - ладно спасиб всем, будет время - скомпилю в debug посмотрю

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

Набор макросов от SimSU v2014.10

Postby SUSim » Wed 04 May, 2016 20:10

на нескольких машинах ИЗРЕДКА получали эффект, но и при СТАНДАРТНОМ f10 (без запроса о выходе в настройках) тоже хватали но намного реже....

буду думать
SimSU ··· ·· -- ··· ··-


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

Who is online

Users browsing this forum: No registered users and 0 guests