FarManager
FarManager copied to clipboard
переход к файлу из "Истории просмотра и редактирования"
Description of the new feature or improvement
Иногда не хватает возможности перейти к файлу (открыть в панели и позиционировать курсор на файле) из "Истории просмотра и редактирования" (Alt-F11).
Во-первых, не всегда нужный каталог есть в "Истории папок" (Alt-F12), во-вторых, там переход к каталогу, а не файлу, в-третьих, довольно много лишних действий получается по переходу между историями и листанием/поиском в списках.
PS: В плагине AdvCmpEx к файлам под курсором можно переходить по комбинации Ctrl-PgUp. Думаю, такую же комбинацию можно использовать тут.
Proposed technical implementation details (optional)
No response
I think a simple keyboard macro can help you. A straightforward one could look like this: CtrlEnter CtrlHome g o t o : Enter
Macro { description="Перейти из окна 'История просмотра и редактирования' к файлу в панели"; area="Menu"; key="CtrlPgUp CtrlNum9"; flags=""; code="Keys("CtrlEnter CtrlHome g o t o : Enter")"; } так?
I found one drawback: this macro works when the history is open in the panels and the command line is present, but when called in the editor it no longer works. Noob's question: is it possible to execute the goto command while in the editor?
A more advanced script for this is among AltHistory emulation scripts.
Описание выглядит очень вкусно (и режим фильтрации по умолчанию, и переходу к каталогу и в файл). Но, увы, не работает.
- Не поддерживается нумпад. Это вроде лечится добавлением CtrlNum и ShiftNum в key= в трёх последних макросах.
- Макросы CtrlPgUp и CtrlPgDn не работают - они просто закрывают окошки истории. Как лечить это, я уже не знаю.
Да, и если вызвать из редактора/просмотра, то просто происходит переход в окно десктопа (хорошо ещё я знаю про переключение экранов, чтобы оттуда вернуться).
Две проблемы я исправил (добавил поддержку нумпада и заменил переход на первый экран для файловых панелей - что-то такое у меня в памяти мелькает, что в какой-то из версий в список экранов добавили десктоп, всё сдвинув и поломав совместимость). С причиной третьей проблемы (не работает CtrlPgDn и CtrlPgUp) я разобрался, но не знаю как решить.
Суть в том, что в Panel_GoToFolderAndOpen вначале вырезается префикс view/edit, если он есть, и для этого производится сравнение в том числе со строками "просмотр" и "редактор":
local function GetLocalizedStrings()
local lang = far.lang or win.GetEnv("farlang")
if lang == "Russian" then
return {
CmdView = "просмотр";
...
if prefix == localizedStrings.CmdView then
но в какой бы кодировке я не записывал макрос (OEM - 866 или ANSI - 1251), совпадения == не происходит. Через mf.index подстроку в любой из этих кодировок тоже не находит.
utf8
Спасибо, теперь кажется всё работает. Если кому интересно, ниже получившийся скрипт, который является переделкой оригинального скрипта. Скрипт заархивирован, поскольку система не позволяет присоединить напрямую. Буду благодарен любым замечаниям, как исправить возможные баги и/или улучшить.
upd: поправил ещё одну недоработку оригинала - некорректная работа с корневыми каталогами и файлами в них (удалялись корневые слеши в путях). AltHistory.lua.zip