diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-11 01:07:14 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-11 01:07:14 +1300 |
commit | aaf04871d944646225875d5e9cc31a967947c3fe (patch) | |
tree | 787efb73dabb6b9cda660ccde51e838b507a3dbd /vim/plugin/auto_undodir.vim | |
parent | Merge branch 'hotfix/v0.12.2' (diff) | |
parent | Bump version number to 0.13.0 (diff) | |
download | dotfiles-0.13.0.tar.gz (sig) dotfiles-0.13.0.zip |
Merge branch 'release/v0.13.0'v0.13.0
* release/v0.13.0: (30 commits)
Bump version number to 0.13.0
Move mutt_mail.vim line select logic into plugin
Add new mail_mutt.vim plugin, apply mappings
Sort 'shortmess' flag settings alphabetically
Add 'o' and 'O' back into 'shortmess'
Set up individual flags for 'shortmess'
Fix oii(1df) so it works as a pipe
Use exists+ test rather than exists&
Adjust some whitespace and comment layout
Move matchit.vim sourcing into plugin.vim
Rename netrw.vim to plugin.vim
Remove 'shellslash' setting
Move fedora.vim into os.vim
Remove 'tildeop' setting
Rearrange three smaller files into display.vim
Move 'paste' options into terminal.vim
Move wildmenu config into completion.vim
Rename complete.vim to completion.vim
Rename term.vim to terminal.vim
Rename yank.vim to registers.vim
...
Diffstat (limited to 'vim/plugin/auto_undodir.vim')
-rw-r--r-- | vim/plugin/auto_undodir.vim | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/vim/plugin/auto_undodir.vim b/vim/plugin/auto_undodir.vim new file mode 100644 index 00000000..1d20ba95 --- /dev/null +++ b/vim/plugin/auto_undodir.vim @@ -0,0 +1,57 @@ +" +" auto_undodir.vim: Configure 'undodir' automatically, including trying hard +" to create it. +" +" Author: Tom Ryder <tom@sanctum.geek.nz> +" License: Same as Vim itself +" +if exists('g:loaded_auto_undodir') + \ || !has('persistent_undo') + \ || &compatible + finish +endif +let g:loaded_auto_undodir = 1 + +" Define the undo path we want +if exists('$VIM_UNDODIR') + let s:undodir = $VIM_UNDODIR +else + + " This is imperfect in that it will break if you have a backslashed comma in + " the first component of your &runtimepath, but if you're doing that, you + " probably already have way bigger problems + let s:undodir + \ = strpart(&runtimepath, 0, stridx(&runtimepath, ',')) + \ . '/undo' +endif + +" If the prospective undo directory does not exist, try hard to create it +if !isdirectory(expand(s:undodir)) + + " Try Vim's native mkdir() first + if exists('*mkdir') + silent! call mkdir(expand(s:undodir), 'p', 0700) + + " Failing that, use an OS-dependent command + " (Fortunately, Unix and Windows are the only OS types in the world) + elseif has('unix') + silent! execute '!mkdir -m 0700 -p ' + \ . shellescape(expand(s:undodir)) + elseif has('win32') || has('win64') + silent! execute '!mkdir ' + \ . shellescape(expand(s:undodir)) + endif + +endif + +" If the directory exists after that... +if isdirectory(expand(s:undodir)) + + " Set the undo directory and turn persistent undo files on + execute 'set undodir^=' . s:undodir . '//' + set undofile + +" If not, give up and raise an error +else + echoerr 'Could not create undodir ' . s:undodir +endif |