Editor/Viewer: Store/restore Sessions

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
siberia-man
Posts: 69
Joined: Sat 28 Jun, 2014 23:07
Been thanked: 1 time

Editor/Viewer: Store/restore Sessions

Postby siberia-man » Fri 20 Jan, 2017 11:00

Не помню/не знаю было ли такое сделано на макросах или плагинами. Хотелось бы иметь макрос для сохранения/восстановления сессий - сохранять/перегружать список последних открытых файлов в редакторе/просмотрщике.

Требования
1. выполнять все действия (сохранять/восстанавливать) только вручную
2. работать с текущей сессией по умолчанию
3. работать с именованной сессией (задать имя сессии для сохранения/восстановления)
4. возможно хранить сессии в sqlite или файловой системе (одна сессия - один файл-список файлов и режимов)

Заранее оговорюсь - я не знаток Luafar, поэтому rtfm это весьма общий вектор направлений. Желательно все-таки более конкретный пункт, с которого можно было бы начать работать в этом направлении.

Вопросы по теме.
1. получить список всех окрытых файлов (просмотр и редактирование)
2. в Luafar имеются встроенные средства работы с sqlite/ФС или надо что-то доустанавливать?

Возможно это уже реализовано и успешно работает и используется. Тогда уж хотелось бы узнать где подобное лежит.

Shmuel
Posts: 4997
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Editor/Viewer: Store/restore Sessions

Postby Shmuel » Fri 20 Jan, 2017 11:19

siberia-man wrote:Source of the post 1. получить список всех окрытых файлов (просмотр и редактирование)
far.AdvControl, ACTL_GETWINDOWCOUNT, ACTL_GETWINDOWINFO
siberia-man wrote:Source of the post 2. в Luafar имеются встроенные средства работы с sqlite/ФС или надо что-то доустанавливать?
В LuaFAR такие средства есть (смотрите в мануале раздел "Settings Control"), но LuaMacro содержит более простые в использовании функции mf.mload, mf.msave.
siberia-man wrote:Source of the post Возможно это уже реализовано и успешно работает и используется. Тогда уж хотелось бы узнать где подобное лежит.
Возможно, но я не знаю.

siberia-man
Posts: 69
Joined: Sat 28 Jun, 2014 23:07
Been thanked: 1 time

Editor/Viewer: Store/restore Sessions

Postby siberia-man » Fri 27 Jan, 2017 14:02

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

Code: Select all

---------------------------------------------------------------------------

local F = far.Flags

---------------------------------------------------------------------------

local function get_current_session()
   local t = {}

   local wc = far.AdvControl(F.ACTL_GETWINDOWCOUNT)
   for i = 1, wc do
      local wi = far.AdvControl(F.ACTL_GETWINDOWINFO, i)
      local wt = wi.Type

      if wt == F.WTYPE_PANELS then
         local LPanel = APanel.Left and APanel or PPanel
         local RPanel = APanel.Left and PPanel or APanel
         t[#t + 1] = {
            mode = wt;
            lpath = LPanel.Path0;
            rpath = RPanel.Path0;
         }
      elseif wt == F.WTYPE_EDITOR or wt == F.WTYPE_VIEWER then
         t[#t + 1] = {
            mode = wt;
            name = wi.Name;
         }
      end
   end

   return t
end

---------------------------------------------------------------------------

local FAR_SESSIONS = {
   ROOTNAME = "FarSessions";
   LISTNAME = "FarSessionsList";
   DEFAULT = "default";
}

local function load_sessions()
   return mf.mload(FAR_SESSIONS.ROOTNAME, FAR_SESSIONS.LISTNAME) or {}
end

local function save_sessions(sessions)
   mf.msave(FAR_SESSIONS.ROOTNAME, FAR_SESSIONS.LISTNAME, sessions)
end

local function del_sessions()
   mf.mdelete(FAR_SESSIONS.ROOTNAME, FAR_SESSIONS.LISTNAME)
end

---------------------------------------------------------------------------
Last edited by siberia-man on Fri 27 Jan, 2017 14:03, edited 1 time in total.


Return to “Нужна помощь”

Who is online

Users browsing this forum: No registered users and 1 guest