diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2022-06-30 01:12:59 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2022-07-10 22:08:50 +1200 |
commit | 1238d7a25f554d083f80d560759163d9b9ac17b9 (patch) | |
tree | 17bfab411e1b3777b3f519eeb93edf7ebf32cd88 | |
parent | Translate vimrc to vim9script (diff) | |
download | dotfiles-1238d7a25f554d083f80d560759163d9b9ac17b9.tar.gz dotfiles-1238d7a25f554d083f80d560759163d9b9ac17b9.zip |
Translate autoload/xdg.vim to vim9script
-rw-r--r-- | vim/autoload/xdg.vim | 99 |
1 files changed, 48 insertions, 51 deletions
diff --git a/vim/autoload/xdg.vim b/vim/autoload/xdg.vim index cb7adcf5..7e62e585 100644 --- a/vim/autoload/xdg.vim +++ b/vim/autoload/xdg.vim @@ -1,67 +1,64 @@ -" <https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables> -let s:defaults = { - \ 'XDG_CACHE_HOME': $HOME.'/.cache', - \ 'XDG_CONFIG_HOME': $HOME.'/.config', - \ 'XDG_CONFIG_DIRS': '/etc/xdg', - \ 'XDG_DATA_HOME': $HOME.'/.local/share', - \ 'XDG_DATA_DIRS': '/usr/local/share:/usr/share', - \ 'XDG_STATE_HOME': $HOME.'/.local/state', - \} +vim9script -function! s:Get(name) abort - let name = a:name - if !has_key(s:defaults, name) +# <https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables> +const defaults = { + 'XDG_CACHE_HOME': $HOME .. '/.cache', + 'XDG_CONFIG_HOME': $HOME .. '/.config', + 'XDG_CONFIG_DIRS': '/etc/xdg', + 'XDG_DATA_HOME': $HOME .. '/.local/share', + 'XDG_DATA_DIRS': '/usr/local/share:/usr/share', + 'XDG_STATE_HOME': $HOME .. '/.local/state', + } + +def Get(name: string): string + if !has_key(defaults, name) throw 'Illegal XDG basedirs env var name' endif - let value = s:defaults[name] - if exists('$'.a:name) - execute 'let value = $'.a:name - endif - return value -endfunction + return get(environ(), name, defaults[name]) +enddef -function! s:Absolute(path) abort - return a:path =~# '^/' - \ || a:path =~# '^\~/' - \ || a:path ==# '~' -endfunction +def Absolute(path: string): bool + return path =~ '^/' + \ || path =~ '^\~/' + \ || path == '~' +enddef -function! s:Home(name) abort - let home = s:Get(a:name) - if !s:Absolute(home) +def Home(name: string): string + const home = Get(name) + if !Absolute(home) return '' endif - return home.'/vim' -endfunction + return home .. '/vim' +enddef -function! s:Dirs(name) abort - let dirs = split(s:Get(a:name), ':') +def Dirs(name: string): list<string> + const dirs = split(Get(name), ':') return map( - \ filter(copy(dirs), 's:Absolute(v:val)') - \,'v:val.''/vim''' + \ filter(copy(dirs), 'Absolute(v:val)'), + \ 'v:val .. ''/vim''' \) -endfunction +enddef -function! xdg#CacheHome() abort - return has('unix') ? s:Home('XDG_CACHE_HOME') : '' -endfunction +export def CacheHome(): string + return has('unix') ? Home('XDG_CACHE_HOME') : '' +enddef -function! xdg#ConfigHome() abort - return has('unix') ? s:Home('XDG_CONFIG_HOME') : '' -endfunction +export def ConfigHome(): string + return has('unix') ? Home('XDG_CONFIG_HOME') : '' +enddef -function! xdg#DataHome() abort - return has('unix') ? s:Home('XDG_DATA_HOME') : '' -endfunction +export def DataHome(): string + return has('unix') ? Home('XDG_DATA_HOME') : '' +enddef -function! xdg#StateHome() abort - return has('unix') ? s:Home('XDG_STATE_HOME') : '' -endfunction +export def StateHome(): string + return has('unix') ? Home('XDG_STATE_HOME') : '' +enddef -function! xdg#ConfigDirs() abort - return has('unix') ? s:Dirs('XDG_CONFIG_DIRS') : [] -endfunction +export def ConfigDirs(): list<string> + return has('unix') ? Dirs('XDG_CONFIG_DIRS') : [] +enddef -function! xdg#DataDirs() abort - return has('unix') ? s:Dirs('XDG_DATA_DIRS') : [] -endfunction +export def DataDirs(): list<string> + return has('unix') ? Dirs('XDG_DATA_DIRS') : [] +enddef |