aboutsummaryrefslogtreecommitdiff
path: root/plugins/ephemeraldocviews.lua
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ephemeraldocviews.lua')
-rw-r--r--plugins/ephemeraldocviews.lua45
1 files changed, 45 insertions, 0 deletions
diff --git a/plugins/ephemeraldocviews.lua b/plugins/ephemeraldocviews.lua
new file mode 100644
index 0000000..37b3a3b
--- /dev/null
+++ b/plugins/ephemeraldocviews.lua
@@ -0,0 +1,45 @@
+-- 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