PowerShellFar — PowerShell host и автоматизация Far Manager

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Latest post of the previous page:

Far+PowerShell=Ilike
Хорошо, подумаю над этим предложением.

На всякий случай. Речь идет про "консоль" в редакторе, да?
Far+PowerShell=Ilike
Posts: 3
Joined: Tue 28 Feb, 2012 19:31

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by Far+PowerShell=Ilike »

Да именно про неё.

Спасибо большое.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

И еще вопрос. Какая именно консоль используется (main session, asynchronous local, remote?). Решение-то я общее, наверное, сделаю, но просто интересно "для статистики".
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Пробуем
http://farnet.googlecode.com/files/_120 ... Far.dll.7z

В профиле (не редактора, а в обычном, файл, который вызывается в Settings \ StartupCode) ставим такую строку (на свой вкус поменяв):

Code: Select all

$Psf.EditorConsoleEndOutput = { Get-Date }
Перезапускаем Фар, получаем, что хотели (во всех 3-х типах консолей в редакторе). Между прочим, в remote консоли этот код и исполняется удаленно на той машине, все по-честному, инфа будет с удаленной машины (если какая машино-зависимая инфа в команде выводится).

Если профиль не используется (команда в Settings \ StartupCode пуста), то эту команду можно прямо там и указать в качестве StartupCode.

Если все работает, и других альтернативных или более продвинутых идей нет, то причесываю это, и оно будет в след. версии официально.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

http://farnet.googlecode.com/files/_120 ... Far.dll.7z

Вариант 2, причесанный и слегка измененный. Во-первых, перенес настройку в $Psf.Settings, во-вторых, сделал строкой, а не скрипт-блоком (не ест ресурсы, если консоль редактора не используется):

Code: Select all

$Psf.Settings.EditorConsoleEndOutputScript = 'Get-Date'
Синтаксис со скрипт-блоком тоже сработает (... = { ... }), но рекомендуется только для сложного кода (чтобы подсветка синтаксиса работала, вот и вся польза, но ресурсов при загрузке будет чуток больше отнимать).
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Может, кому пригодится - скриптик diff-.ps1

Сравнивает 2 выделенных файла на текущей панели и показывает в редакторе результат, полагается, что стоит Colorer, и он это наглядно красит. Используется git diff. Кто пользует другую аналогичную прогу, поменяйте в коде вызов.

Code: Select all

$ff = @(Get-FarItem -Selected)
if ($ff.Count -ne 2) {throw "Select two files."}
if ($ff[0] -isnot [System.IO.FileInfo] -or $ff[1] -isnot [System.IO.FileInfo]) {throw "Selected item is not a file."}

$ff = $ff | Sort-Object LastWriteTime

$temp = "$env:TEMP\diff.diff"
git diff $ff[0].FullName $ff[1].FullName > $temp

Open-FarEditor $temp -DeleteSource File -IsLocked
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Подсказка для тех, кто хочет сделать вызов из юзер меню, причем в более продвинутом виде (для файлов с разных панелей, если выделения нет). В юзер меню забиваем такую команду:

Code: Select all

>: $a, $b = Get-FarItem -Selected; if (-not $b) {$b = Get-FarItem -Passive}; diff-.ps1 $a $b #
Только в этом случае скрипт надо упростить, чтобы он просто принимал 2 параметра, а не брал выделение с панели. Например, просто убрав первую строку и заменив $ff на $args. Надеюсь, это легко сделать желающим самостоятельно.

(в принципе весь код можно забить в юзер меню, но скрипт и для других вызовов может быть полезен)
eugene1287
Posts: 41
Joined: Sat 02 Oct, 2010 00:25

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by eugene1287 »

Можно ли сделать так, чтобы некоторые скрипты, предназначенные только для Far были доступны не из path, а из своей отдельной папки?
Вот это можно для такой цели приспособить?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

eugene1287
Думаю, что нельзя без грязных хаков, которые не планируются.
Вот это можно для такой цели приспособить?
Там вроде все отвечено. Пользуйтесь. Но это все равно через path.

А в чем именно проблема состоит? Почему не иметь эти скрипты в path?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Кроме того, добавку папки скриптов для Фара в path можно сделать в профайле PSF. Тогда обычный path вне Фара не будет "засоряться" скриптами для Фара. В этом, может, задумка/"проблема" состоит? Тогда вот решение - пользуйте профайл и там добавляйте свою папку ScripsForFar в path.
eugene1287
Posts: 41
Joined: Sat 02 Oct, 2010 00:25

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by eugene1287 »

Вы имеете ввиду Bench\Profile-.ps1 ?

В чем проблема?
The suffixes designate that these scripts are not standard PowerShell scripts for, say, PowerShell console or ISE.
зачем тогда мне эти скрипты вне far?

существует ли ограничение на длину path?

Еще вопрос. Такой скрипт, как например Bench\Add-Path.ps1, изменяет env. Это изменение действует только в рамках текущего скрипта или на весь сеанс FAR?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Bench\Profile-.ps1 - это мой персональный, выложен больше для примера, но вобщем да, его (свой) пользуйте.
зачем тогда мне эти скрипты вне far?
Это я не понял. Конечно, они не нужны вне Фар. И все равно не вижу проблемы. Постарайтесь сформулировать, если действительно есть проблема или неудобство какое. Пока не знаю в чем и помочь.
существует ли ограничение на длину path?
Наверное. Я его не знаю. И не слышал, что кто-то когда-то его реально превысил.

Про Bench\Add-Path.ps1. Там первой строкой комментария написано:

Code: Select all

	Adds a directory path to the current process path.
(Нужен перевод или просто не смотрели?) Вообще, этот скрипт - это суть то самое, на что и была ссылка в самом начале сегодняшних вопросов.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Но в профайле этот скрипт особо не нужен. Скрипт следит, чтобы пути не добавлялись дважды. Это полезно при интерактивном использовании. А профайл-то исполняется только один раз при старте. Там можно просто поставить:

Code: Select all

$env:PATH = <my-path> + ";$env:PATH"
eugene1287
Posts: 41
Joined: Sat 02 Oct, 2010 00:25

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by eugene1287 »

c path я понял, спасибо.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

Новый вид макро-скриптов на PowerShell:
http://forum.farmanager.com/viewtopic.p ... 522#p95522
Тут излагается кой-какая новая экспериментальная концепция макро-скриптов в PSF (работающая, не гипотетическая). Я не решил еще, добавлять ли это в модуль или нет. К имеющимся "супер-макросам", которые важны мне для тестирования, она мало что добавляет, разве что удобно, что контекст скрипта один (но есть и вещи, которые удобнее или вообще возможны только в супер-макросе). Так что, может, и не буду добавлять. Если кто для себя видит какой потенциал в таких макро-скриптах, то можно высказаться.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — PowerShell host и автоматизация Far Mana

Post by NightRoman »

PowerShell V3 RC (Windows Management Framework) появилась для скачивания (ссылку уже потерял, просто гуглил). PSF работает вполне нормально. Есть кой-какие изменения в поведении PS (в заметках к релизу кое-что упомянуто) и парочка тестов отвалилась. Это мелочи, пользовать можно смело, но учитывая, что ваши скрипты тоже могут из-за изменений в PS работать иначе или не работать. PSF в этом не виноват, но если что заподозрите именно в PSF в связи с новой версией ядра PS - звоните, конечно.
Post Reply

Return to “Обсуждение плагинов”