На этом форуме имеется много скриптов, позволяющих запомнить и восстановить папки и файлы. Возможно, есть скрипты, позволяющие запомнить режимы просмотра и сортировки с привязкой к папкам. Возможно даже имеются скрипты, сохраняющие и восстанавливающие фильтры (опять же с привязкой к папкам). То, что я предлагаю - попытка сохранения именованного контекста, включающего папки, сортировку, режим просмотра, фильтр и список открытых редакторов-вьюеров. Полнота восстанавливаемых данных настраивается. Также предусмотрен сервис удаления ненужных контекстов.
Сохранение контекста вызывается по CtrlS в панелях и в диалоге выхода из ФАРа (там появилась подсказка).
Восстановление контекста вызывается из пункта МЕНЮ плагинов. Надпись появится только в случае наличия сохранённых контекстов. Хотя это, наверно, будет переделываться.
Версия 1.4.4 от 10.05.2022
Исправлена неточность запуска ФАРа в нескольких панелях ConEMU. Теперь для этого используется команда плагина, таким образом ФАР запускается с теми ключами, что указаны в настройках ConEMU.
Исправлена неточность восстановления фильтров при включённой настройке плагина Временная панель [x] Menu from file list
Эта настройка не учитывалась, что приводило к неправильному восстановлению фильтров по расширению и появлению "мусора" в командной строке.
Исправлена мелкая ошибка, из-за которой в терминальном окне ФАРа всегда выставлялся флаг "Сохранить контексты"
(независимо от настройки)
Версия 1.4.2 от 29.12.2021
В процедуре очистки контекстов теперь запрашивается подтверждение на очистку LIFO-стека контекстов.
Исправлена ошибка, в результате которой при автосохранении контекста при выходе из ФАРа сохранялся безымянный контекст.
Версия 1.4.1 от 23.12.2021
Реализована работа с LIFO-стеком в сервисах удаления, импота, экспорта и просмотра контекстов.
В случае работы FAR-а из-под ConEmu начальная загрузка контекстов из стека приводит к автоматическому
запуску FAR-а в новых вкладках ConEmu с загрузкой контекста из стека. Примечание. Для этой возможности требуется плагин ConEmu.
Переключатель [?] Сохранять контекст в LIFO-стеке и выбирать при запуске FAR-а теперь сал трёхпозиционным. В варианте [?] при старте FAR-а и наличии LIFO-стека выдаётся запрос на подтверждение загрузки контекста.
Версия 1.4.0 от 20.12.2021
Реализована возможность сохранения контекста в стеке при выходе из ФАРа и восстановления из стека контекста при старте ФАРа.
В связи с указанной фичей добавлена настройка "Сохранять контекст в LIFO-стеке и выбирать при запуске FAR-а"
Версия 1.3.4 от 22.04.2021
Реализован просмотр сохранённых данных системы сохранения/восстановления контекстов (кнопка [ Просмотр ] в окне настройки). Кнопка видна при наличии модуля Lua Explorer „Advanced“.
Исправлена ошибка: дублирование id макросов.
Версия 1.3.3 от 21.04.2021
Исправлена мелкая неточность, из-за которой панель, бывшая во время сохранения активной, после частичного восстановления (восстановления только одной панели) в некоторых случаях становилась пассивной и наоборот.
Исправлены ошибки, в результате которых в базе сохранялись признаки частичного сохранения/восстановления одной панели. Эта информация - разовая и не должна сохраняться на будущую работу.
Исправлена ошибка, из-за которой функция "Разотметить все" после "Отметить все" не работала.
Реализовано сохранение-восстановление признака блокировки редактора. Если при сохранении контекстов редактор был открыт только на чтение, то после восстановления он также откроется R/O.
При расширении environment-переменных в путях к панелям исправлена неточность, из-за которой поиск переменной окружения был регистрозависимым.
В очередной раз изменены «горячие клавиши» вызова макросов. Теперь у всех макросов один хоткей, который можно переназначить. Он вызывает
The attachment image.png is no longer available
, в котором можно выбрать требуемую функцию.
Для задания горячей клавиши перейдите в поле хоткея и нажмите Ctrl+↓ (или кликните мышкой по полю). Далее нажмите желаемую клавишу.
Реализовано ведение протокола ошибок при восстановлении контекста. Если какой-то параметр восстановить не удалось, то в конце процесса будет выведен отчёт с причиной неудачи.
Начата (не закончена) локализация скрипта под два языка.
Версия 1.3.2
Реализовано сохранение / восстановление отметок файлов на восстанавливаемых панелях.
Добавлено формирование сообщения об ошибке при неудаче перехода на папку в плагиновой панели. При этом код и текст ошибки формируются системой и от меня не зависят. Например, при переходе внутрь «битого» архива формируется сообщение об отсутствии файла.
Версия 1.3.1
Реализована привязка пути к переменным среды. Например, если в исходной конфигурации переменная FARHOME установлена в C:\Program Files\Far Manager и путь на панели указывает к папке C:\Program Files\Far Manager\Plugins, а на приёмной машине FARHOME = D:\Far, то соответствующая панель
откроется в папке D:\Far\Plugins. См. форум.
Кнопка Ctrl+Enter в списке контекстов теперь работает только в ситуациях, когда имеет смысл "множественная" отметка (очистка, экспорт). Для загрузки контекста надо встать на него и нажать на Enter.
Реализовано ведение протокола ошибок при восстановлении контекста: если не удалось выставить папку, фильтр, режим просмотра или сортировки, то это отражается в протоколе.
Версия 1.2.6
В режимах списка сохранённых контекстов, не предполагающих множественный выбор (восстановление контекста) правая кнопка мыши теперь не отмечает соответствующую строку, а устанавливает указатель на неё.
Клик правой кнопкой мыши на разделителе в режимах, допускающих множественный выбор (очистка, экспорт), теперь приводит к инверсии отметки входящих в группу контекстов (аналогично кнопке #Ins#)
Исправлен ряд ошибок, проявлявшихся при восстановлении только одной панели.
Количество изменённых и не сохранённых в редакторе файлов отмечается при выходе из ФАРа цветом
Версия 1.2.5
В версии 1.2.3 клавиши + и - на основной клавиатуре были приравнены к таким же на цифровой клавиатуре.
В результате их стало невозможно вводить в фильтрующей строке. Теперь они используются для отметки/разотметки
при нажатой клавише Ctrl.
Необходимость таких клавиш объясняется отсутствием на некоторых ноутбуках цифровой клавиатуры.
Реализована отметка строк списка при помощи правой кнопки мыши.
Исправлена работа с кнопками { Ok } и [ Cancel ] в случае, если указатель стоит на разделителе групп.
Версия 1.2.4
Добавлена возможность использовать амперсанд (&) для указания символов-акселераторов в имени контекста. Возможность включается по настройке; по умолчанию - выключена.
При отметке клавишей + разделитель пропускается.
Исправлена ошибка, из-за которой скрипт «не видел» строки, отмеченные +.
В диалог со списком контекстов добавлены кнопки Ok и Cancel.
Исправлена ошибка, проявлявшаяся при импорте нескольких контекстов из одного файла в случае дублирования имени загружаемого контекста.
Диалогам выбора контекста, вызванным для разных целей (экспорт, загрузка, удаление) теперь присваиваются разные GUID-ы. Сделано по просьбе пользователя Ann.
При импорте нескольких контекстов добавлен вариант выбора [ Заменить все ].
В диалогах выбора действие клавиш + и - на основной клавиатуре приравнено к действию клавиш плюс и минус на цифровой клавиатуре.
В тех же диалогах реализовано отображение фильтра.
Версия 1.2.2
Реализовано объединение контекстов в группы; именем группы считается часть имени контекста до точки в случае, если имя контекста состоит из частей, разделённых точкой. Если таких имён нету, то сервис группирования не включается.
Реализована #массовый# экспорт контекстов в файл и последующая загрузка (всех или частично)
выгруженных контекстов из полученного файла.
Версия 1.2.1
Добавлена возможность восстановления параметров только одной панели. При сохранении можно указать, параметры какой панели (активной или пассивной) будут восстанавливаться, а при восстановлении - указать, на какой (левой или правой) устанавливать параметры исходной панели (подробнее см. тут~@PartRestore@)
Кардинально изменены хоткеи для вызова макросов. Теперь используются двухклавишные хоткеи; для
этого необходимо установить макрос MacroEx.
Горячие клавиши теперь такие:
CtrlC-S -- «простое» сохранение контекста
CtrlShiftC-S -- сохранение контекста с заданием локальных параметров~@PartRestore@
CtrlC-R -- «простое» восстановление контекста
CtrlShiftC-R -- восстановление контекста с переопределением параметров, указанных в настройках и при сохранении контекста.
Необходимость изменения горячих клавиш продиктована:
конфликтом горячей клавиши #CtrlR# (восстановить контекст) с нативным сочетанием, назначенным для обновления содержимого панели;
расширением функционала скрипта и количества макросов.
Очень сильно переделана логика работы с настройками скрипта, посему предыдущая версия не удаляется с сайта (пока).
Версия 1.1.11
Доделаны процедуры импорта и экспорта контекста из диалога восстановления контекста. При этом загруженный контекст сразу становится доступным для восстановления.
Исправлена синтаксическая ошибка в диалоге.
Изменена структура архива поставки таким образом, чтобы скрипт и сопутствующие файлы были в отдельной папке. В противном случае помощь по скрипту из некоторых мест была недоступна при наличии других файлов помощи в том же каталоге. ‼ Внимание! ‼ Необходимо удалить файлы SaveContext.lua и SaveContextRus.hlf из папки %FarProfile%\macros\scripts, если ранее Вы его туда ставили.
Версия 1.1.10 (экспериментально, немного не доделана)
Реализовано сохранение-восстановление признака "Использовать группы сортировки".
Реализован вызов окна настройки из диалога запроса имени сохраняемого контекста по Shift+F9.
Подключен файл помощи на русском языке.
В экспорте контекста предусмотрены: асоздание при необходимости конечного каталога и бобработка ситуации «файл уже существует».
Версия 1.1.9
Исправлена ошибка, в результате которой в списке сохранённых контекстов при замене имя сохраняемого контекста удваивалось.
Принесена в жертву оптимальность в угоду гибкости: список имён контекстов перечитывается каждый раз перед использованием для обеспечения параллельной работы нескольких экземпляров FAR-а
Версия 1.1.8
Исправлена ошибка, приводившая к зацикливанию скрипта при сохранении не-файловой панели
Реализовано сохранение-восстановление панелей быстрого просмотра (QView), информационной (Info) и древесной (Tree). Как на активной, так и на пассивной панели.
Реализована выгрузка контекста во внешний файл (Export) и загрузка контекста из файла, полученного при выгрузке (Import). Для этого в окно настройки скрипта и обслуживания контекстов добавлены кнопки [ Export ] и [ Import ].
Версия 1.1.7
Исправлен диалог завершения работы (увеличена ширина)
Версия 1.1.6
Переделан запуск внешней утилиты MountVol.exe (предыдущий вызывал cmd.exe, а тот, в свою очередь, генерировал предупреждение при вызове из папки, указанной по UNC-пути). Требуется модуль execute.lua.
Изменён скрипт в части сохранения контекста при выходе из ФАРа
Версия 1.1.5
При смене буквы диска смонтированного сменного диска и отсутствия файла/папки на диске, смонтированном с запомненным именем производится поиск того же самого диска, который был смонтирован при сохранении контекста.
При отсутствии папки, сохранённой в контексте, производится попытка перейти на ближайшую выше расположенную существующую папку (по настройке).
Редактор и вьюер, сохранённые в контексте, при отсутствии соответствующего файла не восстанавливаются.
Версия 1.1.4
Исправлена ошибочка преобразования фильтра пассивной панели в таблицу. Изменения только в модуле FileFilterTools
Версия 1.1.3
Реализовано восстановление пользовательской сортировки.
Реализовано восстановление признака Selected first.
Добавлены настройки интерфейса: теперь сохранение контекста из диалога завершения работы с ФАРом и восстановление контекста из МЕНЮ плагинов можно включать и отключать. По умолчанию - отключены.
В настройке скрипта можно настроить, какие элементы (пути, режимы просмотра, сортировки, фильтры, окна) подлежат восстановлению.
Реализована возможность при восстановлении контекста указать, какие элементы контекста подлежат востановлению. Данная возможность появляется по хоткею Ctrl+Alt+R либо по настройке.
Версия 1.1.2
Вызов сохранения/восстановления сделан и из панелей по хоткеям Ctrl+S и Ctrl+R.
Причина (кроме очевидной): из диалога не вызвать МЕНЮ настройки фильтров; соответственно, они не сохранялись.
Исправлены мелкие недочёты
Рефакторинг
Last edited by buniak_a_h on Tue 10 May, 2022 02:29, edited 36 times in total.
Проверил на диске от виртуальной машины, открытый плагином Observer - тоже местоположение восстанавливается.
PortaDev - не получилось восстановить (нет такого хост-файла)
Кстати, касательно моей нечаянной ошибки с ArcLite`ом и ведении протокола ошибок при восстановлении контекста. При наличии битого архива плагинная панель, на которую должно было выводиться содержание архива (если бы он был цельным, а не битым) молча не восстанавливается, без выдачи красного предупреждения.
Реализовано сохранение / восстановление отметок файлов на восстанавливаемых панелях.
Добавлено формирование сообщения об ошибке при неудаче перехода на папку в плагиновой панели. При этом код и текст ошибки формируются системой и от меня не зависят. Например, при переходе внутрь «битого» архива формируется сообщение об отсутствии файла.
buniak_a_h wrote: ↑Mon 15 Mar, 2021 10:42 Версия 1.3.2
1. Реализовано сохранение / восстановление отметок файлов на восстанавливаемых панелях
Подтверждается. В т.ч. в панелях ArcLite`а и Observer`а.
2. Добавлено формирование сообщения об ошибке при неудаче перехода на папку в плагиновой панели
Подтверждается. И с ArcLite`ом, и с Observer`ом.
Сохраняю контекст одиночной активной панели с выставлением опций "Только активную" и "Спрашивать". При его восстановлении указываю опции "Только активную" и "На правую". Он и восстанавливается на правую панель, но не как активную, а как пассивную.
buniak_a_h wrote: ↑Mon 15 Mar, 2021 12:17решил, что одно нажатие Tab юзера не затруднит
Однозначно не затруднит. Спасибо за пояснение. Предупреждён — значит вооружён. А если чуть чего, то есть ещё и возможность корректировки PanelTabs`ом или алиасом.
Ann wrote: ↑Mon 15 Mar, 2021 15:32
не является ли излишним обилие опций-запросов при сохранении контекста:
Я крайний правый вариант добавил позже, 2-й и 3-й убирать уже не стал. Да это и не помогло бы. Просто есть APanel и PPanel, но нет LPanel и RPanel. Т.е. имеется какой-то дуализм: Запоминается активная, а восстанавливается на левую. А которая левая - APanel или PPanel - определяется в момент восстановления в зависимости от того, какая панель - левая или правая - активна на начало восстановления. Ну я и запутался.
Ann wrote: ↑Mon 15 Mar, 2021 16:45
выбор возможных вариантов примерно в четыре раза сложнее
На самом деле сначала смотрится, не последний ли вариант; если не отказались, то в зависимости от ответа выставляется 2-й или 3-й, а потом - всё по накатанной. Так что упрощать нечего.
Ann wrote: ↑Sun 14 Mar, 2021 13:14
Не получилось у меня пока что ни как только с пользовательской переменной DN, устанавливаемой при загрузке Фара через командный файл (в одном случае это DN=H:\Do wn\2021_03_14\, а в другом DN=C:\Do wn\2021_03_14\. Экспорт и импорт контекстов с того/в тот экземпляр Фара, который установлен в папке H:\Far\, и с того/в тот, который установлен в C:\FarTst\, и последующая их загрузка через CtrlC-R приводили лишь к тому результату, что восстанавливался контекст на исходном диске без учёта переменной DN. Т.е. на диске H: восстанавливался контекст с диска C: и наоборот
Мне кажется, что я таки догадался что не так с переменной DN. Похоже на то, что в данном случае сказывается ошибка пользователя. И сабжевый скрипт здесь совершенно ни при чём.
А дело в том, что эта переменная изначально почему-то задавалась с замыкающим слешем. И после того, как я убрал этот слеш из запускающих батников обоих Фаров, всё встало на свои места. И тем самым лишний раз подтвердилась действенность пункта 1 версии 1.3.1:
buniak_a_h wrote: ↑Sun 14 Mar, 2021 04:10Версия 1.3.1
1. Реализована привязка пути к переменным среды. Например, если в исходной конфигурации переменная FARHOME установлена в C:\Program Files\Far Manager и путь на панели указывает к папке C:\Program Files\Far Manager\Plugins, а на приёмной машине FARHOME = D:\Far, то соответствующая панель
откроется в папке D:\Far\Plugins. См. форум
Ann wrote: ↑Mon 15 Mar, 2021 17:23
дело в том, что эта переменная изначально почему-то задавалась с замыкающим слешем. И после того, как я убрал этот слеш из запускающих батников обоих Фаров, всё встало на свои места
Я знал, что кто-нить наступит на эти грабли. Но не хотелось огород городить. Возможно, зря. Например, в исходной конфигурации есть переменная QQQ=C:\Qwerty, есть путь C:\Qwerty123\Sub. Вот надо ли заменять в этом пути начало на %QQQ%? Я заменяю только часть пути, после которой идёт слэш (т.е. если Env-переменная указывает на папку). А может - зря? Лишняя проблема + лишняя проверка…
И ещё. Сравнение регистрозависимое. Это означает не только что путь сравнивается со значением переменной, но и что если в исходной конфигурации была переменная QQQ, а в результирующей - Qqq, то подстановка не произойдёт.
Вопрос к знатокам Windows: может ли быть определено несколько Env-переменных, имена которых отличаются только регистром? И какая переменная в таком случае учитывается в подстановках и в GetEnv?
buniak_a_h wrote: ↑Mon 15 Mar, 2021 17:43
Вопрос к знатокам Windows: может ли быть определено несколько Env-переменных, имена которых отличаются только регистром?
Я вовсе не "знаток Windows", но вся моя, пусть и не обширная, практика говорит о том, что Env-переменные регистронезависимы.
И в Фаре это легко увидеть. Безразлично как я буду применять в комстроке ту же DN: cd %DN%, cd %Dn%, cd %dN% или cd %dn%. В любом случае получу один и тот же результат.
Ann wrote: ↑Mon 15 Mar, 2021 18:19
Env-переменные регистронезависимы.
1. Я уж проверил (плагином Environment Manager, хотя это и некорректно). Надо переделывать…
2. Слово регистронезависимы тут двузначно: имя - регистронезависимо, а значение - регистрозависимо. Для Path тоже надо переделывать …