Merge #9383 from jamessan/stdpath-rplugin

Use stdpath() to determine rplugin manifest path
This commit is contained in:
Justin M. Keyes 2018-12-28 15:01:41 +01:00 committed by GitHub
commit 4a7f6dafe9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,14 +11,8 @@ function! s:GetManifestPath() abort
return fnamemodify($NVIM_RPLUGIN_MANIFEST, ':p') return fnamemodify($NVIM_RPLUGIN_MANIFEST, ':p')
endif endif
let dest = has('win32') ? '$LOCALAPPDATA' : '$XDG_DATA_HOME' let dest = stdpath('data')
if !exists(dest)
let dest = has('win32') ? '~/AppData/Local' : '~/.local/share'
endif
let dest = fnamemodify(expand(dest), ':p')
if !empty(dest) if !empty(dest)
let dest .= ('/' ==# dest[-1:] ? '' : '/') . 'nvim'
if !isdirectory(dest) if !isdirectory(dest)
call mkdir(dest, 'p', 0700) call mkdir(dest, 'p', 0700)
endif endif
@ -29,22 +23,32 @@ function! s:GetManifestPath() abort
endfunction endfunction
" Old manifest file based on known script locations. " Old manifest file based on known script locations.
function! s:GetOldManifestPath() abort function! s:GetOldManifestPaths() abort
let prefix = exists('$MYVIMRC') let prefix = exists('$MYVIMRC')
\ ? $MYVIMRC \ ? $MYVIMRC
\ : matchstr(get(split(execute('scriptnames'), '\n'), 0, ''), '\f\+$') \ : matchstr(get(split(execute('scriptnames'), '\n'), 0, ''), '\f\+$')
return fnamemodify(expand(prefix, 1), ':h') let origpath = fnamemodify(expand(prefix, 1), ':h')
\.'/.'.fnamemodify(prefix, ':t').'-rplugin~' \.'/.'.fnamemodify(prefix, ':t').'-rplugin~'
if !has('win32')
return [origpath]
endif
" Windows used to use $APPLOCALDATA/nvim but stdpath('data') is
" $XDG_DATA_DIR/nvim-data
let pseudostdpath = exists('$LOCALAPPDATA') ? '$LOCALAPPDATA' : '~/AppData/Local'
let pseudostdpath = fnamemodify(expand(pseudostdpath), ':p')
return [substitute(pseudostdpath, '[/\\]\=$', '/', '') . 'nvim/rplugin.vim', origpath]
endfunction endfunction
function! s:GetManifest() abort function! s:GetManifest() abort
let manifest = s:GetManifestPath() let manifest = s:GetManifestPath()
if !filereadable(manifest) if !filereadable(manifest)
" Check if an old manifest file exists and move it to the new location. " Check if an old manifest file exists and move it to the new location.
let old_manifest = s:GetOldManifestPath() for old_manifest in s:GetOldManifestPaths()
if filereadable(old_manifest) if filereadable(old_manifest)
call rename(old_manifest, manifest) call rename(old_manifest, manifest)
break
endif endif
endfor
endif endif
return manifest return manifest
endfunction endfunction