diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2020-05-03 02:16:34 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2020-05-03 02:16:34 +1200 |
commit | fd7bbd4599d1c15555c8c563d840d7fae6fd60bf (patch) | |
tree | e1030e690578e97208d3f96b7ede1ea1c3b7d02f /vim/autoload/xdg.vim | |
parent | Merge branch 'release/v8.23.0' (diff) | |
parent | Bump VERSION (diff) | |
download | dotfiles-fd7bbd4599d1c15555c8c563d840d7fae6fd60bf.tar.gz dotfiles-fd7bbd4599d1c15555c8c563d840d7fae6fd60bf.zip |
Merge branch 'release/v8.24.0'v8.24.0
* release/v8.24.0:
Use v:null in XDG-related contexts
Add handling of "after" subdirs in Vim XDG config
Separate cache runtime behaviour from config
Tolerate unset iteration variables
Improve "absolute path" check for XDG base dirs
Tidy and correct XDG var getenv() fallback
Diffstat (limited to 'vim/autoload/xdg.vim')
-rw-r--r-- | vim/autoload/xdg.vim | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/vim/autoload/xdg.vim b/vim/autoload/xdg.vim index 2b1e7c56..2b90f5f1 100644 --- a/vim/autoload/xdg.vim +++ b/vim/autoload/xdg.vim @@ -11,28 +11,25 @@ let s:subdir = 'vim' function! s:Get(name) abort let name = a:name - if name !~# '^[A-Z][A-Z0-9_]*$' - throw 'Illegal env var name' - endif - let value = '' - execute 'let value = $'.name - if value !=# '' - return value - elseif has_key(s:defaults, name) - return s:defaults[name] - else - return '' + if !has_key(s:defaults, name) + throw 'Illegal XDG basedirs env var name' endif + let value = getenv#(name) + return value !=# v:null + \ ? value + \ : s:defaults[name] endfunction function! s:Absolute(path) abort - return a:path =~# '^[/~]' + return a:path =~# '^/' + \ || a:path =~# '^\~/' + \ || a:path ==# '~' endfunction function! s:Home(name) abort let home = s:Get(a:name) if !s:Absolute(home) - return '' + return v:null endif return join([home, s:subdir], '/') endfunction |