aboutsummaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'autoload')
-rw-r--r--autoload/lsp_settings.vim32
1 files changed, 25 insertions, 7 deletions
diff --git a/autoload/lsp_settings.vim b/autoload/lsp_settings.vim
index 3b78c66..476eda3 100644
--- a/autoload/lsp_settings.vim
+++ b/autoload/lsp_settings.vim
@@ -9,6 +9,10 @@ call remove(s:settings, '$schema')
let s:ftmap = {}
+function! lsp_settings#installer_dir() abort
+ return s:installer_dir
+endfunction
+
function! lsp_settings#servers_dir() abort
let l:path = fnamemodify(get(g:, 'lsp_settings_servers_dir', s:servers_dir), ':p')
if has('win32')
@@ -176,9 +180,13 @@ function! lsp_settings#autocd(server_info) abort
endif
endfunction
+function! lsp_settings#settings() abort
+ return s:settings
+endfunction
+
function! lsp_settings#complete_uninstall(arglead, cmdline, cursorpos) abort
let l:installers = []
- for l:ft in keys(s:settings)
+ for l:ft in sort(keys(s:settings))
for l:conf in s:settings[l:ft]
if !isdirectory(lsp_settings#servers_dir() . '/' . l:conf.command)
continue
@@ -272,6 +280,7 @@ function! s:vim_lsp_install_server(ft, command) abort
endif
let l:server_install_dir = lsp_settings#servers_dir() . '/' . l:entry[0]
if isdirectory(l:server_install_dir)
+ call lsp_settings#utils#msg('Uninstalling ' . l:entry[0])
call delete(l:server_install_dir, 'rf')
endif
call mkdir(l:server_install_dir, 'p')
@@ -293,11 +302,12 @@ function! s:vim_lsp_settings_suggest(ft) abort
if empty(l:entry)
return
endif
+
+ redraw!
+ echohl Directory
+ echomsg 'Please do :LspInstallServer to enable Language Server ' . l:entry[0]
+ echohl None
if exists(':LspInstallServer') !=# 2
- redraw!
- echohl Directory
- echomsg 'Please do :LspInstallServer to enable Language Server ' . l:entry[0]
- echohl None
command! -nargs=? -buffer -complete=customlist,lsp_settings#complete_install LspInstallServer call s:vim_lsp_install_server(&l:filetype, <q-args>)
endif
endfunction
@@ -324,8 +334,16 @@ function! s:vim_lsp_suggest_plugin() abort
endfor
endfunction
+function! s:vim_lsp_load_or_suggest_delay(ft) abort
+ call s:vim_lsp_load_or_suggest(a:ft)
+ "if get(g:, 'vim_lsp_settings_filetype_no_delays', 0)
+ " return s:vim_lsp_load_or_suggest(a:ft)
+ "endif
+ "call timer_start(0, {timer -> [s:vim_lsp_load_or_suggest(a:ft), execute('doautocmd BufReadPost')]})
+endfunction
+
function! s:vim_lsp_load_or_suggest(ft) abort
- if !has_key(s:settings, a:ft)
+ if (a:ft !=# '_' && &filetype !=# a:ft) || !has_key(s:settings, a:ft)
return
endif
@@ -422,7 +440,7 @@ function! lsp_settings#init() abort
endif
exe 'augroup' lsp_settings#utils#group_name(l:ft)
autocmd!
- exe 'autocmd FileType' l:ft printf("call s:vim_lsp_load_or_suggest('%s')", l:ft)
+ exe 'autocmd FileType' l:ft 'call' printf("s:vim_lsp_load_or_suggest_delay('%s')", l:ft)
augroup END
endfor
augroup vim_lsp_suggest