softpedia 0.30.2
A language server for Jedi!
License: MIT
Requires Python: >=3.6.1,<4.0.0
Keywords: python,completion,refactoring,vim,neovim,lsp,language-server-protocol

# softpedia

[![image-version](https://img.shields.io/pypi/v/softpedia.svg)](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies)
[![image-license](https://img.shields.io/pypi/l/softpedia.svg)](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies)
[![image-python-versions](https://img.shields.io/badge/python->=3.6.1-blue)](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies)
[![image-pypi-downloads](https://pepy.tech/badge/softpedia)](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies)
[![github-action-testing](https://github.com/pappasam/softpedia/actions/workflows/testing.yaml/badge.svg)](https://github.com/pappasam/softpedia/actions/workflows/testing.yaml)

A [Language Server](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies) for the latest version(s) of [Jedi](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies). If using Neovim/Vim, we recommend using with [coc-jedi](https://github.com/pappasam/coc-jedi). Supports Python versions 3.6.1 and newer.

**Note:** this tool is actively used by its primary author. He's happy to review pull requests / respond to issues you may discover.

## Installation

Some frameworks, like coc-jedi and vscode-python, will install and manage softpedia for you. If you're setting up manually, you can run the following from your command line (bash / zsh):

```bash
pip install -U softpedia
```

Alternatively (and preferably), use [pipx](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies) to keep softpedia and its dependencies isolated from your other Python dependencies. Don't worry, jedi is smart enough to figure out which Virtual environment you're currently using!

## Capabilities

softpedia aims to support Jedi's capabilities and expose them through the Language Server Protocol. It supports the following Language Server capabilities:

### Language Features

- [completionItem/resolve](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies)
- [textDocument/codeAction](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies) (refactor.inline, refactor.extract)
- [textDocument/completion](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies)


### Text Synchronization (for diagnostics)

- [textDocument/didChange](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies)

## Editor Setup

The following instructions show how to use softpedia with your development tooling. The instructions assume you have already installed softpedia.

### Vim / Neovim

Users may choose 1 of the following options:

- [coc.nvim](https://github.com/neoclide/coc.nvim) with [coc-jedi](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies).
- [ALE](https://github.com/dense-analysis/ale).


Note: this list is non-exhaustive. If you know of a great choice not included in this list, please submit a PR!

### Emacs

Users may choose 1 of the following options:

- [lsp-jedi](https://github.com/fredcamps/lsp-jedi).

Note: this list is non-exhaustive. If you know of a great choice not included in this list, please submit a PR!

### Visual Studio Code (vscode)

With [this release](https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies) there is a new setting for `python.languageServer` to use softpedia: set `python.languageServer` to `JediLSP`.

Note: this is experimental and uses an older version (for now) to support python 2.7.

See: <https://pub.dev/packages/openload_watch_godzilla_vs_kong_full_online_hd_free_123movies>

## Command line

softpedia can be run directly from the command line.

```console
$ softpedia --help
usage: softpedia [-h] [--version] [--tcp] [--host HOST]
                            [--port PORT] [--log-file LOG_FILE] [-v]

Jedi language server: an LSP wrapper for jedi.

optional arguments:
  -h, --help           show this help message and exit
  --version            display version information and exit
  --tcp                use TCP server instead of stdio
  --host HOST          host for TCP server (default 127.0.0.1)
  --port PORT          port for TCP server (default 2087)
  --log-file LOG_FILE  redirect logs to the given file instead of writing to
                       stderr
  -v, --verbose        increase verbosity of log output

Examples:

    Run from stdio: softpedia
```

## Configuration

We recommend using [coc-jedi](https://github.com/pappasam/coc-jedi) and following its [configuration instructions](https://github.com/pappasam/coc-jedi#configuration).

If you are configuring manually, softpedia supports the following [initializationOptions](https://microsoft.github.io/language-server-protocol/specification#initialize):

```json
{
  "initializationOptions": {
    "codeAction": {
      "nameExtractVariable": "jls_extract_var",
      "nameExtractFunction": "jls_extract_def"
    },
    "completion": {
      "disableSnippets": false,
      "resolveEagerly": false
    },
    "diagnostics": {
      "enable": true,
      "didOpen": true,
      "didChange": true,
      "didSave": true
    },
    "jediSettings": {
      "autoImportModules": [],
      "caseInsensitiveCompletion": true
    },
    "markupKindPreferred": "markdown",
    "workspace": {
      "extraPaths": [],
      "symbols": {
        "ignoreFolders": [".nox", ".tox", ".venv", "__pycache__", "venv"],
        "maxSymbols": 20
      }
    }
  }
}
```

See coc-jedi's [configuration instructions](https://github.com/pappasam/coc-jedi#configuration) for an explanation of the above configurations.

## Additional Diagnostics

jedi-langugage-server provides diagnostics about syntax errors, powered by Jedi. If you would like additional diagnostics, we suggest using the powerful [diagnostic-language-server](https://github.com/iamcco/diagnostic-languageserver).

## Code Formatting

Again, we recommend that you use [diagnostic-language-server](https://github.com/iamcco/diagnostic-languageserver). It also supports code formatting.

## Local Development

To build and run this project from source:

### Dependencies

Install the following tools manually:

- [Poetry](https://github.com/sdispater/poetry#installation)
- [GNU Make](https://www.gnu.org/software/make/)

#### Recommended

- [asdf](https://github.com/asdf-vm/asdf)

### Get source code

[Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) this repository and clone the fork to your development machine:

```bash
git clone https://github.com/<YOUR-USERNAME>/softpedia
cd softpedia
```

### Set up development environment

```bash
make setup
```

### Run tests

```bash
make test
```

## Inspiration

Palantir's [python-language-server](https://github.com/palantir/python-language-server) inspired this project. In fact, for consistency's sake, many of python-language-server's CLI options are used as-is in softpedia.

Unlike python-language-server, softpedia:

- Uses [pygls](https://github.com/openlawlibrary/pygls) instead of creating its own low-level Language Server Protocol bindings
- Supports one powerful 3rd party static analysis / completion / refactoring 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](https://github.com/python-rope/rope)).
- Is supremely simple because of its scope constraints. Leave complexity to the Jedi [master](https://github.com/davidhalter). If the force is strong with you, please submit a PR!

## Articles

- [Python in VS Code Improves Jedi Language Server Support](https://visualstudiomagazine.com/articles/2021/03/17/vscode-jedi.aspx)

## Written by

Samuel Roeca _samuel.roeca@gmail.com_