rplugin.vim (2017B)
1 if exists('g:loaded_remote_plugins') 2 finish 3 endif 4 let g:loaded_remote_plugins = '/path/to/manifest' 5 6 " Get the path to the rplugin manifest file. 7 function! s:GetManifestPath() abort 8 let manifest_base = '' 9 10 if exists('$NVIM_RPLUGIN_MANIFEST') 11 return fnamemodify($NVIM_RPLUGIN_MANIFEST, ':p') 12 endif 13 14 let dest = stdpath('data') 15 if !empty(dest) 16 if !isdirectory(dest) 17 if getftype(dest) != "link" 18 call mkdir(dest, 'p', 0700) 19 endif 20 endif 21 let manifest_base = dest 22 endif 23 24 return manifest_base.'/rplugin.vim' 25 endfunction 26 27 " Old manifest file based on known script locations. 28 function! s:GetOldManifestPaths() abort 29 let prefix = exists('$MYVIMRC') 30 \ ? $MYVIMRC 31 \ : matchstr(get(split(execute('scriptnames'), '\n'), 0, ''), '\f\+$') 32 let origpath = fnamemodify(expand(prefix, 1), ':h') 33 \.'/.'.fnamemodify(prefix, ':t').'-rplugin~' 34 if !has('win32') 35 return [origpath] 36 endif 37 " Windows used to use $APPLOCALDATA/nvim but stdpath('data') is 38 " $XDG_DATA_DIR/nvim-data 39 let pseudostdpath = exists('$LOCALAPPDATA') ? '$LOCALAPPDATA' : '~/AppData/Local' 40 let pseudostdpath = fnamemodify(expand(pseudostdpath), ':p') 41 return [substitute(pseudostdpath, '[/\\]\=$', '/', '') . 'nvim/rplugin.vim', origpath] 42 endfunction 43 44 function! s:GetManifest() abort 45 let manifest = s:GetManifestPath() 46 if !filereadable(manifest) 47 " Check if an old manifest file exists and move it to the new location. 48 for old_manifest in s:GetOldManifestPaths() 49 if filereadable(old_manifest) 50 call rename(old_manifest, manifest) 51 break 52 endif 53 endfor 54 endif 55 return manifest 56 endfunction 57 58 function! s:LoadRemotePlugins() abort 59 let g:loaded_remote_plugins = s:GetManifest() 60 if filereadable(g:loaded_remote_plugins) 61 execute 'source' fnameescape(g:loaded_remote_plugins) 62 endif 63 endfunction 64 65 command! -bar UpdateRemotePlugins call remote#host#UpdateRemotePlugins() 66 67 if index(v:argv, "--clean") < 0 68 call s:LoadRemotePlugins() 69 endif