diff options
Diffstat (limited to 'autoload/ale/lsp.vim')
-rw-r--r-- | autoload/ale/lsp.vim | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/autoload/ale/lsp.vim b/autoload/ale/lsp.vim index 510f3e95..75d81525 100644 --- a/autoload/ale/lsp.vim +++ b/autoload/ale/lsp.vim @@ -45,6 +45,7 @@ function! ale#lsp#Register(executable_or_address, project, init_options) abort \ 'typeDefinition': 0, \ 'symbol_search': 0, \ 'code_actions': 0, + \ 'did_save': 0, \ 'includeText': 0, \ }, \} @@ -265,15 +266,19 @@ function! s:UpdateCapabilities(conn, capabilities) abort let a:conn.capabilities.symbol_search = 1 endif - if has_key(a:capabilities, 'textDocumentSync') - if type(a:capabilities.textDocumentSync) is v:t_dict - let l:save = get(a:capabilities.textDocumentSync, 'save', v:false) + if type(get(a:capabilities, 'textDocumentSync')) is v:t_dict + let l:syncOptions = get(a:capabilities, 'textDocumentSync') - if type(l:save) is v:true - let a:conn.capabilities.includeText = 1 - endif + if get(l:syncOptions, 'save') is v:true + let a:conn.capabilities.did_save = 1 + endif + + if type(get(l:syncOptions, 'save')) is v:t_dict + let a:conn.capabilities.did_save = 1 + + let l:saveOptions = get(l:syncOptions, 'save') - if type(l:save) is v:t_dict && get(a:capabilities.textDocumentSync.save, 'includeText', v:false) is v:true + if get(l:saveOptions, 'includeText') is v:true let a:conn.capabilities.includeText = 1 endif endif |