python-language-server icon indicating copy to clipboard operation
python-language-server copied to clipboard

An issue on workspace/didChangeWorkspaceFolders event

Open KKosukeee opened this issue 3 years ago • 1 comments

Hi team, thanks for the great project on python language server.

I just realized that m_workspace__did_change_workspace_folders doesn't migrate documents in root workspace in case both root_workspace_removed and workspace_added are true. This is because root workspace (I assume this is self.workspace ) is updated here with newly created workspace above with empty docs, then looped here. This causes new root workspace with empty docs (previous docs are missing) and causes subsequent request to have a KeyError as the screenshot below. image

This happens, because for certain language client, it sends an initial workspace/didChangeWorkspaceFolders event, like the most famous language client vscode-languageserver at this line. The request that causes an error is below:

{
    "jsonrpc": "2.0",
    "method": "workspace/didChangeWorkspaceFolders",
    "params": {
        "event": {
            "added": [
                {
                    "uri": "file:///Users/kkosuke/Dropbox/playground/project/lsp/python",
                    "name": "file:///Users/kkosuke/Dropbox/playground/project/lsp/python"
                }
            ],
            "removed": [
                {
                    "uri": "file:///Users/kkosuke/Dropbox/playground/project/lsp/python",
                    "name": "file:///Users/kkosuke/Dropbox/playground/project/lsp/python"
                }
            ]
        }
    }
}

If my understanding is correct, I think I can create a PR to fix this quickly, so please let me know if it's a bug to be fixed (otherwise, please let me know the intention behind the current logic!). Thanks!

KKosukeee avatar May 01 '22 02:05 KKosukeee

This repository is no longer maintained. The project now lives in python-lsp-server (pylsp), which is a maintained fork of python-language-server (pyls).

If you have projects still using pyls, you should update it to use pylsp instead.

lieryan avatar Sep 25 '22 05:09 lieryan