diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2020-05-03 01:32:13 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2020-05-03 01:48:36 +1200 |
commit | 2582628f1b95eb98159e77e8359dea6c1b3e005f (patch) | |
tree | b0c60000f8d88f3f7d4d4ae0cda65405e362c79f | |
parent | Merge branch 'release/v8.23.0' into develop (diff) | |
download | dotfiles-2582628f1b95eb98159e77e8359dea6c1b3e005f.tar.gz dotfiles-2582628f1b95eb98159e77e8359dea6c1b3e005f.zip |
Tidy and correct XDG var getenv() fallback
It's more correct for this function to get upset it's been passed
a variable name outside the XDG basedirs spec; a more general function,
in this case a backporting of getenv() from v8.1.1305.
-rw-r--r-- | vim/autoload/getenv.vim | 22 | ||||
-rw-r--r-- | vim/autoload/xdg.vim | 17 |
2 files changed, 28 insertions, 11 deletions
diff --git a/vim/autoload/getenv.vim b/vim/autoload/getenv.vim new file mode 100644 index 00000000..2b8fef1b --- /dev/null +++ b/vim/autoload/getenv.vim @@ -0,0 +1,22 @@ +" Backport getenv() from v8.1.1305 +" +" <https://github.com/vim/vim/releases/tag/v8.1.1305> +" +function! getenv#(name) abort + + " Use native if available + if exists('*getenv') + return getenv(a:name) + endif + + " Backport + if a:name !~# '^[A-Z][A-Z0-9_]*$' + throw 'Illegal env var name' + endif + let value = v:null + if exists('$'.a:name) + execute 'let value = $'.a:name + endif + return value + +endfunction diff --git a/vim/autoload/xdg.vim b/vim/autoload/xdg.vim index 2b1e7c56..a0b88f82 100644 --- a/vim/autoload/xdg.vim +++ b/vim/autoload/xdg.vim @@ -11,18 +11,13 @@ 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 |