Помогите написать макрос

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Locked
Anonymous

Помогите написать макрос

Post by Anonymous »

Требуется помощь в написании макроса для запуска утилиты ExamDiff.
Командная строка: ExamDiff File1 File2

Исходное состояние:
Курсор на файле в левой панели. В правой панели есть одноименный файл.
Делаю CtrlJ для первого файла потом пытаюсь взять в буфер его имя,
потом перехожу на правую панель и пытаюсь найти одноименный файл в правой панели и сделать ему CtrlJ
Нифига не выходит.
Помогите плиз.
Anonymous

Post by Anonymous »

Точнее выходит, но не совсем так как надо
После выполнения макроса в командной строке появляются имена файлов без путей и в examdiff грузятся две копии одного и того же файла (с той панели где осталась "шпала")

Вот текст макроса:
CtrlJ CtrlO ShiftHome CtrlC CtrlO /*опускаем имя файла в командную строку, выключаем панель и копируем имя в буфер*/
Esc /*чистим командную строку*/
e x a m d i f f Space CtrlJ /* пишем имя утилиты и указываем первым параметром файл с текущей панели*/
Tab AltF7 CtrlV Enter Enter /*переходим на другую панель, открываем поиск, вставляем имя, закрываем поиск*/
CtrlJ Enter /*переносим имя найденного файла во второй параметр и жмем заключительный Enter*/

Все замечательно, кроме имен файлов.
Подскажите, как опустить в командную строку полное имя файла?
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Как то эта тема уже проходила и все решалось отлично с помощью FARCmds. Вот что я могу предложить (Farmenu.ini):

Code: Select all

G:  Compare files
{
A:  Compare files on panels with 'Araxis merge'
    if exist "!#!\!^!.!" AraxisCompare /max "!^!\!.!" "!#!\!^!.!"
    if not exist "!#!\!^!.!" AraxisCompare /max "!^!\!.!" "!#!\!.!"
B:  Compare files on panels with 'diff'
    if exist "!#!\!^!.!" far:edit <diff "!^!\!.!" "!#!\!^!.!"
    if not exist "!#!\!^!.!" far:edit <diff "!^!\!.!" "!#!\!.!"
C:  Compare files on panels with 'File compare'
    if exist "!#!\!^!.!" far:edit <fc "!^!\!.!" "!#!\!^!.!"
    if not exist "!#!\!^!.!" far:edit <fc "!^!\!.!" "!#!\!.!"
D:  Compare files on panels with 'Visual file compare'
    if exist "!#!\!^!.!" vfcw "!^!\!.!" "!#!\!^!.!"
    if not exist "!#!\!^!.!" vfcw "!^!\!.!" "!#!\!.!"
-:
E:  Compare panels with 'Araxis merge'
    AraxisCompare /max "!^!\" "!#!\"
}
Roy
Posts: 51
Joined: Sat 02 Jul, 2005 00:08

Post by Roy »

CtrlG d i f f Space ShiftEnter CtrlShift] ShiftEnter Enter

либо
CtrlG
и вот такой баян
if exist !#!\!^!.! diff -c -p !#!\!^!.! !\!.! - в макрос как $Text

либо предыдущий рецепт подвесить на макрос F2 g b, но это не интересно :)
Anonymous

Помогите написать макрос: создание файла

Post by Anonymous »

Помогите написать макрос: Хочу чтобы при нажатии Alt+D создавался файл read.me и в него заносилось имя с расширением файла, на котором стоит курсор.

Вот первая попытка - но она не работает. Я постоянно сваливаюсь в быстрый поиск : (

REGEDIT4
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\AltD]
"Sequence"="ShiftF4 \"read.me\" Enter $End"
"DisableOutput"=dword:00000001
"NoPluginPanels"=dword:00000001
"NoFolders"=dword:00000001
Anonymous

Post by Anonymous »

Сорр. Все.Разобрался сам.
А почему имя файла нужно писать через пробелы????

"ShiftF4 r e a d . m e Enter $Text APanel.Current"
al666
Posts: 239
Joined: Mon 04 Jul, 2005 08:55
Been thanked: 1 time

Post by al666 »

А если подумать?
Anonymous

Post by Anonymous »

Подумал. Не знаю. Не юникод же
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Потому что это не имя файла в макросе, а то что ты жмешь на клаве
буква "r",
буква "e",
буква "d",
буква "m",
буква "e",
и тд....
Кнопки кароче...
User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Post by [e]Bu$ter »

А нафиг вообще по букве писать? Как я понимаю SirStefan юзает какую-то альфу. Значит можно проще: $Text \"readme.txt\".

Вот ещё из хелпа вырезка:
Фразу "$Text" можно не указывать, т.е. произвольный текст в двойных кавычках макродвижок воспримет как $Text. Исключение составляет ситуация, когда после двойной кавычки идет пробел - в этом случае "$Text" указывать обязательно.
Хотя, его нужно было прочитать до того как здесь писать.
А вообще, макросы - это ИМХО наверное лучшее что есть в FAR'e, т.ч. их обязательно нужно знать.
Anonymous

Post by Anonymous »

Сенк. Понял. По поводу $Text - Сперва так и делал - но не шло че-то. Потом нашел как записывать макросы, да и в инете macro.chm скачал.
ЗЫ: Если кому надо. Окончательно так:
"$if (fexist("read.me")) ShiftF4 r e a d . m e Enter CtrlEnd Enter $Text APanel.Current $Text " " $Else ShiftF4 r e a d . m e Enter $Text APanel.Current $Text " " $End"
wolf
Posts: 1030
Joined: Fri 08 Apr, 2005 12:54
Location: Moscow

редактор: как макросом узнать/проверить символ под курсором?

Post by wolf »

А если бы без копирования в буфер - вообще замечательно.
User avatar
Zeroes
Мультикопипастер Броадкастер
Posts: 570
Joined: Wed 16 Mar, 2005 20:53
Location: Gomel \ Belarus
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by Zeroes »

wolf

В Todo я занес уже давно
2005-04-05

> Может сделать функцию которая возращает код текущего символа
> под курсором? Editor.CurCharCode.
>
> можно было бы делать автозамену какую-нибудь.
> типа символы псевдографики изменить на текст символы.

ждем-с
--- Zeroes & Ones ---
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Post by zg »

Zeroes wrote:ждем-с
чего там ждать. можно макрос сделать:

Code: Select all

REGEDIT4

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlShiftZ]
"Sequence"="$IClip %a=Editor.Set(9,2); CtrlO Esc $MMode 1 AltIns End PgUp ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft Enter %a=Editor.Set(9,%a); %pos=0; $While(!Shell) F12 Up Enter %pos=%pos+1; $End F2 Ins Enter Down $Text "FAR Editor Symbol" Down $Text "set FAREDITORSYMBOL=" ShiftIns $IClip CtrlEnter Enter F2 Del Enter Esc F12 $Rep(%pos) Down %pos=%pos-1; $End Enter %a=Env("FAREDITORSYMBOL"); $If(index(%a,":")==7) %a=substr(%a,0,2); $Else %a=substr(%a,7,2); $End msgbox("",%a,0)"
"Description"="show hex code of symbol under cursor"
"DisableOutput"=dword:00000000
ps: оно там моргает, так это в фаре баг.
Anonymous

Разные макросы на одном хоткее.

Post by Anonymous »

Подскажите, пожалуйста, как повесить разные макросы на один и тотже хоткей в одной "области видимости".
Например, для разных действий при наличии выделения, и без.

Где-то была информация о том, что хоткей в реестре парсится до символа "@", но сейчас такие хоткеи вообще не срабатывают.

Тест. на "1.70 alpha 6 build 2051" Win2k RU SP4, WinXP EN SP2.
Locked

Return to “Нужна помощь”