Fixed runtimepath resolving

This commit is contained in:
Milly
2021-10-07 21:37:19 +09:00
parent 4d4aa5fe55
commit 58e59edd34

View File

@@ -3567,23 +3567,23 @@ if exists("did_load_filetypes") && exists("g:polyglot_disabled")
runtime! extras/filetype.vim runtime! extras/filetype.vim
endif endif
let s:runtime = resolve($VIMRUNTIME) func! s:resolve(file) abort
let s:base = resolve(expand('<sfile>:p:h:h:h')) return substitute(resolve(a:file), '\\', '/', 'g')
endfunc
let s:runtime = s:resolve($VIMRUNTIME)
let s:base = s:resolve(expand('<sfile>:p:h:h:h'))
func! s:process_rtp(rtp) func! s:process_rtp(rtp)
" Remove vim-polyglot from paths and make everything absolute " Remove vim-polyglot from paths and make everything absolute
let rtp = [] let rtp = filter(map(copy(a:rtp[1:-2]), '[s:resolve(v:val), v:val]'),
for path in a:rtp[1:-2] \ 'stridx(v:val[0], s:base) != 0')
let abspath = resolve(path) " User's directory is always first
if stridx(abspath, s:base) != 0
call add(rtp, abspath)
endif
endfor
let result = [a:rtp[0]] let result = [a:rtp[0]]
" Then all other stuff (until vimruntime) " Then all other stuff (until vimruntime)
let i = 0 let i = 0
for path in rtp[0:len(rtp)-1] for [abspath, path] in rtp[0:len(rtp)-1]
if path == s:runtime if abspath == s:runtime
break break
endif endif
call add(result, path) call add(result, path)
@@ -3593,8 +3593,8 @@ func! s:process_rtp(rtp)
call add(result, s:base) call add(result, s:base)
" Then all other files, until after-files " Then all other files, until after-files
while i < len(rtp) while i < len(rtp)
let path = rtp[i] let [abspath, path] = rtp[i]
if match(path, '[/\\]after$') > -1 if match(abspath, '/after$') > -1
break break
endif endif
call add(result, path) call add(result, path)
@@ -3604,7 +3604,7 @@ func! s:process_rtp(rtp)
call add(result, s:base . '/after') call add(result, s:base . '/after')
" Then all other after paths " Then all other after paths
while i < len(rtp) while i < len(rtp)
let path = rtp[i] let [_, path] = rtp[i]
call add(result, path) call add(result, path)
let i = i + 1 let i = i + 1
endwhile endwhile