Skip to content

Commit 70a90a9

Browse files
committed
Do not send requests/notifications for buffers without a configured server command (autozimu#1121)
1 parent d79e553 commit 70a90a9

File tree

2 files changed

+31
-16
lines changed

2 files changed

+31
-16
lines changed

autoload/LanguageClient.vim

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -786,12 +786,15 @@ function! s:SkipSendingMessage() abort
786786
return v:false
787787
endif
788788

789-
return &buftype !=# '' || &filetype ==# '' || expand('%') ==# ''
789+
let l:commands = get(g:, 'LanguageClient_serverCommands', {})
790+
let l:has_command = has_key(l:commands, &filetype)
791+
792+
return !l:has_command || &buftype !=# '' || &filetype ==# '' || expand('%') ==# ''
790793
endfunction
791794

792795
function! LanguageClient#Call(method, params, callback, ...) abort
793796
if s:SkipSendingMessage()
794-
" call s:Debug('Skip sending message')
797+
echo '[LC] Server not configured for filetype ' . &filetype
795798
return
796799
endif
797800

plugin/LanguageClient.vim

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -153,25 +153,31 @@ endfunction
153153
command! -nargs=* LanguageClientStart :call LanguageClient#startServer(<f-args>)
154154
command! LanguageClientStop call LanguageClient#shutdown()
155155

156-
augroup languageClient
156+
function! s:ConfigureAutocmds()
157+
let l:commands = get(g:, 'LanguageClient_serverCommands', {})
158+
if !has_key(l:commands, &filetype)
159+
" skip setting autocmds if the filetype doesn't have a configured server command
160+
return
161+
endif
162+
163+
call LanguageClient#handleFileType()
164+
augroup languageClient
157165
autocmd!
158-
autocmd FileType * call LanguageClient#handleFileType()
159-
autocmd BufNewFile * call LanguageClient#handleBufNewFile()
160-
autocmd BufEnter * call LanguageClient#handleBufEnter()
161-
autocmd BufWritePost * call LanguageClient#handleBufWritePost()
162-
autocmd BufDelete * call LanguageClient#handleBufDelete()
163-
autocmd TextChanged * call LanguageClient#handleTextChanged()
164-
autocmd TextChangedI * call LanguageClient#handleTextChanged()
166+
autocmd BufNewFile <buffer> call LanguageClient#handleBufNewFile()
167+
autocmd BufEnter <buffer> call LanguageClient#handleBufEnter()
168+
autocmd BufWritePost <buffer> call LanguageClient#handleBufWritePost()
169+
autocmd BufDelete <buffer> call LanguageClient#handleBufDelete()
170+
autocmd TextChanged <buffer> call LanguageClient#handleTextChanged()
171+
autocmd TextChangedI <buffer> call LanguageClient#handleTextChanged()
165172
if exists('##TextChangedP')
166-
autocmd TextChangedP * call LanguageClient#handleTextChanged()
173+
autocmd TextChangedP <buffer> call LanguageClient#handleTextChanged()
167174
endif
168-
autocmd CursorMoved * call LanguageClient#handleCursorMoved()
169-
autocmd VimLeavePre * call LanguageClient#handleVimLeavePre()
170-
171-
autocmd CompleteDone * call LanguageClient#handleCompleteDone()
175+
autocmd CursorMoved <buffer> call LanguageClient#handleCursorMoved()
176+
autocmd VimLeavePre <buffer> call LanguageClient#handleVimLeavePre()
172177

178+
autocmd CompleteDone <buffer> call LanguageClient#handleCompleteDone()
173179
if get(g:, 'LanguageClient_signatureHelpOnCompleteDone', 0)
174-
autocmd CompleteDone *
180+
autocmd CompleteDone <buffer>
175181
\ call LanguageClient#textDocument_signatureHelp({}, 's:HandleOutputNothing')
176182
endif
177183

@@ -192,4 +198,10 @@ augroup languageClient
192198
nnoremap <Plug>(lcn-format-sync) :call LanguageClient_textDocument_formatting_sync()<CR>
193199
nnoremap <Plug>(lcn-diagnostics-next) :call LanguageClient_diagnosticsNext()<CR>
194200
nnoremap <Plug>(lcn-diagnostics-prev) :call LanguageClient_diagnosticsPrevious()<CR>
201+
augroup END
202+
endfunction
203+
204+
augroup languageClient_fileType
205+
autocmd!
206+
autocmd FileType * call s:ConfigureAutocmds()
195207
augroup END

0 commit comments

Comments
 (0)