Page 1 of 20

PowerShellFar — Windows PowerShell host for Far Manager

Posted: Tue 26 Dec, 2006 02:09
by NightRoman
PowerShellFar is the FarNet module which implements Windows PowerShell host and user interface for invoking commands and scripts in Far Manager. PowerShell code can access and control Far functionality with the FarNet object model. The package includes ready to use scripts for various Far Manager tasks.

Distributed as the NuGet package: https://www.nuget.org/packages/FarNet.PowerShellFar

HOW TO DOWNLOAD AND INSTALL

Download and install manually (normally not recommended): https://nuget.org/api/v2/package/FarNet.PowerShellFar

Обсуждение ведётся тут.

Related topic: Анонс FarNet.

FarGit - PowerShell module for git not yet included to the package.

PowerShellFar scripts/modules created by other authors: http://forum.farmanager.com/search.php? ... &sr=topics

Posted: Thu 28 Dec, 2006 05:03
by NightRoman
PowerShellFar 1.0.2

Начиная с Far.Net 3.2.2 (не забудьте обновить!) доступ к выделенному в редакторе тексту теперь работает правильно, то есть появилась возможность выполнять незамысловатые операции над ним по схеме: получить выделенный текст, преобразовать, записать обратно (пример: Escape-Selection-.ps1). Выделение при этом не снимается, то есть можно проделать несколько последовательных операций.

Поскольку инструменты типа Escape-Selection- теперь стали практически возможны, добавлена команда меню "User command", которая исполняет код из настройки плагина PluginUserCommand. Это позволяет создать меню пользователя, что иногда практичнее, чем вводить команды явно. Пример: Test-UserCommand-.ps1 (подключить его можно демонстрационным скриптом Set-Settings-.ps1).

Команда плагина "Run selected code" теперь тоже работает, как задумано, так как доступ к выделенному тексту в порядке. Это весьма удобно при написании скриптов - какие-то части кода можно испытать, не выходя из редактора. Более того, поскольку код исполняется в едином глобальном пространстве, последующие команды могут пользоваться всеми переменными, созданными предыдущими командами, то есть код можно реально исполнять (отлаживать) по мере написания (с некоторыми оговорками, это не пошаговый отладчик, все-таки).

Реализована поддержка команд Write-Debug, Write-Error, Write-Host, Write-Output, Write-Verbose, Write-Warning, что в частности теперь позволяет применять опцию -WhatIf в командах, где она есть.

Прочие мелкие изменения и новые примеры скриптов здесь не перечислены, все отражено в About-PowerShellFar.txt. Готовая сборка плагина PowerShellFar.dll в папке bin.

Posted: Fri 05 Jan, 2007 03:32
by NightRoman
PowerShellFar 1.0.3

ВАЖНО: возьмите Far.Net 3.2.3
http://forum.farmanager.com/viewtopic.php?p=18481#18481

*) С редактором уже вполне можно работать из PowerShell. Скрипт Test-Editor-.ps1 показывает многие из возможностей работы с редактором, которые стали доступны с Far.Net 3.2.3.
*) Возможность назначать обработчики глобальных событий (локальные, типа отклика на выбор меню, можно было и раньше). Смотри руководство, глава "Remove-EndSpace-.ps1 и пример глобального обработчика событий".
*) "Run selected code" выполняет текущую строку, если нет выделенного текста.

Готовая сборка плагина PowerShellFar.dll в папке bin.

Posted: Mon 15 Jan, 2007 03:44
by NightRoman
PowerShellFar 1.0.4

1) требуется Far.Net 3.2.4: http://forum.farmanager.com/viewtopic.php?p=18788#18788
2) к сожалению, возможно, некоторые изменения в интерфейсах Far.Net 3.2.4 потребуют изменений и в коде скриптов, работавших с редактором. Изменения сделаны для удобства работы в дальнейшем. Подробности в Far.Net.Readme.txt.

Новое:
- $Psf имеет новые свойства HotLines и HotText.
- $Psf.Settings имеет новое свойство PluginPreloadable.
- Скрипты Invoke-Editor-.ps1, Select-Bookmark-.ps1.
- Test-Editor-.ps1 значительно пополнен новыми возможностями редактора в новой версии Far.Net 3.2.4, в частности, разнообразной работой с выделенным текстом.
- Search-History-.ps1 использует новые $Far.Panel.Path, $Far.CommandLine.Text, логика работы слегка изменена.

Подробности в документации, готовая сборка плагина PowerShellFar.dll в папке bin.

Posted: Wed 17 Jan, 2007 21:26
by NightRoman
PowerShellFar 1.0.5

Нужен Far.Net 3.2.5: http://forum.farmanager.com/viewtopic.php?p=18916#18916

В основном в этой версии работа была только над новыми скриптами, но ведь они и являются конечным продуктом для этого плагина.

- Новые скрипты: Complete-Word-.ps1, Expand-PowerShell-.ps1, New-Editor-.ps1, Search-Regex-.ps1.
- Invoke-Editor-.ps1 теперь открывает и другой скрипт, если ошибка там.
- Новое свойство $Psf.Paths - набор строк-путей элементов активной панели.

Posted: Mon 29 Jan, 2007 02:36
by NightRoman
PowerShellFar 1.0.6

Нужен Far.Net 3.2.6: http://forum.farmanager.com/viewtopic.php?p=19261#19261

- Налажен (в первом приближении) запуск консольных приложений с предварительным сохранением и последующим восстановлением экрана Far.
- Новое свойство $Psf.UserMenu для регистрации специального меню пользователя.
- Новый метод $Psf.Editor() - избавляет от рутинных проверок наличия редактора.
- Новый скрипт Indent-Selection-.ps1 увеличивает или уменьшает отступ выбранных строк в редакторе с учетом текущих установок табуляции.
- Новый скрипт Reindent-Selection-.ps1 - авто-форматирование отступов строк кода с учетом текущих установок табуляции.
- Новый скрипт Go-Home-.ps1 - установка курсора в позицию "extended" Home или выделение от текущей позиции до "extended" Home.
- Новый скрипт Go-Selection-.ps1 - установка курсора в начало\конец выделения.
- Новый скрипт Build-Call-.ps1 строит текст команды PowerShell интерактивно.
- Новый скрипт Show-Member-.ps1 - вариант Get-Member с Far меню и добавками.
- Новый скрипт Profile-.ps1 - пример профайла с заданием меню пользователя.
- Search-History-.ps1 устанавливает выбранным последний элемент списка, а также работает и с историей редактированных файлов - открывает в редакторе выбранный.
- Set-Settings-.ps1 теперь интерактивный и практический, а не демонстрационный.
- Search-Regex-.ps1: добавлен параметр $Options, по умолчанию 'IgnoreCase'; добавлены нестандартные расширения *.. и ?..
- Мелкие улучшения в Complete-Word-.ps1 и TabExpansion-.ps1.
- Select-Menu-.ps1 показывает, как использовать новые свойства: IMenuItem.Data, IMenu.SelectedData, позволяющие не применять буферизацию данных меню в массиве.
- Часть скриптов преобразована в автозагружаемые из файла глобальные функции, смотри пояснения в начале главы "Примеры скриптов".

Posted: Wed 31 Jan, 2007 12:12
by NightRoman
PowerShellFar 1.0.7

Нужен Far.Net 3.2.7: http://forum.farmanager.com/viewtopic.php?p=19403#19403

- Стандартое поведение панелей при запуске консольных приложений из PowerShell, для этого нужен Far 1.71.2187; если нет - работать тоже будет, но по-старому.
- "Run selected code", если вызван не из редактора, берет текст из ком.строки, префикс можно не указывать, но если он есть (команда из истории) - не проблема.
- Новое свойство $Psf.HotLine - текущая строка редактора или командная строка.
- $Psf.HotText при отсутствии текущего редактора теперь берется из ком.строки.
- Expand-PowerShell- теперь работает не только в редакторе, но и в ком.строке.
- Упрощено позиционирование меню в Complete-Word- и Expand-PowerShell-.
- Упрощение\обобщение скриптов с помощью последних новшеств Far.Net и $Psf.

Posted: Fri 02 Feb, 2007 05:31
by NightRoman
PowerShellFar 1.0.8

Нужен Far.Net 3.2.8: http://forum.farmanager.com/viewtopic.php?p=19519#19519
Желателен Far 1.71.2187: http://farmanager.com/farbugs/Far171b2187.rar

- Вывод команд направляется на экран пользователя (то, что под панелями), если целиком помещается, иначе в файл, как было раньше (из редактора и вьюера всегда в файл). Если Far до 1.71.2187, то предыдущий экран предварительно очищается.
- Search-History-.ps1 использует новый метод $Far.GetHistory(), который гораздо быстрее работает, и, даже важнее, корректно возвращает кириллицу.
- Complete-Word-.ps1: 1) работает не только в редакторе, но и в ком.строке - слова берутся из истории команд тоже с помощью $Far.GetHistory(); 2) добавлена группировка слов по предшествующему символу, слова первой группы обычно более вероятны для подстановки, во всяком случае в коде.
- TabExpansion- для Expand-PowerShell- добавлены подстановки имен файлов текущей папки по начальным буквам и полных путей, если шаблон содержит символы \ или /.
- Search-History-.ps1 и Search-Regex-.ps1 оба используют скрипт New-Regex.ps1, который допускает нестандартные упрощения типа *.. и ?..
- Создан Profile-.ps1 - рекомендуемый макет профайла (стартового кода).
- Прочие доработки в скриптах и коде плагина.

P.S. В этой версии плагин начинает в целом удовлетворять первоначальным задумкам.

Posted: Mon 05 Feb, 2007 01:54
by NightRoman
PowerShellFar 1.0.9

Нужен Far.Net 3.2.9: http://forum.farmanager.com/viewtopic.php?p=19640#19640
Желателен Far 1.71.2192: http://farmanager.com/farbugs/Far171b2192.rar

- Возможность запуска команд из User menu при уже запущенной команде; пример: для модально запущенного скриптом редактора команды User menu работают. Смотри пояснения в главе "Особенности PowerShell в PowerShellFar".
- Усовершенствования в некоторых скриптах и доработки в коде плагина.
- Документация обновлена, дополнена.

P.S. Версию можно считать release candidate в том смысле, что все первоначальные задумки реализованы и вроде удовлетворительно работают.

Posted: Mon 12 Feb, 2007 02:11
by NightRoman
1.1.0

Нужен Far.NET 3.3.0: http://forum.farmanager.com/viewtopic.php?p=20127#20127

- В Far.NET появились диалоги, автоматически они доступны и в PowerShellFar, смотри новый скрипт Test-Dialog-, где показаны все реализованные на данный момент элементы диалогов.
- Новый тип команд (префикс: >>), которые выполняются в фоновом режиме в отдельных потоках (важно прочитать документацию о деталях).
- Новый пункт меню плагина "Background jobs": список текущих фоновых задач и операции над ними (просмотр вывода, остановка, удаление).
- Новый метод $Psf.StartJob для запуска фоновых задач из скриптов, смотри пример использования в новом скрипте Test-Job-.
- Документация: "Background jobs", "Как использовать .NET сборки".
- Expand-PowerShell- и TabExpansion-: распознают новые типы выражений и дают несколько больший выбор возможных подстановок.

Posted: Sun 18 Feb, 2007 21:07
by NightRoman
1.1.1

Нужен Far.NET 3.3.1: http://forum.farmanager.com/viewtopic.php?p=20521#20521

- В Far.NET диалогах появилось много новых возможностей: обработка событий,
недостающие элементы ComboBox, ListBox, редактор паролей и вертикальный
текст\разделители, а также то, что почти все свойства элементов диалога -
динамические, то есть после запуска чтение\запись свойств соответствует тому,
что в диалоге. Скрипт Test-Dialog-.ps1 отражает практически все нововведения,
смотри также главу 18. Test-Dialog-.ps1.

- Новый скрипт Robocopy-.ps1 - оболочка утилиты Robocopy.exe: запускает Robocopy
в Far в фоновом режиме (подробности в главе 17. Robocopy-.ps1).

- Новый метод $Psf.CanExit() - нужен для предупреждения закрытия Far (F10) при
наличии фоновых задач (как использовать: смотри "Background jobs").

- Глобальная переменная $Job для фоновых задач переименована в $this, что более
соответствует стилю PowerShell и не занимает переменную $Job для других целей.

- Скрипт Test-Job- использует $this и новый метод Join() ожидания конца задач.

Posted: Tue 20 Feb, 2007 20:48
by NightRoman
1.1.2

Far.NET 3.3.2: http://forum.farmanager.com/viewtopic.php?p=20571#20571

[В Far.NET: исправлена досадная ошибка с IInputBox: когда история не была задана, строки писались в папку реестра "HKEY_CURRENT_USER\Software\Far\SavedDialogHistory" с мусорными именами, проверьте, удалите. Например, этим грешил скрипт Set-Settings-, который это использует.]

- Исправлены мелкие внутренние неполадки, может, и не проявлявшиеся, а также
устранены некоторые пойманные, но никому особо не нужные исключения.

- Реализован простенький вариант одноуровнего Write-Progress, который выводит
проценты и прочую инфу в заголовке консоли - все лучше, чем никакого прогресса.

- Новый скрипт Profile-Editor-.ps1 демонстрирует авто-очистку концов строк при
сохранении в редакторе, четыре популярные операции с мышкой: выделение слова
двойным щелчком, выделение текста перемещением с левой кнопкой, выделение от
курсора при помощи Shift+LeftClick и "контекстное меню" по правой кнопке (для
примера взят Test-UserCommand-.ps1, а в реале там должен быть ваш "любимый"
код), а также обработку Home, ShiftHome, Left and Right как вызов скриптов
Go-Home- и Go-Selection- (см. документацию).

- Мелкие, но полезные упрощения в скриптах за счет новшеств в Far.NET.

Posted: Thu 22 Feb, 2007 06:52
by NightRoman
1.1.3

Far.NET 3.3.3: http://forum.farmanager.com/viewtopic.php?p=20590#20590

- Диалог "Input and run code" ввода PowerShell команд тоже поддерживает
TabExpansion, причем, именно по клавише Tab (в будущем можно сделать
настраиваемым).

- В Far.NET редакторе появились полезные методы Begin() и End(), позволяющие
решить проблему медленной итерации по большому числу строк "централизованно".
Пример использования в Profile-Editor-, function Handle-BeforeSave (на файле с
40,000 строк эта процедура работала 2-3 минуты без Begin\End, теперь на том же
файле - всего 4 секунды).

- Работа с редактором в скриптах обновлена согласно изменениям в Far.NET

Posted: Mon 26 Feb, 2007 05:32
by NightRoman
1.1.4

Far.NET 3.3.4: http://forum.farmanager.com/viewtopic.php?p=20704#20704

В Far.NET добавлена поддержка хелпа, поэтому работа в основном была с хелпом и вокруг него. Документация тоже преобразована в хелп и переведена на английский, русская версия не будет поддерживаться, поэтому, кому нужно - сохраните старую документацию перед заменой версии. Надеюсь на понимание: *) так это будет доступно не только русско-читающим; *) продукт все-таки для программеров, а они худо-бедно английский читать умеют.

- New method $Psf.InputPowerShell() shows a dialog similar to "Input and run code" where you can use TabExpansion. Example: see Test-Dialog-.ps1.
- Far.NET supports help files now. See using .HelpTopic and .ShowHelp() in scripts.
- PowerShellFar documentation is now in English and in help file.
- New script Show-Hlf.ps1 - works like HlfViewer; sure, don't use them together.
- Profile-Editor-.ps1: F1 runs Show-Hlf.ps1.
- Complete-Word-.ps1: skips the current word itself.

Posted: Sun 04 Mar, 2007 21:57
by NightRoman
1.1.5

Far.NET 3.3.5: http://forum.farmanager.com/viewtopic.php?p=21030#21030

- PowerShellFar now keeps its own command history. Commands with '#' in the end are not added (e.g. you may want to ignore some commands in user menu (F2), file associations, etc.).
- New cool (and experimental) feature "Editor console": "*.psfconsole" files are opened in editor in special mode which is more or less similar to console. This feature is also available from scripts by $Psf.ShowConsole().
- New plugin menu commands: "Command History" and "Editor console".
- New script Debug-Msg-.ps1 useful for diagnostics, see help for details.
- Script Invoke-Editor-: simplified invocation of -.ps1 scripts with Debug-Msg-, added a few new types.
- TabExpansion expands also loaded functions and filters.
- New Far.NET menu feature: filters. It is used with AltDown in PowerShellFar Command History and Select-Menu-.ps1. Besides, Select-Menu- has new parameters.
- Removed Search-History-.ps1 (actually replaced with simple Show-History-.ps1) because search (filter) is enabled now just in menus.
- Corrected spelling of TabExpantion -> TabExpansion.
- New script Watch-Output-.ps1 - it is a useful tool similar to 'TOP', but it is also at least a very nice toy and demo, do try it (and also see the help).