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

Здесь обсуждается всё, что касается макросов.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 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 189 times
Last edited by buniak_a_h on Tue 10 May, 2022 02:29, edited 36 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Latest post of the previous page:


PS
Если я что-то где-то непонятно молвил, переспросите, разьясню. (должен убегать)
Last edited by citRiks on Tue 21 Dec, 2021 10:10, edited 2 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

последнее на сегодня:
TreeTableRus.hlf регистрочувствительный, вы послали TreeTablerus.hlf с маленькой r, что не позволяет вызывать этот хелп из вашего деревянного меню.
У себя я подправил, но на всякий случай сообщаю
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Tue 21 Dec, 2021 10:14 TreeTableRus.hlf регистрочувствительный, вы послали TreeTablerus.hlf с маленькой r, что не позволяет вызывать этот хелп из вашего деревянного меню.
У себя я подправил, но на всякий случай сообщаю
  1. Я не понял самой фразы TreeTableRus.hlf регистрочувствительный. Как файл может быть регистрочувствительным?
  2. У меня именно так, как я послал. Наверно, это неправильно (в смысле эстетики: Rus лучше смотрится с большой буквы), но у меня именно так, и при этом работает.
  3. Имя этого файла используется в функции far.ShowHelp (с флагом FHELP_CUSTOMFILE). Нигде не написано, что эта функция регистрозависимая. Возможно, дело в параметрах винды (где-то на просторах форума уже обсуждалось, как сделать, чтоб в одной папке были несколько файлов, имена которых отличаются только регистром). Как назначить регистрозависимости винды - я уже не помню. Делалось как-то…
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Версия 1.4.1 от 23.12.2021
  1. Реализована работа с LIFO-стеком в сервисах удаления, импота, экспорта и просмотра контекстов.
  2. В случае работы FAR-а из-под ConEmu начальная загрузка контекстов из стека приводит к автоматическому
    запуску FAR-а в новых вкладках ConEmu с загрузкой контекста из стека.
    Примечание. Для этой возможности требуется плагин ConEmu.
  3. Переключатель [?] Сохранять контекст в LIFO-стеке и выбирать при запуске FAR-а теперь сал трёхпозиционным. В варианте [?] при старте FAR-а и наличии LIFO-стека выдаётся запрос на подтверждение загрузки контекста.
Mercer
Posts: 3
Joined: Fri 22 Mar, 2019 02:19

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

Post by Mercer »

buniak_a_h wrote: Fri 29 Jan, 2021 13:24 Возможно, есть скрипты, позволяющие запомнить режимы просмотра и сортировки с привязкой к папкам.
А есть? Чтобы зашел сюда — три колонки, зашел туда — одна.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Mercer wrote: Fri 24 Dec, 2021 10:51А есть?
У citRiks-а есть скрипт, позволяющий сделать нечто при смене папки. Остальное (привязать папку к режиму просмотра), наверно, сделать несложно. Мне пока было без надобности.
Last edited by buniak_a_h on Fri 24 Dec, 2021 13:22, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Mercer!
Чтобы воспользоваться этим скриптом:
  1. измените скрип так, как я описал здесь.
  2. В ту же папку, что и файл ContentColumn+ExitFAREvent_PanelChangeDir.@Xer0X.Lua запишите файл ContentColumn+ExitFAREvent_PanelChangeDir.@Xer0X.Lua.Action такого содержания:

    Code: Select all

    return
    function (aaa)
     local LPan, RPan = APanel.Left and APanel or PPanel, APanel.Left and PPanel or APanel
     local function SelMode(Pan)
      if Pan.ItemCount < Pan.Height then
       return 3
      elseif Pan.ItemCount < 2*Pan.Height then
       return 2
      else
       return 1
      end
     end -- SelMode
     if aaa.chg_path_L then
      panel.SetViewMode(nil, APanel.Left and 1 or 0, SelMode(LPan))
     end
     if aaa.chg_path_R then
      panel.SetViewMode(nil, APanel.Left and 0 or 1, SelMode(RPan))
     end
    end
    Этот скрипт выбирает вид панели (в один столбец, 2 или 3) в зависимости от количества файлов (элементов). Скрипт приведён в качестве примера, но сама идея мне понравилась. Возможно, оставлю у себя :-)
Last edited by buniak_a_h on Fri 24 Dec, 2021 20:37, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Fri 24 Dec, 2021 19:16 запишите файл ContentColumn+ExitFAREvent_PanelChangeDir.@Xer0X.Lua.Acyton такого содержания:
Какой ещё ацЫтон?! Вопрос в том, опечатки (acTIon — acYTon) только тут или ещё и в коде.
Кстати, разве для работы того скрипта не требуется, чтобы в настройках режима панели была включена его специальная колонка?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Fri 24 Dec, 2021 20:17 Вопрос в том, опечатки (acTIon — acYTon) только тут или ещё и в коде.
Главное, чтоб опечатка была одинаковой - и в коде, и в имени ;-)
HaRT wrote: Fri 24 Dec, 2021 20:17 разве для работы того скрипта не требуется, чтобы в настройках режима панели была включена его специальная колонка?
Про «специальную колонку» ничего не знаю. У меня работает. И, кстати, я уменьшил периоды:

Code: Select all

local POLL_INTERVAL = 200 --1000
local POLL_INT_PNL_CHK = 200 --3000
Last edited by buniak_a_h on Fri 24 Dec, 2021 20:39, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

buniak_a_h wrote: Fri 24 Dec, 2021 20:27 Главное, чтоб опечатка была одинаковой - и в коде, и в имени ;-)
HaRT писал(а): ↑Пт 24 дек, 2021 22:17
разве для работы того скрипта не требуется, чтобы в настройках режима панели была включена его специальная колонка?

Про «специальную колонку» ничего не знаю. У меня работает. И, кстати, я уменьшил периоды
Правы оба предыдущих оратора.
Добавочная колонка оптимизирует polling, а точнее создает мгновенную непосредственную реакцию на смену панельной директории.
что позволяет поставить длинные интервалы, что сохраняет нам CPU, что на дохлых или перегруженных машинах может быть значимой нагрузкой.
Если НЕ иметь добавочную колонку, то работать все равно будет, но только по polling-у, а "непосредственной мгновенной реакции" (события) не будет.
3000 мс период поллинга (опроса) будет давать ощутимую задержку реакции на переход.
Поэтому А. Буняк и улучшил ситуацию укорачиванием периода опроса (поллинга).

Аминь
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

citRiks wrote: Sat 25 Dec, 2021 14:33 что позволяет поставить длинные интервалы, что сохраняет нам CPU, что на дохлых или перегруженных машинах может быть значимой нагрузкой.
С другой стороны, в скрипте все очень оптимизированно и на случай коротких периодов поллинга.
Сам опрос изменений не затратен, а основная затратная часть работы выполняется только в случае наличия изменения
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Версия 1.4.2 от 29.12.2021
  1. В процедуре очистки контекстов теперь запрашивается подтверждение на очистку LIFO-стека контекстов.
  2. Исправлена ошибка, в результате которой при автосохранении контекста при выходе из ФАРа сохранялся безымянный контекст.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Версия 1.4.3 от 07.03.2022
  1. Исправлена мелкая ошибка, из-за которой в терминальном окне ФАРа всегда выставлялся флаг "Сохранить контексты"
    (независимо от настройки)
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

в данном скрипте меня заинтересовало взаимодействие с ConEmu. т.е. я наоткрывал вкладок Far'а, потом мне надо, например, перезагрузиться. все закрыл, потом все восстановил.

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

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

Post by buniak_a_h »

ccaid, запуск нового экземпляра ФАРа в новой вкладке "стибрен" из скрипта, поставляемого с ConEMU. Там добавляется параметр -new_console: никакого описания этого параметра я не нашёл, поэтому добавил as-is. Как получить параметры запуска ФАРа из настроек ConEMU, я не знаю (ну, не считая чтения xml-файла, конечно. Но это как-то уж совсем криво будет). Где-то на просторах этого форума я видел пример, как получить параметры командной строки запуска самого ФАРа, если потрудитесь и найдёте - пришлите ссылку; обещаю добавить в скрипт. Если искать влом - просто найдите в самом скрипте указанную строку (-new_console) и добавьте свои параметры. Куда добавлять, и имеет ли это значение - я не знаю, эксперименты Вам помогут.
ccaid wrote: Sun 08 May, 2022 22:51 насколько я понял, скрипт запускает дополнительный экземпляр Фара по-простому, типа: (путь-к-фару)Far.exe
Ну, почти. Добавлен параметр -new_console. Тупо стибрил из скрипта, поставляемого с КонЭму. Если знаете другой способ открытия новой вкладки в конэму, буду признателен, если поделитесь.
Last edited by buniak_a_h on Mon 09 May, 2022 04:36, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Сорри, я, кажется, нашёл, как запускать умолчательный процесс в новой панели КонЕму (аналогично [+]). Ещё пару экспериментов…
Если есть плагин conemu…
Last edited by buniak_a_h on Mon 09 May, 2022 05:18, edited 1 time in total.
Post Reply

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