Сохранение/восстановление именованных контекстов

Здесь обсуждается всё, что касается макросов.
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

На этом форуме имеется много скриптов, позволяющих запомнить и восстановить папки и файлы. Возможно, есть скрипты, позволяющие запомнить режимы просмотра и сортировки с привязкой к папкам. Возможно даже имеются скрипты, сохраняющие и восстанавливающие фильтры (опять же с привязкой к папкам). То, что я предлагаю - попытка сохранения именованного контекста, включающего папки, сортировку, режим просмотра, фильтр и список открытых редакторов-вьюеров. Полнота восстанавливаемых данных настраивается. Также предусмотрен сервис удаления ненужных контекстов.

Сохранение контекста вызывается по CtrlS в панелях и в диалоге выхода из ФАРа (там появилась подсказка).
Восстановление контекста вызывается из пункта МЕНЮ плагинов. Надпись появится только в случае наличия сохранённых контекстов. Хотя это, наверно, будет переделываться.

Версия 1.4.4 от 10.05.2022
  1. Исправлена неточность запуска ФАРа в нескольких панелях ConEMU. Теперь для этого используется команда плагина, таким образом ФАР запускается с теми ключами, что указаны в настройках ConEMU.
  2. Исправлена неточность восстановления фильтров при включённой настройке плагина Временная панель
    [x] Menu from file list
    Эта настройка не учитывалась, что приводило к неправильному восстановлению фильтров по расширению и появлению "мусора" в командной строке.
SaveContext.1_4_4.7z
(47.73 KiB) Downloaded 190 times
Last edited by buniak_a_h on Tue 10 May, 2022 02:29, edited 36 times in total.
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

Latest post of the previous page:

Ann wrote: Wed 10 Mar, 2021 11:01 По возможности, присмотритесь, пожалуйста, к PanelTabs как к весьма оригинальному и архиудобному по результатам плагину закладок.
Когда я выяснил, что старый Named Folders работает криво, а Named Folder lite - слишком lite, я поставил себе PanelTabs. Но потом я (1) нашёл хороший заменитель (я Вам высылал мою доделку Bookmark manager-а) и (2) PanelTabs стал глючить (у меня записано: Иногда начинает непрерывно мигать. Очень неприятно…). И я его снёс.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

buniak_a_h wrote: Wed 10 Mar, 2021 11:40потом я нашёл хороший заменитель (я Вам высылал мою доделку Bookmark manager-а)
Ваш вариант Bookmark manager`а вполне можно называть не просто хорошим, а отличным скриптом закладок. Но вот заменителем плагина PanelTabs я бы его никак не назвал бы. Потому что они существенно разные. PanelTabs функциональнее и удобнее особенно когда работаешь в Ворде с мышкой и переключаешься в Фар. Его табы всегда на виду (а это очень хорошо для мнемоники) и их очень удобно активировать.
PanelTabs стал глючить (у меня записано: Иногда начинает непрерывно мигать. Очень неприятно…). И я его снёс
А у меня вот ни каких миганий линейки табов PanelTabs не наблюдалось, и не наблюдается. Eго настроил ещё sToLp лет 5 назад, а я вносил лишь мизерные правки. При желании могу прислать в личку копию.
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

Версия 1.3.1
  1. Реализована привязка пути к переменным среды. Например, если в исходной конфигурации переменная FARHOME установлена в C:\Program Files\Far Manager и путь на панели указывает к папке C:\Program Files\Far Manager\Plugins, а на приёмной машине FARHOME = D:\Far, то соответствующая панель
    откроется в папке D:\Far\Plugins. См. форум.
  2. Кнопка Ctrl+Enter в списке контекстов теперь работает только в ситуациях, когда имеет смысл "множественная" отметка (очистка, экспорт). Для загрузки контекста надо встать на него и нажать на Enter.
  3. Реализовано ведение протокола ошибок при восстановлении контекста: если не удалось выставить папку, фильтр, режим просмотра или сортировки, то это отражается в протоколе.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

buniak_a_h wrote: Sun 14 Mar, 2021 04:10 Версия 1.3.1

[*]Реализована привязка пути к переменным среды. Например, если в исходной конфигурации переменная FARHOME установлена в C:\Program Files\Far Manager и путь на панели указывает к папке C:\Program Files\Far Manager\Plugins, а на приёмной машине FARHOME = D:\Far, то соответствующая панель
откроется в папке D:\Far\Plugins. См. форум
Спасибо большое за реализацию этой функциональности. Я внимательно опробовал её действенность. И в основном она реализуется отлично. Всё, что в пределах FARHOME воспроизводится верно в Фарах, установленных на разных дисках в различных папках.

Не получилось у меня пока что ни как только с пользовательской переменной DN, устанавливаемой при загрузке Фара через командный файл (в одном случае это DN=H:\Do wn\2021_03_14\, а в другом DN=C:\Do wn\2021_03_14\. Экспорт и импорт контекстов с того/в тот экземпляр Фара, который установлен в папке H:\Far\, и с того/в тот, который установлен в C:\FarTst\, и последующая их загрузка через CtrlC-R приводили лишь к тому результату, что восстанавливался контекст на исходном диске без учёта переменной DN. Т.е. на диске H: восстанавливался контекст с диска C: и наоборот.


[*]Кнопка Ctrl+Enter в списке контекстов теперь работает только в ситуациях, когда имеет смысл "множественная" отметка (очистка, экспорт). Для загрузки контекста надо встать на него и нажать на Enter
Хорошо. Принято к сведению.
[*]Реализовано ведение протокола ошибок при восстановлении контекста: если не удалось выставить папку, фильтр, режим просмотра или сортировки, то это отражается в протоколе
Пожалуйста поведайте об этом протоколе поподробнее как его применять. А то его признаки пока что вроде бы не проявлялись. Возможно, от того, что ошибок как таковых в ходе экспериментов я не заметил.
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

Ann wrote: Sun 14 Mar, 2021 13:14
buniak_a_h wrote: Sun 14 Mar, 2021 04:10 Реализовано ведение протокола ошибок при восстановлении контекста: если не удалось выставить папку, фильтр, режим просмотра или сортировки, то это отражается в протоколе
Пожалуйста поведайте об этом протоколе поподробнее как его применять. А то его признаки пока что вроде бы не проявлялись. Возможно, от того, что ошибок как таковых в ходе экспериментов я не заметил.
Для пробы сохраните контекст с пользовательским режимом просмотра и попробуйте восстановить его на машине, на которой нет такого режима. Или сохраните панели на диске, которого не будет при восстановлении. При восстановлении появится сообщение о том, что что-то не удалось: установка пути на панель, или режим просмотра, или режим сортировки и т.д.…
------
с Env-переменной я позже буду смотреть.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

buniak_a_h wrote: Sun 14 Mar, 2021 15:47сохраните панели на диске, которого не будет при восстановлении. При восстановлении появится сообщение о том, что что-то не удалось: установка пути на панель…
Красные сообщения при выше приведённой и подобных ошибках выводится, да. А я-то по инерции под протоколом подразумевал файл типа log`а. И поэтому недоумевал зачем бы понадобилось такое усложнение здесь.

Ну а в целом, скрипт становится ещё более универсальным. И у меня даже подспудно начал возникать вопрос: а не обладает ли он уже и ИИ? Особенно после того, как я стал запускать его посредством PanelTabs и алиасов. Просто фантастически удобный макрос, неимоверно облегчающий и ускоряющий мои действия. Ранее, до его появления, бывшие скучно-рутинными.
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

Ann, Вы что-то писали про процедуру, которую нужно выполнить после активации контекста. И, хотя я понял, что теперь Вам это не нужно, но я нашёл способ сохранять функции в базе. Вопросы:
  1. как эту процедуру задавать?
    1. открывать модальный редактор, а при выходе возвращать введённый скрипт в качестве тела процедуры;
    2. указывать файл, хранящий скрипт;
    3. Действие - одна строка, содержащая одну/несколько (не много) команд, и вводить её при сохранении контекста;
  2. что это должен быть за скрипт:
    1. макрос на языке lua/moon;
    2. команды ОС и, возможно, выражения на lua/moon в виде lm:<выражение>;
    3. ещё что-то.
Не факт, что я сделаю (раз Вам не требуется уже), но хотелось бы знать, что требуется на практике.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

buniak_a_h wrote: Sun 14 Mar, 2021 21:42Вопросы:
1. как эту процедуру задавать?
...
2. что это должен быть за скрипт
Ответами на поставленные вопросы вероятнее всего будут:
1.с. действие – одна строка, содержащая одну/несколько (не много) команд, и вводить её при сохранении контекста;
2.а. макрос на языке lua/moon;
2.б. команды ОС и, возможно, выражения на lua/moon в виде lm:<выражение>
2.с. ещё что-то — например, вызов плагина Фара
Приведу простейшие примеры операций, повседневно применяемых на практике вслед за восстановлением контекста.

Первый практический пример. Путь на одной или на обеих панелях представлен в UNC-форме. И нужно привести его к обычному буквенному виду. Упомянутые PanelTabs и алиасы позволяют конвейерно (последовательно) сначала выполнить макрос, восстанавливающий контекст, и сразу же затем макрос, преобразующий UNC-адрес в обычный.

На всякий случай, упомяну о простом нюансе, с которым я столкнулся при составлении конвейерной последовательности выполнения данных макросов. После подачи команды на выполнение первого макроса требуется устанавливать задержку чтобы он успел исполниться. В моём случае это делает команда win.Sleep(1000). Т.е. получается следующая последовательность: первый макрос, команда задержки, второй макрос.

Второй пример. Требуется произвести сравнение содержания панелей. Для этого по окончании выполнения сабжевого макроса вызывается соответствующий плагин. В моём случае это AdvCmpEx или VisualCompare.

Третий пример. Необходимо скопировать на целевую панель объекты (файлы и папки) с обновлённым содержимым.

Другие примеры. Изредка нужно производить синхронизацию содержания панелей (для этого необходим вызов сторонней программы) или бранчевание на одной из них или на обеих (т.е. выполнение консольной команды).
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

То, что Вы описали, похоже, не должно храниться совместно с контекстом. Это, скорее, прерогатива "приёмной" машины (точнее, этапа загрузки). Ведь при сохранении ещё не может быть известно, что потребуется, например, копирование.
Т.е. для Ваших целей самое удобное было бы ввести такую фишку: если "рядом" со скриптом SaveContext.lua есть файл SaveContext.mnu, то после восстановления контекста (если не было ошибок, либо в окне вывода нажали кнопку [ Продолжить ] - использовать его в качестве пользовательского меню.
Last edited by buniak_a_h on Mon 15 Mar, 2021 02:35, edited 1 time in total.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

buniak_a_h wrote: Mon 15 Mar, 2021 02:35для Ваших целей самое удобное было бы ввести такую фишку: если "рядом" со скриптом SaveContext.lua есть файл SaveContext.mnu, то после восстановления контекста (если не было ошибок, либо в окне вывода нажали кнопку [ Продолжить ] - использовать его в качестве пользовательского меню
Как это правильнее реализовать Вам, безусловно, виднее.
при сохранении ещё не может быть известно, что потребуется, например, копирование
В моей практике действие, которое потребуется произвести после восстановления конкретного контекста, чаще всего известно заблаговременно.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

Ann wrote: Mon 15 Mar, 2021 02:48В моей практике действие, которое потребуется произвести после восстановления конкретного контекста, чаще всего известно заблаговременно
Ведь чаще всего контекст для того и восстанавливается (фактически устанавливается), чтобы затем произвести заведомо известные действия.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

buniak_a_h,

В связи с обсуждением процедур, которые нужно выполнить после активации контекста, прошу Вас вернуться к рассмотрению ранее обсуждаемых восстановления на панели пометки объектов и включения в контекст плагинных панелей.

На мой взгляд, если в контекст включено восстановление конкретной папки, то целесообразно иметь и возможность восстановления в этой папке пометок подпапок и файлов. Практическая потребность в этом довольно высокая.

В отношении же плагинных панелей в моём случае вопрос касается прежде всего нативного плагина ArcLite. И главным образом восстановления на его панели папки соответствующего архивного файла.

Насколько возможна реализация непосредственно скриптом или посредством SaveContext.mnu этих двух задач?
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

Ann wrote: Mon 15 Mar, 2021 05:18 buniak_a_h,

В связи с обсуждением процедур, которые нужно выполнить после активации контекста, прошу Вас вернуться к рассмотрению ранее обсуждаемых восстановления на панели пометки объектов и включения в контекст плагинных панелей.

На мой взгляд, если в контекст включено восстановление конкретной папки, то целесообразно иметь и возможность восстановления в этой папке пометок подпапок и файлов. Практическая потребность в этом довольно высокая.
Ок. Это - элементарно.
В отношении же плагинных панелей в моём случае вопрос касается прежде всего нативного плагина ArcLite. И главным образом восстановления на его панели папки соответствующего архивного файла.
Вот тут я не понял. Чем не устраивает то, что сейчас? Или я не понимаю задачи…
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

buniak_a_h wrote: Mon 15 Mar, 2021 05:33 вопрос касается прежде всего нативного плагина ArcLite
Я проверил. Как раз положение внутри архива, открытого плагином ArcLite, прекрасно восстанавливается. Наверно, тоже самое относится и к Observer (не проверял). Главное, чтобы плагин умел выполнять команду SetPanelDirectory. Пока я наткнулся на единственный, который это не умеет - MulriArc. Хотя подозреваю, что всякие сетевые плагины (NetBox, FTP) тоже не всегда смогут это сделать: там же логин требуется. Впрочем, был у меня скрипт, открывавший папку на FTP-сервере. Просто мне теперь не на чем проверить.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

Сохранение/восстановление именованных контекстов

Post by Ann »

buniak_a_h wrote: Mon 15 Mar, 2021 05:33
Ann wrote: Mon 15 Mar, 2021 05:18В отношении же плагинных панелей в моём случае вопрос касается прежде всего нативного плагина ArcLite. И главным образом восстановления на его панели папки соответствующего архивного файла.
Вот тут я не понял. Чем не устраивает то, что сейчас?
Прошу прощения. Это я тупанул. Намедни возился с битым архивом и это наложилось.
У сабжевого скрипта с ArcLite`ом всё в порядке. Большое спасибо.
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Сохранение/восстановление именованных контекстов

Post by buniak_a_h »

Проверил на диске от виртуальной машины, открытый плагином Observer - тоже местоположение восстанавливается.
PortaDev - не получилось восстановить (нет такого хост-файла)
Post Reply

Return to “Обсуждение макросов”