palantir / python-language-server

An implementation of the Language Server Protocol for Python
MIT License
2.6k stars 282 forks source link

pyls does not respect configurationSources #532

Closed tsoernes closed 5 years ago

tsoernes commented 5 years ago

I'm sending

      "pyls": {
        "configurationSources": [
          "flake8"
        ]
      }

to python-language-server version 0.26.1 but keep getting pyflake and pylint errors back; none from flake8. There's both project local .flake8 and a system-wide ~/.config/flake8 configuration files. Here is the pyls log:

log

--- ```json Command "pyls" is present on the path. Found the following clients for /home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py: (server-id pyls, priority -1) The following clients were selected based on priority: (server-id pyls, priority -1) >>> pyls:4245 status:starting(async) Content-Length: 3135 { "jsonrpc": "2.0", "method": "initialize", "params": { "processId": 4227, "rootPath": "/home/torstein/code/fintechdb/", "rootUri": "file:///home/torstein/code/fintechdb/", "capabilities": { "workspace": { "workspaceEdit": { "documentChanges": true, "resourceOperations": [ "create", "rename", "delete" ] }, "applyEdit": true, "symbol": { "symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] } }, "executeCommand": { "dynamicRegistration": false }, "didChangeWatchedFiles": { "dynamicRegistration": true }, "workspaceFolders": true, "configuration": true }, "textDocument": { "declaration": { "linkSupport": true }, "definition": { "linkSupport": true }, "implementation": { "linkSupport": true }, "typeDefinition": { "linkSupport": true }, "synchronization": { "willSave": true, "didSave": true, "willSaveWaitUntil": true }, "documentSymbol": { "symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] }, "hierarchicalDocumentSymbolSupport": true }, "formatting": { "dynamicRegistration": true }, "codeAction": { "dynamicRegistration": true }, "completion": { "completionItem": { "snippetSupport": true } }, "signatureHelp": { "signatureInformation": { "parameterInformation": { "labelOffsetSupport": true } } }, "documentLink": { "dynamicRegistration": true }, "hover": { "contentFormat": [ "plaintext", "markdown" ] }, "foldingRange": { "dynamicRegistration": true, "rangeLimit": null, "lineFoldingOnly": null } } }, "initializationOptions": null }, "id": 1 } <<<< pyls:4245 status:starting { "jsonrpc": "2.0", "id": 1, "result": { "capabilities": { "codeActionProvider": true, "codeLensProvider": { "resolveProvider": false }, "completionProvider": { "resolveProvider": false, "triggerCharacters": [ "." ] }, "documentFormattingProvider": true, "documentHighlightProvider": true, "documentRangeFormattingProvider": true, "documentSymbolProvider": true, "definitionProvider": true, "executeCommandProvider": { "commands": [] }, "hoverProvider": true, "referencesProvider": true, "renameProvider": true, "signatureHelpProvider": { "triggerCharacters": [ "(", "," ] }, "textDocumentSync": 2, "experimental": null } } } >>> pyls:4245(async) Content-Length: 69 { "jsonrpc": "2.0", "method": "initialized", "params": { } } >>> pyls:4245(async) Content-Length: 4425 { "jsonrpc": "2.0", "method": "textDocument/didOpen", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py", "languageId": "python", "version": 0, "text": "\"\"\"\nRead excel file and drop dead rows.\nParse URLs into minimal form (i.e. user name handles for facebook etc.)\n\nNot handled:\nLegal Tech has URLs in name col\nTech for Fin has URLs in name col\n\"\"\"\n\nimport pickle\nimport sys # noqa\nfrom pathlib import Path\n\nimport numpy as np\nimport pandas as pd\n\nfrom utils import (IxGetter, check_urls, get_crunchbase_handle,\n get_facebook_handle, get_linkedin_handle,\n get_twitter_handle, normalize_url)\n\ndata_dir = Path(\"data\") / \"quip-fintech\"\norig_path = data_dir / \"QUIP FINTECH LIST Current March .xlsx\"\nraw_path = data_dir / \"raw.pickle\"\n\nparsed_path = data_dir / \"parsed.pickle\"\n\n\ndef read():\n dfs = pd.read_excel(\n orig_path, sheet_name=None, engine='xlrd'\n )\n\n dfs['Legaltech'].columns = dfs[\"Legaltech\"].iloc[2]\n\n ebcols = pd.Series(dfs['Employee Benefits'].columns)\n for ix, val in enumerate(dfs['Employee Benefits'].iloc[2]):\n if pd.notna(val):\n ebcols[ix] = val\n dfs['Employee Benefits'].columns = ebcols\n\n del dfs['Misc']\n\n start_rows = {\n 'Lending': 3,\n 'Wealth & Investment': 4,\n 'Accouting & Tax': 3,\n 'Savings': 5,\n 'Payments': 6,\n 'Insurance': 6,\n 'Digital Banking, Neo Banks': 8,\n 'Crowdfunding': 1,\n 'Start Up And Financing': 0,\n 'PFM': 3,\n 'Employee Benefits': 3,\n 'Blockchain': 0,\n 'Proptech': 4,\n 'Legaltech': 3,\n 'Tech for Fin': 0\n }\n\n for df_name, df in dfs.items():\n df.index = range(len(df))\n df.drop(index=range(start_rows[df_name]), inplace=True)\n df.index = range(len(df))\n\n with open(raw_path, \"wb\") as out_file:\n pickle.dump(dfs, out_file)\n\n return dfs\n\n\nif False:\n with open(raw_path, \"rb\") as fil:\n dfs = pickle.load(fil)\nelse:\n dfs = read()\n\nldfs = IxGetter(dfs)\n\nweb_col = 'URL'\ntwit_col = 'Twitter:'\ncb_col = 'Crunchbase:'\nfb_col = 'Facebook:'\nli_col = 'LinkedIn:'\nurl_cols = [\n web_col,\n twit_col,\n cb_col,\n fb_col,\n li_col,\n]\n\nprint(f\"Dropping rows without any URLs\")\nfor df_name, df in dfs.items():\n pre_drop = len(df)\n # Some rows have '-' as NaN indicator\n for url_col in url_cols:\n df[url_col] = df[url_col].str.strip()\n empty = (df[url_col] == '-') | (df[url_col] == '')\n df.loc[empty, url_col] = np.nan\n df.dropna(axis=0, how='all', thresh=None, subset=url_cols, inplace=True)\n df.index = range(len(df))\n print(f\"Dropped {pre_drop-len(df)} of {pre_drop} rows from '{df_name}'\")\n\n\n# P.S: crunchbase handles or not case insensitive!\n# Maybe that applies to fb, linkedin or twitter as well.\nnormalizers = {\n web_col: normalize_url,\n twit_col: get_twitter_handle,\n cb_col: get_crunchbase_handle,\n fb_col: get_facebook_handle,\n li_col: get_linkedin_handle,\n}\n\n# Get user name handles; normalize URLs\nfor col, normalizer_fn in normalizers.items():\n for dfn, df in dfs.items():\n # Converting to 'object' avoids Pandas making it a float if there are only NaNs\n dfs[dfn]['N_' + col] = df[col].map(normalizer_fn, na_action='ignore').astype('object')\n\n# Set URLs without domain to NaN\n# TODO CHECK if empty string equals NaN\n# TODO should also do this for other url cols\n# TODO deduping using sets\nfor df_name, df in dfs.items():\n nodots = dfs[df_name]['N_' + web_col].str.find('.') < 0\n dfs[df_name].loc[nodots, 'N_' + web_col] = np.nan\n print(f\"{df_name}: set {nodots.sum()} URLs to NaN\")\n\n\ndef check_dfs_urls(col, n=5):\n \"\"\" Sample from a URL column to check that parsing is OK \"\"\"\n for dfn, df in dfs.items():\n print(dfn)\n check_urls(df, col, n)\n# sys.exit(0)\n\n\n# Drop unparsed URL columns\nparsed_to_orig = {'N_' + col: col for col in url_cols}\nfor df in dfs.values():\n df.drop(columns=url_cols, inplace=True)\n df.rename(columns=parsed_to_orig, inplace=True)\n\nwith open(parsed_path, \"wb\") as out_file:\n pickle.dump(dfs, out_file)\n" } } } >>> pyls:4245(async) Content-Length: 201 { "jsonrpc": "2.0", "method": "workspace/didChangeConfiguration", "params": { "settings": { "pyls": { "configurationSources": [ "flake8" ] } } } } <<<< pyls:4245 { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py", "diagnostics": [ { "source": "pyflakes", "range": { "start": { "line": 10, "character": 0 }, "end": { "line": 10, "character": 19 } }, "message": "'sys' imported but unused", "severity": 2 } ] } } >>> pyls:4245(async) Content-Length: 422 { "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "range": { "start": { "line": 23, "character": 0 }, "end": { "line": 23, "character": 0 } }, "context": { "diagnostics": [] } }, "id": 2 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 2, "result": [] } >>> pyls:4245(async) Content-Length: 276 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 22, "character": 0 } }, "id": 3 } >>> pyls:4245(async) Content-Length: 276 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 21, "character": 0 } }, "id": 4 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 3, "result": { "contents": "" } } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 4, "result": { "contents": "" } } >>> pyls:4245(async) Content-Length: 423 { "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "range": { "start": { "line": 21, "character": 0 }, "end": { "line": 21, "character": 62 } }, "context": { "diagnostics": [] } }, "id": 5 } >>> pyls:4245(async) Content-Length: 276 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 21, "character": 0 } }, "id": 6 } >>> pyls:4245(async) Content-Length: 277 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 21, "character": 12 } }, "id": 7 } >>> pyls:4245(async) Content-Length: 288 { "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 21, "character": 0 } }, "id": 8 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 5, "result": [] } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 6, "result": { "contents": "" } } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 7, "result": { "contents": "" } } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 8, "result": [ { "range": { "start": { "line": 21, "character": 0 }, "end": { "line": 21, "character": 9 } }, "kind": 3 }, { "range": { "start": { "line": 29, "character": 8 }, "end": { "line": 29, "character": 17 } }, "kind": 2 } ] } >>> pyls:4245(async) Content-Length: 276 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 21, "character": 0 } }, "id": 9 } >>> pyls:4245(async) Content-Length: 285 { "jsonrpc": "2.0", "method": "textDocument/signatureHelp", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 21, "character": 0 } }, "id": 10 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 9, "result": { "contents": "" } } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 10, "result": { "signatures": [] } } >>> pyls:4245(async) Content-Length: 277 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 22, "character": 0 } }, "id": 11 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 11, "result": { "contents": "" } } >>> pyls:4245(async) Content-Length: 423 { "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "range": { "start": { "line": 23, "character": 0 }, "end": { "line": 23, "character": 0 } }, "context": { "diagnostics": [] } }, "id": 12 } >>> pyls:4245(async) Content-Length: 289 { "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 0 } }, "id": 13 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 12, "result": [] } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 13, "result": null } >>> pyls:4245(async) Content-Length: 514 { "jsonrpc": "2.0", "method": "textDocument/didChange", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py", "version": 1 }, "contentChanges": [ { "range": { "start": { "line": 23, "character": 0 }, "end": { "line": 24, "character": 0 } }, "rangeLength": 1, "text": "" } ] } } >>> pyls:4245(async) Content-Length: 277 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 0 } }, "id": 14 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 14, "result": { "contents": "" } } >>> pyls:4245(async) Content-Length: 289 { "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 0 } }, "id": 15 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 15, "result": [ { "range": { "start": { "line": 23, "character": 0 }, "end": { "line": 23, "character": 11 } }, "kind": 3 }, { "range": { "start": { "line": 144, "character": 10 }, "end": { "line": 144, "character": 21 } }, "kind": 2 } ] } >>> pyls:4245(async) Content-Length: 241 { "jsonrpc": "2.0", "method": "textDocument/didSave", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py", "version": 1 }, "text": null } } >>> pyls:4245(async) Content-Length: 277 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 0 } }, "id": 16 } <<<< pyls:4245 { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py", "diagnostics": [ { "source": "pyflakes", "range": { "start": { "line": 10, "character": 0 }, "end": { "line": 10, "character": 19 } }, "message": "'sys' imported but unused", "severity": 2 } ] } } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 16, "result": { "contents": "" } } >>> pyls:4245(async) Content-Length: 424 { "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "range": { "start": { "line": 23, "character": 0 }, "end": { "line": 23, "character": 40 } }, "context": { "diagnostics": [] } }, "id": 17 } >>> pyls:4245(async) Content-Length: 277 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 0 } }, "id": 18 } >>> pyls:4245(async) Content-Length: 278 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 14 } }, "id": 19 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 17, "result": [] } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 18, "result": { "contents": "" } } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 19, "result": { "contents": "" } } <<<< pyls:4245 { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py", "diagnostics": [ { "source": "pylint", "range": { "start": { "line": 121, "character": 2 }, "end": { "line": 121, "character": 40 } }, "message": "[fixme] TODO CHECK if empty string equals NaN", "severity": 2, "code": "W0511" }, { "source": "pylint", "range": { "start": { "line": 122, "character": 2 }, "end": { "line": 122, "character": 46 } }, "message": "[fixme] TODO should also do this for other url cols", "severity": 2, "code": "W0511" }, { "source": "pylint", "range": { "start": { "line": 123, "character": 2 }, "end": { "line": 123, "character": 27 } }, "message": "[fixme] TODO deduping using sets", "severity": 2, "code": "W0511" }, { "source": "pylint", "range": { "start": { "line": 16, "character": 0 }, "end": { "line": 16, "character": 64 } }, "message": "[no-name-in-module] No name 'IxGetter' in module 'utils'", "severity": 1, "code": "E0611" }, { "source": "pylint", "range": { "start": { "line": 16, "character": 0 }, "end": { "line": 16, "character": 64 } }, "message": "[no-name-in-module] No name 'check_urls' in module 'utils'", "severity": 1, "code": "E0611" }, { "source": "pylint", "range": { "start": { "line": 16, "character": 0 }, "end": { "line": 16, "character": 64 } }, "message": "[no-name-in-module] No name 'get_crunchbase_handle' in module 'utils'", "severity": 1, "code": "E0611" }, { "source": "pylint", "range": { "start": { "line": 16, "character": 0 }, "end": { "line": 16, "character": 64 } }, "message": "[no-name-in-module] No name 'get_facebook_handle' in module 'utils'", "severity": 1, "code": "E0611" }, { "source": "pylint", "range": { "start": { "line": 16, "character": 0 }, "end": { "line": 16, "character": 64 } }, "message": "[no-name-in-module] No name 'get_linkedin_handle' in module 'utils'", "severity": 1, "code": "E0611" }, { "source": "pylint", "range": { "start": { "line": 16, "character": 0 }, "end": { "line": 16, "character": 64 } }, "message": "[no-name-in-module] No name 'get_twitter_handle' in module 'utils'", "severity": 1, "code": "E0611" }, { "source": "pylint", "range": { "start": { "line": 16, "character": 0 }, "end": { "line": 16, "character": 64 } }, "message": "[no-name-in-module] No name 'normalize_url' in module 'utils'", "severity": 1, "code": "E0611" }, { "source": "pylint", "range": { "start": { "line": 27, "character": 4 }, "end": { "line": 27, "character": 25 } }, "message": "[redefined-outer-name] Redefining name 'dfs' from outer scope (line 73)", "severity": 2, "code": "W0621" }, { "source": "pylint", "range": { "start": { "line": 59, "character": 8 }, "end": { "line": 59, "character": 36 } }, "message": "[redefined-outer-name] Redefining name 'df_name' from outer scope (line 93)", "severity": 2, "code": "W0621" }, { "source": "pylint", "range": { "start": { "line": 59, "character": 17 }, "end": { "line": 59, "character": 36 } }, "message": "[redefined-outer-name] Redefining name 'df' from outer scope (line 93)", "severity": 2, "code": "W0621" }, { "source": "pylint", "range": { "start": { "line": 64, "character": 33 }, "end": { "line": 64, "character": 43 } }, "message": "[redefined-outer-name] Redefining name 'out_file' from outer scope (line 145)", "severity": 2, "code": "W0621" }, { "source": "pylint", "range": { "start": { "line": 70, "character": 0 }, "end": { "line": 70, "character": 10 } }, "message": "[using-constant-test] Using a conditional statement with a constant value", "severity": 2, "code": "W0125" }, { "source": "pylint", "range": { "start": { "line": 130, "character": 19 }, "end": { "line": 130, "character": 30 } }, "message": "[redefined-outer-name] Redefining name 'col' from outer scope (line 116)", "severity": 2, "code": "W0621" }, { "source": "pylint", "range": { "start": { "line": 132, "character": 8 }, "end": { "line": 132, "character": 32 } }, "message": "[redefined-outer-name] Redefining name 'dfn' from outer scope (line 117)", "severity": 2, "code": "W0621" }, { "source": "pylint", "range": { "start": { "line": 132, "character": 13 }, "end": { "line": 132, "character": 32 } }, "message": "[redefined-outer-name] Redefining name 'df' from outer scope (line 93)", "severity": 2, "code": "W0621" }, { "source": "pylint", "range": { "start": { "line": 10, "character": 0 }, "end": { "line": 10, "character": 19 } }, "message": "[unused-import] Unused import sys", "severity": 2, "code": "W0611" }, { "source": "pyflakes", "range": { "start": { "line": 10, "character": 0 }, "end": { "line": 10, "character": 19 } }, "message": "'sys' imported but unused", "severity": 2 } ] } } >>> pyls:4245(async) Content-Length: 277 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 0 } }, "id": 20 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 20, "result": { "contents": "" } } >>> pyls:4245(async) Content-Length: 424 { "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "range": { "start": { "line": 23, "character": 0 }, "end": { "line": 23, "character": 40 } }, "context": { "diagnostics": [] } }, "id": 21 } >>> pyls:4245(async) Content-Length: 277 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 0 } }, "id": 22 } >>> pyls:4245(async) Content-Length: 278 { "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "textDocument": { "uri": "file:///home/torstein/code/fintechdb/pull/sheets/data/quip-fintech/into_pandas.py" }, "position": { "line": 23, "character": 14 } }, "id": 23 } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 21, "result": [] } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 22, "result": { "contents": "" } } <<<< pyls:4245 { "jsonrpc": "2.0", "id": 23, "result": { "contents": "" } } --- ```

tsoernes commented 5 years ago

Closed via https://github.com/emacs-lsp/lsp-mode/issues/746