Oula Kuuva 14bc188b5e style: update stylua.toml and .editorconfig
Made stylua.toml use two spaces as indentation since that seems to be
the most common convention in lua. Rest of the settings are kept in
Stylua defaults but made explicit.

Also updated .editorconfig to match config in stylua.toml.
2023-03-21 08:57:03 +02:00
2023-02-12 18:31:27 +02:00
2023-02-12 17:39:05 +02:00
2021-07-01 11:41:25 -05:00
2021-07-01 16:55:41 -05:00
2022-07-31 00:27:43 -05:00

🧶 auto-save.nvim

Automatically save your changes in NeoVim

Stars Issues Repo Size

 

📋 Features

  • automatically save your changes so the world doesn't collapse
  • highly customizable:
    • conditionals to assert whether to save or not
    • execution message (it can be dimmed and personalized)
    • events that trigger auto-save
  • debounce the save with a delay
  • multiple callbacks
  • automatically clean the message area

 

📚 Requirements

  • Neovim >= 0.5.0

 

📦 Installation

Install the plugin with your favourite package manager:

Lazy.nvim
{
	"okuuva/auto-save.nvim",
	cmd = "ASToggle", -- optional for lazy loading on command
	event = { "InsertLeave", "TextChanged" } -- optional for lazy loading on trigger events
	opts = {
		-- your config goes here
		-- or just leave it empty :)
	},
},
Packer.nvim
use({
	"okuuva/auto-save.nvim",
	config = function()
		 require("auto-save").setup {
			-- your config goes here
			-- or just leave it empty :)
		 }
	end,
})
vim-plug
Plug 'okuuva/auto-save.nvim'
lua << EOF
	require("auto-save").setup {
		-- your config goes here
		-- or just leave it empty :)
	}
EOF

 

⚙️ Configuration

auto-save comes with the following defaults:

{
	enabled = true, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it)
	execution_message = {
		enabled = true,
		message = function() -- message to print on save
			return ("AutoSave: saved at " .. vim.fn.strftime("%H:%M:%S"))
		end,
		dim = 0.18, -- dim the color of `message`
		cleaning_interval = 1250, -- (milliseconds) automatically clean MsgArea after displaying `message`. See :h MsgArea
	},
	trigger_events = {"InsertLeave", "TextChanged"}, -- vim events that trigger auto-save. See :h events
	-- 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
	condition = function(buf)
		local fn = vim.fn
		local utils = require("auto-save.utils.data")

		if
			fn.getbufvar(buf, "&modifiable") == 1 and
			utils.not_in(fn.getbufvar(buf, "&filetype"), {}) then
			return true -- met condition(s), can save
		end
		return false -- can't save
	end,
	write_all_buffers = false, -- write all buffers when the current one meets `condition`
	debounce_delay = 135, -- saves the file at most every `debounce_delay` milliseconds
	callbacks = { -- functions to be executed at different intervals
		enabling = nil, -- ran when enabling auto-save
		disabling = nil, -- ran when disabling auto-save
		before_asserting_save = nil, -- ran before checking `condition`
		before_saving = nil, -- ran before doing the actual save
		after_saving = nil -- ran after doing the actual save
	}
}

Additionally you may want to set up a key mapping to toggle auto-save:

vim.api.nvim_set_keymap("n", "<leader>n", ":ASToggle<CR>", {})

or as part of the lazy.nvim plugin spec:

{
	"okuuva/auto-save.nvim",
	keys = {
		{ "<leader>n", ":ASToggle<CR>", desc = "Toggle auto-save" },
	},
	...
},

 

🪴 Usage

Besides running auto-save at startup (if you have enabled = true in your config), you may as well:

  • ASToggle: toggle auto-save

 

🤝 Contributing

  • All pull requests are welcome.
  • If you encounter bugs please open an issue.

👋 Acknowledgements

This plugin wouldn't exist without Pocco81's work on the original.

 

Description
🧶 Automatically save your changes in NeoVim
Readme 362 KiB
Languages
Lua 100%