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:

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

Post by NightRoman »

Latest post of the previous page:

FarGit

- добавлены явные проверки, что директория - это репозиторий, для более внятных сообщений
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

FarGit

- переименованы внутренние функции во избежание конфликтов с внешними alias
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

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

В частности, последнее изменение в FarGit (предыдущий пост) вызвано проблемой, покрытой тестами Unstable-outer-alias.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

FarGit

- добавлена функция Set-FarGitRoot, переходит на панели в корневую папку репозитория
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

Пытаюсь вызвать сабж 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: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

По данной проблеме связанное обсуждение - http://forum.farmanager.com/viewtopic.p ... 471#p55471
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

FarGit

- добавлена функция Edit-FarGitConfig, которая открывает в редакторе файл config текущего репозитория; нестандартное расположение служебной папки git поддерживается тоже
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

FarGit

- Show-FarGitHelp: уточнение распознавания команды git
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

FarGit
- Invoke-FarGitBranchDelete: чуть разные диалоги и текст в зависимости от флага -Force
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

FarGit
- Show-FarGitHelp для показа справки по команде гит работает с любым редактором, а не только ком. строкой. Если команда используется из юзер меню, то меню можно сделать запускаемым из редактора и диалогов макросом mf.usermenu(0, "")
User avatar
Kerberos464
Posts: 1239
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 19 times
Been thanked: 1 time

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

Post by Kerberos464 »

подскажите, пожалуйста, как сделать, чтобы в редакторе заработало автодополнение (то, которое 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: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

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: 1239
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 19 times
Been thanked: 1 time

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

Post by Kerberos464 »

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: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

В примере по другому нельзя (нет варианта из меню, нужно вызывать именно команду). В вашем случае можно и так, и так. Возможно, вариант с вызовом $Psf.ExpandCode() "лучше", но макрос мог быть мной добавлен еще до появления $Psf.ExpandCode().
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Подумываю о том, чтобы избавиться от пользовательских пунктов меню 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: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

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

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