Max Rusov wrote:Ну, в плагине есть еще ряд дополнительных возможностей, например автоматическая синхронизация пассивной панели. Макросом это сделать проблематично.
в чём проблематичность?
вот макрос для обычной синхронизации
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Чтобы не портить комстроку и меньше моргать, желателен макрос
"SimSU.Common.Exec ver3.2.lua.farconfig",
назначенный на "Shell/SimSUExec".
-->
<farconfig>
<macros>
<keymacros>
<macro area="Shell" key="SimSUSamePath" flags="" description="SimSUSamePath - Сделать пассивную панель = активной. © SimSU">
<text>
<![CDATA[
--[[1]]--Сделать пассивную панель = активной (работает со многими плагинами). © SimSU
-- Назначается SimSUSamePath
if not PPanel.Visible then Keys("CtrlP") end -- Если пассивная панель погашена включаем её.
if PPanel.Type==1 then Keys("CtrlT") -- Если надо выключаем режим дерева.
elseif PPanel.Type==2 then Keys("CtrlQ") -- Если надо выключаем режим быстрого просмотра.
elseif PPanel.Type==3 then Keys("CtrlL") end -- Если надо выключаем режим информации.
HS=Far.DisableHistory(-1)
if APanel.Plugin then -- Плагиновая панель.
Panel.SetPath(1,APanel.Path0) -- Устанавливаем путь который был до запуска плагина.
if APanel.Prefix~="" then -- Поддерживающая префиксы.
Prefix=APanel.Prefix..":" Prefix=Prefix:sub(1,Prefix:find(":",1,true))
if APanel.HostFile and APanel.HostFile~="" then
-- Плагином открыт файл.
if mf.fexist(APanel.HostFile) then
plug=Prefix.."\""..APanel.HostFile.."\"" -- Подготавливаем запуск плагина по префиксу.
else
-- Не нашли файл, попробуем в текущей директории...
if mf.fexist(APanel.Path0.."\\"..APanel.HostFile) then
plug=Prefix.."\""..APanel.Path0.."\\"..APanel.HostFile.."\"" -- Подготавливаем запуск плагина по префиксу.
else
-- Не получится. :( ну хоть плагин запустим.
plug=Prefix
end
end
Keys("Tab")
eval("Shell/SimSUExec",2) -- SimSU.Common.Exec ver3.0.lua.farconfig если такого макроса нет, то испортится комстрока.
Keys("CtrlY") print(plug) Keys("Enter") -- Запускаем плагин.
eval("Shell/SimSUExec",2) -- SimSU.Common.Exec ver3.0.lua.farconfig если такого макроса нет, то испортится комстрока.
Keys("CtrlY") print("cd \""..PPanel.Path.."\"") Keys("Enter") -- Командуем плагину устанавить путь.
Keys("Tab")
else
-- В плагине не файл.
Keys("Tab")
eval("Shell/SimSUExec",2) -- SimSU.Common.Exec ver3.0.lua.farconfig если такого макроса нет, то испортится комстрока.
Keys("CtrlY") print(Prefix.."\""..PPanel.Path.."\"") Keys("Enter") -- Запускаем плагин с путем.
Keys("Tab")
end
end
Panel.SetPos(1,APanel.Current) -- Устанавливаем текущий элемент.
else
Panel.SetPath(1,APanel.Path,APanel.Current) -- Панель обычная, просто синхронизуем.
end
Far.DisableHistory(HS)
]]>
</text>
</macro>
<macro area="Shell" key="SimSUFolderRight" flags="" description="SimSUFolderRight - Открыть на правой панели папку под курсором с левой панели. © SimSU">
<text>
<![CDATA[
--[[1]]--Открыть на правой панели папку под курсором с левой панели. © SimSU
-- Назначается на SimSUFolderRight
HS=Far.DisableHistory(-1)
if APanel.Left then
eval("Shell/SimSUSamePath",2)
if APanel.Folder then
Keys("Tab")
eval("Shell/SimSUExec",2) -- SimSU.Common.Exec ver3.0.lua.farconfig если такого макроса нет, то испортится комстрока.
Keys("CtrlY") print("cd \""..PPanel.Current.."\"") Keys("Enter") -- Командуем фару/плагину устанавить путь.
Keys("Tab")
end
else
Keys("Tab")
eval("Shell/SimSUSamePath",2)
Keys("Tab")
if PPanel.Folder then
eval("Shell/SimSUExec",2) -- SimSU.Common.Exec ver3.0.lua.farconfig если такого макроса нет, то испортится комстрока.
Keys("CtrlY") print("cd \""..PPanel.Current.."\"") Keys("Enter") -- Командуем фару/плагину устанавить путь.
end
end
Far.DisableHistory(HS)
]]>
</text>
</macro>
<macro area="Shell" key="SimSUFolderLeft" flags="" description="SimSUFolderLeft - Открыть на левой панели папку под курсором с правой панели. © SimSU">
<text>
<![CDATA[
--[[1]]--Открыть на левой панели папку под курсором с правой панели. © SimSU
-- Назначается, например, на AltLeft
HS=Far.DisableHistory(-1)
if not APanel.Left then
eval("Shell/SimSUSamePath",2)
if APanel.Folder then
Keys("Tab")
eval("Shell/SimSUExec",2) -- SimSU.Common.Exec ver3.0.lua.farconfig если такого макроса нет, то испортится комстрока.
Keys("CtrlY") print("cd \""..PPanel.Current.."\"") Keys("Enter") -- Командуем фару/плагину устанавить путь.
Keys("Tab")
end
else
Keys("Tab")
eval("Shell/SimSUSamePath",2)
Keys("Tab")
if PPanel.Folder then
eval("Shell/SimSUExec",2) -- SimSU.Common.Exec ver3.0.lua.farconfig если такого макроса нет, то испортится комстрока.
Keys("CtrlY") print("cd \""..PPanel.Current.."\"") Keys("Enter") -- Командуем фару/плагину устанавить путь.
end
end
Far.DisableHistory(HS)
]]>
</text>
</macro>
<macro area="Shell" key="Alt=" flags="DisableOutput" description="Сделать пассивную панель = активной. © SimSU">
<text>
<![CDATA[
--[[1]]--Сделать пассивную панель = активной (работает со многими плагинами). © SimSU
-- Назначается, например, на Alt=
eval("Shell/SimSUSamePath",2)
]]>
</text>
</macro>
<macro area="Shell" key="ShiftRight" flags="DisableOutput|EmptyCommandLine" description="Открыть на правой панели папку под курсором с левой панели. © SimSU">
<text>
<![CDATA[
--[[1]]--Открыть на правой панели папку под курсором с левой панели. © SimSU
-- Назначается, например, на AltRight
eval("Shell/SimSUFolderRight",2)
]]>
</text>
</macro>
<macro area="Shell" key="ShiftLeft" flags="DisableOutput|EmptyCommandLine" description="Открыть на левой панели папку под курсором с правой панели. © SimSU">
<text>
<![CDATA[
--[[1]]--Открыть на левой панели папку под курсором с правой панели. © SimSU
-- Назначается, например, на AltLeft
eval("Shell/SimSUFolderLeft",2)
]]>
</text>
</macro>
</keymacros>
</macros>
</farconfig>
а вот дополнение для автоматической
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Требует макрос "SimSU.Shell.SamePath ver3.6.lua.farconfig"
-->
<farconfig>
<macros>
<keymacros>
<macro area="Shell" key="CtrlAlt=" flags="DisableOutput" description="Включить/выключить режим автоматической синхронизации. © SimSU">
<text>
<![CDATA[
--[[1]]--Включить/выключить режим автоматической синхронизации. © SimSU
_G.SimSU= _G.SimSU or {}
SimSU.SamePathAuto = not SimSU.SamePathAuto
]]>
</text>
</macro>
<macro area="Shell" key="Enter" flags="DisableOutput" description="Хождение по каталогам и запуск с автосинхронизацией © SimSU">
<text>
<![CDATA[
--[[1]]--Хождение по каталогам и запуск с автосинхронизацией © SimSU
-- Назначается на Enter,NumEnter,CtrlPgUp,CtrlPgDn,CtrlBackSlash в панелях.
_G.SimSU= _G.SimSU or {}
Keys("Akey") if SimSU.SamePathAuto then eval("Shell/SimSUSamePath",2) end
]]>
</text>
</macro>
<macro area="Shell" key="NumEnter" flags="DisableOutput" description="Хождение по каталогам и запуск с автосинхронизацией © SimSU">
<text>
<![CDATA[
--[[1]]--Хождение по каталогам и запуск с автосинхронизацией © SimSU
-- Назначается на Enter,NumEnter,CtrlPgUp,CtrlPgDn,CtrlBackSlash в панелях.
_G.SimSU= _G.SimSU or {}
Keys("Akey") if SimSU.SamePathAuto then eval("Shell/SimSUSamePath",2) end
]]>
</text>
</macro>
<macro area="Shell" key="CtrlPgDn" flags="DisableOutput" description="Заход в каталог/архив с автосинхронизацией © SimSU">
<text>
<![CDATA[
--[[1]]--Хождение по каталогам и запуск с автосинхронизацией © SimSU
-- Назначается на Enter,NumEnter,CtrlPgUp,CtrlPgDn,CtrlBackSlash в панелях.
_G.SimSU= _G.SimSU or {}
Keys("Akey") if SimSU.SamePathAuto then eval("Shell/SimSUSamePath",2) end
]]>
</text>
</macro>
<macro area="Shell" key="CtrlPgUp" flags="DisableOutput" description="Выход из каталога/архива с автосинхронизацией © SimSU">
<text>
<![CDATA[
--[[1]]--Хождение по каталогам и запуск с автосинхронизацией © SimSU
-- Назначается на Enter,NumEnter,CtrlPgUp,CtrlPgDn,CtrlBackSlash в панелях.
_G.SimSU= _G.SimSU or {}
Keys("Akey") if SimSU.SamePathAuto then eval("Shell/SimSUSamePath",2) end
]]>
</text>
</macro>
<macro area="Shell" key="CtrlBackSlash" flags="DisableOutput" description="Выход из каталога/архива с автосинхронизацией © SimSU">
<text>
<![CDATA[
--[[1]]--Хождение по каталогам и запуск с автосинхронизацией © SimSU
-- Назначается на Enter,NumEnter,CtrlPgUp,CtrlPgDn,CtrlBackSlash в панелях.
_G.SimSU= _G.SimSU or {}
Keys("Akey") if SimSU.SamePathAuto then eval("Shell/SimSUSamePath",2) end
]]>
</text>
</macro>
<macro area="Shell" key="Space" flags="DisableOutput|EmptyCommandLine" description="Выход из каталога/архива с автосинхронизацией © SimSU">
<text>
<![CDATA[
--[[1]]--Хождение по каталогам и запуск с автосинхронизацией © SimSU
-- Назначается на Enter,NumEnter,CtrlPgUp,CtrlPgDn,CtrlBackSlash в панелях.
_G.SimSU= _G.SimSU or {}
Keys("CtrlPgUp") if SimSU.SamePathAuto then eval("Shell/SimSUSamePath",2) end
]]>
</text>
</macro>
</keymacros>
</macros>
</farconfig>