Сравнение “разновыделенных” файлов

Здесь обсуждается всё, что касается макросов.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Сравнение “разновыделенных” файлов

Post by Kildor »

Подскажите, как реализовать следующее
Если на активной панели выделено 2 файла, запустить программу по полному пути, в качестве аргументов — эти два файла
Иначе, если на активной панели выделен файл и на пассивной панели выделен файл, запустить программу по полному пути, передав в аргументы эти два файла.
Иначе, если на пассивной панели существует такой-же файл, что и под курсором на активной — …
иначе — $end
И всё это надо засунуть в User Menu.

Code: Select all

macro: post $if (APanel.SelCount==2) "F:\utils\compare it\wincmp3.exe" !& $else $if (APanel.SelCount==1 && PPanel.SelCount==1) "F:\utils\compare it\wincmp3.exe" !\!.! !#!\!.! $else $end
Вот это работать отказалось, если я правильно понимаю, потому, что я смешиваю макроязык и метасимволы, плюс что-то ещё 4)
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Post by Skirda »

вспомни про то, что в строках (в макросах) символ '\' должен быть как '\\'...
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

Code: Select all

macro: post $if (APanel.SelCount==2) "С:\\utils\\compare it!!\\wincmp3.exe" !& $else $if (APanel.SelCount==1 && PPanel.SelCount==1) "С:\\utils\\compare it!!\\wincmp3.exe" !\\!.! !#!\\!.! $else $end
не помогает.
Молча мигает панелями, и всё… :-(

Code: Select all

`:  CompareIt!!
    macro: post $if (APanel.SelCount==2) "С:\\utils\\compare it!!\\wincmp3.exe" !& $else $if (APanel.SelCount==1 && PPanel.SelCount==1) "С:\\utils\\compare it!!\\wincmp3.exe" !\\!.! !#!\\!.! $else $end
вот так это выглядит в farmenu.ini
PS: Есть ли возможность запустить макрос с трассировкой? чтоб показывался ход компилляции/выполнения, и можно было бы отловить где ошибка?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
al666
Posts: 239
Joined: Mon 04 Jul, 2005 08:55
Been thanked: 1 time

Post by al666 »

1. Все метасимволы нужно заключить в кавычки
2. вместо $else в конце должен быть еще один $end

Только это все равно не будет работать с длинными именами файлов, т.к. FAR их выведет с кавычками, и макропарсер обломается из-за дублирующихся кавычек.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

С длинными? или с пробелами внутри?
macro: post $if (APanel.SelCount==2) "С:\\utils\\compare it!!\\wincmp3.exe !&" $else $if (APanel.SelCount==1 && PPanel.SelCount==1) "С:\\utils\\compare it!!\\wincmp3.exe !\!.! !#!\!.!" $end $end
macro: post $if (APanel.SelCount==2) "С:\\utils\\compare it!!\\wincmp3.exe " "!&" $else $if (APanel.SelCount==1 && PPanel.SelCount==1) "С:\\utils\\compare it!!\\wincmp3.exe " "!\!.!" "!#!\!.!" $end $end
так?
macro: post $if (APanel.SelCount==2) "\"С:\\utils\\compare it!!\\wincmp3.exe\" !&" $else $if (APanel.SelCount==1 && PPanel.SelCount==1) "\"С:\\utils\\compare it!!\\wincmp3.exe\" !\!.! !#!\!.!" $end $end

ни один из вариантов не заработал :-(
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
Mike
Posts: 300
Joined: Thu 01 Sep, 2005 07:35
Location: Томск

Post by Mike »

Kildor

Так как же ты вышел из ситуевины? я вот сейчас тоже столкнулся...
Век живи - век учись...
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

Mike
конкретно из этой — забил.
А вот недавно решил написать макрос (в итоге получился файлик в 2 с лишним килобайта), так вызываю его из usermenu как selmacro: /sf — и более чем устраивает.

Хм, надо будет всё-же и в этой ситуации разобраться…
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
HaRT
Moderator
Posts: 11123
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 239 times
Been thanked: 380 times

Post by HaRT »

Kildor wrote:А вот недавно решил написать макрос (в итоге получился файлик в 2 с лишним килобайта)
Это не макрос ли запуска сравнения в разных вариантах в зависимости от выделения на панелях?
Просто я давно уже хотел накатать умнющий макрос для таких целей, да так и не сподобился.

Если моя догадка верна, прошу выкатить макрос и заложенные в него правила.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

HaRT
не-а, всё гораздо прозаичнее и страннее..
макрос, который собирает инфу об пользовательских скриптах оперы/файрфокса — userJS|greasemonkey
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
Mike
Posts: 300
Joined: Thu 01 Sep, 2005 07:35
Location: Томск

Post by Mike »

Kildor wrote: не-а, всё гораздо прозаичнее и страннее..
эх...жаль

HaRT, если все-таки сподобишся "накатать" макрос, кинь сюда, будь добр :oops:
Век живи - век учись...
kondrik
Posts: 140
Joined: Tue 29 Mar, 2005 13:30
Has thanked: 2 times

Post by kondrik »

Может кому то пригодится сравнение файлов/папок в пользовательском меню. Для сравнения использую Beyond Compare.
Я напрмер делаю сравнение через пользовательское меню так:
(сравнить выбранный файл/папку с текущей панели с одноименным файлом/папкой с другой панели)
Метка:

Code: Select all

bc2 "!^!.!" "!#!\!^!.!"
Команды:

Code: Select all

"C:\OTHER\FAR\UTILS\Beyond Compare 2\BC2.exe" "!^!.!" "!#!\!^!.!"
(сравниеть выделенный файл/папку в текущей панели с выбранной файлом/папкой в другой панели)
Метка:

Code: Select all

bc2 "!^!\!.!" "!#!\!.!"
Команды:

Code: Select all

"C:\OTHER\FAR\UTILS\Beyond Compare 2\BC2.exe" "!^!\!.!" "!#!\!.!"
(сравнить с помощью Windiff:)
Метка:

Code: Select all

windiff "!^!.!" "!#!\!^!.!"
Команды:

Code: Select all

windiff "!^!.!" "!#!\!^!.!"
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

kondrik
это всё известно…
хочется немного другого — чтоб одним хоткеем можно было бы сравнить
2 выделенных файла на активной панели
выделенный на активной и выделенный на пассивной
файл под курсором на активной и файл с таким-же названием на пассивной.
файл под курсором на активной и пассивнйо панелях
что ещё?
файл под курсором на активной и выделенный файл на пассивной?

есть у меня подозрения, что 2-мя килобайтами тут уже не обойдёшься, если конечно такое вообще реально ;)
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

фух…
сделал что-то относительно похожее на правду (правда пока не очень ;) )
логика следующая (по порядку):
если на активной панеле 2 выделеных файла — сравниваем их
если на активной 1 и пассивной — 1 — сравниваем их
Если на пассивной панели есть файл с именем как выделенный файл (либо файл под курсором) на активной — сравниваем их

Если на пассивной панели 1 выделенный файл, то сравниваем его с файлом под курсором.

Вызывается из пользовательского меню как
selmacro: /sf "C:\Program Files\Far\macro\compareNew.macro"

«переменная» %comm — это просто пояснение для удобства чтения макроса
%run — путь к программе для сравнения.

Выделение после сравнения снимается — вопрос, может лучше его оставлять?

Жду комментариев и добавлений ;) надеюсь, что кому-то это будет полезным…
Attachments
compareNew.zip
сравнение разновыделенных файлов
(758 Bytes) Downloaded 543 times
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
User avatar
HaRT
Moderator
Posts: 11123
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 239 times
Been thanked: 380 times

Post by HaRT »

Kildor wrote:(правда пока не очень
Лиха беда начало. ;)
Kildor wrote:Если на пассивной панели есть файл с именем как выделенный файл (либо файл под курсором) на активной
Предлагаю, если ни на одной панели файл не выделен, сравнивать текущий файл на активной панели с текущим же файлом на пассивной панели.
Kildor wrote:«переменная» %comm — это просто пояснение для удобства чтения макроса
Предлагаю %_comment.
Kildor wrote:надеюсь, что кому-то это будет полезным…
Сам макрос пока не смотрел, но обязательно посмотрю.
Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Post by Kildor »

HaRT
Предлагаю %_comment.
можно, это мелочи на деле.
Предлагаю, если ни на одной панели файл не выделен, сравнивать текущий файл на активной панели с текущим же файлом на пассивной панели.
не сильно нравится если честно такая идея. ;-) не вижу логичности.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru
Post Reply

Return to “Обсуждение макросов”