1
0
Fork 0
mirror of https://github.com/nix-community/nixvim.git synced 2025-11-16 23:42:47 +01:00
nixvim/plugins/by-name/auto-save/default.nix
saygo-png 29ec33e1a8 plugins: remove deprecations "after 24.11" or less
Signed-off-by: saygo-png <saygo.mail@proton.me>
2025-10-18 18:31:00 +00:00

118 lines
3.2 KiB
Nix

{ lib, ... }:
let
inherit (lib) types;
inherit (lib.nixvim) defaultNullOpts;
in
lib.nixvim.plugins.mkNeovimPlugin {
name = "auto-save";
package = "auto-save-nvim";
description = "Automatically save your changes in NeoVim.";
maintainers = [ lib.maintainers.braindefender ];
imports = [
(lib.mkRemovedOptionModule [ "plugins" "auto-save" "keymaps" ] ''
Use the top-level `keymaps` option to create a keymap that runs :ASToggle
keymaps = [
{ key = "<leader>s"; action = "<cmd>ASToggle<CR>"; }
];
'')
];
settingsOptions = {
enabled = defaultNullOpts.mkBool true ''
Whether to start auto-save when the plugin is loaded.
'';
trigger_events = {
immediate_save =
defaultNullOpts.mkListOf types.str
[
"BufLeave"
"FocusLost"
]
''
Vim events that trigger an immediate save.\
See `:h events` for events description.
'';
defer_save =
defaultNullOpts.mkListOf types.str
[
"InsertLeave"
"TextChanged"
]
''
Vim events that trigger a deferred save (saves after `debounceDelay`).\
See `:h events` for events description.
'';
cancel_deferred_save = defaultNullOpts.mkListOf types.str [ "InsertEnter" ] ''
Vim events that cancel a pending deferred save.\
See `:h events` for events description.
'';
};
condition = defaultNullOpts.mkLuaFn' {
pluginDefault = null;
description = ''
Function that determines whether to save the current buffer or not.
- return true: if buffer is ok to be saved
- return false: if it's not ok to be saved
In this example, the second argument of `utils.not_in(..., {})`
determines which filetypes will be ignored by auto-save plugin.
Buffers that are `nomodifiable` are not saved by default.
'';
example = ''
function(buf)
local fn = vim.fn
local utils = require("auto-save.utils.data")
if utils.not_in(fn.getbufvar(buf, "&filetype"), {}) then
return true
end
return false
end
'';
};
write_all_buffers = defaultNullOpts.mkBool false ''
Write all buffers when the current one meets `condition`.
'';
noautocmd = defaultNullOpts.mkBool false ''
Do not execute autocmds when saving.
'';
lockmarks = defaultNullOpts.mkBool false ''
Lock marks when saving, see `:h lockmarks` for more details.
'';
debounce_delay = defaultNullOpts.mkUnsignedInt 1000 ''
Saves the file at most every `debounce_delay` milliseconds.
'';
debug = defaultNullOpts.mkBool false ''
Log debug messages to `auto-save.log` file in NeoVim cache directory.
'';
};
settingsExample = {
condition = ''
function(buf)
local fn = vim.fn
local utils = require("auto-save.utils.data")
if utils.not_in(fn.getbufvar(buf, "&filetype"), {'oil'}) then
return true
end
return false
end
'';
write_all_buffers = true;
debounce_delay = 1000;
};
}