Variable data directory handling
This commit is contained in:
parent
519d4aa61f
commit
f3505375bf
1 changed files with 50 additions and 0 deletions
50
config-bits/00-vardata.vim
Normal file
50
config-bits/00-vardata.vim
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
" Variable data directory handling
|
||||||
|
|
||||||
|
" Create a directory if it doesn't already exist
|
||||||
|
function! CreateDirectoryIfNecessary( name )
|
||||||
|
if isdirectory( a:name )
|
||||||
|
if !filewritable( a:name )
|
||||||
|
echoerr "Directory" a:name "is not writable"
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !empty( glob( a:name ) )
|
||||||
|
echoerr a:name "exists but is not a directory"
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists( "*mkdir" )
|
||||||
|
return mkdir( a:name , "p" , 0700 )
|
||||||
|
endif
|
||||||
|
|
||||||
|
let rv = system( "mkdir -p -m 0700 " . shellescape( a:name )
|
||||||
|
\ . " >/dev/null 2>&1; echo $?" )
|
||||||
|
if l:rv
|
||||||
|
echoerr "Cannot create" a:name
|
||||||
|
endif
|
||||||
|
return !rv
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Get it from either g:vim_vardata, $VIM_DATA or create it based on $HOME
|
||||||
|
if exists( 'g:vim_vardata' )
|
||||||
|
let s:vim_vardata_base = g:vim_vardata
|
||||||
|
elseif $VIM_DATA != ""
|
||||||
|
let s:vim_vardata_base = $VIM_DATA
|
||||||
|
else
|
||||||
|
let s:vim_vardata_base = $HOME . '/.vimdata'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Remove trailing slash
|
||||||
|
if s:vim_vardata_base =~ "/$"
|
||||||
|
let s:vim_vardata_base = s:vim_vardata_base[ 0 : -1 ]
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Attempt creating it
|
||||||
|
if CreateDirectoryIfNecessary( s:vim_vardata_base )
|
||||||
|
let g:vim_vardata = glob( s:vim_vardata_base )
|
||||||
|
else
|
||||||
|
let g:vim_vardata = ''
|
||||||
|
endif
|
||||||
|
|
Loading…
Reference in a new issue