aboutsummaryrefslogtreecommitdiff
-- mod-version:3
local core = require "core"
local CommandView = require "core.commandview"
local DocView = require "core.docview"
local RootView = require "core.rootview"

local on_focus_lost = RootView.on_focus_lost

local function save_node(node)
  if node.type == "leaf" then
    local i = 1
    while i <= #node.views do
      local view = node.views[i]
      if view:is(DocView) and not view:is(CommandView)
          and view.doc.abs_filename ~= system.absolute_path(USERDIR .. PATHSEP .. "init.lua")
          and view.doc.abs_filename ~= system.absolute_path(".lite_project.lua")
          and view.doc.filename and view.doc:is_dirty() then
        core.log("Saving doc \"%s\"", view.doc.filename)
        view.doc:save()
      end
      i = i + 1
    end
  else
    if node.a then save_node(node.a) end
    if node.b then save_node(node.b) end
  end
end

function RootView:on_focus_lost(...)
  save_node(core.root_view.root_node)

  return on_focus_lost(...)
end