Yet another Jedi Python language server
Project description
anakin-language-server
Yet another Jedi Python language server
Requirements
- Python >= 3.6
- pygls ~= 0.9
- Jedi >= 0.17.1
- 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:
-
pyflakes_errors
- Diagnostic severity will be set toError
if Pyflakes message class name is in this list. See Pyflakes messages.Default:
['UndefinedName']
. -
help_on_hover
- Usehelp
instead ofinfer
fortextDocument/hover
.Default:
True
. -
mypy_enabled
- Usemypy
to provide diagnostics.Default:
False
. -
pycodestyle_config
- In addition to project and user level config, specify pycodestyle config file. Same as--config
option forpycodestyle
.Default:
None
. -
completion_snippet_first
- TweaksortText
property so snippet completion appear before plain completion.Default:
False
. -
yapf_style_config
- Either a style name or a path to a file that contains formatting style settings.Default:
'pep8'
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
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.8.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c407c0e9e17d724a10f21c2db088dbd27cd70e9c1f4b7fa91dc6c0dcc594ca25 |
|
MD5 | ff4fdd9fac5533b3728e1c951e84ba34 |
|
BLAKE2b-256 | df9f95e728684ec0dfacdbf691b6c2bcf63e9cf6d9ab4a113c713a9399df8fed |
Hashes for anakin_language_server-1.8.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5acea406f853c39b830936b4a6bbf2020eaf68664fac328dbcdc84047f0b3327 |
|
MD5 | 1974817db81e2e03ccdc47ff4a2888fd |
|
BLAKE2b-256 | 53aacea33e12c7b25a83337976ef2305f1e1cc7537997deeb534621281108abf |