Skip to content

Undefined variable: g:LanguageClient_serverCommands #11

Description

@cprn

Hi there,

1st of all, this wrapper is awesome and saves tons of time and this issue is really minor.

It seems the g:LanguageClient_serverCommands variable is being set too late therefore function that sets the bindings described in :help LanguageClient doesn't work and opening any buffer complains about missing variable. Calling same function after the buffer opens works fine. Can you somehow register the server commands earlier and, if not, can you recommend other general condition for detecting whether the server will run for given buffer or not?

Testing vimrc (please note the if statement):

" modeline {
" vim:set ft=vim sw=4 ts=4 sts=4 et tw=78 foldmarker={,} foldlevel=0 foldmethod=marker nowrap:
" }

" vim-plug + plugins {
    call plug#begin('~/tmp/testvim')
    Plug 'autozimu/LanguageClient-neovim',  {'branch': 'next', 'do': 'bash install.sh'}
    Plug 'roxma/LanguageServer-php-neovim', {'for': 'php', 'do': 'php ~/bin/composer install && php ~/bin/composer run-script parse-stubs'}
    call plug#end()
" }

" copied from `:help LanguageClient` {
    function LC_maps()
      if has_key(g:LanguageClient_serverCommands, &filetype)
        nnoremap <buffer> <silent> K :call LanguageClient#textDocument_hover()<cr>
        nnoremap <buffer> <silent> gd :call LanguageClient#textDocument_definition()<CR>
        nnoremap <buffer> <silent> <leader>rn :call LanguageClient#textDocument_rename()<CR>
      endif
    endfunction

    autocmd FileType * call LC_maps()
" }

Error message:

Error detected while processing function LC_maps:
line    1:
E121: Undefined variable: g:LanguageClient_serverCommands
E116: Invalid arguments for function has_key
E15: Invalid expression: has_key(g:LanguageClient_serverCommands, &filetype)
Press ENTER or type command to continue

Calling it after the buffer opens works fine:

:call LC_maps()

I'll cross post this issue on LanguageClient tracker as I'm not sure where it belongs. Maybe they can just change documentation or the way server commands register.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions