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

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

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

Post by NightRoman » Fri 10 Apr, 2015 12:46

Latest post of the previous page:

Не связано с PSF, но связано с PowerShell. Некоторые баги и причуды PowerShell решил собрать в одном месте в виде демо скриптов и тестов: PowerShellTraps.

В частности, последнее изменение в FarGit (предыдущий пост) вызвано проблемой, покрытой тестами Unstable-outer-alias.

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Fri 10 Apr, 2015 19:57

FarGit

- добавлена функция Set-FarGitRoot, переходит на панели в корневую папку репозитория

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

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

Post by Skirda » Mon 13 Apr, 2015 07:16

Пытаюсь вызвать сабж Get-ADUser из-под FarNet+PowerShellFar (Win7x64, Far x86)

Выдает вот такое:
Attempting to perform the InitializeDefaultDrives operation on the 'ActiveDirectory' provider failed.
Unable to find an entry point named 'DsGetDcNameW' in DLL 'Netapi32.dll'.
Хотя повершельная консоль (что x86, что x64, что ISE) нормально работает с AD-остнасткой.

Помогло (by NightRoman):
set PATH=%WINDIR%\syswow64;%PATH%
Far.exe
We are the Borg. You will be assimilated.
So Say We All!

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Mon 13 Apr, 2015 08:05

По данной проблеме связанное обсуждение - viewtopic.php?p=55471#p55471

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Sat 25 Apr, 2015 09:25

FarGit

- добавлена функция Edit-FarGitConfig, которая открывает в редакторе файл config текущего репозитория; нестандартное расположение служебной папки git поддерживается тоже

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Wed 06 May, 2015 18:57

FarGit

- Show-FarGitHelp: уточнение распознавания команды git

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Sat 09 May, 2015 04:54

FarGit
- Invoke-FarGitBranchDelete: чуть разные диалоги и текст в зависимости от флага -Force

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Mon 11 May, 2015 06:46

FarGit
- Show-FarGitHelp для показа справки по команде гит работает с любым редактором, а не только ком. строкой. Если команда используется из юзер меню, то меню можно сделать запускаемым из редактора и диалогов макросом mf.usermenu(0, "")

User avatar
Kerberos464
Posts: 1238
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 17 times
Been thanked: 1 time

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

Post by Kerberos464 » Mon 09 Nov, 2015 10:18

подскажите, пожалуйста, как сделать, чтобы в редакторе заработало автодополнение (то, которое F11 -> PowershellFar -> 7. Complete)?
взял макрос из поставки фарнета, отредактировал так:

файл TabExpansion2.ps1 лежит в папке %farhome%\farnet\Modules\PowerShellFar

если в редакторе выполняю этот макрос, то вылезает, что не может найти TabExpansion2.ps1:

пробовал также класть этот файл сюда:
%farhome%\farnet\
%farhome%\farnet\Modules\
не помогло.

чувствую, где-то буксую, но не могу понять, где.
или вообще всё не так делаю?

p.s. забыл добавить - фар и фарнет последних версий, win 7 x64, far 3.0.4454 x86, farnet 5.0.63, powershellfar 5.0.85.

спасибо!
16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Mon 09 Nov, 2015 11:33

Kerberos464

Я использую такой макрос (не только для редактора)

Code: Select all

Macro {
area="Common"; key="F9"; flags="NotEmptyCommandLine"; description="PSF: TabExpansion"; action=function()
if Area.DialogAutoCompletion or Area.ShellAutoCompletion then Keys("Esc") end
if Area.Shell or Area.Info or Area.QView or Area.Tree then
     Keys("F11")
     if Menu.Select("PowerShellFar", 3) > 0 then
          Keys("Enter 7")
     else
          Keys("Esc")
     end
end
end;
}
Макрос симулирует вызов из меню. Прямой вызов скрипта TabExpansion2.ps1, как вы пытаетесь, не предусмотрен. Даже если он будет найден, работать это так не будет. Если по каким-то причинам надо вызывать без симуляции меню (интересно будет узнать, зачем), можно вызывать $Psf.ExpandCode(), этот метод сам загрузит TabExpansion2.ps1, когда надо, и воспользуется им, как надо.

User avatar
Kerberos464
Posts: 1238
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 17 times
Been thanked: 1 time

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

Post by Kerberos464 » Mon 09 Nov, 2015 11:37

NightRoman,

ага, я в итоге сделал почти такой же макрос (только без NotEmptyCommandLine), просто вначале думал, что это как-то по-олдскульному, да и в примере, который идёт вместе с плагином, вызов осуществляется через Plugin.Call.

спасибо!
16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Mon 09 Nov, 2015 11:43

В примере по другому нельзя (нет варианта из меню, нужно вызывать именно команду). В вашем случае можно и так, и так. Возможно, вариант с вызовом $Psf.ExpandCode() "лучше", но макрос мог быть мной добавлен еще до появления $Psf.ExpandCode().

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Thu 11 Feb, 2016 20:48

Подумываю о том, чтобы избавиться от пользовательских пунктов меню PowerShellFar. Возможно, о них многие и не знают. Тем более. Лучше оповестить заранее, вдруг кому-то это очень надо, и имеющиеся альтернативы хуже (расскажите, почему).

Меню PSF c user пунктами появилось, потому что не было возможности запускать пользовательское меню Фара из любой области, с помощью макроса. То есть команды PSF в меню Фара можно было иметь только в панелях (F2). Но с тех пор как такая возможность появилась и активно использовалась, стало понятно, что этот способ лучше. Недостатка два: этот макрос надо еще сделать (но так же и с PSF меню надо руками в скрипте писать команды) и нельзя настроить, что показывать, а что нет, в зависимости от области (с этим ничего не поделать, но опыт показывает, что это небольшая беда).

Недостатков же у PSF user меню больше. Команды нужно писать в профиле (сначала еще знать, как и что вызвать). После любого изменения надо перезапускать, чтобы применилось. В силу особенностей модуля и PowerShell скрипт-блоков пунктов меню, есть некоторые ограничения на сами команды. Ну и команды только одного типа (а в Фар меню есть разные префиксы, хоть и всего пара стандартных, но теоретически можно свои добавлять, PSF и FarNet дают способ).

Иначе говоря, $Psf.Action() планируется удалить. Тем самым, пользовательских пунктов, создаваемых так, в меню не будет. Будет стандартное меню PowerShellFar. Посмотрите у себя в профиле PSF и скриптах, нет ли этих вызовов. Если нет, то все и так хорошо. Если есть, подумайте о замене на вызов из меню Фара, а то и из диалога команд, там история есть, и для многих команд этого достаточно, если помнить имена.

Как вызвать меню Фара из макроса. Это дело вкуса. У меня такой способ:

В редакторе, просмотре и диалогах на F2 (потому что единообразно с панелями)

Code: Select all

Macro {
area="Editor Viewer Dialog"; key="F2"; description="User menu"; action=function()
mf.usermenu(0, "")
end;
}
и, поскольку F2 в редакторе - это сохранение, то еще и такой макрос на CtrlS (как во многих приложениях)

Code: Select all

Macro {
area="Editor"; key="CtrlS"; flags="NoSendKeysToPlugins"; description="Save (F2)"; action=function()
Keys("F2")
end;
}

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Thu 11 Feb, 2016 21:04

Да, если кому-то непременно надо иметь свое меню, создаваемое скриптом, то PSF это позволяет. Пример https://github.com/nightroman/FarNet/bl ... -More-.ps1. Честно говоря, я забросил редактирование этого скрипта, команды проще в меню Фара иметь. Главный козырь, возможность редактирования на лету меню Фара, перевешивает все остальное.

Borman2000
Posts: 8
Joined: Sat 20 Dec, 2008 13:00
Has thanked: 1 time

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

Post by Borman2000 » Tue 27 Sep, 2016 14:03

Установил PowerShell по инструкции.
Но в списке плагинов (F11) его нет, команда "ps: Get-Date" выдает "'ps:' is not recognized as an internal or external command, operable program or batch file."

Куда копать?

Win8.1 x64, Far 3.0.4545 x86 Portable

User avatar
NightRoman
Posts: 5852
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

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

Post by NightRoman » Tue 27 Sep, 2016 15:22

Формально требования такие (обычно это в анонсах или в History.txt):
Far Manager 3.0.4782
FarNet 5.2.0

То есть со старыми версиями Фара гарантий нет и поддержки, скорей всего, тоже нет.

Попробуйте, пожалуйста, с рекомендованной версией или новее. Если проблема и там, будем смотреть.

Borman2000
Posts: 8
Joined: Sat 20 Dec, 2008 13:00
Has thanked: 1 time

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

Post by Borman2000 » Wed 28 Sep, 2016 14:00

NightRoman wrote: Попробуйте, пожалуйста, с рекомендованной версией или новее.
Спасибо, разобрался. Мой косяк: ФАР-то обновил, но ярлык запускал его из другого места, старую версию.
С последним ночным билдом (3.0.4797) все работат отлично!
Спасибо :beer:

Post Reply

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