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/completion
textDocument/hover
textDocument/signatureHelp
textDocument/definition
textDocument/references
textDocument/publishDiagnostics
textDocument/documentSymbol
textDocument/codeAction
(Inline variable)textDocument/formatting
textDocument/rangeFormatting
textDocument/rename
textDocument/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
mypy
in the same environment asanakinls
and setmypy_enabled
configuration 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
File details
Details for the file anakin_language_server-1.22.tar.gz
.
File metadata
- Download URL: anakin_language_server-1.22.tar.gz
- Upload date:
- Size: 51.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9b92535339df0179a3a74dc7019f636913ac2d266aee3fdd651c0c66aa01b71 |
|
MD5 | cf7443a67c2a351eb90c7d62067c900c |
|
BLAKE2b-256 | 3d6d0cfbf39bb9af1ec65dfca9e5c558cd31050d1f7172136a0f7235d6edd112 |
File details
Details for the file anakin_language_server-1.22-py3-none-any.whl
.
File metadata
- Download URL: anakin_language_server-1.22-py3-none-any.whl
- Upload date:
- Size: 37.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3d0177ff75976c8ef4cc2b0d0aadb20a579b9bff082a5d122e10866c804dfe3 |
|
MD5 | 5d4803a177b65d58bedab7487d132390 |
|
BLAKE2b-256 | fbc97775727fd03c89fbf72761950a66e25ec4531af0146bdb813d3f1ebe6095 |