Почему в фаре можно открыть множество просмотрщиков и редакторов, а несколько панелей нельзя?
Был когда-то замечательный плагин Multi-panel, реализующий стек панелей.
Существует и более современный PanelTabs, помимо вкладок там есть и меню, напоминающее Multi-panel.
При переходе на far 3 я "потерял" Multi-panel.
А PanelTabs не прижился, т.к. некоторые мелкие но важные детали реализованы не так как мне хотелось бы.
Долго собирался, но мне окончательно надоело мучаться с фаровской парой панелей, поэтому я набросал свой аналог плагина Multi-panel.
При проектировании специально не ориентировался на оригинальный плагин, поэтому отличия должны быть.
Панелей на экране помещается всё так же две, но каждую из них в любой момент можно поместить в MRU-стек, и в любой другой момент достать оттуда в изначальном их состоянии (режим, сортировка, выделение).
Запомнить в стеке можно произвольное число панелей.
Список панелей сохраняется между запусками фара.
Если папка панели в данный момент не существует, то это индицируется (пункт списка серый).
Панели плагинов в основном поддерживаются, а если же панель невозможно сохранить, то это индицируется (пункт списка серый).
Запуск:Ctrl-~ — переключиться между активной и сохранённой, с отображением списка.
Шорткаты в списке (Ctrl должен удерживаться):
Отпустить Ctrl — осуществить переключение в выбранную панель ~/Shift-~ — выбрать следующую/предыдущую сохранённую панель в стеке Enter — осуществить переключение на пассивной панели F3 — клонировать выбранную панель F4 — удалить выбранную панель (если удаляется первая в списке панель, то происходит переключение в следующую)
Комбинации можно переназначить на обычные, но по умолчанию используются возможности MacroEx и для запуска действия необходимо удерживать клавиши (а обычное короткое нажатие по-прежнему вызывает встроенные фаровские команды):
LCtrl-F3 — сохранить активную панель в стек LCtrl-F4 — восстановить из стека предыдущую панель LCtrl-F8 — "закрыть" панель:
Если панель плагиновая, то выходим в реальную.
Если панель реальная, то устанавливаются папка и режимы по умолчанию (DefPanel в коде).
Те же комбинации с дополнительным Shift выполняют аналогичные действия для пассивной панели.
1. Что-то мне кажется, что "стек" (с изменением порядка) очень похож на обычную историю папок, к которой добавили (как, например, в истории команд и просмотров) возможность (а) отметки фаворитных и (б) показ "только фаворитов" (по CtrlH, например). Кстати, по-моему, правильная идея . Не?
2. Для использования в макросах (и просто мышечной памятью пальцев) надо, естественно, номера (и буквы-шоткаты) "закреплять" за папками. Но только это - другой механизм, другая логика и, возможно, другой скрипт. Я так думаю…
MultiPanel — стек панелей
Posted: Fri 24 Jan, 2020 12:35
by John Doe
buniak_a_h wrote: ↑Fri 24 Jan, 2020 12:19
очень похож на обычную историю папок
Что-то в этом конечно есть.
Но не забывайте также что тут ещё сохраняется и выделение, и режим сортировки, режим панели, потожение курсора, и т.п.
Т.е. может существовать (и имеет практический смысл) 2 элемента с одним и тем же путём.
MultiPanel — стек панелей
Posted: Fri 24 Jan, 2020 12:40
by HaRT
John Doe wrote: ↑Fri 24 Jan, 2020 11:59
что если я хочу использовать номера как постоянные шорткаты?
Мне кажется, постоянные лучше брать не из автоматически добавленной нумерации, а либо подбирать из текста самих элементов, либо назначать вручную (примерно как в меню плагинов). И да, в этом случае польза нумерации резко снижается.
MultiPanel — стек панелей
Posted: Mon 27 Jan, 2020 16:13
by John Doe
v0.4-alpha
- Постоянные шорткаты
- Частичная поддержка Временной панели
- Исправления и рефакторинг
Возможно, это несколько вне темы данного макроса... но хотелось бы среди списка (стека) панелей иметь возможность создавать (помечать) так называемые "постоянные" папки. Суть "постоянной" папки в том, что когда после выбора этой папки в стеке мы переходим в другую папку средствами FAR (навигацией по файловой панели или с помощью истории папок), то в стеке остаётся первоначальная "постоянная" папка, а рядом с ней создаётся ещё один элемент стека, соответствующий текущей папке. Таким образом, "постоянная" папка никогда не исчезает из стека папок. При этом, если мы постоянно из неё переходим в другую папку средствами FAR, то стек растёт. Либо же, если это технически не сложно, вместо постоянного роста стека можно каждый раз использовать один и тот же "временный" элемент стека, который всегда будет содержать текущую папку, в которую мы перешли из любой "постоянной" папки.
MultiPanel — стек панелей
Posted: Thu 30 Jul, 2020 13:27
by John Doe
DV wrote: ↑Wed 29 Jul, 2020 13:31
Возможно, это несколько вне темы данного макроса...
Это вполне попадает в тему: я и сам задумывался о подобной функциональности.
Но не придумал как это реализовать интуитивно понятным способом.
MultiPanel — стек панелей
Posted: Fri 31 Jul, 2020 11:44
by John Doe
Sergej_Sim wrote: ↑Fri 31 Jul, 2020 05:47
Модуль Мульти-панель для FAR, История изменений
2003-Дек-02 (ревизия 94) - Версия 3.2
Этот плагин в настоящий момент никем не развивается и не поддерживается.
В данной теме обсуждается альтернативная реализация сходной функциональности, подробности в шапке.
MultiPanel — стек панелей
Posted: Fri 31 Jul, 2020 12:26
by DV
John Doe wrote: ↑Thu 30 Jul, 2020 13:27я и сам задумывался о подобной функциональности.
Но не придумал как это реализовать интуитивно понятным способом.
Если Macro API позволяет, то "прицепить" скрипт к событию смены папки в файловой панели (чтобы часть скрипта вызывалась как callback на событие смены папки) - и, если в скрипте MultiPanel последним выбранным элементом была "постоянная" папка, то по событию смены папки создать новый (или переключиться на "временный") элемент в стеке папок MultiPanel.
MultiPanel — стек панелей
Posted: Mon 03 Aug, 2020 17:52
by HaRT
John Doe, спасибо за удобный скрипт! Несколько мелочей по документации: 1. В шапке после “~ — выбрать следующую сохранённую панель в стеке” хорошо бы написать также “Shift-~ — выбрать предыдущую сохранённую панель в стеке”. 2. Желательно также добавить ~ и Shift-~ на нижнюю рамку меню списка сохранённых панелей. 3. Там в списке Ctrl-Enter немного сбивает с толку, ведь Ctrl и так уже нажат и у прочих клавиш не приписан. Предлагаю и тут оставить просто Enter. 4. Если в списке нажать F1, то появится диалоговое окно с зачаточной справкой: See Bottom title for hotkeys. Предлагаю скопировать туда хотя бы команды для работы с настройками.
MultiPanel — стек панелей
Posted: Wed 05 Aug, 2020 15:29
by John Doe
1, 2: сознательно не включал самоочевидные функции.
3. Ctrl-~ это умолчательный шорткат. Функциональность на нём не завязана, список возможно вызвать как обычное меню.
4. Так и задумывалось, но руки не дошли.
Если вдруг захотите заняться сами, то пожалуйста.
MultiPanel — стек панелей
Posted: Wed 05 Aug, 2020 15:47
by HaRT
John Doe wrote: ↑Wed 05 Aug, 2020 15:29
Если вдруг захотите заняться сами, то пожалуйста.
Для начала слегка доработал шапку.
MultiPanel — стек панелей
Posted: Wed 05 Aug, 2020 16:06
by Shmuel
HaRT wrote: ↑Wed 05 Aug, 2020 15:47
Для начала слегка доработал шапку
В шапке встречается как "шорткат", так и "шоткат".
MultiPanel — стек панелей
Posted: Fri 15 Jan, 2021 20:11
by citRiks
Скрипт прекрасен, но я все же сломал моск,
пытаясь понять зачем позволяется сохранять по Ф3 неограниченное количество одинаковых копий?
(Это не про клонирование, а именно "Ctrl-F3" в панелях)
Еще много об чего сломал моск,
так логика весьма хитрая, а я пытался не менять эту логику,
а тоже типа "хитро" вставить куда надо то чего не хватает для юзабельности.
Об чт-то еще там я ломал моск, и давай чинить, два дня чинил ..
(как вы думаете, это нормально, или идиотизм?)
То чего я начинил, лежит тут: https://github.com/dr-dba/far-lua-nav-multi-panel/
P.S:
Вспомнил что мешало больше всего.
при переключении в панель (=закладку), и далее переходам туда-сюда,
закладка становилась в этот самый переход,
вместо того чтобы оставаться той же самой папкой.
Может я чего то не понял?
на мой взгляд как-то совсем не логично
MultiPanel — стек панелей
Posted: Fri 15 Jan, 2021 20:19
by citRiks
John Doe,
Традиционно код переформатирован, переменные переименованы,
логика осталась в болшинстве той-же, и нетронутой,
насколько это возможно для добавления функциональности:
DV wrote: ↑Fri 31 Jul, 2020 12:26
Если Macro API позволяет, то "прицепить" скрипт к событию смены папки в файловой панели (чтобы часть скрипта вызывалась как callback на событие смены папки) - и, если в скрипте MultiPanel последним выбранным элементом была "постоянная" папка, то по событию смены папки создать новый (или переключиться на "временный") элемент в стеке папок MultiPanel.
Так у меня и получилось что-то вроде того, закладки не меняют свою директорию,
текущая директория, если она не в закладках, то сидит в меню под номером "0" (ноль)
Чтобы ее тоже можно было сохранить как закладку и вернутся.
Далее, если
1.) прошлая последняя директория НЕ в закладках,
2.) а настоящая (текущая) директория ДА в закладках,
.. то уже эта прошлая директория будет под номером "0" (ноль),
чтобы быстрый switch осуществлялся в нее, что логично и интуитивно.
Пказывать текущую тогда не нужно, потому что пункт (2.)
MultiPanel — стек панелей
Posted: Sat 16 Jan, 2021 09:31
by citRiks
citRiks wrote: ↑Fri 15 Jan, 2021 20:11
Об чт-то еще там я ломал моск, и давай чинить, два дня чинил ..
Мдя, плюс еще полдня починки багов
починено, плюс косметические правки