From 208a0696b268ab7f0e74a8a0d44e31d966762d5c Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sat, 25 Apr 2020 20:13:01 +1200 Subject: Implement specified fallbacks for $XDG_*_DIRS From : > If $XDG_DATA_DIRS is either not set or empty, a value equal to > /usr/local/share/:/usr/share/ should be used. > ... > If $XDG_CONFIG_DIRS is either not set or empty, a value equal to > /etc/xdg should be used. --- vim/autoload/xdg.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vim/autoload/xdg.vim b/vim/autoload/xdg.vim index ab756f73..fd7ddedf 100644 --- a/vim/autoload/xdg.vim +++ b/vim/autoload/xdg.vim @@ -13,7 +13,7 @@ function! xdg#ConfigDirs(name) abort \ : '~/.config' let dirs = exists('$XDG_CONFIG_DIRS') \ ? split($XDG_CONFIG_DIRS, ':') - \ : [] + \ : ['/etc/xdg'] return map( \ insert(dirs, home) \,'join([v:val, name], "/")' @@ -27,7 +27,7 @@ function! xdg#DataDirs(name) abort \ : '~/.local/share' let dirs = exists('$XDG_DATA_DIRS') \ ? split($XDG_DATA_DIRS, ':') - \ : [] + \ : ['/usr/local/share', '/usr/share'] return map( \ insert(dirs, home) \,'join([v:val, name], "/")' -- cgit v1.2.3 From 49b3b6b9df4d957b874a716378266870b4c2e9c7 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sat, 25 Apr 2020 20:29:25 +1200 Subject: Factor out XDG env defaults for readability --- vim/autoload/xdg.vim | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/vim/autoload/xdg.vim b/vim/autoload/xdg.vim index fd7ddedf..b83d7208 100644 --- a/vim/autoload/xdg.vim +++ b/vim/autoload/xdg.vim @@ -1,19 +1,34 @@ +" +let s:defaults = { + \ 'XDG_CACHE_HOME': '~/.cache', + \ 'XDG_CONFIG_HOME': '~/.config', + \ 'XDG_CONFIG_DIRS': '/etc/xdg', + \ 'XDG_DATA_HOME': '~/.local/share', + \ 'XDG_DATA_DIRS': '/usr/local/share/:/usr/share/', + \} + +function! s:Get(name) abort + let name = a:name + let env = environ() + if has_key(env, name) && strlen(env[name]) > 0 + return env[name] + elseif has_key(s:defaults, name) + return s:defaults[name] + else + return '' + endif +endfunction + function! xdg#CacheDir(name) abort let name = a:name - let home = exists('$XDG_CACHE_HOME') - \ ? $XDG_CACHE_HOME - \ : '~/.cache' + let home = s:Get('XDG_CACHE_HOME') return join([home, name], '/') endfunction function! xdg#ConfigDirs(name) abort let name = a:name - let home = exists('$XDG_CONFIG_HOME') - \ ? $XDG_CONFIG_HOME - \ : '~/.config' - let dirs = exists('$XDG_CONFIG_DIRS') - \ ? split($XDG_CONFIG_DIRS, ':') - \ : ['/etc/xdg'] + let home = s:Get('XDG_CONFIG_HOME') + let dirs = split(s:Get('XDG_CONFIG_DIRS'), ':') return map( \ insert(dirs, home) \,'join([v:val, name], "/")' @@ -22,12 +37,8 @@ endfunction function! xdg#DataDirs(name) abort let name = a:name - let home = exists('$XDG_DATA_HOME') - \ ? $XDG_DATA_HOME - \ : '~/.local/share' - let dirs = exists('$XDG_DATA_DIRS') - \ ? split($XDG_DATA_DIRS, ':') - \ : ['/usr/local/share', '/usr/share'] + let home = s:Get('XDG_DATA_HOME') + let dirs = split(s:Get('XDG_DATA_DIRS'), ':') return map( \ insert(dirs, home) \,'join([v:val, name], "/")' -- cgit v1.2.3 From 5d6110fc87651d39eb82737cac9f5c3bad412926 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sat, 25 Apr 2020 20:44:05 +1200 Subject: Handle ignoring relative paths in XDG env dirs From : > All paths set in these environment variables must be absolute. If an > implementation encounters a relative path in any of these variables it > should consider the path invalid and ignore it. --- vim/autoload/xdg.vim | 11 +++++++++-- 1 file 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 -- cgit v1.2.3 From e7cf92d8275f1b725b4bd7961717293f0c88e30f Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sat, 25 Apr 2020 20:46:25 +1200 Subject: Bump VERSION --- VERSION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index ae41e268..e57e820b 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -tejr dotfiles v8.20.0 -Sat, 25 Apr 2020 07:34:11 +0000 +tejr dotfiles v8.20.1 +Sat, 25 Apr 2020 08:46:20 +0000 -- cgit v1.2.3