aboutsummaryrefslogtreecommitdiff
path: root/vim/autoload
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2020-05-03 02:16:34 +1200
committerTom Ryder <tom@sanctum.geek.nz>2020-05-03 02:16:34 +1200
commitfd7bbd4599d1c15555c8c563d840d7fae6fd60bf (patch)
treee1030e690578e97208d3f96b7ede1ea1c3b7d02f /vim/autoload
parentMerge branch 'release/v8.23.0' (diff)
parentBump VERSION (diff)
downloaddotfiles-ca5969253e18bcf0dc773cc37219e2b2cbe3ed40.tar.gz (sig)
dotfiles-ca5969253e18bcf0dc773cc37219e2b2cbe3ed40.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')
-rw-r--r--vim/autoload/getenv.vim22
-rw-r--r--vim/autoload/xdg.vim23
2 files changed, 32 insertions, 13 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..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