FarManager icon indicating copy to clipboard operation
FarManager copied to clipboard

переход к файлу из "Истории просмотра и редактирования"

Open AVBL opened this issue 2 years ago • 9 comments

Description of the new feature or improvement

Иногда не хватает возможности перейти к файлу (открыть в панели и позиционировать курсор на файле) из "Истории просмотра и редактирования" (Alt-F11).

Во-первых, не всегда нужный каталог есть в "Истории папок" (Alt-F12), во-вторых, там переход к каталогу, а не файлу, в-третьих, довольно много лишних действий получается по переходу между историями и листанием/поиском в списках.

PS: В плагине AdvCmpEx к файлам под курсором можно переходить по комбинации Ctrl-PgUp. Думаю, такую же комбинацию можно использовать тут.

Proposed technical implementation details (optional)

No response

AVBL avatar Feb 24 '23 21:02 AVBL

I think a simple keyboard macro can help you. A straightforward one could look like this: CtrlEnter CtrlHome g o t o : Enter

yegor-mialyk avatar Feb 24 '23 21:02 yegor-mialyk

Macro { description="Перейти из окна 'История просмотра и редактирования' к файлу в панели"; area="Menu"; key="CtrlPgUp CtrlNum9"; flags=""; code="Keys("CtrlEnter CtrlHome g o t o : Enter")"; } так?

AVBL avatar Feb 24 '23 22:02 AVBL

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?

AVBL avatar Dec 16 '23 22:12 AVBL

A more advanced script for this is among AltHistory emulation scripts.

HamRusTal avatar Dec 18 '23 11:12 HamRusTal

Описание выглядит очень вкусно (и режим фильтрации по умолчанию, и переходу к каталогу и в файл). Но, увы, не работает.

  1. Не поддерживается нумпад. Это вроде лечится добавлением CtrlNum и ShiftNum в key= в трёх последних макросах.
  2. Макросы CtrlPgUp и CtrlPgDn не работают - они просто закрывают окошки истории. Как лечить это, я уже не знаю.

AVBL avatar Dec 19 '23 16:12 AVBL

Да, и если вызвать из редактора/просмотра, то просто происходит переход в окно десктопа (хорошо ещё я знаю про переключение экранов, чтобы оттуда вернуться).

AVBL avatar Dec 19 '23 16:12 AVBL

Две проблемы я исправил (добавил поддержку нумпада и заменил переход на первый экран для файловых панелей - что-то такое у меня в памяти мелькает, что в какой-то из версий в список экранов добавили десктоп, всё сдвинув и поломав совместимость). С причиной третьей проблемы (не работает 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 подстроку в любой из этих кодировок тоже не находит.

AVBL avatar Dec 20 '23 19:12 AVBL

utf8

w17 avatar Dec 20 '23 22:12 w17

Спасибо, теперь кажется всё работает. Если кому интересно, ниже получившийся скрипт, который является переделкой оригинального скрипта. Скрипт заархивирован, поскольку система не позволяет присоединить напрямую. Буду благодарен любым замечаниям, как исправить возможные баги и/или улучшить.

upd: поправил ещё одну недоработку оригинала - некорректная работа с корневыми каталогами и файлами в них (удалялись корневые слеши в путях). AltHistory.lua.zip

AVBL avatar Dec 20 '23 23:12 AVBL