lite-xl/release_files/addons/plugins/ephemeraldocviews.lua

46 lines
1.2 KiB
Lua
Executable File

-- mod-version:1 -- lite-xl 1.16
local core = require "core"
local command = require "core.command"
local RootView = require "core.rootview"
local DocView = require "core.docview"
local Doc = require "core.doc"
local open_doc = RootView.open_doc
function RootView:open_doc(doc)
local node = self:get_active_node_default()
local ephemeral, existing_ephemeral = node.views, nil
for i, view in ipairs(node.views) do
if view.doc == doc then
ephemeral = false
end
if view.doc and view.doc.ephemeral then
existing_ephemeral = view
end
end
if ephemeral and existing_ephemeral then
node:close_view(self.root_node, existing_ephemeral)
end
local view = open_doc(self, doc)
if ephemeral then
view.doc.ephemeral = #node.views > 1
end
return view
end
local get_name = DocView.get_name
function DocView:get_name()
return self.doc and self.doc.ephemeral and ("-- " .. get_name(self) .. " --") or get_name(self)
end
local doc_insert = Doc.insert
function Doc:insert(...)
doc_insert(self, ...)
self.ephemeral = false
end
local doc_remove = Doc.remove
function Doc:remove(...)
doc_remove(self, ...)
self.ephemeral = false
end