Подумываю о том, чтобы избавиться от пользовательских пунктов меню 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;
}