michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
159 stars 52 forks source link

После обновления farmanager по горячим клавишам Ctrl+[ стал добавлять перед путем IP адрес и Слеш #277

Open rufatpro opened 6 years ago

rufatpro commented 6 years ago

После обновления farmanager по горячим клавишам Ctrl+[ стал добавлять перед путем IP адрес и Слеш, т.е. стал так XXX.XXX.XXX.XXX//var/lib/ очень неудобно стало.

Кроме того не работает cd XXX.XXX.XXX.XXX//var/lib

Как вернуть предыдущий вариант работы, когда вставлялся путь без IP: /var/lib/ ?

VictorVG commented 6 years ago

Да, вопрос роднмался на форуме ru-board (по крайней мере я там его запомнил), и вроде после внесли изменния. Идея простая:

Ок, так может усовершенствовать? - Если слэш на конце, значит каталог, иначе имя файла. Если копируется/переносится более одного файла, то каталог в любом случае.

можно макросом прочитать комстроку, убрать завершающий слэш и вернуть всё на место. Есть смысл с этим возится?

rufatpro commented 6 years ago

Честно говоря не увидел в этом ответе и на форуме ru-board решения

Да, вопрос роднмался на форуме ru-board (по крайней мере я там его запомнил), и вроде после внесли изменния. Идея простая:

Ок, так может усовершенствовать? - Если слэш на конце, значит каталог, иначе имя файла. Если копируется/переносится более одного файла, то каталог в любом случае.

можно макросом прочитать комстроку, убрать завершающий слэш и вернуть всё на место. Есть смысл с этим возится?

VictorVG commented 6 years ago

в данном случае решением как раз должен стать макрос срабатывающий на событие "копирование URL в NetBox", а считать макросом командную строку Far очень просто, после он отбрасыват завершающий слеш и mf.print() - результат вставлен в комстроку без "хвостика". Я просто не помню где на оффоруме видел обсуждение вопроса "нужен слэш в конце имени каталога или оставим это пользователю", но вроде такой разговор там так же был. Я тогда занят был и скользнул по тексту краем глаза. Но сваять такой скажем "ластик" поверьте, не столь сложно. Просто задачи такой ранее не существовало. Свежая она, а потому под руками готового решения ни у кого нет.

rufatpro commented 6 years ago

Речь шла о настройке самого Netbox, ибо в предыдущих версиях такой проблемы не было. Мне не хотелось бы писать какой-то патч или макрос. Возможно есть настройка NetBox, которая позволяет не вставлять IP адрес в командной строке по Ctrl+[ и Ctrl+]. Зачем вообще начали добавлять IP и дополнительный слеш не пойму!

rufatpro commented 6 years ago

Все таки спасибо VictorVG за наводку насчет Макросов! Написал макро, первый вариант такой:

-- NetBox_Ctrl[.lua - © dev256.com, 2018.10.05, использованы примеры с форума и отсюда: https://github.com/michaellukashov/Far-NetBox/issues/109#issuecomment-61585783

local NBID="42E4AEB1-A230-44F4-B33C-F195BB654931"
local NBMID="76BD423A-3EC0-47B3-BA31-1D17F49124D5"

Macro {
   area="Shell"; key="Ctrl["; description="Ctrl[ for NetBox."; action=function() -- flags="NotEmptyCommandLine";
      local drl1=APanel.Path -- panel.GetCmdLine(nil)
      panel.SetCmdLine(nil, drl1)
   end;
   condition=function()
      return APanel.Plugin and win.Uuid(panel.GetPanelInfo(nil, 1).OwnerGuid) == '42e4aeb1-a230-44f4-b33c-f195bb654931'
   end;
}
VictorVG commented 6 years ago

Годится, а будет время упростим чтобы исключить любую возможность сбоев.

rufatpro commented 5 years ago

Доработано сохранение текущей командной строки, например, для добавления к команде текущего пути:

-- NetBox_Ctrl[.lua - © dev256.com, 2018.10.05, использованы примеры с форума
---Ver. 20181008

local NBID="42E4AEB1-A230-44F4-B33C-F195BB654931"
local NBMID="76BD423A-3EC0-47B3-BA31-1D17F49124D5"

Macro {
   area="Shell"; key="Ctrl["; description="Ctrl[ for NetBox."; action=function() -- flags="NotEmptyCommandLine";
      panel.SetCmdLine(nil, CmdLine.Value..APanel.Path)
   end;
   condition=function()
      return APanel.Plugin and win.Uuid(panel.GetPanelInfo(nil, 1).OwnerGuid) == '42e4aeb1-a230-44f4-b33c-f195bb654931'
   end;
}

Нужно учесть, что Макрос работает только для левой панели. Для правой панели остался прежний механизм. Кому нужно и для правой панели вот Макрос:

-- NetBox_Ctrl[Ctrl].lua - © dev256.com, 2018.10.08, использованы примеры с форума и отсюда: https://github.com/michaellukashov/Far-NetBox/issues/109#issuecomment-61585783
---Ver. 20181008

local NBID="42E4AEB1-A230-44F4-B33C-F195BB654931"
local NBMID="76BD423A-3EC0-47B3-BA31-1D17F49124D5"

Macro {
    area="Shell"; key="Ctrl["; description="Ctrl[ for NetBox."; action=function()
    local panelPath=""
    if (APanel.Left) then
        panelPath=APanel.Path
    else
        panelPath=PPanel.Path
    end
    panel.SetCmdLine(nil, CmdLine.Value..panelPath)
    end;
    condition=function()
        return (APanel.Plugin and win.Uuid(panel.GetPanelInfo(nil, 1).OwnerGuid) == '42e4aeb1-a230-44f4-b33c-f195bb654931') or (PPanel.Plugin and win.Uuid(panel.GetPanelInfo(nil, 0).OwnerGuid) == '42e4aeb1-a230-44f4-b33c-f195bb654931')
    end;
}

Macro {
    area="Shell"; key="Ctrl]"; description="Ctrl] for NetBox."; action=function()
    local panelPath=""
    if (APanel.Left) then
        panelPath=PPanel.Path
    else
        panelPath=APanel.Path
    end
    panel.SetCmdLine(nil, CmdLine.Value..panelPath)
    end;
    condition=function()
        return (APanel.Plugin and win.Uuid(panel.GetPanelInfo(nil, 1).OwnerGuid) == '42e4aeb1-a230-44f4-b33c-f195bb654931') or (PPanel.Plugin and win.Uuid(panel.GetPanelInfo(nil, 0).OwnerGuid) == '42e4aeb1-a230-44f4-b33c-f195bb654931')
    end;
}
VictorVG commented 5 years ago

Да, я бы примерно схоже поступил - дописать новое значение к уже имеющемуся в комстроке. А кому нужно пусть сам стирает лишнее в его случае.