aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2020-05-03 01:32:13 +1200
committerTom Ryder <tom@sanctum.geek.nz>2020-05-03 01:48:36 +1200
commit2582628f1b95eb98159e77e8359dea6c1b3e005f (patch)
treeb0c60000f8d88f3f7d4d4ae0cda65405e362c79f
parentMerge branch 'release/v8.23.0' into develop (diff)
downloaddotfiles-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.vim22
-rw-r--r--vim/autoload/xdg.vim17
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