pocco81 / auto-save.nvim

๐Ÿงถ Automatically save your changes in NeoVim
GNU General Public License v3.0
654 stars 67 forks source link
lua neovim neovim-plugin save-editor save-files

๐Ÿงถ auto-save.nvim

Automatically save your changes in NeoVim

Stars Issues Repo Size

 

๐Ÿ“ข Disclaimer: Breaking Change

This plugin has been renamed from AutoSave to auto-save, and this repository has accordingly moved from pocco81/AutoSave.nvim to pocco81/auto-save.nvim. To prevent errors with your configuration, make sure to update both the name and the repository url in your config!

 

๐Ÿ“‹ Features

 

๐Ÿ“š Requirements

 

๐Ÿ“ฆ Installation

Install the plugin with your favourite package manager:

Packer.nvim ```lua use({ "Pocco81/auto-save.nvim", config = function() require("auto-save").setup { -- your config goes here -- or just leave it empty :) } end, }) ```
vim-plug ```vim Plug 'Pocco81/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 = {
        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>", {})

 

๐Ÿชด Usage

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