DirSync — синхронизация каталогов
Re: DirSync — синхронизация каталогов
Синхронизирую пару svn-репозиториев, репозиторий и экспорт… Как-то так, в общем. Это оказалось на удивление удобно делать, предварительно спрятав по CtrlH все папочки «.svn».
Всё очень классно… За одним исключением. Если плагин хочет перенести какую-то папку целиком, типа
Всё очень классно… За одним исключением. Если плагин хочет перенести какую-то папку целиком, типа
, то он и переносит её целиком, со всеми «.svn». А хотелось бы, раз уж они не участвуют в сравнении, и не переносить их.<<== tags\palomnik\*
<--- trunk\index.php
<--- trunk\tpl\default\style.css
Пользуюсь ФАРом больше 20 лет © собирательный.
Re: DirSync — синхронизация каталогов
v0.3.7, фар 2.0.1807 x86 XPx32.
Слева произвольный каталог, справа архив через арклайт. Нажимаем F11-Y, вызываем плагин. Жмем Esc - типа ничего не делаем. Опять жмём F11-Y.
Получаем ошибку и вылет фара стабильно:
Слева произвольный каталог, справа архив через арклайт. Нажимаем F11-Y, вызываем плагин. Жмем Esc - типа ничего не делаем. Опять жмём F11-Y.
Получаем ошибку и вылет фара стабильно:
Re: DirSync — синхронизация каталогов
И не должно. Зачем?r-bin wrote:v0.3.7
Не сохраняется сброшенное состояние "Use filter".
Re: DirSync — синхронизация каталогов
Ну как бы это настройка вроде. Чтоб не пользоваться фильтрами (я не пользуюсь) - вот зачем. И, соответственно, для гарантированной полной синхронизации её лучше снимать. Зачем тогда вообще эта галка? Может я, и кто-нибудь ещё, хотят её держать отключенной раз она есть. Может сделать так, что если нет фильтров изначально (даже не знаю как ими пользоваться), то галочку не включать или вообще дисэйблить с кнопками фильтров?Maximus5 wrote:И не должно. Зачем?
Re: DirSync — синхронизация каталогов
Я не знаю способа проверить включены ли фильтры на панели (такого нет похоже)
Включение флажка означает, что обработано будет ровно то, что видимо на панели. И это правильно)
Если вы фильтрами вообще не пользуетесь, то и беспокоиться не о чем)
Кстати, раньшы все было точно так же, просто включенного флажка не было. Никто не жаловался
Включение флажка означает, что обработано будет ровно то, что видимо на панели. И это правильно)
Если вы фильтрами вообще не пользуетесь, то и беспокоиться не о чем)
Кстати, раньшы все было точно так же, просто включенного флажка не было. Никто не жаловался
Re: DirSync — синхронизация каталогов
Макрос Copy left to right не убирает имеющуюся стрелку, в результате получается <------>, а если вручную сначала убрать, получится «current line is not difference info». Ну, макрос достаточно просто поправить…
P.s. И неплохо бы доработать до варианта «сразу несколько строк копировать в нужную сторону». Правда, слабо себе это представляю. Разве что не снимать выделение в процессе…
Что означает --->, а что ==>>? И почему в макросе нет ==>>?
Хотя, кажется, понял — это то, чего на другой панели нет?
Как удалить «лишние» файлы с одной из панелей? А то я что-то не понял.
P.s. И неплохо бы доработать до варианта «сразу несколько строк копировать в нужную сторону». Правда, слабо себе это представляю. Разве что не снимать выделение в процессе…
Что означает --->, а что ==>>? И почему в макросе нет ==>>?
Хотя, кажется, понял — это то, чего на другой панели нет?
Как удалить «лишние» файлы с одной из панелей? А то я что-то не понял.
Пользуюсь ФАРом больше 20 лет © собирательный.
Re: DirSync — синхронизация каталогов
Ну и где исправленный макрос? У меня он работает без ошибок.
===> означает что файл есть только слева. соответственно в макросе это нафиг не нужно. при синхронизации плагину важно только направление. остальное - инфа для пользователя
удалить - флажками в диалоге по закрытию редактора
===> означает что файл есть только слева. соответственно в макросе это нафиг не нужно. при синхронизации плагину важно только направление. остальное - инфа для пользователя
удалить - флажками в диалоге по закрытию редактора
Re: DirSync — синхронизация каталогов
А что там исправлять.
CtrlU Home $Rep(4) ShiftRight $end print("<---") Right
заменить на
CtrlU Home $Rep(4) ShiftRight $end CtrlD print("<---") Right
или, скажем,
Home $Rep(4) Right $end $Rep(4) BS $end print("<---") Right
А о многострочной замене я пока только в общих чертах думал. Не использовать ShiftRight и CtrlU, добавить цикл, в конце которого сдвиг курсора Down и проверка, всё ещё выделенная область или как… Есть такая функция в писании? Ну и после цикла сделать CtrlU.
Или задействовать CtrlF7\RESearch.
CtrlU Home $Rep(4) ShiftRight $end print("<---") Right
заменить на
CtrlU Home $Rep(4) ShiftRight $end CtrlD print("<---") Right
или, скажем,
Home $Rep(4) Right $end $Rep(4) BS $end print("<---") Right
А о многострочной замене я пока только в общих чертах думал. Не использовать ShiftRight и CtrlU, добавить цикл, в конце которого сдвиг курсора Down и проверка, всё ещё выделенная область или как… Есть такая функция в писании? Ну и после цикла сделать CtrlU.
Или задействовать CtrlF7\RESearch.
Пользуюсь ФАРом больше 20 лет © собирательный.
DirSync — Synchronize Directories
It's my first attempt at FAR's macro language, so please bear with me and point out any errors I made. The code is heavily based on the original Maximus5's code, except that I opted to remove dependency on menu, and use a number of keys instead:
- ALT+F1 = copy to left
- ALT+F2 = copy to right
- ALT+F3 = compare using WinMerge (or any other external utility)
- CTRL+F1 = edit left
- CTRL+F2 = edit right
The code for ALT+F3 seems especially cumbersome to me, surely there is a better way to do it?
- ALT+F1 = copy to left
- ALT+F2 = copy to right
- ALT+F3 = compare using WinMerge (or any other external utility)
- CTRL+F1 = edit left
- CTRL+F2 = edit right
The code for ALT+F3 seems especially cumbersome to me, surely there is a better way to do it?
Code: Select all
// Far2
const DirSyncID = 0x44725363
// Far3
//const DirSyncID = "F5AE7C40-F8D0-443E-82A4-285DBFB4FF69"
macro Descr="DirSync - edit left" Area="Editor" Key="CtrlF1"
{{
$if (callplugin(#%DirSyncID,1)==0) $Exit $end
$if (env("DirSyncFileInfo")=="")
MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
$Exit
$end
$if (!fexist(env("DirSyncFileLeft")))
MsgBox("DirSync info","File on the left does not exist",1)
$Exit
$end
ShiftF4 print(env("DirSyncFileLeft")) Enter
}}
macro Descr="DirSync - edit right" Area="Editor" Key="CtrlF2"
{{
$if (callplugin(#%DirSyncID,1)==0) $Exit $end
$if (env("DirSyncFileInfo")=="")
MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
$Exit
$end
$if (!fexist(env("DirSyncFileRight")))
MsgBox("DirSync info","File on the right does not exist",1)
$Exit
$end
ShiftF4 print(env("DirSyncFileRight")) Enter
}}
macro Descr="DirSync - copy to left" Area="Editor" Key="AltF1"
{{
$if (callplugin(#%DirSyncID,1)==0) $Exit $end
$if (env("DirSyncFileInfo")=="")
MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
$Exit
$end
$if (!fexist(env("DirSyncFileRight")))
MsgBox("DirSync info","File on the right does not exist",1)
$Exit
$end
Home Del Del Del Del print("<---") Right
}}
macro Descr="DirSync - copy to right" Area="Editor" Key="AltF2"
{{
$if (callplugin(#%DirSyncID,1)==0) $Exit $end
$if (env("DirSyncFileInfo")=="")
MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
$Exit
$end
$if (!fexist(env("DirSyncFileLeft")))
MsgBox("DirSync info","File on the left does not exist",1)
$Exit
$end
Home Del Del Del Del print("--->") Right
}}
macro Descr="DirSync - compare" Area="Editor" Key="AltF3"
{{
$if (callplugin(#%DirSyncID,1)==0) $Exit $end
$if (env("DirSyncFileInfo")=="")
MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
$Exit
$end
$if (!fexist(env("DirSyncFileLeft")))
MsgBox("DirSync info","File on the left does not exist",1)
$Exit
$end
$if (!fexist(env("DirSyncFileRight")))
MsgBox("DirSync info","File on the right does not exist",1)
$Exit
$end
// Switch to panels
%PanelCount=0;
$While (!Shell)
%PanelCount=%PanelCount+1;
CtrlTab
$End
// Save command line
$If (!CmdLine.Empty)
%Flg_Cmd=1;
%CmdCurPos=CmdLine.ItemCount-CmdLine.CurPos+1;
%CmdVal=CmdLine.Value;
Esc
$End
// Run the compare
print("winmerge \"")
print(env("DirSyncFileLeft"))
print("\" \"")
print(env("DirSyncFileRight"))
print("\"")
Enter
sleep(100)
// Restore command line
$If (%Flg_Cmd==1)
$Text %CmdVal
%Flg_Cmd=0;
%Num=%CmdCurPos;
$While (%Num!=0)
%Num=%Num-1;
CtrlS
$End
$End
// Return back
$While (%PanelCount > 0)
%PanelCount=%PanelCount-1;
CtrlShiftTab
$End
$Exit;
}}
Last edited by pepak on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: moved from http://forum.farmanager.com/viewtopic.php?f=39&t=4479
Reason: moved from http://forum.farmanager.com/viewtopic.php?f=39&t=4479