# HG changeset patch # User Meredith Howard # Date 1714933472 18000 # Node ID a237720efee9349486c04de961cb9d7b16f7fe3e # Parent 0a7162df160d66d614e9058594f41965c3bbc937 Convert backup/undofile pruning to lua diff --git a/.config/nvim/autoload/vimrc.vim b/.config/nvim/autoload/vimrc.vim --- a/.config/nvim/autoload/vimrc.vim +++ b/.config/nvim/autoload/vimrc.vim @@ -19,26 +19,3 @@ func! vimrc#SafeFilterFile(cmd) call delete(errors) endtry endfunc - -if has('ruby') - func! s:PruneFiles(path, days) abort - ruby <|]\)\{7} \@=\|^=\{7}$]]) end) + +-- >> Prune old backup and undo files at startup +autocmd(g, "User", "VeryLazy", function() + local prune_files = require("config.util").prune_files + if vim.go.backup then prune_files(vim.go.backupdir, 90) end + if vim.go.undofile then prune_files(vim.go.undodir, 90) end +end) + diff --git a/.config/nvim/lua/config/commands.lua b/.config/nvim/lua/config/commands.lua --- a/.config/nvim/lua/config/commands.lua +++ b/.config/nvim/lua/config/commands.lua @@ -54,16 +54,16 @@ command("PruneSession", function() for _, bufnr in ipairs(bufs) do local name = vim.api.nvim_buf_get_name(bufnr) if name then - local type = vim.fn.getftype(name) + local type = fn.getftype(name) if type == "" or type == "dir" or util.last_modified_days(name) > 30 then vim.print("pruned: " .. name) - vim.cmd.bwipeout(bufnr) + cmd.bwipeout(bufnr) end end end if not vim.api.nvim_buf_get_name(0) then - vim.cmd.bprev() + cmd.bprev() end end, {}) diff --git a/.config/nvim/lua/config/util.lua b/.config/nvim/lua/config/util.lua --- a/.config/nvim/lua/config/util.lua +++ b/.config/nvim/lua/config/util.lua @@ -49,4 +49,18 @@ function M.last_modified_days(fname) return (os.time() - vim.fn.getftime(fname)) / 86400 end +function M.prune_files(path, days) + local sunset = os.time() - (days * 86400) + path = vim.fs.normalize(path) + + if fn.getftype(path) == "" then return end + + for fname, type in vim.fs.dir(path) do + local fpath = vim.fs.normalize(path .. "/" .. fname) + if type == "file" and fn.getftime(fpath) < sunset then + os.remove(fpath) + end + end +end + return M diff --git a/bin/privim b/bin/privim --- a/bin/privim +++ b/bin/privim @@ -1,2 +1,2 @@ #!/bin/sh -exec nvim -c 'set noswapfile noundofile nobackup viminfo=' $* +exec nvim -c 'set noswapfile noundofile nobackup shada=' $*