update
This commit is contained in:
parent
209ba130c0
commit
f0d81507e7
10 changed files with 133 additions and 23 deletions
74
.config/lite-xl/plugins/autosave.lua
Normal file
74
.config/lite-xl/plugins/autosave.lua
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
-- mod-version:3
|
||||
local core = require "core"
|
||||
local config = require "core.config"
|
||||
local Doc = require "core.doc"
|
||||
local command = require "core.command"
|
||||
local common = require "core.common"
|
||||
-- this is used to detect the wait time
|
||||
local last_keypress = os.time()
|
||||
-- this exists so that we don't end up with multiple copies of the loop running at once
|
||||
local looping = false
|
||||
local on_text_change = Doc.on_text_change
|
||||
|
||||
config.plugins.autosave = common.merge({
|
||||
enabled = true,
|
||||
-- the approximate amount of time, in seconds, that it takes to trigger an autosave
|
||||
timeout = 1,
|
||||
-- The config specification used by the settings gui
|
||||
config_spec = {
|
||||
name = "Auto Save",
|
||||
{
|
||||
label = "Enable",
|
||||
description = "Enable or disable the auto save feature.",
|
||||
path = "enabled",
|
||||
type = "toggle",
|
||||
default = true
|
||||
},
|
||||
{
|
||||
label = "Timeout",
|
||||
description = "Approximate amount of time in seconds it takes to trigger an autosave.",
|
||||
path = "timeout",
|
||||
type = "number",
|
||||
default = 1,
|
||||
min = 1,
|
||||
max = 30
|
||||
}
|
||||
}
|
||||
}, config.plugins.autosave)
|
||||
|
||||
|
||||
local function loop_for_save()
|
||||
while looping do
|
||||
if os.difftime(os.time(), last_keypress) >= config.plugins.autosave.timeout then
|
||||
command.perform "doc:save"
|
||||
-- stop loop
|
||||
looping = false
|
||||
end
|
||||
-- wait the timeout. may cause timeout to be slightly imprescise
|
||||
coroutine.yield(config.plugins.autosave.timeout)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function updatepress()
|
||||
-- set last keypress time to now
|
||||
last_keypress = os.time()
|
||||
-- put loop in coroutine so it doesn't lag out this script
|
||||
if not looping then
|
||||
looping = true
|
||||
core.add_thread(loop_for_save)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Doc:on_text_change(type)
|
||||
-- check if file is saved
|
||||
if config.plugins.autosave.enabled and self.filename
|
||||
and self.abs_filename ~= system.absolute_path(USERDIR .. PATHSEP .. "init.lua")
|
||||
and self.abs_filename ~= system.absolute_path(".lite_project.lua")
|
||||
then
|
||||
updatepress()
|
||||
end
|
||||
return on_text_change(self, type)
|
||||
end
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue