opened
blueyed
username_0
Updating to 0.2.5 causes Python to initialize.

Using `nvim -u NONE -c 'py3 print(1)'` causes:

```
Error detected while processing function provider#python3#Call:
line   18:
no request handler registered for "python_execute"
```

This is caused by https://github.com/neovim/python-client/commit/1ab98e8d9f3cd935e55bb302d4bc2b7e66f39e8c#diff-0c909a4857a0ff8d88203aaa77f3b438R54.

It does not happen when using `NVIM_PYTHON_LOG_FILE=logfile NVIM_PYTHON_LOG_LEVEL=DEBUG` however, so it appears that logging (more overhead) does not trigger it.

Using `async=False` with the `nvim.command` to define `autocmd DirChanged` triggers it with logging enabled though:
```
2018-04-30 16:43:16,861 [DEBUG @ msgpack_stream.py:send:34] 8603 - sent [0, 1, b'vim_get_api_info', ()]
2018-04-30 16:43:16,861 [DEBUG @ base.py:send:117] 8603 - Sending 'b'\x94\x00\x01\xb0vim_get_api_info\x90''
2018-04-30 16:43:16,861 [DEBUG @ base.py:run:142] 8603 - Entering event loop
2018-04-30 16:43:16,861 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,861 [DEBUG @ msgpack_stream.py:_on_data:61] 8603 - received message: [0, 1, b'poll', []]
2018-04-30 16:43:16,862 [DEBUG @ async_session.py:_on_request:91] 8603 - received request: b'poll', []
2018-04-30 16:43:16,862 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,862 [DEBUG @ msgpack_stream.py:_on_data:64] 8603 - unpacker needs more data...
2018-04-30 16:43:16,862 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,863 [DEBUG @ msgpack_stream.py:_on_data:61] 8603 - received message: [1, 1, None, [3, {b'version': {b'major': 0, b'minor': 3, b'patch': 0, b'api_level': 4, b'api_compatible': 0, b'api_prerelease': True}, b'functions': [{b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_buf_line_count', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'index']], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'buffer_get_line', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'index'], [b'String', b'line']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_line', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'index']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_del_line', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'include_start'], [b'Boolean', b'include_end']], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(String)', b'name': b'buffer_get_line_slice', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing']], b'method': True, b'return_type': b'ArrayOf(String)', b'name': b'nvim_buf_get_lines', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'include_start'], [b'Boolean', b'include_end'], [b'ArrayOf(String)', b'replacement']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_line_slice', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing'], [b'ArrayOf(String)', b'replacement']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_lines', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_buf_get_var', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_buf_get_changedtick', b'since': 2}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'mode']], b'method': True, b'return_type': b'ArrayOf(Dictionary)', b'name': b'nvim_buf_get_keymap', b'since': 3}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_var', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_del_var', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_set_var', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_del_var', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_buf_get_option', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_option', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 2, b'return_type': b'Integer', b'name': b'nvim_buf_get_number', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'String', b'name': b'nvim_buf_get_name', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_name', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'Boolean', b'name': b'nvim_buf_is_valid', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'lnum'], [b'ArrayOf(String)', b'lines']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_insert', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'nvim_buf_get_mark', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'String', b'hl_group'], [b'Integer', b'line'], [b'Integer', b'col_start'], [b'Integer', b'col_end']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_buf_add_highlight', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'Integer', b'line_start'], [b'Integer', b'line_end']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_clear_highlight', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'ArrayOf(Window)', b'name': b'nvim_tabpage_list_wins', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_tabpage_get_var', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_tabpage_set_var', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_tabpage_del_var', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'tabpage_set_var', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'tabpage_del_var', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'Window', b'name': b'nvim_tabpage_get_win', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_tabpage_get_number', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'Boolean', b'name': b'nvim_tabpage_is_valid', b'since': 1}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height'], [b'Dictionary', b'options']], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_attach', b'since': 1}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height'], [b'Boolean', b'enable_rgb']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'ui_attach', b'since': 0}, {b'parameters': [], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_detach', b'since': 1}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height']], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_try_resize', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_set_option', b'since': 1}, {b'parameters': [[b'String', b'command']], b'method': False, b'return_type': b'void', b'name': b'nvim_command', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Boolean', b'rgb']], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_hl_by_name', b'since': 3}, {b'parameters': [[b'Integer', b'hl_id'], [b'Boolean', b'rgb']], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_hl_by_id', b'since': 3}, {b'parameters': [[b'String', b'keys'], [b'String', b'mode'], [b'Boolean', b'escape_csi']], b'method': False, b'return_type': b'void', b'name': b'nvim_feedkeys', b'since': 1}, {b'parameters': [[b'String', b'keys']], b'method': False, b'return_type': b'Integer', b'name': b'nvim_input', b'since': 1}, {b'parameters': [[b'String', b'str'], [b'Boolean', b'from_part'], [b'Boolean', b'do_lt'], [b'Boolean', b'special']], b'method': False, b'return_type': b'String', b'name': b'nvim_replace_termcodes', b'since': 1}, {b'parameters': [[b'String', b'command']], b'method': False, b'return_type': b'String', b'name': b'nvim_command_output', b'since': 1}, {b'parameters': [[b'String', b'expr']], b'method': False, b'return_type': b'Object', b'name': b'nvim_eval', b'since': 1}, {b'parameters': [[b'String', b'fname'], [b'Array', b'args']], b'method': False, b'return_type': b'Object', b'name': b'nvim_call_function', b'since': 1}, {b'parameters': [[b'String', b'code'], [b'Array', b'args']], b'method': False, b'return_type': b'Object', b'name': b'nvim_execute_lua', b'since': 3}, {b'parameters': [[b'String', b'text']], b'method': False, b'return_type': b'Integer', b'name': b'nvim_strwidth', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(String)', b'name': b'nvim_list_runtime_paths', b'since': 1}, {b'parameters': [[b'String', b'dir']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_dir', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'String', b'name': b'nvim_get_current_line', b'since': 1}, {b'parameters': [[b'String', b'line']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_line', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'void', b'name': b'nvim_del_current_line', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_var', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_var', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'void', b'name': b'nvim_del_var', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_set_var', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_del_var', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_vvar', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_option', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_option', b'since': 1}, {b'parameters': [[b'String', b'str']], b'method': False, b'return_type': b'void', b'name': b'nvim_out_write', b'since': 1}, {b'parameters': [[b'String', b'str']], b'method': False, b'return_type': b'void', b'name': b'nvim_err_write', b'since': 1}, {b'parameters': [[b'String', b'str']], b'method': False, b'return_type': b'void', b'name': b'nvim_err_writeln', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(Buffer)', b'name': b'nvim_list_bufs', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Buffer', b'name': b'nvim_get_current_buf', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_buf', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(Window)', b'name': b'nvim_list_wins', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Window', b'name': b'nvim_get_current_win', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_win', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(Tabpage)', b'name': b'nvim_list_tabpages', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Tabpage', b'name': b'nvim_get_current_tabpage', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_tabpage', b'since': 1}, {b'parameters': [[b'String', b'event']], b'method': False, b'return_type': b'void', b'name': b'nvim_subscribe', b'since': 1}, {b'parameters': [[b'String', b'event']], b'method': False, b'return_type': b'void', b'name': b'nvim_unsubscribe', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Integer', b'name': b'nvim_get_color_by_name', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_color_map', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_mode', b'since': 2}, {b'parameters': [[b'String', b'mode']], b'method': False, b'return_type': b'ArrayOf(Dictionary)', b'name': b'nvim_get_keymap', b'since': 3}, {b'parameters': [], b'method': False, b'return_type': b'Array', b'name': b'nvim_get_api_info', b'since': 1}, {b'parameters': [[b'Array', b'calls']], b'method': False, b'return_type': b'Array', b'name': b'nvim_call_atomic', b'since': 1}, {b'parameters': [[b'String', b'expr'], [b'String', b'flags'], [b'Boolean', b'highlight']], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_parse_expression', b'since': 4}, {b'parameters': [], b'method': False, b'return_type': b'Array', b'name': b'nvim_list_uis', b'since': 4}, {b'parameters': [[b'Integer', b'pid']], b'method': False, b'return_type': b'Array', b'name': b'nvim_get_proc_children', b'since': 4}, {b'parameters': [[b'Integer', b'pid']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_proc', b'since': 4}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Buffer', b'name': b'nvim_win_get_buf', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'nvim_win_get_cursor', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'ArrayOf(Integer, 2)', b'pos']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_cursor', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_win_get_height', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'height']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_height', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_win_get_width', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'width']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_width', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_win_get_var', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_var', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_del_var', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_set_var', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_del_var', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_win_get_option', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_option', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'nvim_win_get_position', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Tabpage', b'name': b'nvim_win_get_tabpage', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_win_get_number', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Boolean', b'name': b'nvim_win_is_valid', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'buffer_line_count', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(String)', b'name': b'buffer_get_lines', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing'], [b'ArrayOf(String)', b'replacement']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_lines', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_get_var', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_get_option', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_option', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'buffer_get_number', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'String', b'name': b'buffer_get_name', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_name', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'Boolean', b'name': b'buffer_is_valid', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'buffer_get_mark', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'String', b'hl_group'], [b'Integer', b'line'], [b'Integer', b'col_start'], [b'Integer', b'col_end']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'buffer_add_highlight', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'Integer', b'line_start'], [b'Integer', b'line_end']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_clear_highlight', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Window)', b'name': b'tabpage_get_windows', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'tabpage_get_var', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'deprecated_since': 1, b'return_type': b'Window', b'name': b'tabpage_get_window', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'deprecated_since': 1, b'return_type': b'Boolean', b'name': b'tabpage_is_valid', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'ui_detach', b'since': 0}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'ui_try_resize', b'since': 0}, {b'parameters': [[b'String', b'command']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_command', b'since': 0}, {b'parameters': [[b'String', b'keys'], [b'String', b'mode'], [b'Boolean', b'escape_csi']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_feedkeys', b'since': 0}, {b'parameters': [[b'String', b'keys']], b'method': False, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'vim_input', b'since': 0}, {b'parameters': [[b'String', b'str'], [b'Boolean', b'from_part'], [b'Boolean', b'do_lt'], [b'Boolean', b'special']], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'vim_replace_termcodes', b'since': 0}, {b'parameters': [[b'String', b'command']], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'vim_command_output', b'since': 0}, {b'parameters': [[b'String', b'expr']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_eval', b'since': 0}, {b'parameters': [[b'String', b'fname'], [b'Array', b'args']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_call_function', b'since': 0}, {b'parameters': [[b'String', b'text']], b'method': False, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'vim_strwidth', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(String)', b'name': b'vim_list_runtime_paths', b'since': 0}, {b'parameters': [[b'String', b'dir']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_change_directory', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'vim_get_current_line', b'since': 0}, {b'parameters': [[b'String', b'line']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_line', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_del_current_line', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_get_var', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_get_vvar', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_get_option', b'since': 0}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_option', b'since': 0}, {b'parameters': [[b'String', b'str']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_out_write', b'since': 0}, {b'parameters': [[b'String', b'str']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_err_write', b'since': 0}, {b'parameters': [[b'String', b'str']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_report_error', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(Buffer)', b'name': b'vim_get_buffers', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Buffer', b'name': b'vim_get_current_buffer', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_buffer', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(Window)', b'name': b'vim_get_windows', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Window', b'name': b'vim_get_current_window', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_window', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(Tabpage)', b'name': b'vim_get_tabpages', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Tabpage', b'name': b'vim_get_current_tabpage', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_tabpage', b'since': 0}, {b'parameters': [[b'String', b'event']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_subscribe', b'since': 0}, {b'parameters': [[b'String', b'event']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_unsubscribe', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'vim_name_to_color', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Dictionary', b'name': b'vim_get_color_map', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Array', b'name': b'vim_get_api_info', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Buffer', b'name': b'window_get_buffer', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'window_get_cursor', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'ArrayOf(Integer, 2)', b'pos']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_cursor', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'window_get_height', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'height']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_height', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'window_get_width', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'width']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_width', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_get_var', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_get_option', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_option', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'window_get_position', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Tabpage', b'name': b'window_get_tabpage', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Boolean', b'name': b'window_is_valid', b'since': 0}], b'ui_events': [{b'parameters': [[b'Integer', b'width'], [b'Integer', b'height']], b'name': b'resize', b'since': 3}, {b'parameters': [], b'name': b'clear', b'since': 3}, {b'parameters': [], b'name': b'eol_clear', b'since': 3}, {b'parameters': [[b'Integer', b'row'], [b'Integer', b'col']], b'name': b'cursor_goto', b'since': 3}, {b'parameters': [[b'Boolean', b'enabled'], [b'Array', b'cursor_styles']], b'name': b'mode_info_set', b'since': 3}, {b'parameters': [], b'name': b'update_menu', b'since': 3}, {b'parameters': [], b'name': b'busy_start', b'since': 3}, {b'parameters': [], b'name': b'busy_stop', b'since': 3}, {b'parameters': [], b'name': b'mouse_on', b'since': 3}, {b'parameters': [], b'name': b'mouse_off', b'since': 3}, {b'parameters': [[b'String', b'mode'], [b'Integer', b'mode_idx']], b'name': b'mode_change', b'since': 3}, {b'parameters': [[b'Integer', b'top'], [b'Integer', b'bot'], [b'Integer', b'left'], [b'Integer', b'right']], b'name': b'set_scroll_region', b'since': 3}, {b'parameters': [[b'Integer', b'count']], b'name': b'scroll', b'since': 3}, {b'parameters': [[b'Dictionary', b'attrs']], b'name': b'highlight_set', b'since': 3}, {b'parameters': [[b'String', b'str']], b'name': b'put', b'since': 3}, {b'parameters': [], b'name': b'bell', b'since': 3}, {b'parameters': [], b'name': b'visual_bell', b'since': 3}, {b'parameters': [], b'name': b'flush', b'since': 3}, {b'parameters': [[b'Integer', b'fg']], b'name': b'update_fg', b'since': 3}, {b'parameters': [[b'Integer', b'bg']], b'name': b'update_bg', b'since': 3}, {b'parameters': [[b'Integer', b'sp']], b'name': b'update_sp', b'since': 3}, {b'parameters': [[b'Integer', b'rgb_fg'], [b'Integer', b'rgb_bg'], [b'Integer', b'rgb_sp'], [b'Integer', b'cterm_fg'], [b'Integer', b'cterm_bg']], b'name': b'default_colors_set', b'since': 4}, {b'parameters': [], b'name': b'suspend', b'since': 3}, {b'parameters': [[b'String', b'title']], b'name': b'set_title', b'since': 3}, {b'parameters': [[b'String', b'icon']], b'name': b'set_icon', b'since': 3}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'name': b'option_set', b'since': 4}, {b'parameters': [[b'Array', b'items'], [b'Integer', b'selected'], [b'Integer', b'row'], [b'Integer', b'col']], b'name': b'popupmenu_show', b'since': 3}, {b'parameters': [], b'name': b'popupmenu_hide', b'since': 3}, {b'parameters': [[b'Integer', b'selected']], b'name': b'popupmenu_select', b'since': 3}, {b'parameters': [[b'Tabpage', b'current'], [b'Array', b'tabs']], b'name': b'tabline_update', b'since': 3}, {b'parameters': [[b'Array', b'content'], [b'Integer', b'pos'], [b'String', b'firstc'], [b'String', b'prompt'], [b'Integer', b'indent'], [b'Integer', b'level']], b'name': b'cmdline_show', b'since': 3}, {b'parameters': [[b'Integer', b'pos'], [b'Integer', b'level']], b'name': b'cmdline_pos', b'since': 3}, {b'parameters': [[b'String', b'c'], [b'Boolean', b'shift'], [b'Integer', b'level']], b'name': b'cmdline_special_char', b'since': 3}, {b'parameters': [[b'Integer', b'level']], b'name': b'cmdline_hide', b'since': 3}, {b'parameters': [[b'Array', b'lines']], b'name': b'cmdline_block_show', b'since': 3}, {b'parameters': [[b'Array', b'lines']], b'name': b'cmdline_block_append', b'since': 3}, {b'parameters': [], b'name': b'cmdline_block_hide', b'since': 3}, {b'parameters': [[b'Array', b'items']], b'name': b'wildmenu_show', b'since': 3}, {b'parameters': [[b'Integer', b'selected']], b'name': b'wildmenu_select', b'since': 3}, {b'parameters': [], b'name': b'wildmenu_hide', b'since': 3}], b'ui_options': [b'rgb', b'ext_cmdline', b'ext_popupmenu', b'ext_tabline', b'ext_wildmenu'], b'error_types': {b'Exception': {b'id': 0}, b'Validation': {b'id': 1}}, b'types': {b'Buffer': {b'id': 0, b'prefix': b'nvim_buf_'}, b'Window': {b'id': 1, b'prefix': b'nvim_win_'}, b'Tabpage': {b'id': 2, b'prefix': b'nvim_tabpage_'}}}]]
2018-04-30 16:43:16,864 [DEBUG @ async_session.py:_on_response:100] 8603 - received response: None, [3, {b'version': {b'major': 0, b'minor': 3, b'patch': 0, b'api_level': 4, b'api_compatible': 0, b'api_prerelease': True}, b'functions': [{b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_buf_line_count', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'index']], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'buffer_get_line', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'index'], [b'String', b'line']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_line', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'index']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_del_line', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'include_start'], [b'Boolean', b'include_end']], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(String)', b'name': b'buffer_get_line_slice', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing']], b'method': True, b'return_type': b'ArrayOf(String)', b'name': b'nvim_buf_get_lines', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'include_start'], [b'Boolean', b'include_end'], [b'ArrayOf(String)', b'replacement']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_line_slice', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing'], [b'ArrayOf(String)', b'replacement']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_lines', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_buf_get_var', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_buf_get_changedtick', b'since': 2}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'mode']], b'method': True, b'return_type': b'ArrayOf(Dictionary)', b'name': b'nvim_buf_get_keymap', b'since': 3}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_var', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_del_var', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_set_var', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_del_var', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_buf_get_option', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_option', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 2, b'return_type': b'Integer', b'name': b'nvim_buf_get_number', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'String', b'name': b'nvim_buf_get_name', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_set_name', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'return_type': b'Boolean', b'name': b'nvim_buf_is_valid', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'lnum'], [b'ArrayOf(String)', b'lines']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_insert', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'nvim_buf_get_mark', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'String', b'hl_group'], [b'Integer', b'line'], [b'Integer', b'col_start'], [b'Integer', b'col_end']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_buf_add_highlight', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'Integer', b'line_start'], [b'Integer', b'line_end']], b'method': True, b'return_type': b'void', b'name': b'nvim_buf_clear_highlight', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'ArrayOf(Window)', b'name': b'nvim_tabpage_list_wins', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_tabpage_get_var', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_tabpage_set_var', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_tabpage_del_var', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'tabpage_set_var', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'tabpage_del_var', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'Window', b'name': b'nvim_tabpage_get_win', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_tabpage_get_number', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'return_type': b'Boolean', b'name': b'nvim_tabpage_is_valid', b'since': 1}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height'], [b'Dictionary', b'options']], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_attach', b'since': 1}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height'], [b'Boolean', b'enable_rgb']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'ui_attach', b'since': 0}, {b'parameters': [], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_detach', b'since': 1}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height']], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_try_resize', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'return_type': b'void', b'name': b'nvim_ui_set_option', b'since': 1}, {b'parameters': [[b'String', b'command']], b'method': False, b'return_type': b'void', b'name': b'nvim_command', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Boolean', b'rgb']], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_hl_by_name', b'since': 3}, {b'parameters': [[b'Integer', b'hl_id'], [b'Boolean', b'rgb']], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_hl_by_id', b'since': 3}, {b'parameters': [[b'String', b'keys'], [b'String', b'mode'], [b'Boolean', b'escape_csi']], b'method': False, b'return_type': b'void', b'name': b'nvim_feedkeys', b'since': 1}, {b'parameters': [[b'String', b'keys']], b'method': False, b'return_type': b'Integer', b'name': b'nvim_input', b'since': 1}, {b'parameters': [[b'String', b'str'], [b'Boolean', b'from_part'], [b'Boolean', b'do_lt'], [b'Boolean', b'special']], b'method': False, b'return_type': b'String', b'name': b'nvim_replace_termcodes', b'since': 1}, {b'parameters': [[b'String', b'command']], b'method': False, b'return_type': b'String', b'name': b'nvim_command_output', b'since': 1}, {b'parameters': [[b'String', b'expr']], b'method': False, b'return_type': b'Object', b'name': b'nvim_eval', b'since': 1}, {b'parameters': [[b'String', b'fname'], [b'Array', b'args']], b'method': False, b'return_type': b'Object', b'name': b'nvim_call_function', b'since': 1}, {b'parameters': [[b'String', b'code'], [b'Array', b'args']], b'method': False, b'return_type': b'Object', b'name': b'nvim_execute_lua', b'since': 3}, {b'parameters': [[b'String', b'text']], b'method': False, b'return_type': b'Integer', b'name': b'nvim_strwidth', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(String)', b'name': b'nvim_list_runtime_paths', b'since': 1}, {b'parameters': [[b'String', b'dir']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_dir', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'String', b'name': b'nvim_get_current_line', b'since': 1}, {b'parameters': [[b'String', b'line']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_line', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'void', b'name': b'nvim_del_current_line', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_var', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_var', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'void', b'name': b'nvim_del_var', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_set_var', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_del_var', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_vvar', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_option', b'since': 1}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_option', b'since': 1}, {b'parameters': [[b'String', b'str']], b'method': False, b'return_type': b'void', b'name': b'nvim_out_write', b'since': 1}, {b'parameters': [[b'String', b'str']], b'method': False, b'return_type': b'void', b'name': b'nvim_err_write', b'since': 1}, {b'parameters': [[b'String', b'str']], b'method': False, b'return_type': b'void', b'name': b'nvim_err_writeln', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(Buffer)', b'name': b'nvim_list_bufs', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Buffer', b'name': b'nvim_get_current_buf', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_buf', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(Window)', b'name': b'nvim_list_wins', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Window', b'name': b'nvim_get_current_win', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_win', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'ArrayOf(Tabpage)', b'name': b'nvim_list_tabpages', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Tabpage', b'name': b'nvim_get_current_tabpage', b'since': 1}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': False, b'return_type': b'void', b'name': b'nvim_set_current_tabpage', b'since': 1}, {b'parameters': [[b'String', b'event']], b'method': False, b'return_type': b'void', b'name': b'nvim_subscribe', b'since': 1}, {b'parameters': [[b'String', b'event']], b'method': False, b'return_type': b'void', b'name': b'nvim_unsubscribe', b'since': 1}, {b'parameters': [[b'String', b'name']], b'method': False, b'return_type': b'Integer', b'name': b'nvim_get_color_by_name', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_color_map', b'since': 1}, {b'parameters': [], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_get_mode', b'since': 2}, {b'parameters': [[b'String', b'mode']], b'method': False, b'return_type': b'ArrayOf(Dictionary)', b'name': b'nvim_get_keymap', b'since': 3}, {b'parameters': [], b'method': False, b'return_type': b'Array', b'name': b'nvim_get_api_info', b'since': 1}, {b'parameters': [[b'Array', b'calls']], b'method': False, b'return_type': b'Array', b'name': b'nvim_call_atomic', b'since': 1}, {b'parameters': [[b'String', b'expr'], [b'String', b'flags'], [b'Boolean', b'highlight']], b'method': False, b'return_type': b'Dictionary', b'name': b'nvim_parse_expression', b'since': 4}, {b'parameters': [], b'method': False, b'return_type': b'Array', b'name': b'nvim_list_uis', b'since': 4}, {b'parameters': [[b'Integer', b'pid']], b'method': False, b'return_type': b'Array', b'name': b'nvim_get_proc_children', b'since': 4}, {b'parameters': [[b'Integer', b'pid']], b'method': False, b'return_type': b'Object', b'name': b'nvim_get_proc', b'since': 4}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Buffer', b'name': b'nvim_win_get_buf', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'nvim_win_get_cursor', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'ArrayOf(Integer, 2)', b'pos']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_cursor', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_win_get_height', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'height']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_height', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_win_get_width', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'width']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_width', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_win_get_var', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_var', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_del_var', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_set_var', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_del_var', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'return_type': b'Object', b'name': b'nvim_win_get_option', b'since': 1}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'return_type': b'void', b'name': b'nvim_win_set_option', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'nvim_win_get_position', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Tabpage', b'name': b'nvim_win_get_tabpage', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Integer', b'name': b'nvim_win_get_number', b'since': 1}, {b'parameters': [[b'Window', b'window']], b'method': True, b'return_type': b'Boolean', b'name': b'nvim_win_is_valid', b'since': 1}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'buffer_line_count', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(String)', b'name': b'buffer_get_lines', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'start'], [b'Integer', b'end'], [b'Boolean', b'strict_indexing'], [b'ArrayOf(String)', b'replacement']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_lines', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_get_var', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'buffer_get_option', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_option', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'buffer_get_number', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'String', b'name': b'buffer_get_name', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_set_name', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': True, b'deprecated_since': 1, b'return_type': b'Boolean', b'name': b'buffer_is_valid', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'buffer_get_mark', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'String', b'hl_group'], [b'Integer', b'line'], [b'Integer', b'col_start'], [b'Integer', b'col_end']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'buffer_add_highlight', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer'], [b'Integer', b'src_id'], [b'Integer', b'line_start'], [b'Integer', b'line_end']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'buffer_clear_highlight', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Window)', b'name': b'tabpage_get_windows', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'tabpage_get_var', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'deprecated_since': 1, b'return_type': b'Window', b'name': b'tabpage_get_window', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': True, b'deprecated_since': 1, b'return_type': b'Boolean', b'name': b'tabpage_is_valid', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'ui_detach', b'since': 0}, {b'parameters': [[b'Integer', b'width'], [b'Integer', b'height']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'ui_try_resize', b'since': 0}, {b'parameters': [[b'String', b'command']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_command', b'since': 0}, {b'parameters': [[b'String', b'keys'], [b'String', b'mode'], [b'Boolean', b'escape_csi']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_feedkeys', b'since': 0}, {b'parameters': [[b'String', b'keys']], b'method': False, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'vim_input', b'since': 0}, {b'parameters': [[b'String', b'str'], [b'Boolean', b'from_part'], [b'Boolean', b'do_lt'], [b'Boolean', b'special']], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'vim_replace_termcodes', b'since': 0}, {b'parameters': [[b'String', b'command']], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'vim_command_output', b'since': 0}, {b'parameters': [[b'String', b'expr']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_eval', b'since': 0}, {b'parameters': [[b'String', b'fname'], [b'Array', b'args']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_call_function', b'since': 0}, {b'parameters': [[b'String', b'text']], b'method': False, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'vim_strwidth', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(String)', b'name': b'vim_list_runtime_paths', b'since': 0}, {b'parameters': [[b'String', b'dir']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_change_directory', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'String', b'name': b'vim_get_current_line', b'since': 0}, {b'parameters': [[b'String', b'line']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_line', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_del_current_line', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_get_var', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_get_vvar', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'vim_get_option', b'since': 0}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_option', b'since': 0}, {b'parameters': [[b'String', b'str']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_out_write', b'since': 0}, {b'parameters': [[b'String', b'str']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_err_write', b'since': 0}, {b'parameters': [[b'String', b'str']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_report_error', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(Buffer)', b'name': b'vim_get_buffers', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Buffer', b'name': b'vim_get_current_buffer', b'since': 0}, {b'parameters': [[b'Buffer', b'buffer']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_buffer', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(Window)', b'name': b'vim_get_windows', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Window', b'name': b'vim_get_current_window', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_window', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'ArrayOf(Tabpage)', b'name': b'vim_get_tabpages', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Tabpage', b'name': b'vim_get_current_tabpage', b'since': 0}, {b'parameters': [[b'Tabpage', b'tabpage']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_set_current_tabpage', b'since': 0}, {b'parameters': [[b'String', b'event']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_subscribe', b'since': 0}, {b'parameters': [[b'String', b'event']], b'method': False, b'deprecated_since': 1, b'return_type': b'void', b'name': b'vim_unsubscribe', b'since': 0}, {b'parameters': [[b'String', b'name']], b'method': False, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'vim_name_to_color', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Dictionary', b'name': b'vim_get_color_map', b'since': 0}, {b'parameters': [], b'method': False, b'deprecated_since': 1, b'return_type': b'Array', b'name': b'vim_get_api_info', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Buffer', b'name': b'window_get_buffer', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'window_get_cursor', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'ArrayOf(Integer, 2)', b'pos']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_cursor', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'window_get_height', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'height']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_height', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Integer', b'name': b'window_get_width', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'Integer', b'width']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_width', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_get_var', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name']], b'method': True, b'deprecated_since': 1, b'return_type': b'Object', b'name': b'window_get_option', b'since': 0}, {b'parameters': [[b'Window', b'window'], [b'String', b'name'], [b'Object', b'value']], b'method': True, b'deprecated_since': 1, b'return_type': b'void', b'name': b'window_set_option', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'ArrayOf(Integer, 2)', b'name': b'window_get_position', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Tabpage', b'name': b'window_get_tabpage', b'since': 0}, {b'parameters': [[b'Window', b'window']], b'method': True, b'deprecated_since': 1, b'return_type': b'Boolean', b'name': b'window_is_valid', b'since': 0}], b'ui_events': [{b'parameters': [[b'Integer', b'width'], [b'Integer', b'height']], b'name': b'resize', b'since': 3}, {b'parameters': [], b'name': b'clear', b'since': 3}, {b'parameters': [], b'name': b'eol_clear', b'since': 3}, {b'parameters': [[b'Integer', b'row'], [b'Integer', b'col']], b'name': b'cursor_goto', b'since': 3}, {b'parameters': [[b'Boolean', b'enabled'], [b'Array', b'cursor_styles']], b'name': b'mode_info_set', b'since': 3}, {b'parameters': [], b'name': b'update_menu', b'since': 3}, {b'parameters': [], b'name': b'busy_start', b'since': 3}, {b'parameters': [], b'name': b'busy_stop', b'since': 3}, {b'parameters': [], b'name': b'mouse_on', b'since': 3}, {b'parameters': [], b'name': b'mouse_off', b'since': 3}, {b'parameters': [[b'String', b'mode'], [b'Integer', b'mode_idx']], b'name': b'mode_change', b'since': 3}, {b'parameters': [[b'Integer', b'top'], [b'Integer', b'bot'], [b'Integer', b'left'], [b'Integer', b'right']], b'name': b'set_scroll_region', b'since': 3}, {b'parameters': [[b'Integer', b'count']], b'name': b'scroll', b'since': 3}, {b'parameters': [[b'Dictionary', b'attrs']], b'name': b'highlight_set', b'since': 3}, {b'parameters': [[b'String', b'str']], b'name': b'put', b'since': 3}, {b'parameters': [], b'name': b'bell', b'since': 3}, {b'parameters': [], b'name': b'visual_bell', b'since': 3}, {b'parameters': [], b'name': b'flush', b'since': 3}, {b'parameters': [[b'Integer', b'fg']], b'name': b'update_fg', b'since': 3}, {b'parameters': [[b'Integer', b'bg']], b'name': b'update_bg', b'since': 3}, {b'parameters': [[b'Integer', b'sp']], b'name': b'update_sp', b'since': 3}, {b'parameters': [[b'Integer', b'rgb_fg'], [b'Integer', b'rgb_bg'], [b'Integer', b'rgb_sp'], [b'Integer', b'cterm_fg'], [b'Integer', b'cterm_bg']], b'name': b'default_colors_set', b'since': 4}, {b'parameters': [], b'name': b'suspend', b'since': 3}, {b'parameters': [[b'String', b'title']], b'name': b'set_title', b'since': 3}, {b'parameters': [[b'String', b'icon']], b'name': b'set_icon', b'since': 3}, {b'parameters': [[b'String', b'name'], [b'Object', b'value']], b'name': b'option_set', b'since': 4}, {b'parameters': [[b'Array', b'items'], [b'Integer', b'selected'], [b'Integer', b'row'], [b'Integer', b'col']], b'name': b'popupmenu_show', b'since': 3}, {b'parameters': [], b'name': b'popupmenu_hide', b'since': 3}, {b'parameters': [[b'Integer', b'selected']], b'name': b'popupmenu_select', b'since': 3}, {b'parameters': [[b'Tabpage', b'current'], [b'Array', b'tabs']], b'name': b'tabline_update', b'since': 3}, {b'parameters': [[b'Array', b'content'], [b'Integer', b'pos'], [b'String', b'firstc'], [b'String', b'prompt'], [b'Integer', b'indent'], [b'Integer', b'level']], b'name': b'cmdline_show', b'since': 3}, {b'parameters': [[b'Integer', b'pos'], [b'Integer', b'level']], b'name': b'cmdline_pos', b'since': 3}, {b'parameters': [[b'String', b'c'], [b'Boolean', b'shift'], [b'Integer', b'level']], b'name': b'cmdline_special_char', b'since': 3}, {b'parameters': [[b'Integer', b'level']], b'name': b'cmdline_hide', b'since': 3}, {b'parameters': [[b'Array', b'lines']], b'name': b'cmdline_block_show', b'since': 3}, {b'parameters': [[b'Array', b'lines']], b'name': b'cmdline_block_append', b'since': 3}, {b'parameters': [], b'name': b'cmdline_block_hide', b'since': 3}, {b'parameters': [[b'Array', b'items']], b'name': b'wildmenu_show', b'since': 3}, {b'parameters': [[b'Integer', b'selected']], b'name': b'wildmenu_select', b'since': 3}, {b'parameters': [], b'name': b'wildmenu_hide', b'since': 3}], b'ui_options': [b'rgb', b'ext_cmdline', b'ext_popupmenu', b'ext_tabline', b'ext_wildmenu'], b'error_types': {b'Exception': {b'id': 0}, b'Validation': {b'id': 1}}, b'types': {b'Buffer': {b'id': 0, b'prefix': b'nvim_buf_'}, b'Window': {b'id': 1, b'prefix': b'nvim_win_'}, b'Tabpage': {b'id': 2, b'prefix': b'nvim_tabpage_'}}}]
2018-04-30 16:43:16,865 [DEBUG @ base.py:stop:153] 8603 - Stopped event loop
2018-04-30 16:43:16,865 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,866 [DEBUG @ msgpack_stream.py:_on_data:64] 8603 - unpacker needs more data...
2018-04-30 16:43:16,866 [DEBUG @ base.py:run:144] 8603 - Exited event loop
2018-04-30 16:43:16,870 [INFO @ script_host.py:setup:64] 8603 - install import hook/path
2018-04-30 16:43:16,870 [INFO @ script_host.py:setup:69] 8603 - redirect sys.stdout and sys.stderr
2018-04-30 16:43:16,871 [DEBUG @ msgpack_stream.py:send:34] 8603 - sent [0, 2, 'nvim_command', ('autocmd DirChanged * call rpcrequest(3, "python_chdir", v:event)',)]
2018-04-30 16:43:16,871 [DEBUG @ base.py:send:117] 8603 - Sending 'b'\x94\x00\x02\xacnvim_command\x91\xda\x00@autocmd DirChanged * call rpcrequest(3, "python_chdir", v:event)''
2018-04-30 16:43:16,871 [DEBUG @ session.py:_yielding_request:157] 8603 - yielding from greenlet <greenlet.greenlet object at 0x7f028132d768> to wait for response
2018-04-30 16:43:16,871 [DEBUG @ session.py:_on_request:205] 8603 - received rpc request, greenlet <greenlet.greenlet object at 0x7f028132d800> will handle it
2018-04-30 16:43:16,871 [DEBUG @ host.py:_on_request:90] 8603 - calling request handler for "poll", args: "[]"
2018-04-30 16:43:16,871 [DEBUG @ host.py:_on_request:92] 8603 - request handler for 'poll []' returns: ok
2018-04-30 16:43:16,871 [DEBUG @ session.py:handler:191] 8603 - greenlet <greenlet.greenlet object at 0x7f028132d800> finished executing, sending ok as response
2018-04-30 16:43:16,871 [DEBUG @ async_session.py:send:138] 8603 - sending response to request 1: [1, 1, None, 'ok']
2018-04-30 16:43:16,871 [DEBUG @ msgpack_stream.py:send:34] 8603 - sent [1, 1, None, 'ok']
2018-04-30 16:43:16,872 [DEBUG @ base.py:send:117] 8603 - Sending 'b'\x94\x01\x01\xc0\xa2ok''
2018-04-30 16:43:16,872 [DEBUG @ session.py:handler:201] 8603 - greenlet <greenlet.greenlet object at 0x7f028132d800> is now dying...
2018-04-30 16:43:16,872 [DEBUG @ base.py:run:142] 8603 - Entering event loop
2018-04-30 16:43:16,872 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,872 [DEBUG @ msgpack_stream.py:_on_data:61] 8603 - received message: [1, 2, None, None]
2018-04-30 16:43:16,872 [DEBUG @ async_session.py:_on_response:100] 8603 - received response: None, None
2018-04-30 16:43:16,872 [DEBUG @ session.py:response_cb:153] 8603 - response is available for greenlet <greenlet.greenlet object at 0x7f028132d768>, switching back
2018-04-30 16:43:16,872 [DEBUG @ msgpack_stream.py:send:34] 8603 - sent [0, 3, 'nvim_eval', ('getcwd()',)]
2018-04-30 16:43:16,872 [DEBUG @ base.py:send:117] 8603 - Sending 'b'\x94\x00\x03\xa9nvim_eval\x91\xa8getcwd()''
2018-04-30 16:43:16,873 [DEBUG @ session.py:_yielding_request:157] 8603 - yielding from greenlet <greenlet.greenlet object at 0x7f028132d768> to wait for response
2018-04-30 16:43:16,873 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,873 [DEBUG @ msgpack_stream.py:_on_data:61] 8603 - received message: [0, 2, b'python_execute', [b'print(1)', 1, 1]]
2018-04-30 16:43:16,873 [DEBUG @ async_session.py:_on_request:91] 8603 - received request: b'python_execute', [b'print(1)', 1, 1]
2018-04-30 16:43:16,873 [DEBUG @ session.py:_on_request:205] 8603 - received rpc request, greenlet <greenlet.greenlet object at 0x7f028132d930> will handle it
2018-04-30 16:43:16,873 [ERROR @ host.py:_on_request:87] 8603 - no request handler registered for "python_execute"
2018-04-30 16:43:16,874 [WARNING @ session.py:handler:195] 8603 - error response from request 'b'python_execute' [b'print(1)', 1, 1]': Traceback (most recent call last):
  File "…/Vcs/neovim-python-client/neovim/msgpack_rpc/session.py", line 189, in handler
    rv = self._request_cb(name, args)
  File "…/Vcs/neovim-python-client/neovim/api/nvim.py", line 168, in filter_request_cb
    result = request_cb(name, args)
  File "…/Vcs/neovim-python-client/neovim/plugin/host.py", line 88, in _on_request
    raise ErrorResponse(msg)
neovim.msgpack_rpc.session.ErrorResponse: no request handler registered for "python_execute"

2018-04-30 16:43:16,874 [DEBUG @ async_session.py:send:138] 8603 - sending response to request 2: [1, 2, 'no request handler registered for "python_execute"', None]
2018-04-30 16:43:16,874 [DEBUG @ msgpack_stream.py:send:34] 8603 - sent [1, 2, 'no request handler registered for "python_execute"', None]
2018-04-30 16:43:16,874 [DEBUG @ base.py:send:117] 8603 - Sending 'b'\x94\x01\x02\xda\x002no request handler registered for "python_execute"\xc0''
2018-04-30 16:43:16,874 [DEBUG @ session.py:handler:201] 8603 - greenlet <greenlet.greenlet object at 0x7f028132d930> is now dying...
2018-04-30 16:43:16,874 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,874 [DEBUG @ msgpack_stream.py:_on_data:64] 8603 - unpacker needs more data...
2018-04-30 16:43:16,874 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,875 [DEBUG @ msgpack_stream.py:_on_data:61] 8603 - received message: [1, 3, None, b'…/project/project']
2018-04-30 16:43:16,875 [DEBUG @ async_session.py:_on_response:100] 8603 - received response: None, b'…/project/project'
2018-04-30 16:43:16,875 [DEBUG @ session.py:response_cb:153] 8603 - response is available for greenlet <greenlet.greenlet object at 0x7f028132d768>, switching back
2018-04-30 16:43:16,875 [DEBUG @ msgpack_stream.py:_on_data:59] 8603 - waiting for message...
2018-04-30 16:43:16,875 [DEBUG @ msgpack_stream.py:_on_data:64] 8603 - unpacker needs more data...

```
NVIM v0.3.0-1184-g4744142fa
Build type: Debug
LuaJIT 2.0.5
Compilation: /usr/local/bin/cc -Wconversion -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -g -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=auto -Wno-array-bounds -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -I…/Vcs/neovim/build/config -I…/Vcs/neovim/src -I/usr/include -I…/Vcs/neovim/build/src/nvim/auto -I…/Vcs/neovim/build/include
Compiled by user@a.example.com

Features: +acl +iconv +jemalloc +tui 
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/home/user/.local/opt/neovim/share/nvim"

Run :checkhealth for more info
0.2.5: no request handler registered for "python_execute" with `-c 'py3 print(1)'`
issue
created
blueyed
username_0
It does not happen always using `nvim -u NORC -c 'py3 print(1)'`, but more often than not (4/5 times).
comment
created
bfredl
username_1
`os.chdir(nvim.eval('getcwd()', async=False))` in `__init__`  should be changed to something async, like an async command that sends a `rpcnotify` back (also, the DirChanged can also use `rpcnotify`, no point in blocking there).
comment
created
blueyed
username_0
What is causing the race here?
I've also tried it using `pyuv` instead of `asyncio` with the same results.
comment
created
blueyed
username_0
Looks like when `provider#python3#Call` is called for `:py3` `python_execute` is not exported from `neovim/plugin/script_host.py` yet, which is the result of its `ProviderHost.__init__` being blocking now.
Isn't this a problem in general?

`provider#pythonx#Require` calls `provider#Poll`, which seems to be satisfied by https://github.com/neovim/python-client/blob/d2cdf5534212a6cfe0685869a4ae8af7ca1298ac/neovim/plugin/host.py#L40 already, before plugins (including `script_host.py`) are really loaded.  This gets done via `neovim.start_host` at the end.
`Host._load(plugins)` is called as the setup callback for the loop - should this be done directly?

The following appears to fix it, but I'm not sure if it makes sense overall:
```diff
diff --git c/neovim/plugin/host.py i/neovim/plugin/host.py
index 81dd551..72d3d65 100644
--- c/neovim/plugin/host.py
+++ i/neovim/plugin/host.py
@@ -50,9 +50,9 @@ def _on_async_err(self, msg):

     def start(self, plugins):
         """Start listening for msgpack-rpc requests and notifications."""
+        self._load(plugins)
         self.nvim.run_loop(self._on_request,
                            self._on_notification,
-                           lambda: self._load(plugins),
                            err_cb=self._on_async_err)

     def shutdown(self):
```
comment
created
bfredl
username_1
@username_0 That will actually work well for a single rplugin host (such as the legacy host) but cause problems for the multi-rplugin host: sync requests from one plugins `__init__` can be executed in the context of another plugins response handler.

So what we want is make plugin loading passive, i e the handler specs are collected without actually instantiating any plugin (this will also fix #126). Rather a plugin's `__init__` will be called the first time a request is invoked on that plugin. Then we can drop the requirement that `__init__` must not do RPC or non-trivial side-effects in general, as it no longer will cause trouble  with `UpdateRemotePlugins`.

I'll do a release with the quickfix for now.
comment
closed
bfredl
username_1
issue