mirror of
https://github.com/mattn/vim-lsp-settings.git
synced 2025-12-12 20:35:54 +01:00
Load project related local .vim-lsp-settings/config.json
This commit is contained in:
@@ -358,6 +358,19 @@ function! s:vim_lsp_load_or_suggest(ft) abort
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
try
|
||||||
|
let l:root = lsp#utils#find_nearest_parent_directory('.', '.vim-lsp-settings')
|
||||||
|
if !empty(l:root) && filereadable(l:root . '/config.json')
|
||||||
|
let l:config = json_decode(join(readfile(l:root . '/config.json'), "\n"))
|
||||||
|
if has_key(g:, 'lsp_settings')
|
||||||
|
call lsp_settings#utils#merge(g:lsp_settings, l:config)
|
||||||
|
else
|
||||||
|
let g:lsp_settings = l:config
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
|
||||||
if get(g:, 'lsp_loaded', 0)
|
if get(g:, 'lsp_loaded', 0)
|
||||||
for l:server in s:settings[a:ft]
|
for l:server in s:settings[a:ft]
|
||||||
let l:config = lsp_settings#server_config(l:server.command)
|
let l:config = lsp_settings#server_config(l:server.command)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ function! lsp_settings#utils#first_one(lines) abort
|
|||||||
return l:path
|
return l:path
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:merge(lhs, rhs) abort
|
function! lsp_settings#utils#merge(lhs, rhs) abort
|
||||||
let [l:lhs, l:rhs] = [a:lhs, a:rhs]
|
let [l:lhs, l:rhs] = [a:lhs, a:rhs]
|
||||||
if type(l:lhs) ==# 3
|
if type(l:lhs) ==# 3
|
||||||
if type(l:rhs) ==# 3
|
if type(l:rhs) ==# 3
|
||||||
@@ -70,7 +70,7 @@ function! s:merge(lhs, rhs) abort
|
|||||||
endif
|
endif
|
||||||
elseif type(l:rhs[l:key]) ==# 4
|
elseif type(l:rhs[l:key]) ==# 4
|
||||||
if has_key(l:lhs, l:key)
|
if has_key(l:lhs, l:key)
|
||||||
call s:merge(l:lhs[l:key], l:rhs[l:key])
|
call lsp_settings#utils#merge(l:lhs[l:key], l:rhs[l:key])
|
||||||
else
|
else
|
||||||
let l:lhs[l:key] = l:rhs[l:key]
|
let l:lhs[l:key] = l:rhs[l:key]
|
||||||
endif
|
endif
|
||||||
@@ -82,7 +82,7 @@ function! s:merge(lhs, rhs) abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! lsp_settings#utils#merge(d) abort
|
function! lsp_settings#utils#dotmerge(d) abort
|
||||||
let l:ret = {}
|
let l:ret = {}
|
||||||
let l:keys = keys(a:d)
|
let l:keys = keys(a:d)
|
||||||
for l:k in sort(keys(a:d))
|
for l:k in sort(keys(a:d))
|
||||||
@@ -101,7 +101,7 @@ function! lsp_settings#utils#merge(d) abort
|
|||||||
endif
|
endif
|
||||||
let l:cur = l:cur[l:kk]
|
let l:cur = l:cur[l:kk]
|
||||||
endfor
|
endfor
|
||||||
call s:merge(l:ret, l:new)
|
call lsp_settings#utils#merge(l:ret, l:new)
|
||||||
endfor
|
endfor
|
||||||
return l:ret
|
return l:ret
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
Reference in New Issue
Block a user