A language server for Jedi!
Project description
jedi-language-server
A Language Server for the latest version(s) Jedi.
Note: this tool is actively used by its primary author. He's happy to review pull requests / respond to issues you may discover.
Installation
From your command line (bash / zsh), run:
pip install -U jedi jedi-language-server
-U
ensures that you're pulling the latest version from pypi.
Overview
jedi-language-server aims to support all of Jedi's capabilities and expose them through the Language Server Protocol. It currently supports the following Language Server requests:
- textDocument/completion
- textDocument/definition
- textDocument/documentSymbol
- textDocument/hover
- textDocument/references
- textDocument/rename
- workspace/symbol
These language server requests are not currently configurable by the user, but we expect to relax this constraint in a future release.
Usage
The following instructions show how to use jedi-language-server with your development tooling. The instructions assume you have already installed jedi-language-server.
Command line (bash / zsh)
At your terminal prompt:
jedi-language-server
jedi-language-server currently works only over IO. This may change in the future.
Neovim
Configure jedi-language-server with coc.nvim. For diagnostics, we recommend installing and using the latest version of efm-langserver + pylint.
~/.config/nvim/coc-settings.json:
"languageserver": {
"efm": {
"command": "efm-langserver",
"args": [],
"filetypes": ["python"]
},
"jls": {
"command": "jedi-language-server",
"args": [],
"filetypes": ["python"]
}
}
~/.config/efm-langserver/config.yaml:
version: 2
tools:
python-pylint: &python-pylint
lint-command: 'pylint'
lint-formats:
- '%f:%l:%c: %t%m'
languages:
python:
- <<: *python-pylint
Local Development
Like everything else in this project, local development is quite simple.
Dependencies
Install the following tools manually.
Recommended
Set up development environment
make setup
Run tests
make test
Inspiration
Palantir's python-language-server inspired this project. jedi-language-server differs from python-language-server. jedi-language-server:
- Uses
pygls
instead of creating its own low-level Language Server Protocol bindings - Supports one powerful 3rd party library: Jedi. By only supporting Jedi, we can focus on supporting all Jedi features without exposing ourselves to too many broken 3rd party dependencies (I'm looking at you, rope).
- Is supremely simple. Given its scope constraints, it will continue to be super simple and leave complexity to the Jedi master. Feel free to submit a PR!
Written by
Samuel Roeca samuel.roeca@gmail.com
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 jedi-language-server-0.4.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd1267c3a1b696600a3bf83e7f8daa2277f6d3369e12a140915f38f0484d391f |
|
MD5 | bdf5821cb3ce46ee8e30e18a49fe32e8 |
|
BLAKE2b-256 | e764093d84fa562386c468e80b3524764a38106706a8ff7098864687470d6c6f |
Hashes for jedi_language_server-0.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 511db3cd939b9e08233b1d9d636ab060cbda80e3332d878d10ee218c719e986d |
|
MD5 | caba99d44ddcf256735d25995b7aa0a0 |
|
BLAKE2b-256 | 4d3996f7a902d5249757ba358f724b57085dfa7e176c47494fcaea96457dc875 |