Yet another Jedi Python language server
Project description
anakin-language-server
Yet another Jedi Python language server
Requirements
- Python >= 3.6
- pygls >= 1.3, <1.4
- Jedi >= 0.19
- pyflakes ~= 2.2
- pycodestyle ~= 2.5
- yapf ~=0.30
Optional requirements
- mypy
Implemented features
textDocument/completiontextDocument/hovertextDocument/signatureHelptextDocument/definitiontextDocument/referencestextDocument/publishDiagnosticstextDocument/documentSymboltextDocument/codeAction(Inline variable)textDocument/formattingtextDocument/rangeFormattingtextDocument/renametextDocument/documentHighlight
Initialization option
venv- path to virtualenv. This option will be passed to Jedi's create_environment.
Also one can set VIRTUAL_ENV or CONDA_PREFIX before running anakinls so Jedi will find proper environment. See get_default_environment.
Diagnostics
Diagnostics are published on document open and save.
Diagnostics providers:
-
Jedi
See get_syntax_errors.
-
pyflakes
-
pycodestyle
Server restart is needed after changing one of the configuration files.
-
mypy
Install
mypyin the same environment asanakinlsand setmypy_enabledconfiguration option.
Configuration options
Configuration options must be passed under anakinls key in workspace/didChangeConfiguration notification.
Available options:
| Option | Description | Default |
|---|---|---|
help_on_hover |
Use help instead of infer for textDocument/hover. |
True |
completion_snippet_first |
Tweak sortText property so snippet completion appear before plain completion. |
False |
completion_fuzzy |
Value of the fuzzy parameter for complete. |
False |
diagnostic_on_open |
Publish diagnostics on textDocument/didOpen |
True |
diagnostic_on_change |
Publish diagnostics on textDocument/didChange |
False |
diagnostic_on_save |
Publish diagnostics on textDocument/didSave |
True |
pyflakes_errors |
Diagnostic severity will be set to Error if Pyflakes message class name is in this list. See Pyflakes messages. |
['UndefinedName'] |
pycodestyle_config |
In addition to project and user level config, specify pycodestyle config file. Same as --config option for pycodestyle. |
None |
mypy_enabled |
Use mypy to provide diagnostics. |
False |
yapf_style_config |
Either a style name or a path to a file that contains formatting style settings. | 'pep8' |
jedi_settings |
Global Jedi settings. E.g. set it to {"case_insensitive_completion": False} to turn off case insensitive completion |
{} |
Configuration example
Here is eglot configuration:
(defvar my/lsp-venv nil
"Name of virtualenv.
Set it in project's dir-locals file.")
(defclass my/eglot-anakinls (eglot-lsp-server) ()
:documentation
"Own eglot server class.")
(cl-defmethod eglot-initialization-options ((_server my/eglot-anakinls))
"Pass initialization param to anakinls."
`(:venv ,(when my/lsp-venv
(expand-file-name
(concat "~/.virtualenvs/" my/lsp-venv)))))
;; Add this server to eglot programs to handle python-mode and run `anakinls'
(add-to-list 'eglot-server-programs
'(python-mode my/eglot-anakinls "anakinls"))
;; Also treat UnusedVariable as error
(setq-default eglot-workspace-configuration
'((:anakinls :pyflakes_errors ["UndefinedName" "UnusedVariable"])))
Installation
pip install anakin-language-server
Development
pip install pre-commit
pre-commit install
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for anakin_language_server-1.22.tar.gz
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | a9b92535339df0179a3a74dc7019f636913ac2d266aee3fdd651c0c66aa01b71 |
|
| MD5 | cf7443a67c2a351eb90c7d62067c900c |
|
| BLAKE2b-256 | 3d6d0cfbf39bb9af1ec65dfca9e5c558cd31050d1f7172136a0f7235d6edd112 |
Hashes for anakin_language_server-1.22-py3-none-any.whl
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | c3d0177ff75976c8ef4cc2b0d0aadb20a579b9bff082a5d122e10866c804dfe3 |
|
| MD5 | 5d4803a177b65d58bedab7487d132390 |
|
| BLAKE2b-256 | fbc97775727fd03c89fbf72761950a66e25ec4531af0146bdb813d3f1ebe6095 |