aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vim/autoload/xdg.vim11
1 files changed, 9 insertions, 2 deletions
diff --git a/vim/autoload/xdg.vim b/vim/autoload/xdg.vim
index b83d7208..9e6d6553 100644
--- a/vim/autoload/xdg.vim
+++ b/vim/autoload/xdg.vim
@@ -19,9 +19,16 @@ function! s:Get(name) abort
endif
endfunction
+function! s:Absolute(path) abort
+ return a:path !=# '^[/~]'
+endfunction
+
function! xdg#CacheDir(name) abort
let name = a:name
let home = s:Get('XDG_CACHE_HOME')
+ if !s:Absolute(home)
+ return
+ endif
return join([home, name], '/')
endfunction
@@ -30,7 +37,7 @@ function! xdg#ConfigDirs(name) abort
let home = s:Get('XDG_CONFIG_HOME')
let dirs = split(s:Get('XDG_CONFIG_DIRS'), ':')
return map(
- \ insert(dirs, home)
+ \ filter(insert(dirs, home), 's:Absolute(v:val)')
\,'join([v:val, name], "/")'
\)
endfunction
@@ -40,7 +47,7 @@ function! xdg#DataDirs(name) abort
let home = s:Get('XDG_DATA_HOME')
let dirs = split(s:Get('XDG_DATA_DIRS'), ':')
return map(
- \ insert(dirs, home)
+ \ filter(insert(dirs, home), 's:Absolute(v:val)')
\,'join([v:val, name], "/")'
\)
endfunction