Skip to content

Key error with multiple open projects #290

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
kwon-young opened this issue Mar 18, 2018 · 5 comments
Closed

Key error with multiple open projects #290

kwon-young opened this issue Mar 18, 2018 · 5 comments

Comments

@kwon-young
Copy link

kwon-young commented Mar 18, 2018

Hello,
I'm repeatedly facing python language server produce a `Server Error' messages when jumping to definition between multiple projects.
I think it's linked with issue #263, but for me it happens only when working with multiple python projects.
I'm not sure if this is a client or server issue, so I'm going to file an issue in both.

I'm currently using linux, neovim 0.2.2, LanguageClient-neovim tag 0.1.40, python-language-server 0.15.1

I've build some (not so) minimal steps in order to reliably reproduce the errors.
I'm using cookiecutter in order to create easily multiple projects.

$ mkdir ~/test_dir
$ cd ~/test_dir
$ # launch cookiecutter to create project test
$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage
You've downloaded /home/kwon-young/.cookiecutters/cookiecutter-pypackage before. Is it okay to delete and re-download it? [yes]: no
Do you want to re-use the existing version? [yes]: yes
full_name [Audrey Roy Greenfeld]: 
email [audreyr@example.com]: 
github_username [audreyr]: 
project_name [Python Boilerplate]: test
project_slug [test]: 
project_short_description [Python Boilerplate contains all the boilerplate you need to create a Python package.]: 
pypi_username [audreyr]: 
version [0.1.0]: 
use_pytest [n]: 
use_pypi_deployment_with_travis [y]: 
add_pyup_badge [n]: 
Select command_line_interface:
1 - Click
2 - No command-line interface
Choose from 1, 2 [1]: 
create_author_file [y]: 
Select open_source_license:
1 - MIT license
2 - BSD license
3 - ISC license
4 - Apache Software License 2.0
5 - GNU General Public License v3
6 - Not open source
Choose from 1, 2, 3, 4, 5, 6 [1]:

Then create a class Test in test/test.py

# -*- coding: utf-8 -*-

"""Main module."""

class Test(object):

    """Docstring for Test. """

    def __init__(self, test):
        """TODO: to be defined1.

        :test: TODO

        """
        self._test = test

Next, generate another project test2

$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage
You've downloaded /home/kwon-young/.cookiecutters/cookiecutter-pypackage before. Is it okay to delete and re-download it? [yes]: no
Do you want to re-use the existing version? [yes]: yes
full_name [Audrey Roy Greenfeld]: 
email [audreyr@example.com]: 
github_username [audreyr]: 
project_name [Python Boilerplate]: test2
project_slug [test]: 
project_short_description [Python Boilerplate contains all the boilerplate you need to create a Python package.]: 
pypi_username [audreyr]: 
version [0.1.0]: 
use_pytest [n]: 
use_pypi_deployment_with_travis [y]: 
add_pyup_badge [n]: 
Select command_line_interface:
1 - Click
2 - No command-line interface
Choose from 1, 2 [1]: 
create_author_file [y]: 
Select open_source_license:
1 - MIT license
2 - BSD license
3 - ISC license
4 - Apache Software License 2.0
5 - GNU General Public License v3
6 - Not open source
Choose from 1, 2, 3, 4, 5, 6 [1]:

Create a new class Test2 that inherit from Test in test2/test2.py

# -*- coding: utf-8 -*-

"""Main module."""

from test.test import Test


class Test2(Test):

    """Docstring for Test2. """

    def __init__(self, test, test2):
        """TODO: to be defined1.

        :test2: TODO

        """
        Test.__init__(self, test)

        self._test2 = test2

Finally, define PYTHONPATH variable to make the projects importable:

$ export PYTHONPATH=$HOME/test_dir/test:$HOME/test_dir/test2

Here's a minimal init.vim:

call plug#begin()

Plug 'autozimu/LanguageClient-neovim', {
    \ 'branch': 'next',
    \ 'do': 'bash install.sh',
    \ }

call plug#end()

let g:LanguageClient_serverCommands = {
    \ 'python': ['pyls'],
    \ }
let g:LanguageClient_loggingLevel = 'DEBUG'

nnoremap <silent> 'jd :call LanguageClient_textDocument_definition()<CR>

Here are the steps to crash the server:

  • in test2/test2/test2.py, line 20
  • goto definition of variable test2: jump to line 12, definition of the constructor (all is well)
  • move to line 8, on Test, goto definition: jump to line 5, import of class Test (all is well)
  • redo a goto defintion on Test: jump to file test/test/test.py line 5, definition of class Test (the jump is good, however, the server has crashed)
  • try to do a new goto definition in test/test/test.py for the test variable: the server has crashed

Here are the log file for the server:

2018-03-18 15:40:55,914 UTC - ERROR - pyls.rpc_manager - synchronous method handler exception for request: <jsonrpc.jsonrpc2.JSONRPC20Request object at 0x7fc42e5a5518>
Traceback (most recent call last):
  File "/home/kwon-young/.local/lib/python3.6/site-packages/pyls/rpc_manager.py", line 112, in _handle_request
    maybe_handler = self._message_handler(request.method, request.params if request.params is not None else {})
  File "/home/kwon-young/.local/lib/python3.6/site-packages/pyls/python_ls.py", line 95, in handle_request
    return getattr(self, method_call)(**params)
  File "/home/kwon-young/.local/lib/python3.6/site-packages/pyls/python_ls.py", line 240, in m_text_document__definition
    return self.definitions(textDocument['uri'], position)
  File "/home/kwon-young/.local/lib/python3.6/site-packages/pyls/python_ls.py", line 175, in definitions
    return flatten(self._hook('pyls_definitions', doc_uri, position=position))
  File "/home/kwon-young/.local/lib/python3.6/site-packages/pyls/python_ls.py", line 115, in _hook
    doc = self.workspace.get_document(doc_uri) if doc_uri else None
  File "/home/kwon-young/.local/lib/python3.6/site-packages/pyls/workspace.py", line 110, in get_document
    return self._docs[doc_uri]
KeyError: 'file:///tmp/test/test/test.py'

Here is the log file for the client:

2018-03-18T15:40:44.652268259+01:00 DEBUG languageclient::vim - state.id: 4 ==> 5
2018-03-18T15:40:44.652355310+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["[!!get(g:, 'LanguageClient_diagnosticsEnable', v:true), get(g:, 'LanguageClient_diagnosticsList', 'Quickfix'), get(g:, 'LanguageClient_diagnosticsDisplay', {}), get(g:, 'LanguageClient_windowLogMessageLevel', 'Warning')]"],"id":5}
2018-03-18T15:40:44.652486538+01:00 INFO languageclient::vim - <= {"id": 5, "jsonrpc": "2.0", "result": [1, "Quickfix", {}, "Warning"]}
2018-03-18T15:40:44.652809126+01:00 DEBUG languageclient::vim - state.serverCommands.python: null ==> ["pyls"]
2018-03-18T15:40:44.652817259+01:00 DEBUG languageclient::vim - state.loadSettings: false ==> true
2018-03-18T15:40:44.653779696+01:00 DEBUG languageclient::vim - state.child_ids.python: null ==> 10108
2018-03-18T15:40:44.653820528+01:00 INFO languageclient::languageclient - End languageClient/startServer
2018-03-18T15:40:44.653825707+01:00 INFO languageclient::languageclient - Define signs
2018-03-18T15:40:44.653833778+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'sign define LanguageClientHint text=➤ texthl=ALEInfoSign' | execute 'sign define LanguageClientWarning text=⚠ texthl=ALEWarningSign' | execute 'sign define LanguageClientInformation text=ℹ texthl=ALEInfoSign' | execute 'sign define LanguageClientError text=✖ texthl=ALEErrorSign'"]}
2018-03-18T15:40:44.653846273+01:00 INFO languageclient::languageclient - Define signs
2018-03-18T15:40:44.653858278+01:00 INFO languageclient::languageclient - Begin initialize
2018-03-18T15:40:44.653866950+01:00 INFO languageclient::languageclient - gather_args: [LanguageId, Filename] = [String("python"), String("/tmp/test2/test2/test2.py")]
2018-03-18T15:40:44.653875667+01:00 INFO languageclient::languageclient - Some arguments are not available. Requesting from vim. Keys: ["rootPath", "hasSnippetSupport"]. Exps: ["v:null", "s:hasSnippetSupport()"]
2018-03-18T15:40:44.653952452+01:00 DEBUG languageclient::vim - state.id: 5 ==> 6
2018-03-18T15:40:44.654030011+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["[v:null, s:hasSnippetSupport()]"],"id":6}
2018-03-18T15:40:44.654256166+01:00 INFO languageclient::vim - <= {"id": 6, "jsonrpc": "2.0", "result": [null, 0]}
2018-03-18T15:40:44.654699236+01:00 INFO languageclient::languageclient - gather_args: [("rootPath", "v:null"), ("hasSnippetSupport", "s:hasSnippetSupport()")] = [Null, Number(0)]
2018-03-18T15:40:44.654721262+01:00 INFO languageclient::languageclient - Project root: /tmp/test2/test2
2018-03-18T15:40:44.654807830+01:00 DEBUG languageclient::vim - state.roots.python: null ==> "/tmp/test2/test2"
2018-03-18T15:40:44.654822601+01:00 DEBUG languageclient::languageclient - Project settings: {}
2018-03-18T15:40:44.654826424+01:00 DEBUG languageclient::languageclient - Project settings.initializationOptions: null
2018-03-18T15:40:44.654901615+01:00 DEBUG languageclient::vim - state.id: 6 ==> 7
2018-03-18T15:40:44.655001046+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"completion":{"completionItem":{"commitCharactersSupport":null,"documentationFormat":null,"snippetSupport":false},"dynamicRegistration":null}}},"initializationOptions":null,"processId":10097,"rootPath":"/tmp/test2/test2","rootUri":"file:///tmp/test2/test2","trace":"off"},"id":7}
2018-03-18T15:40:45.236261977+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 1, "buftype": ""}}
2018-03-18T15:40:45.236547872+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:45.236557756+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(1)]
2018-03-18T15:40:45.236678860+01:00 DEBUG languageclient::vim - state.last_cursor_line: 0 ==> 1
2018-03-18T15:40:45.236769324+01:00 DEBUG languageclient::vim - state.last_line_diagnostic: " " ==> ""
2018-03-18T15:40:45.236836698+01:00 DEBUG languageclient::vim - state.id: 7 ==> 8
2018-03-18T15:40:45.236905679+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["&columns"],"id":8}
2018-03-18T15:40:45.237088529+01:00 INFO languageclient::vim - <= {"id": 8, "jsonrpc": "2.0", "result": 189}
2018-03-18T15:40:45.237548768+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"execute","params":["echo ''"]}
2018-03-18T15:40:45.237564924+01:00 INFO languageclient::languageclient - End languageClient/handleCursorMoved
2018-03-18T15:40:45.835685099+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 2, "buftype": ""}}
2018-03-18T15:40:45.835967743+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:45.835977668+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(2)]
2018-03-18T15:40:45.836069862+01:00 DEBUG languageclient::vim - state.last_cursor_line: 1 ==> 2
2018-03-18T15:40:45.876396071+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 3, "buftype": ""}}
2018-03-18T15:40:45.876722404+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:45.876731943+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(3)]
2018-03-18T15:40:45.876823876+01:00 DEBUG languageclient::vim - state.last_cursor_line: 2 ==> 3
2018-03-18T15:40:45.916597594+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 4, "buftype": ""}}
2018-03-18T15:40:45.916891675+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:45.916902188+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(4)]
2018-03-18T15:40:45.916994018+01:00 DEBUG languageclient::vim - state.last_cursor_line: 3 ==> 4
2018-03-18T15:40:45.957026498+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 5, "buftype": ""}}
2018-03-18T15:40:45.957269097+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:45.957278551+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(5)]
2018-03-18T15:40:45.957383656+01:00 DEBUG languageclient::vim - state.last_cursor_line: 4 ==> 5
2018-03-18T15:40:45.997277519+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 6, "buftype": ""}}
2018-03-18T15:40:45.997558210+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:45.997567770+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(6)]
2018-03-18T15:40:45.997658728+01:00 DEBUG languageclient::vim - state.last_cursor_line: 5 ==> 6
2018-03-18T15:40:46.036499186+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 7, "buftype": ""}}
2018-03-18T15:40:46.036774211+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.036784292+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(7)]
2018-03-18T15:40:46.036879576+01:00 DEBUG languageclient::vim - state.last_cursor_line: 6 ==> 7
2018-03-18T15:40:46.076807193+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 8, "buftype": ""}}
2018-03-18T15:40:46.077094165+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.077103693+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(8)]
2018-03-18T15:40:46.077196502+01:00 DEBUG languageclient::vim - state.last_cursor_line: 7 ==> 8
2018-03-18T15:40:46.116750440+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 9, "buftype": ""}}
2018-03-18T15:40:46.117007293+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.117016988+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(9)]
2018-03-18T15:40:46.117109902+01:00 DEBUG languageclient::vim - state.last_cursor_line: 8 ==> 9
2018-03-18T15:40:46.130833773+01:00 INFO languageclient::vim - <= {"result": {"capabilities": {"codeActionProvider": true, "codeLensProvider": {"resolveProvider": false}, "completionProvider": {"resolveProvider": false, "triggerCharacters": ["."]}, "documentFormattingProvider": true, "documentRangeFormattingProvider": true, "documentSymbolProvider": true, "definitionProvider": true, "executeCommandProvider": {"commands": []}, "hoverProvider": true, "referencesProvider": true, "renameProvider": true, "signatureHelpProvider": {"triggerCharacters": ["(", ","]}, "textDocumentSync": 2, "experimental": {}}}, "id": 7, "jsonrpc": "2.0"}
2018-03-18T15:40:46.131250010+01:00 DEBUG languageclient::vim - state.capabilities.python: null ==> {"capabilities":{"codeActionProvider":true,"codeLensProvider":{"resolveProvider":false},"completionProvider":{"resolveProvider":false,"triggerCharacters":["."]},"definitionProvider":true,"documentFormattingProvider":true,"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":[]},"experimental":{},"hoverProvider":true,"referencesProvider":true,"renameProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",","]},"textDocumentSync":2}}
2018-03-18T15:40:46.131271914+01:00 INFO languageclient::languageclient - End initialize
2018-03-18T15:40:46.131275325+01:00 INFO languageclient::languageclient - Begin register NCM source
2018-03-18T15:40:46.131366592+01:00 DEBUG languageclient::vim - state.id: 8 ==> 9
2018-03-18T15:40:46.131468480+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["exists('g:cm_matcher')"],"id":9}
2018-03-18T15:40:46.131682468+01:00 INFO languageclient::vim - <= {"id": 9, "jsonrpc": "2.0", "result": 0}
2018-03-18T15:40:46.131995704+01:00 INFO languageclient::languageclient - Begin textDocument/didOpen
2018-03-18T15:40:46.132004197+01:00 INFO languageclient::languageclient - Some arguments are not available. Requesting from vim. Keys: ["text"]. Exps: ["getbufline(\'\', 1, \'$\')"]
2018-03-18T15:40:46.132111758+01:00 DEBUG languageclient::vim - state.id: 9 ==> 10
2018-03-18T15:40:46.132216886+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["[getbufline('', 1, '$')]"],"id":10}
2018-03-18T15:40:46.132396205+01:00 INFO languageclient::vim - <= {"id": 10, "jsonrpc": "2.0", "result": [["# -*- coding: utf-8 -*-", "", "\"\"\"Main module.\"\"\"", "", "from test.test import Test", "", "", "class Test2(Test):", "", "    \"\"\"Docstring for Test2. \"\"\"", "", "    def __init__(self, test, test2):", "        \"\"\"TODO: to be defined1.", "", "        :test2: TODO", "", "        \"\"\"", "        Test.__init__(self, test)", "", "        self._test2 = test2", ""]]}
2018-03-18T15:40:46.132662+01:00 INFO languageclient::languageclient - gather_args: [Buftype, LanguageId, Filename, Text] = [String(""), String("python"), String("/tmp/test2/test2/test2.py"), Array([String("# -*- coding: utf-8 -*-"), String(""), String("\"\"\"Main module.\"\"\""), String(""), String("from test.test import Test"), String(""), String(""), String("class Test2(Test):"), String(""), String("    \"\"\"Docstring for Test2. \"\"\""), String(""), String("    def __init__(self, test, test2):"), String("        \"\"\"TODO: to be defined1."), String(""), String("        :test2: TODO"), String(""), String("        \"\"\""), String("        Test.__init__(self, test)"), String(""), String("        self._test2 = test2"), String("")])]
2018-03-18T15:40:46.132797050+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"python","text":"# -*- coding: utf-8 -*-\n\n\"\"\"Main module.\"\"\"\n\nfrom test.test import Test\n\n\nclass Test2(Test):\n\n    \"\"\"Docstring for Test2. \"\"\"\n\n    def __init__(self, test, test2):\n        \"\"\"TODO: to be defined1.\n\n        :test2: TODO\n\n        \"\"\"\n        Test.__init__(self, test)\n\n        self._test2 = test2\n","uri":"file:///tmp/test2/test2/test2.py","version":0}}}
2018-03-18T15:40:46.132915265+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"execute","params":["setlocal omnifunc=LanguageClient#complete"]}
2018-03-18T15:40:46.132924034+01:00 INFO languageclient::languageclient - End textDocument/didOpen
2018-03-18T15:40:46.132945654+01:00 INFO languageclient::languageclient - Begin textDocument/didChange
2018-03-18T15:40:46.132950282+01:00 INFO languageclient::languageclient - gather_args: [Buftype, LanguageId, Filename] = [String(""), String("python"), String("/tmp/test2/test2/test2.py")]
2018-03-18T15:40:46.132956944+01:00 INFO languageclient::languageclient - Some arguments are not available. Requesting from vim. Keys: ["text"]. Exps: ["getbufline(\'\', 1, \'$\')"]
2018-03-18T15:40:46.133047281+01:00 DEBUG languageclient::vim - state.id: 10 ==> 11
2018-03-18T15:40:46.133148069+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["[getbufline('', 1, '$')]"],"id":11}
2018-03-18T15:40:46.133276360+01:00 INFO languageclient::vim - <= {"id": 11, "jsonrpc": "2.0", "result": [["# -*- coding: utf-8 -*-", "", "\"\"\"Main module.\"\"\"", "", "from test.test import Test", "", "", "class Test2(Test):", "", "    \"\"\"Docstring for Test2. \"\"\"", "", "    def __init__(self, test, test2):", "        \"\"\"TODO: to be defined1.", "", "        :test2: TODO", "", "        \"\"\"", "        Test.__init__(self, test)", "", "        self._test2 = test2", ""]]}
2018-03-18T15:40:46.133583091+01:00 INFO languageclient::languageclient - gather_args: [Text] = [Array([String("# -*- coding: utf-8 -*-"), String(""), String("\"\"\"Main module.\"\"\""), String(""), String("from test.test import Test"), String(""), String(""), String("class Test2(Test):"), String(""), String("    \"\"\"Docstring for Test2. \"\"\""), String(""), String("    def __init__(self, test, test2):"), String("        \"\"\"TODO: to be defined1."), String(""), String("        :test2: TODO"), String(""), String("        \"\"\""), String("        Test.__init__(self, test)"), String(""), String("        self._test2 = test2"), String("")])]
2018-03-18T15:40:46.133605711+01:00 INFO languageclient::languageclient - Texts equal. Skipping didChange.
2018-03-18T15:40:46.133716001+01:00 DEBUG languageclient::vim - state.id: 11 ==> 12
2018-03-18T15:40:46.133810627+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["exists('#User#LanguageClientStarted')"],"id":12}
2018-03-18T15:40:46.133976870+01:00 INFO languageclient::vim - <= {"id": 12, "jsonrpc": "2.0", "result": 0}
2018-03-18T15:40:46.134221453+01:00 INFO languageclient::languageclient - End languageClient/handleBufReadPost
2018-03-18T15:40:46.157721604+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 10, "buftype": ""}}
2018-03-18T15:40:46.158066556+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.158084557+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(10)]
2018-03-18T15:40:46.158301030+01:00 DEBUG languageclient::vim - state.last_cursor_line: 9 ==> 10
2018-03-18T15:40:46.198141290+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 11, "buftype": ""}}
2018-03-18T15:40:46.198520861+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.198541252+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(11)]
2018-03-18T15:40:46.198808337+01:00 DEBUG languageclient::vim - state.last_cursor_line: 10 ==> 11
2018-03-18T15:40:46.238245378+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 12, "buftype": ""}}
2018-03-18T15:40:46.238629626+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.238649695+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(12)]
2018-03-18T15:40:46.238919662+01:00 DEBUG languageclient::vim - state.last_cursor_line: 11 ==> 12
2018-03-18T15:40:46.278850327+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 13, "buftype": ""}}
2018-03-18T15:40:46.279250337+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.279269622+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(13)]
2018-03-18T15:40:46.279552535+01:00 DEBUG languageclient::vim - state.last_cursor_line: 12 ==> 13
2018-03-18T15:40:46.319912086+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 14, "buftype": ""}}
2018-03-18T15:40:46.320345035+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.320369196+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(14)]
2018-03-18T15:40:46.320655354+01:00 DEBUG languageclient::vim - state.last_cursor_line: 13 ==> 14
2018-03-18T15:40:46.360768801+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 15, "buftype": ""}}
2018-03-18T15:40:46.361206450+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.361230724+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(15)]
2018-03-18T15:40:46.361515601+01:00 DEBUG languageclient::vim - state.last_cursor_line: 14 ==> 15
2018-03-18T15:40:46.400887559+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 16, "buftype": ""}}
2018-03-18T15:40:46.401288352+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.401309326+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(16)]
2018-03-18T15:40:46.401578585+01:00 DEBUG languageclient::vim - state.last_cursor_line: 15 ==> 16
2018-03-18T15:40:46.441756456+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 17, "buftype": ""}}
2018-03-18T15:40:46.442146433+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.442166977+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(17)]
2018-03-18T15:40:46.442440406+01:00 DEBUG languageclient::vim - state.last_cursor_line: 16 ==> 17
2018-03-18T15:40:46.643063143+01:00 INFO languageclient::vim - <= {"method": "textDocument/publishDiagnostics", "params": {"uri": "file:///tmp/test2/test2/test2.py", "diagnostics": []}, "jsonrpc": "2.0"}
2018-03-18T15:40:46.643263147+01:00 INFO languageclient::languageclient - Begin textDocument/publishDiagnostics
2018-03-18T15:40:46.643430302+01:00 DEBUG languageclient::vim - state.diagnostics./tmp/test2/test2/test2.py: null ==> []
2018-03-18T15:40:46.643441725+01:00 INFO languageclient::languageclient - End textDocument/publishDiagnostics
2018-03-18T15:40:46.643528505+01:00 DEBUG languageclient::vim - state.id: 12 ==> 13
2018-03-18T15:40:46.643636527+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["s:Expand('%:p')"],"id":13}
2018-03-18T15:40:46.643872238+01:00 INFO languageclient::vim - <= {"id": 13, "jsonrpc": "2.0", "result": "/tmp/test2/test2/test2.py"}
2018-03-18T15:40:46.644466255+01:00 DEBUG languageclient::vim - state.signs./tmp/test2/test2/test2.py: null ==> []
2018-03-18T15:40:46.644479262+01:00 INFO languageclient::languageclient - Command to update signs: echo
2018-03-18T15:40:46.644483991+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"execute","params":["echo"]}
2018-03-18T15:40:46.644579814+01:00 DEBUG languageclient::vim - state.id: 13 ==> 14
2018-03-18T15:40:46.644680210+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"setqflist","params":[[]],"id":14}
2018-03-18T15:40:46.644831780+01:00 INFO languageclient::vim - <= {"id": 14, "jsonrpc": "2.0", "result": 0}
2018-03-18T15:40:46.645196884+01:00 DEBUG languageclient::vim - state.id: 14 ==> 15
2018-03-18T15:40:46.645322798+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["has('nvim')"],"id":15}
2018-03-18T15:40:46.645502344+01:00 INFO languageclient::vim - <= {"id": 15, "jsonrpc": "2.0", "result": 1}
2018-03-18T15:40:46.645856525+01:00 DEBUG languageclient::vim - state.id: 15 ==> 16
2018-03-18T15:40:46.645971954+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["nvim_buf_add_highlight(0, 0, '', 1, 1, 1)"],"id":16}
2018-03-18T15:40:46.646145072+01:00 INFO languageclient::vim - <= {"id": 16, "jsonrpc": "2.0", "result": 1}
2018-03-18T15:40:46.646543690+01:00 DEBUG languageclient::vim - state.highlight_source: null ==> 1
2018-03-18T15:40:46.646677849+01:00 DEBUG languageclient::vim - state.id: 16 ==> 17
2018-03-18T15:40:46.646795049+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"nvim_buf_clear_highlight","params":[0,1,1,-1],"id":17}
2018-03-18T15:40:46.646969120+01:00 INFO languageclient::vim - <= {"id": 17, "jsonrpc": "2.0", "result": null}
2018-03-18T15:40:46.647216475+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.647224914+01:00 INFO languageclient::languageclient - Some arguments are not available. Requesting from vim. Keys: ["buftype", "filename", "line"]. Exps: ["&buftype", "s:Expand(\'%:p\')", "line(\'.\') - 1"]
2018-03-18T15:40:46.647335344+01:00 DEBUG languageclient::vim - state.id: 17 ==> 18
2018-03-18T15:40:46.647441753+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["[&buftype, s:Expand('%:p'), line('.') - 1]"],"id":18}
2018-03-18T15:40:46.647637034+01:00 INFO languageclient::vim - <= {"id": 18, "jsonrpc": "2.0", "result": ["", "/tmp/test2/test2/test2.py", 17]}
2018-03-18T15:40:46.647891459+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(17)]
2018-03-18T15:40:46.648006004+01:00 DEBUG languageclient::vim - state.id: 18 ==> 19
2018-03-18T15:40:46.648111968+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["exists('#User#LanguageClientDiagnosticsChanged')"],"id":19}
2018-03-18T15:40:46.648288923+01:00 INFO languageclient::vim - <= {"id": 19, "jsonrpc": "2.0", "result": 0}
2018-03-18T15:40:46.697040804+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 18, "buftype": ""}}
2018-03-18T15:40:46.697468845+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.697491729+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(18)]
2018-03-18T15:40:46.697780352+01:00 DEBUG languageclient::vim - state.last_cursor_line: 17 ==> 18
2018-03-18T15:40:46.956880936+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 19, "buftype": ""}}
2018-03-18T15:40:46.957254978+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:46.957276296+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(19)]
2018-03-18T15:40:46.957549475+01:00 DEBUG languageclient::vim - state.last_cursor_line: 18 ==> 19
2018-03-18T15:40:48.384124698+01:00 INFO languageclient::vim - <= {"id": 1, "jsonrpc": "2.0", "method": "textDocument/definition", "params": {"gotoCmd": null, "character": 22, "handle": true, "languageId": "python", "line": 19, "buftype": "", "filename": "/tmp/test2/test2/test2.py"}}
2018-03-18T15:40:48.384546641+01:00 INFO languageclient::languageclient - Begin textDocument/definition
2018-03-18T15:40:48.384581204+01:00 INFO languageclient::languageclient - gather_args: [Buftype, LanguageId, Filename, Line, Character, GotoCmd, Handle] = [String(""), String("python"), String("/tmp/test2/test2/test2.py"), Number(19), Number(22), Null, Bool(true)]
2018-03-18T15:40:48.384859193+01:00 DEBUG languageclient::vim - state.id: 19 ==> 20
2018-03-18T15:40:48.385107262+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"textDocument/definition","params":{"position":{"character":22,"line":19},"textDocument":{"uri":"file:///tmp/test2/test2/test2.py"}},"id":20}
2018-03-18T15:40:48.411316933+01:00 INFO languageclient::vim - <= {"result": [{"uri": "file:///tmp/test2/test2/test2.py", "range": {"start": {"line": 11, "character": 29}, "end": {"line": 11, "character": 34}}}], "id": 20, "jsonrpc": "2.0"}
2018-03-18T15:40:48.411792543+01:00 DEBUG languageclient::vim - state.id: 20 ==> 21
2018-03-18T15:40:48.411919168+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["bufnr('/tmp/test2/test2/test2.py')"],"id":21}
2018-03-18T15:40:48.412121874+01:00 INFO languageclient::vim - <= {"id": 21, "jsonrpc": "2.0", "result": 1}
2018-03-18T15:40:48.412487130+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'normal m`' | execute 'normal! m`' | execute 'buffer +:call\\ cursor(12,30) ' . fnameescape('/tmp/test2/test2/test2.py')"]}
2018-03-18T15:40:48.412520036+01:00 INFO languageclient::languageclient - End textDocument/definition
2018-03-18T15:40:48.412527191+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","result":[{"range":{"end":{"character":34,"line":11},"start":{"character":29,"line":11}},"uri":"file:///tmp/test2/test2/test2.py"}],"id":1}
2018-03-18T15:40:48.413024084+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 11, "buftype": ""}}
2018-03-18T15:40:48.413237146+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:48.413246794+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(11)]
2018-03-18T15:40:48.413417954+01:00 DEBUG languageclient::vim - state.last_cursor_line: 19 ==> 11
2018-03-18T15:40:49.774290414+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 10, "buftype": ""}}
2018-03-18T15:40:49.774770561+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:49.774795296+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(10)]
2018-03-18T15:40:49.775129309+01:00 DEBUG languageclient::vim - state.last_cursor_line: 11 ==> 10
2018-03-18T15:40:49.942127959+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 9, "buftype": ""}}
2018-03-18T15:40:49.942572460+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:49.942595221+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(9)]
2018-03-18T15:40:49.942905140+01:00 DEBUG languageclient::vim - state.last_cursor_line: 10 ==> 9
2018-03-18T15:40:50.108423123+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 8, "buftype": ""}}
2018-03-18T15:40:50.108837226+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:50.108858378+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(8)]
2018-03-18T15:40:50.109148298+01:00 DEBUG languageclient::vim - state.last_cursor_line: 9 ==> 8
2018-03-18T15:40:50.275103496+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 7, "buftype": ""}}
2018-03-18T15:40:50.275546264+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:50.275569086+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(7)]
2018-03-18T15:40:50.275880451+01:00 DEBUG languageclient::vim - state.last_cursor_line: 8 ==> 7
2018-03-18T15:40:51.275005399+01:00 INFO languageclient::vim - <= {"id": 2, "jsonrpc": "2.0", "method": "textDocument/definition", "params": {"gotoCmd": null, "character": 12, "handle": true, "languageId": "python", "line": 7, "buftype": "", "filename": "/tmp/test2/test2/test2.py"}}
2018-03-18T15:40:51.275374987+01:00 INFO languageclient::languageclient - Begin textDocument/definition
2018-03-18T15:40:51.275401466+01:00 INFO languageclient::languageclient - gather_args: [Buftype, LanguageId, Filename, Line, Character, GotoCmd, Handle] = [String(""), String("python"), String("/tmp/test2/test2/test2.py"), Number(7), Number(12), Null, Bool(true)]
2018-03-18T15:40:51.275683006+01:00 DEBUG languageclient::vim - state.id: 21 ==> 22
2018-03-18T15:40:51.275932951+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"textDocument/definition","params":{"position":{"character":12,"line":7},"textDocument":{"uri":"file:///tmp/test2/test2/test2.py"}},"id":22}
2018-03-18T15:40:51.277338022+01:00 INFO languageclient::vim - <= {"result": [{"uri": "file:///tmp/test2/test2/test2.py", "range": {"start": {"line": 4, "character": 22}, "end": {"line": 4, "character": 26}}}], "id": 22, "jsonrpc": "2.0"}
2018-03-18T15:40:51.278234877+01:00 DEBUG languageclient::vim - state.id: 22 ==> 23
2018-03-18T15:40:51.278519504+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["bufnr('/tmp/test2/test2/test2.py')"],"id":23}
2018-03-18T15:40:51.278884131+01:00 INFO languageclient::vim - <= {"id": 23, "jsonrpc": "2.0", "result": 1}
2018-03-18T15:40:51.279513305+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'normal m`' | execute 'normal! m`' | execute 'buffer +:call\\ cursor(5,23) ' . fnameescape('/tmp/test2/test2/test2.py')"]}
2018-03-18T15:40:51.279533892+01:00 INFO languageclient::languageclient - End textDocument/definition
2018-03-18T15:40:51.279545165+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","result":[{"range":{"end":{"character":26,"line":4},"start":{"character":22,"line":4}},"uri":"file:///tmp/test2/test2/test2.py"}],"id":2}
2018-03-18T15:40:51.280601194+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test2/test2/test2.py", "line": 4, "buftype": ""}}
2018-03-18T15:40:51.280916207+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:51.280934010+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test2/test2/test2.py"), Number(4)]
2018-03-18T15:40:51.281197136+01:00 DEBUG languageclient::vim - state.last_cursor_line: 7 ==> 4
2018-03-18T15:40:52.455582873+01:00 INFO languageclient::vim - <= {"id": 3, "jsonrpc": "2.0", "method": "textDocument/definition", "params": {"gotoCmd": null, "character": 22, "handle": true, "languageId": "python", "line": 4, "buftype": "", "filename": "/tmp/test2/test2/test2.py"}}
2018-03-18T15:40:52.455950621+01:00 INFO languageclient::languageclient - Begin textDocument/definition
2018-03-18T15:40:52.455971302+01:00 INFO languageclient::languageclient - gather_args: [Buftype, LanguageId, Filename, Line, Character, GotoCmd, Handle] = [String(""), String("python"), String("/tmp/test2/test2/test2.py"), Number(4), Number(22), Null, Bool(true)]
2018-03-18T15:40:52.456249158+01:00 DEBUG languageclient::vim - state.id: 23 ==> 24
2018-03-18T15:40:52.456499084+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"textDocument/definition","params":{"position":{"character":22,"line":4},"textDocument":{"uri":"file:///tmp/test2/test2/test2.py"}},"id":24}
2018-03-18T15:40:52.459806787+01:00 INFO languageclient::vim - <= {"result": [{"uri": "file:///tmp/test/test/test.py", "range": {"start": {"line": 4, "character": 6}, "end": {"line": 4, "character": 10}}}], "id": 24, "jsonrpc": "2.0"}
2018-03-18T15:40:52.460710902+01:00 DEBUG languageclient::vim - state.id: 24 ==> 25
2018-03-18T15:40:52.460991769+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"eval","params":["bufnr('/tmp/test/test/test.py')"],"id":25}
2018-03-18T15:40:52.461396243+01:00 INFO languageclient::vim - <= {"id": 25, "jsonrpc": "2.0", "result": -1}
2018-03-18T15:40:52.461965370+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'normal! m`' | execute 'edit +:call\\ cursor(5,7) ' . fnameescape('/tmp/test/test/test.py')"]}
2018-03-18T15:40:52.461985482+01:00 INFO languageclient::languageclient - End textDocument/definition
2018-03-18T15:40:52.461996578+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","result":[{"range":{"end":{"character":10,"line":4},"start":{"character":6,"line":4}},"uri":"file:///tmp/test/test/test.py"}],"id":3}
2018-03-18T15:40:52.467363540+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleBufReadPost", "jsonrpc": "2.0", "params": {"languageId": "python", "buftype": "", "filename": "/tmp/test/test/test.py"}}
2018-03-18T15:40:52.467714685+01:00 INFO languageclient::languageclient - Begin languageClient/handleBufReadPost
2018-03-18T15:40:52.467734759+01:00 INFO languageclient::languageclient - gather_args: [Buftype, LanguageId, Filename] = [String(""), String("python"), String("/tmp/test/test/test.py")]
2018-03-18T15:40:53.479888262+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 5, "buftype": ""}}
2018-03-18T15:40:53.480272710+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:53.480298598+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(5)]
2018-03-18T15:40:53.480570766+01:00 DEBUG languageclient::vim - state.last_cursor_line: 4 ==> 5
2018-03-18T15:40:54.080317367+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 6, "buftype": ""}}
2018-03-18T15:40:54.080730300+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.080752850+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(6)]
2018-03-18T15:40:54.081058731+01:00 DEBUG languageclient::vim - state.last_cursor_line: 5 ==> 6
2018-03-18T15:40:54.120430940+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 7, "buftype": ""}}
2018-03-18T15:40:54.120834985+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.120856+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(7)]
2018-03-18T15:40:54.121127282+01:00 DEBUG languageclient::vim - state.last_cursor_line: 6 ==> 7
2018-03-18T15:40:54.160467467+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 8, "buftype": ""}}
2018-03-18T15:40:54.160865137+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.160886248+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(8)]
2018-03-18T15:40:54.161160797+01:00 DEBUG languageclient::vim - state.last_cursor_line: 7 ==> 8
2018-03-18T15:40:54.201481418+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 9, "buftype": ""}}
2018-03-18T15:40:54.201876706+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.201896976+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(9)]
2018-03-18T15:40:54.202169600+01:00 DEBUG languageclient::vim - state.last_cursor_line: 8 ==> 9
2018-03-18T15:40:54.241874259+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 10, "buftype": ""}}
2018-03-18T15:40:54.242240865+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.242262030+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(10)]
2018-03-18T15:40:54.242535045+01:00 DEBUG languageclient::vim - state.last_cursor_line: 9 ==> 10
2018-03-18T15:40:54.282280076+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 11, "buftype": ""}}
2018-03-18T15:40:54.282643287+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.282659614+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(11)]
2018-03-18T15:40:54.282930199+01:00 DEBUG languageclient::vim - state.last_cursor_line: 10 ==> 11
2018-03-18T15:40:54.322415211+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 12, "buftype": ""}}
2018-03-18T15:40:54.322828070+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.322849066+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(12)]
2018-03-18T15:40:54.323122647+01:00 DEBUG languageclient::vim - state.last_cursor_line: 11 ==> 12
2018-03-18T15:40:54.361577890+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 13, "buftype": ""}}
2018-03-18T15:40:54.361965261+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.361986545+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(13)]
2018-03-18T15:40:54.362259846+01:00 DEBUG languageclient::vim - state.last_cursor_line: 12 ==> 13
2018-03-18T15:40:54.402053338+01:00 INFO languageclient::vim - <= {"method": "languageClient/handleCursorMoved", "jsonrpc": "2.0", "params": {"filename": "/tmp/test/test/test.py", "line": 14, "buftype": ""}}
2018-03-18T15:40:54.402444408+01:00 INFO languageclient::languageclient - Begin languageClient/handleCursorMoved
2018-03-18T15:40:54.402464833+01:00 INFO languageclient::languageclient - gather_args: [Buftype, Filename, Line] = [String(""), String("/tmp/test/test/test.py"), Number(14)]
2018-03-18T15:40:54.402737505+01:00 DEBUG languageclient::vim - state.last_cursor_line: 13 ==> 14
2018-03-18T15:40:55.912694029+01:00 INFO languageclient::vim - <= {"id": 4, "jsonrpc": "2.0", "method": "textDocument/definition", "params": {"gotoCmd": null, "character": 21, "handle": true, "languageId": "python", "line": 14, "buftype": "", "filename": "/tmp/test/test/test.py"}}
2018-03-18T15:40:55.913138494+01:00 INFO languageclient::languageclient - Begin textDocument/definition
2018-03-18T15:40:55.913186618+01:00 INFO languageclient::languageclient - gather_args: [Buftype, LanguageId, Filename, Line, Character, GotoCmd, Handle] = [String(""), String("python"), String("/tmp/test/test/test.py"), Number(14), Number(21), Null, Bool(true)]
2018-03-18T15:40:55.913713298+01:00 DEBUG languageclient::vim - state.id: 25 ==> 26
2018-03-18T15:40:55.913970497+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","method":"textDocument/definition","params":{"position":{"character":21,"line":14},"textDocument":{"uri":"file:///tmp/test/test/test.py"}},"id":26}
2018-03-18T15:40:55.916014800+01:00 INFO languageclient::vim - <= {"error": {"code": -32000, "message": "Server error"}, "id": 26, "jsonrpc": "2.0"}
2018-03-18T15:40:55.916640023+01:00 ERROR languageclient::vim - Error handling message. Message: {"id": 4, "jsonrpc": "2.0", "method": "textDocument/definition", "params": {"gotoCmd": null, "character": 21, "handle": true, "languageId": "python", "line": 14, "buftype": "", "filename": "/tmp/test/test/test.py"}}. Error: Err(ErrorMessage { msg: "Server error" })
2018-03-18T15:40:55.916658854+01:00 INFO languageclient::vim - => {"jsonrpc":"2.0","error":{"code":-32603,"message":"Server error"},"id":4}

Sorry for the super long issue, but I'd figure that if I was going to report the bug, I was going to do it properly.

Thanks for the help!

@ferozco
Copy link
Contributor

ferozco commented Mar 18, 2018

Hey! Thanks for filing such a complete ticket, appreciate the work you put into putting together repro steps.

Just from a quick inspection of the log from the client, it seems like the client never sends a didOpen for file:///tmp/test/test/test.py. That would explain why you see the keyError in pyls.

Out of curiosity, what do you mean when when you say the language server crashed? Does the process exit? From the trace it seems like the server is resilient to these errors and responds with a server error to the client

@kwon-young
Copy link
Author

kwon-young commented Mar 19, 2018

Out of curiosity, what do you mean when when you say the language server crashed? Does the process exit? From the trace it seems like the server is resilient to these errors and responds with a server error to the client

Yep, I think you're right. I only see a Server Error message in neovim.

@ferozco
Copy link
Contributor

ferozco commented Mar 19, 2018

do you think its fair to say that this is a client issue, and that we can close this out?

@kwon-young
Copy link
Author

Well, I have absolutely no idea ^^ If you are sure about it, let's just close it.
I've filed an issue on the client side too anyway.
I just hope that this bug will be resolved and won't be forgotten.

@autozimu
Copy link

Can be closed now.

@ferozco ferozco closed this as completed Mar 22, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants