From 8b73d98baf0a185886a55a62b8b32f6543f14af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerardo=20G=C3=B3mez=20Rodr=C3=ADguez?= Date: Fri, 9 Jul 2021 16:40:31 +0300 Subject: [PATCH] chore: replace python-language-server to supported pylsp (#3810) As mentioned in #3722 palantir's python-language-server is no longer maintained. The alternative is to use the community-driven https://github.com/python-lsp/python-lsp-server. --- ale_linters/python/pyls.vim | 37 ------------ ale_linters/python/pylsp.vim | 37 ++++++++++++ doc/ale-python.txt | 54 +++++++++--------- doc/ale-supported-languages-and-tools.txt | 2 +- doc/ale.txt | 2 +- supported-tools.md | 2 +- .../test_lsp_completion_messages.vader | 6 +- .../test_public_completion_api.vader | 4 +- test/linter/test_pyls.vader | 57 ------------------- test/linter/test_pylsp.vader | 57 +++++++++++++++++++ .../test_engine_lsp_response_handling.vader | 6 +- .../env/Scripts/{pyls.exe => pylsp.exe} | 0 .../with_virtualenv/env/bin/{pyls => pylsp} | 0 test/test_find_references.vader | 8 +-- test/test_go_to_definition.vader | 16 +++--- test/test_organize_imports.vader | 4 +- test/test_rename.vader | 4 +- test/test_symbol_search.vader | 8 +-- 18 files changed, 152 insertions(+), 152 deletions(-) delete mode 100644 ale_linters/python/pyls.vim create mode 100644 ale_linters/python/pylsp.vim delete mode 100644 test/linter/test_pyls.vader create mode 100644 test/linter/test_pylsp.vader rename test/test-files/python/with_virtualenv/env/Scripts/{pyls.exe => pylsp.exe} (100%) rename test/test-files/python/with_virtualenv/env/bin/{pyls => pylsp} (100%) diff --git a/ale_linters/python/pyls.vim b/ale_linters/python/pyls.vim deleted file mode 100644 index 10304b2c..00000000 --- a/ale_linters/python/pyls.vim +++ /dev/null @@ -1,37 +0,0 @@ -" Author: aurieh -" Description: A language server for Python - -call ale#Set('python_pyls_executable', 'pyls') -call ale#Set('python_pyls_options', '') -call ale#Set('python_pyls_use_global', get(g:, 'ale_use_global_executables', 0)) -call ale#Set('python_pyls_auto_pipenv', 0) -call ale#Set('python_pyls_config', {}) - -function! ale_linters#python#pyls#GetExecutable(buffer) abort - if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_pyls_auto_pipenv')) - \ && ale#python#PipenvPresent(a:buffer) - return 'pipenv' - endif - - return ale#python#FindExecutable(a:buffer, 'python_pyls', ['pyls']) -endfunction - -function! ale_linters#python#pyls#GetCommand(buffer) abort - let l:executable = ale_linters#python#pyls#GetExecutable(a:buffer) - - let l:exec_args = l:executable =~? 'pipenv$' - \ ? ' run pyls' - \ : '' - - return ale#Escape(l:executable) . l:exec_args . ale#Pad(ale#Var(a:buffer, 'python_pyls_options')) -endfunction - -call ale#linter#Define('python', { -\ 'name': 'pyls', -\ 'lsp': 'stdio', -\ 'executable': function('ale_linters#python#pyls#GetExecutable'), -\ 'command': function('ale_linters#python#pyls#GetCommand'), -\ 'project_root': function('ale#python#FindProjectRoot'), -\ 'completion_filter': 'ale#completion#python#CompletionItemFilter', -\ 'lsp_config': {b -> ale#Var(b, 'python_pyls_config')}, -\}) diff --git a/ale_linters/python/pylsp.vim b/ale_linters/python/pylsp.vim new file mode 100644 index 00000000..4c6ac16d --- /dev/null +++ b/ale_linters/python/pylsp.vim @@ -0,0 +1,37 @@ +" Author: aurieh +" Description: A language server for Python + +call ale#Set('python_pylsp_executable', 'pylsp') +call ale#Set('python_pylsp_options', '') +call ale#Set('python_pylsp_use_global', get(g:, 'ale_use_global_executables', 0)) +call ale#Set('python_pylsp_auto_pipenv', 0) +call ale#Set('python_pylsp_config', {}) + +function! ale_linters#python#pylsp#GetExecutable(buffer) abort + if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_pylsp_auto_pipenv')) + \ && ale#python#PipenvPresent(a:buffer) + return 'pipenv' + endif + + return ale#python#FindExecutable(a:buffer, 'python_pylsp', ['pylsp']) +endfunction + +function! ale_linters#python#pylsp#GetCommand(buffer) abort + let l:executable = ale_linters#python#pylsp#GetExecutable(a:buffer) + + let l:exec_args = l:executable =~? 'pipenv$' + \ ? ' run pylsp' + \ : '' + + return ale#Escape(l:executable) . l:exec_args . ale#Pad(ale#Var(a:buffer, 'python_pylsp_options')) +endfunction + +call ale#linter#Define('python', { +\ 'name': 'pylsp', +\ 'lsp': 'stdio', +\ 'executable': function('ale_linters#python#pylsp#GetExecutable'), +\ 'command': function('ale_linters#python#pylsp#GetCommand'), +\ 'project_root': function('ale#python#FindProjectRoot'), +\ 'completion_filter': 'ale#completion#python#CompletionItemFilter', +\ 'lsp_config': {b -> ale#Var(b, 'python_pylsp_config')}, +\}) diff --git a/doc/ale-python.txt b/doc/ale-python.txt index d38d3055..58b92dc9 100644 --- a/doc/ale-python.txt +++ b/doc/ale-python.txt @@ -36,7 +36,7 @@ ALE will look for configuration files with the following filenames. > .pylintrc Pipfile Pipfile.lock - poetry.lock + poetry.lock pyproject.toml < @@ -638,31 +638,31 @@ g:ale_python_pylint_use_msg_id *g:ale_python_pylint_use_msg_id* =============================================================================== -pyls *ale-python-pyls* +pylsp *ale-python-pylsp* -`pyls` will be run from a detected project root, per |ale-python-root|. +`pylsp` will be run from a detected project root, per |ale-python-root|. -g:ale_python_pyls_executable *g:ale_python_pyls_executable* - *b:ale_python_pyls_executable* +g:ale_python_pylsp_executable *g:ale_python_pylsp_executable* + *b:ale_python_pylsp_executable* Type: |String| - Default: `'pyls'` + Default: `'pylsp'` See |ale-integrations-local-executables| - Set this to `'pipenv'` to invoke `'pipenv` `run` `pyls'`. + Set this to `'pipenv'` to invoke `'pipenv` `run` `pylsp'`. -g:ale_python_pyls_use_global *g:ale_python_pyls_use_global* - *b:ale_python_pyls_use_global* +g:ale_python_pylsp_use_global *g:ale_python_pylsp_use_global* + *b:ale_python_pylsp_use_global* Type: |Number| Default: `get(g:, 'ale_use_global_executables', 0)` See |ale-integrations-local-executables| -g:ale_python_pyls_auto_pipenv *g:ale_python_pyls_auto_pipenv* - *b:ale_python_pyls_auto_pipenv* +g:ale_python_pylsp_auto_pipenv *g:ale_python_pylsp_auto_pipenv* + *b:ale_python_pylsp_auto_pipenv* Type: |Number| Default: `0` @@ -670,15 +670,15 @@ g:ale_python_pyls_auto_pipenv *g:ale_python_pyls_auto_pipenv* if true. This is overridden by a manually-set executable. -g:ale_python_pyls_config *g:ale_python_pyls_config* - *b:ale_python_pyls_config* +g:ale_python_pylsp_config *g:ale_python_pylsp_config* + *b:ale_python_pylsp_config* Type: |Dictionary| Default: `{}` - Dictionary with configuration settings for pyls. For example, to disable + Dictionary with configuration settings for pylsp. For example, to disable the pycodestyle linter: > { - \ 'pyls': { + \ 'pylsp': { \ 'plugins': { \ 'pycodestyle': { \ 'enabled': v:false @@ -688,24 +688,24 @@ g:ale_python_pyls_config *g:ale_python_pyls_config* \ } < -g:ale_python_pyls_options *g:ale_python_pyls_options* - *b:ale_python_pyls_options* +g:ale_python_pylsp_options *g:ale_python_pylsp_options* + *b:ale_python_pylsp_options* Type: |String| Default: `''` - This variable can be changed to add command-line arguments to the pyls - invocation. Note that this is not the same thing as ale_python_pyls_config, - which allows configuration of how pyls functions; this is intended to - provide flexibility in how the pyls command is invoked. + This variable can be changed to add command-line arguments to the pylsp + invocation. Note that this is not the same thing as ale_python_pylsp_config, + which allows configuration of how pylsp functions; this is intended to + provide flexibility in how the pylsp command is invoked. - For example, if you had installed `pyls` but your `pyls` executable was not - on your `PATH` for some reason, an alternative way to run the pyls server + For example, if you had installed `pylsp` but your `pylsp` executable was not + on your `PATH` for some reason, an alternative way to run the pylsp server would be: - let g:ale_python_pyls_executable = 'python3' - let g:ale_python_pyls_options = '-m pyls' + let g:ale_python_pylsp_executable = 'python3' + let g:ale_python_pylsp_options = '-m pylsp' - An example stragety for installing `pyls`: - `python3 -m pip install --user pyls` + An example stragety for installing `pylsp`: + `python3 -m pip install --user pylsp` =============================================================================== pyre *ale-python-pyre* diff --git a/doc/ale-supported-languages-and-tools.txt b/doc/ale-supported-languages-and-tools.txt index 36399178..7f2b632c 100644 --- a/doc/ale-supported-languages-and-tools.txt +++ b/doc/ale-supported-languages-and-tools.txt @@ -411,7 +411,7 @@ Notes: * `pyflakes` * `pylama`!! * `pylint`!! - * `pyls` + * `pylsp` * `pyre` * `pyright` * `reorder-python-imports` diff --git a/doc/ale.txt b/doc/ale.txt index 5d2ff444..df64f06a 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -2945,7 +2945,7 @@ documented in additional help files. pyflakes..............................|ale-python-pyflakes| pylama................................|ale-python-pylama| pylint................................|ale-python-pylint| - pyls..................................|ale-python-pyls| + pylsp.................................|ale-python-pylsp| pyre..................................|ale-python-pyre| pyright...............................|ale-python-pyright| reorder-python-imports................|ale-python-reorder_python_imports| diff --git a/supported-tools.md b/supported-tools.md index b94a8084..29ee9c5d 100644 --- a/supported-tools.md +++ b/supported-tools.md @@ -420,7 +420,7 @@ formatting. * [pyflakes](https://github.com/PyCQA/pyflakes) * [pylama](https://github.com/klen/pylama) :floppy_disk: * [pylint](https://www.pylint.org/) :floppy_disk: - * [pyls](https://github.com/palantir/python-language-server) :warning: + * [pylsp](https://github.com/python-lsp/python-lsp-server) :warning: * [pyre](https://github.com/facebook/pyre-check) :warning: * [pyright](https://github.com/microsoft/pyright) * [reorder-python-imports](https://github.com/asottile/reorder_python_imports) diff --git a/test/completion/test_lsp_completion_messages.vader b/test/completion/test_lsp_completion_messages.vader index ee810113..87847777 100644 --- a/test/completion/test_lsp_completion_messages.vader +++ b/test/completion/test_lsp_completion_messages.vader @@ -205,8 +205,8 @@ Given python(Some Python file): bazxyzxyzxyz Execute(The right message should be sent for the initial LSP request): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] " The cursor position needs to match what was saved before. call setpos('.', [bufnr(''), 1, 5, 0]) @@ -226,7 +226,7 @@ Execute(The right message should be sent for the initial LSP request): \ string(g:Callback) " We should send the right message. " The character index needs to be at most the index of the last character on - " the line, or integration with pyls will be broken. + " the line, or integration with pylsp will be broken. " " We need to send the message for changing the document first. AssertEqual diff --git a/test/completion/test_public_completion_api.vader b/test/completion/test_public_completion_api.vader index f26fdc12..03394820 100644 --- a/test/completion/test_public_completion_api.vader +++ b/test/completion/test_public_completion_api.vader @@ -41,7 +41,7 @@ Execute(ale#completion#CanProvideCompletions should return 0 when no completion AssertEqual 0, ale#completion#CanProvideCompletions() Execute(ale#completion#CanProvideCompletions should return 1 when at least one completion source is available): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] AssertEqual 1, ale#completion#CanProvideCompletions() diff --git a/test/linter/test_pyls.vader b/test/linter/test_pyls.vader deleted file mode 100644 index 74a86ccb..00000000 --- a/test/linter/test_pyls.vader +++ /dev/null @@ -1,57 +0,0 @@ -Before: - call ale#assert#SetUpLinterTest('python', 'pyls') - - let b:bin_dir = has('win32') ? 'Scripts' : 'bin' - -After: - unlet! b:bin_dir - unlet! b:executable - - call ale#assert#TearDownLinterTest() - -Execute(The pyls command callback should return default string): - AssertLinter 'pyls', ale#Escape('pyls') - -Execute(The pyls executable should be configurable): - let g:ale_python_pyls_executable = '~/.local/bin/pyls' - - AssertLinter '~/.local/bin/pyls' , ale#Escape('~/.local/bin/pyls') - -Execute(The pyls command callback should let you set options): - let g:ale_python_pyls_options = '--some-option' - - AssertLinter 'pyls', ale#Escape('pyls') . ' --some-option' - -Execute(The pyls executable should be run from the virtualenv path): - call ale#test#SetFilename('../test-files/python/with_virtualenv/subdir/foo/bar.py') - - let b:executable = ale#path#Simplify( - \ g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/pyls' - \) - - AssertEqual ale#Escape(b:executable), - \ ale_linters#python#pyls#GetCommand(bufnr('')) - -Execute(You should be able to override the pyls virtualenv lookup): - call ale#test#SetFilename('../test-files/python/with_virtualenv/subdir/foo/bar.py') - - let g:ale_python_pyls_use_global = 1 - - AssertLinter 'pyls', ale#Escape('pyls') - -Execute(Setting executable to 'pipenv' appends 'run pyls'): - let g:ale_python_pyls_executable = 'path/to/pipenv' - - AssertLinter 'path/to/pipenv', ale#Escape('path/to/pipenv') . ' run pyls' - -Execute(Pipenv is detected when python_pyls_auto_pipenv is set): - let g:ale_python_pyls_auto_pipenv = 1 - call ale#test#SetFilename('../test-files/python/pipenv/whatever.py') - - AssertLinter 'pipenv', - \ ale#Escape('pipenv') . ' run pyls' - -Execute(Should accept configuration settings): - AssertLSPConfig {} - let b:ale_python_pyls_config = {'pyls': {'plugins': {'preload': {'enabled': v:false}}}} - AssertLSPConfig {'pyls': {'plugins': {'preload': {'enabled': v:false}}}} diff --git a/test/linter/test_pylsp.vader b/test/linter/test_pylsp.vader new file mode 100644 index 00000000..9d7d0775 --- /dev/null +++ b/test/linter/test_pylsp.vader @@ -0,0 +1,57 @@ +Before: + call ale#assert#SetUpLinterTest('python', 'pylsp') + + let b:bin_dir = has('win32') ? 'Scripts' : 'bin' + +After: + unlet! b:bin_dir + unlet! b:executable + + call ale#assert#TearDownLinterTest() + +Execute(The pylsp command callback should return default string): + AssertLinter 'pylsp', ale#Escape('pylsp') + +Execute(The pylsp executable should be configurable): + let g:ale_python_pylsp_executable = '~/.local/bin/pylsp' + + AssertLinter '~/.local/bin/pylsp' , ale#Escape('~/.local/bin/pylsp') + +Execute(The pylsp command callback should let you set options): + let g:ale_python_pylsp_options = '--some-option' + + AssertLinter 'pylsp', ale#Escape('pylsp') . ' --some-option' + +Execute(The pylsp executable should be run from the virtualenv path): + call ale#test#SetFilename('../test-files/python/with_virtualenv/subdir/foo/bar.py') + + let b:executable = ale#path#Simplify( + \ g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/pylsp' + \) + + AssertEqual ale#Escape(b:executable), + \ ale_linters#python#pylsp#GetCommand(bufnr('')) + +Execute(You should be able to override the pylsp virtualenv lookup): + call ale#test#SetFilename('../test-files/python/with_virtualenv/subdir/foo/bar.py') + + let g:ale_python_pylsp_use_global = 1 + + AssertLinter 'pylsp', ale#Escape('pylsp') + +Execute(Setting executable to 'pipenv' appends 'run pylsp'): + let g:ale_python_pylsp_executable = 'path/to/pipenv' + + AssertLinter 'path/to/pipenv', ale#Escape('path/to/pipenv') . ' run pylsp' + +Execute(Pipenv is detected when python_pylsp_auto_pipenv is set): + let g:ale_python_pylsp_auto_pipenv = 1 + call ale#test#SetFilename('../test-files/python/pipenv/whatever.py') + + AssertLinter 'pipenv', + \ ale#Escape('pipenv') . ' run pylsp' + +Execute(Should accept configuration settings): + AssertLSPConfig {} + let b:ale_python_pylsp_config = {'pylsp': {'plugins': {'preload': {'enabled': v:false}}}} + AssertLSPConfig {'pylsp': {'plugins': {'preload': {'enabled': v:false}}}} diff --git a/test/lsp/test_engine_lsp_response_handling.vader b/test/lsp/test_engine_lsp_response_handling.vader index 8261f1da..1c5082c5 100644 --- a/test/lsp/test_engine_lsp_response_handling.vader +++ b/test/lsp/test_engine_lsp_response_handling.vader @@ -391,11 +391,11 @@ Execute(LSP diagnostics responses on project root should not populate loclist): \ ale#test#GetLoclistWithoutModule() Execute(LSP errors should mark linters no longer active): - let b:ale_linters = ['pyls'] - runtime ale_linters/python/pyls.vim + let b:ale_linters = ['pylsp'] + runtime ale_linters/python/pylsp.vim call ale#test#SetFilename('filename.py') call ale#engine#InitBufferInfo(bufnr('')) - call ale#lsp_linter#SetLSPLinterMap({1: 'pyls'}) + call ale#lsp_linter#SetLSPLinterMap({1: 'pylsp'}) let g:ale_buffer_info[bufnr('')].active_linter_list = ale#linter#Get('python') Assert !empty(g:ale_buffer_info[bufnr('')].active_linter_list) diff --git a/test/test-files/python/with_virtualenv/env/Scripts/pyls.exe b/test/test-files/python/with_virtualenv/env/Scripts/pylsp.exe similarity index 100% rename from test/test-files/python/with_virtualenv/env/Scripts/pyls.exe rename to test/test-files/python/with_virtualenv/env/Scripts/pylsp.exe diff --git a/test/test-files/python/with_virtualenv/env/bin/pyls b/test/test-files/python/with_virtualenv/env/bin/pylsp similarity index 100% rename from test/test-files/python/with_virtualenv/env/bin/pyls rename to test/test-files/python/with_virtualenv/env/bin/pylsp diff --git a/test/test_find_references.vader b/test/test_find_references.vader index ca05f631..9931e740 100644 --- a/test/test_find_references.vader +++ b/test/test_find_references.vader @@ -344,8 +344,8 @@ Execute(LSP reference responses with a null result should be handled): AssertEqual ['echom ''No references found.'''], g:expr_list Execute(LSP reference requests should be sent): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALEFindReferences @@ -381,8 +381,8 @@ Execute(LSP reference requests should be sent): AssertEqual {'42': {'open_in': 'current-buffer', 'use_relative_paths': 0}}, ale#references#GetMap() Execute('-relative' argument should enable 'use_relative_paths' in HandleLSPResponse): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALEFindReferences -relative diff --git a/test/test_go_to_definition.vader b/test/test_go_to_definition.vader index 3807bb05..90e49979 100644 --- a/test/test_go_to_definition.vader +++ b/test/test_go_to_definition.vader @@ -449,8 +449,8 @@ Execute(Definition responses with null response should be handled): AssertEqual [], g:expr_list Execute(LSP definition requests should be sent): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALEGoToDefinition @@ -485,8 +485,8 @@ Execute(LSP definition requests should be sent): AssertEqual {'42': {'open_in': 'current-buffer'}}, ale#definition#GetMap() Execute(LSP type definition requests should be sent): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALEGoToTypeDefinition @@ -521,8 +521,8 @@ Execute(LSP type definition requests should be sent): AssertEqual {'42': {'open_in': 'current-buffer'}}, ale#definition#GetMap() Execute(LSP tab definition requests should be sent): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALEGoToDefinition -tab @@ -557,8 +557,8 @@ Execute(LSP tab definition requests should be sent): AssertEqual {'42': {'open_in': 'tab'}}, ale#definition#GetMap() Execute(LSP tab type definition requests should be sent): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALEGoToTypeDefinition -tab diff --git a/test/test_organize_imports.vader b/test/test_organize_imports.vader index 35cd99ff..63973a54 100644 --- a/test/test_organize_imports.vader +++ b/test/test_organize_imports.vader @@ -156,8 +156,8 @@ Given python(Some Python file): Execute(Should result in error message): call ale#linter#Reset() - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] ALEOrganizeImports diff --git a/test/test_rename.vader b/test/test_rename.vader index 5bc655f4..42bcfd95 100644 --- a/test/test_rename.vader +++ b/test/test_rename.vader @@ -466,8 +466,8 @@ Execute(LSP should perform no action when changes is empty): Execute(LSP rename requests should be sent): call ale#rename#SetMap({}) - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALERename diff --git a/test/test_symbol_search.vader b/test/test_symbol_search.vader index 053a8b04..382b2b40 100644 --- a/test/test_symbol_search.vader +++ b/test/test_symbol_search.vader @@ -152,8 +152,8 @@ Given python(Some Python file): bazxyzxyzxyz Execute(LSP symbol requests should be sent): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALESymbolSearch foo bar @@ -178,8 +178,8 @@ Execute(LSP symbol requests should be sent): AssertEqual {'42': {'buffer': bufnr(''), 'use_relative_paths': 0}}, ale#symbol#GetMap() Execute('-relative' argument should enable 'use_relative_paths' in HandleLSPResponse): - runtime ale_linters/python/pyls.vim - let b:ale_linters = ['pyls'] + runtime ale_linters/python/pylsp.vim + let b:ale_linters = ['pylsp'] call setpos('.', [bufnr(''), 1, 5, 0]) ALESymbolSearch -relative foo bar