diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim index c415e7c..8c3d4c7 100644 --- a/autoload/ale/engine.vim +++ b/autoload/ale/engine.vim @@ -704,8 +704,8 @@ function! s:CheckWithLSP(buffer, linter) abort let l:request_id = ale#lsp#Send(l:id, l:change_message, l:root) " If this was a file save event, also notify the server of that. - let l:is_save = getbufvar(a:buffer, 'ale_save_event_fired', 0) - if l:is_save != 0 + if a:linter.lsp isnot# 'tsserver' + \&& getbufvar(a:buffer, 'ale_save_event_fired', 0) let l:save_message = ale#lsp#message#DidSave(a:buffer) let l:request_id = ale#lsp#Send(l:id, l:save_message, l:root) endif diff --git a/test/lsp/test_lsp_communication.vader b/test/lsp/test_did_save_event.vader similarity index 88% rename from test/lsp/test_lsp_communication.vader rename to test/lsp/test_did_save_event.vader index 7a4c67e..042a3ce 100644 --- a/test/lsp/test_lsp_communication.vader +++ b/test/lsp/test_did_save_event.vader @@ -16,13 +16,21 @@ Before: let g:message_list = [] let g:Callback = '' + function! LanguageCallback() abort + return 'foobar' + endfunction + + function! ProjectRootCallback() abort + return expand('.') + endfunction + call ale#linter#Define('foobar', { \ 'name': 'dummy_linter', \ 'lsp': 'stdio', \ 'command': 'cat - > /dev/null', \ 'executable': has('win32') ? 'cmd' : 'echo', - \ 'language_callback': {buffer -> 'foobar'}, - \ 'project_root_callback': {buffer -> expand('.')}, + \ 'language_callback': 'LanguageCallback', + \ 'project_root_callback': 'ProjectRootCallback', \ }) let g:ale_linters = {'foobar': ['dummy_linter']} @@ -48,6 +56,9 @@ After: unlet! g:Callback unlet! g:message_list + delfunction LanguageCallback + delfunction ProjectRootCallback + call ale#test#RestoreDirectory() call ale#linter#Reset()