" " undoskip.vim: Don't save undo history for temporary or secure files. " " Author: Tom Ryder " License: Same as Vim itself " if exists('loaded_undoskip') || &compatible finish endif if !has('persistent_undo') || !exists('*glob2regpat') finish endif let loaded_undoskip = 1 " Set default list of patterns to exclude; mirror documented 'backupskip' " behavior if !exists('g:undoskip') let g:undoskip = [] if has('mac') call add(g:undoskip, '/private/tmp/*') elseif has('unix') call add(g:undoskip, '/tmp/*') endif call extend(g:undoskip, map( \ filter([$TMPDIR, $TMP, $TEMP], 'v:val !=# '''''), \ 'v:val.''/*''' \)) endif " Internal function returns a local value for 'undofile' function s:CheckUndoSkip() abort " If this isn't a normal buffer, don't save undo data if &buftype !=# '' return 0 endif " Get the path from the buffer name; if that path matches any of the " patterns, don't save undo data let path = bufname('%') for glob in g:undoskip if path =~# glob2regpat(glob) return 0 endif endfor " Otherwise, we'll use whatever the global setting is return &g:undofile endfunction " Command interface into the private function's value, does the actual set command -nargs=0 CheckUndoSkip \ let &l:undofile = s:CheckUndoSkip() " Check the path on every buffer rename, create, or read augroup undoskip autocmd! autocmd BufAdd,BufNewFile,BufRead * \ CheckUndoSkip augroup END