diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-10 21:13:21 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2017-11-10 21:13:21 +1300 |
commit | 69cac9e123d74fa9fecf96177cb79d8370a833f1 (patch) | |
tree | 013a570c94edc08d1153ef30f7043d503ce529a5 /vim/plugin | |
parent | Merge join,indent.vim into whitespace.vim (diff) | |
download | dotfiles-69cac9e123d74fa9fecf96177cb79d8370a833f1.tar.gz dotfiles-69cac9e123d74fa9fecf96177cb79d8370a833f1.zip |
Move backup, swap, and undo dir logic into plugins
Diffstat (limited to 'vim/plugin')
-rw-r--r-- | vim/plugin/auto_backupdir.vim | 56 | ||||
-rw-r--r-- | vim/plugin/auto_swapdir.vim | 56 | ||||
-rw-r--r-- | vim/plugin/auto_undodir.vim | 57 |
3 files changed, 169 insertions, 0 deletions
diff --git a/vim/plugin/auto_backupdir.vim b/vim/plugin/auto_backupdir.vim new file mode 100644 index 00000000..f15e7ce6 --- /dev/null +++ b/vim/plugin/auto_backupdir.vim @@ -0,0 +1,56 @@ +" +" auto_backupdir.vim: Configure 'backupdir' automatically, including trying +" hard to create it. +" +" Author: Tom Ryder <tom@sanctum.geek.nz> +" License: Same as Vim itself +" +if exists('g:loaded_auto_backupdir') + \ || &compatible + finish +endif +let g:loaded_auto_backupdir = 1 + +" Define the backup path we want +if exists('$VIM_BACKUPDIR') + let s:backupdir = $VIM_BACKUPDIR +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:backupdir + \ = strpart(&runtimepath, 0, stridx(&runtimepath, ',')) + \ . '/backup' +endif + +" If the prospective backup directory does not exist, try hard to create it +if !isdirectory(expand(s:backupdir)) + + " Try Vim's native mkdir() first + if exists('*mkdir') + silent! call mkdir(expand(s:backupdir), '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:backupdir)) + elseif has('win32') || has('win64') + silent! execute '!mkdir ' + \ . shellescape(expand(s:backupdir)) + endif + +endif + +" If the directory exists after that... +if isdirectory(expand(s:backupdir)) + + " Set the backup directory and turn backups on + execute 'set backupdir^=' . s:backupdir . '//' + set backup + +" If not, give up and raise an error +else + echoerr 'Could not create backupdir ' . s:backupdir +endif diff --git a/vim/plugin/auto_swapdir.vim b/vim/plugin/auto_swapdir.vim new file mode 100644 index 00000000..ea41a0f0 --- /dev/null +++ b/vim/plugin/auto_swapdir.vim @@ -0,0 +1,56 @@ +" +" auto_swapdir.vim: Configure 'directory' automatically, including trying hard +" to create it. +" +" Author: Tom Ryder <tom@sanctum.geek.nz> +" License: Same as Vim itself +" +if exists('g:loaded_auto_swapdir') + \ || &compatible + finish +endif +let g:loaded_auto_swapdir = 1 + +" Define the swap path we want +if exists('$VIM_SWAPDIR') + let s:swapdir = $VIM_SWAPDIR +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:swapdir + \ = strpart(&runtimepath, 0, stridx(&runtimepath, ',')) + \ . '/swap' +endif + +" If the prospective swapfile directory does not exist, try hard to create it +if !isdirectory(expand(s:swapdir)) + + " Try Vim's native mkdir() first + if exists('*mkdir') + silent! call mkdir(expand(s:swapdir), '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:swapdir)) + elseif has('win32') || has('win64') + silent! execute '!mkdir ' + \ . shellescape(expand(s:swapdir)) + endif + +endif + +" If the directory exists after that... +if isdirectory(expand(s:swapdir)) + + " Set the swapfile directory and turn swapfiles on + execute 'set directory^=' . s:swapdir . '//' + set swapfile + +" If not, give up and raise an error +else + echoerr 'Could not create swapdir ' . s:swapdir +endif 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 |