SameFolder+

Здесь можно обсудить ваш любимый плагин.
fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Re: SameFolder+

Post by fml2 » Mon 29 Oct, 2012 13:10

Latest post of the previous page:

Может, и устроил бы (не пробовал, поэтому не могу сказать), но, во-первых, я не знаю, как этот макрос "создать" (т.е. сделать так, чтобы Far его выполнял), а во-вторых, плагин наверняка аккуратно обходится с какими-то особенными ситуациями и т.д. -- иначе зачем же было его создавать?

User avatar
SUSim
Posts: 1534
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: SameFolder+

Post by SUSim » Mon 29 Oct, 2012 20:25

На счёт аккуратности - это нетривиальный вопрос (для кого-то макрос проще написать, а для кого-то плагин...), плагин создавался в те времена, когда макроязык был простейшим языком, и даже в те времена, макросом можно было сделать многое чего не делали даже плагины, даже сами плагины часто использовали макроязык.

"SimSU.Shell.SamePath ver3.5.lua.farconfig" - этот макрос конечно далёк от совершенства/лаконичности, но по сравнению с плагином позволяет синхронизировать и почти всё...
SimSU ··· ·· -- ··· ··-

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: SameFolder+

Post by Max Rusov » Mon 29 Oct, 2012 20:55

Ну, в плагине есть еще ряд дополнительных возможностей, например автоматическая синхронизация пассивной панели. Макросом это сделать проблематично.

User avatar
Wave
Posts: 1771
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 16 times

Re: SameFolder+

Post by Wave » Mon 29 Oct, 2012 23:38

Эм, что-то у меня на втором ФАРе висит макрос, который автоматом синхронизирует пассивную панель с активной. Им удобно гулять по ФТП-серверу, например, и при этом на пассивной панели то же самое дерево разворачивается. Так что не сказал бы, что в плагине возможностей больше, чем в макросе.
Пользуюсь ФАРом больше 20 лет © собирательный.

User avatar
SUSim
Posts: 1534
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: SameFolder+

Post by SUSim » Tue 30 Oct, 2012 16:11

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>
SimSU ··· ·· -- ··· ··-

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: SameFolder+

Post by Max Rusov » Tue 30 Oct, 2012 16:21

Вот именно это я и считаю "проблематичностью". Место одного плагина - куча макросов на кучу кнопок. Ты уверен, что все не забыл? Мышку, например?...

User avatar
SUSim
Posts: 1534
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: SameFolder+

Post by SUSim » Tue 30 Oct, 2012 18:50

Зато, работает не зависимо от плагинапи и априори опенсорс :)
И, да, забыл кучу клавишь, а мышу точно (точнее не придал этому значение), но зато это понятно, и работает с большим числом плагиновых панелей нежели плагин, которого кстати нет под текущий билд...

и почему кучча макросов? всего один пакет :) если использовать Вашу лаконичнось (макролиб) то и объём кода будет меньше чем в плагине :)
SimSU ··· ·· -- ··· ··-

User avatar
vkh
Posts: 226
Joined: Fri 13 Nov, 2009 07:48
Has thanked: 2 times
Been thanked: 1 time

Re: SameFolder+

Post by vkh » Sun 04 Nov, 2012 09:09

предлагаю в шапке поста указать ссылку на макрос, а в шапке поста макроса указать ссылку на плагин.

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Re: SameFolder+

Post by fml2 » Mon 05 Nov, 2012 21:31

А не нужно ли подправить fmlua-файл, входящий в комплект плагина? У меня CallPlugin (сейчас в комплекте поставки) не работает, а Plugin.Call (подправил сам по аналогии с другими .fmlua-файлами) работает.

Denis
Posts: 1420
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 7 times
Been thanked: 2 times

Re: SameFolder+

Post by Denis » Wed 30 Jan, 2013 08:10

При погашеной первой панели и вызове "1 Same folder" получаем:

Code: Select all

╔═══════════════════════════════════════════ Error parsing macro ════════════════════════════════════════════╗
║ [string "CtrlP panel.setpath(1, @"C:\MyUsers\archive\Development\CodeGea..."]:1: '=' expected near 'panel' ║
╟────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                   { OK }                                                   ║
╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Far 3.0 build 3132 x64
SameFolder.far3lua.x64.1.11.rar
Last edited by Denis on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [code]

Post Reply

Return to “Обсуждение плагинов”