Как заставить FAR перед просмотром файла выполнять утилиту?

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
Игорь Юдинцев
Posts: 725
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 1 time

Как заставить FAR перед просмотром файла выполнять утилиту?

Post by Игорь Юдинцев »

скажем, хочется по нажатию F4 на файлах *.class запускать декомпилятор и видеть в редакторе результат.
Пока решаю задачу через пользовательское меню: запустить программу, просмотреть полученный временный файл в редакторе, стереть временный файл. Но такая схема не работает в архивах; к тому же каждый новый обработчик будет занимать еще один пункт меню.
Существует ли универсальное решение для выполнения таких вот предварительных действий перед просмотром, или придётся писать плагин?

User avatar
HaRT
Moderator
Posts: 9231
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 92 times
Been thanked: 195 times

Post by HaRT »

Игорь Юдинцев
Для таких целей обычно используют Ассоциации файлов и плагин FarCmds из стандартной поставки.

Игорь Юдинцев
Posts: 725
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 1 time

Post by Игорь Юдинцев »

Да, это верно. Тут есть нюанс: в ассоциации можно записать только одну команду, т. е. просматривать получится только консольный вывод запущенной программы (view:<). Как быть, если программа создаёт файл, который нужно просмотреть? Запускать в ассоциации батник c "far -v %temp%\tmpfile" - не лучшее решение, имхо.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

Code: Select all

view:<dir >dir.tmp & type dir.tmp & del /q dir.tmp
В Windows 9x работать не будет :)

Игорь Юдинцев
Posts: 725
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 1 time

Post by Игорь Юдинцев »

Centaur
то, что нужно, спасибо.
а указать при этом колореру правильный тип подсветки реально?
или такое получится только через "far -v" ?

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

Тип подсветки colorer пусть определяет по первой строке. Он умеет. Если декомпилятор сам не даёт какую-нибудь достаточно уникальную первую строку, вывести её через echo перед type.

User avatar
jbak
Posts: 609
Joined: Tue 04 Oct, 2005 15:01
Location: Одесса

Post by jbak »

А я с этим намучился! Вот что получилось:
Файл C:\utils\jad.mcr:

Code: Select all

%fld= env("TEMP")+"\\";
Enter
F5 $text %fld Enter 
$if(dialog) Enter $end
"Del " $text %fld $text "*.java" 
Enter
$text "C:\\util\\jad.exe -f -s java -lnc -8 -o -d " $text %fld $text " "
$text %fld $text %fn
Enter
"Del " $text %fld $text %fn
Enter
"edit:" $text %fld $text %fname ".java"
Enter
А в ассоциацию ставится
selmacro: /fs C:\Util\jad.mcr

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

Post by zg »

Centaur wrote:Тип подсветки colorer пусть определяет по первой строке.
а типа указать нужное расширение временному файлу — нельзя?

User avatar
HaRT
Moderator
Posts: 9231
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 92 times
Been thanked: 195 times

Post by HaRT »

Игорь Юдинцев wrote:а указать при этом колореру правильный тип подсветки реально?
или такое получится только через "far -v" ?
Если уж на то пошло, то через far -e, т.к. Colorer работает только в редакторе.
А вообще используйте far:edit< вместо view:<, и будет Вам Colorer.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

zg wrote:а типа указать нужное расширение временному файлу — нельзя?
Нельзя. Мы вроде бы хотим файл декомпилировать, результат декомпиляции скормить редактору и удалить. Если мы отдадим редактору временный файл с расширением, то мы его не удалим. А у анонимных труб, через которые работает edit:<, расширений не бывает.

Альтернативное решение, вероятно, представить файлы .class как архивы, с командой echo !.java на list, вызовом jad’ом на extract и java-компилятора на add.

А вообще стоило бы ещё разобраться, не умеет ли jad свалить результат в стандартный вывод, а не в файл.

Post Reply

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