I have configured ansible-language-server as a language server, as follows in my vimrc
let g:ycm_language_server =
\ [
\ {
\ 'name': 'ansible',
\ 'cmdline': [ 'ansible-language-server', '--stdio' ],
\ 'filetypes': [ 'yaml' ],
\ 'project_root_files': ['ansible.cfg']
\ ]
The problem is that YouCompleteMe/ycmd crashes due the fact that when ansible-language-server starts, it has a couple console.debug statements around which linting system it will use. ansible-language-server is built using Node.js and unfortunately only honors the --stdio flag for starting the language server. In Node.js, console.debug is just a redirect to console.log.
As a result, ansible-language-server upon startup emits a line to stdio that is not a valid protocol data, which crashes ycmd.
2023-01-10 11:21:06,067 - ERROR - Received invalid protocol data from server: b'\nValidating u
sing ansible-lint'
Traceback (most recent call last):
File "/Users/sc68cal/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/completers/language_s
erver/language_server_completer.py", line 564, in _ReadHeaders
key, value = utils.ToUnicode( line ).split( ':', 1 )
ValueError: not enough values to unpack (expected 2, got 1)
2023-01-10 11:21:06,067 - ERROR - The language server communication channel closed unexpectedly. Issue a RestartServer command to recover.
Traceback (most recent call last):
File "/Users/sc68cal/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/completers/language_server/language_server_completer.py", line 367, in run
self._ReadMessages()
File "/Users/sc68cal/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/completers/language_server/language_server_completer.py", line 486, in _ReadMessages
data, read_bytes, headers = self._ReadHeaders( data )
File "/Users/sc68cal/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/completers/language_server/language_server_completer.py", line 564, in _ReadHeaders
key, value = utils.ToUnicode( line ).split( ':', 1 )
ValueError: not enough values to unpack (expected 2, got 1)
I have configured ansible-language-server as a language server, as follows in my
vimrcThe problem is that
YouCompleteMe/ycmdcrashes due the fact that whenansible-language-serverstarts, it has a coupleconsole.debugstatements around which linting system it will use.ansible-language-serveris built using Node.js and unfortunately only honors the--stdioflag for starting the language server. In Node.js,console.debugis just a redirect to console.log.As a result,
ansible-language-serverupon startup emits a line tostdiothat is not a valid protocol data, which crashes ycmd.