Skip to main content

Utility script for installing (some) LSP servers

Project description

LSP installer

Utility script for installing various LSPs, because software packaging standards still fucking suck.

Warning: this is an experimental script that has not been extensively tested. Use with caution. It was hacked together in a single evening/night, and likely has multiple, large problems.

Currently has support for 6 servers:

  • tsserver
  • pyright
  • kotlin-lsp
  • luals
  • clangd
  • astral-sh/ty

Requirements

  • Python 3.10+
  • Linux or Windows (though Windows support is limited)
    • macOS is intentionally not supported

Additionally, the following tools are used, but are optional unless you install packages that depend on it:

  • npm
  • python3 with venv

Installing

From pypi

https://pypi.org/project/lspinstaller/

pip3 install lspinstaller

From source

IOU 1x instruction set

General usage

  • lspinstaller list to see what exists
  • lspinstaller update to update LSPs you have installed
  • lspinstaller install <lsp> to install new LSPs

All of these accept --help. Additional information is available through lspinstaller --help.

FAQ

What LSP servers are supported, and how do I install them?

See lspinstaller list, or lspinstaller/data/sources.py if you would like to check before installing.

To install a server, run lspinstaller install server-name, where server-name corresponds to one of the servers from the list. The install command can take any number of LSPs at once, so if you want to install several, you can append them to the command.

How are the servers installed?

Depending on availability:

  1. Binary install
  2. Npm install (requires npm in PATH)
  3. Pip install (requires python3 and venv for first-time setup)

System package managers are not supported; if you can install via a system package manager, do that instead. This script exists for operating systems where there are no package manager, the package manager doesn't include a given LSP, or the OS is debian-based (or follows a debian-like idiology) where the LSPs that are available are heavily out of date.

Where are the servers installed, and how do I use them?

They're installed to ~/.local/share/lsp/. This applies to both Windows and Linux.

Eventually, there will likely be a ~/.local/share/lsp/bin directory that contains all the non-npm LSPs, but this currently does not work for whatever fucking reason. With clangd, this manifests as limits.h missing. This was observed when the exact same binary breaks when referencing a symlink location, and breaking when referencing the real location. It's unclear why this is the case, and if it can be fixed.

In the meanwhile, you need to explicitly specify the full path, and keep track of it yourself. For example:

  • Clangd is installed to ~/.local/share/lsp/clangd/bin/clangd
  • kotlin-lsp is installed to ~/.local/share/lsp/kotlin-lsp/bin/kotlin-lsp.sh

The name used for the install command matches the subfolder name in ~/.local/share/lsp/.

It is still a manual process though, so it's strongly recommended that you automate it once so you don't have to touch it again. The locations are guaranteed to never change incompatibly.

How do I configure the servers?

See the documentation for your LSP plugin and/or editor. Some known-good config settings for the servers supported by lspinstaller that works with yegappan/lsp can be found here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lspinstaller-0.2.0.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lspinstaller-0.2.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file lspinstaller-0.2.0.tar.gz.

File metadata

  • Download URL: lspinstaller-0.2.0.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for lspinstaller-0.2.0.tar.gz
Algorithm Hash digest
SHA256 eaf968035e1508e81da00803c8724c7c629cac1437bea30081a16797a9ecb73e
MD5 2279ff83c7484f65b246d13bf71716a7
BLAKE2b-256 8da4af8daebbf4e10eb5b4ade072a1ef763050186e934227184c3ca509cab2d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for lspinstaller-0.2.0.tar.gz:

Publisher: release.yaml on LunarWatcher/lspinstaller

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lspinstaller-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: lspinstaller-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for lspinstaller-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31269656d6a462fa28179f76e0d42dda7a4a3fb210fa31d49b297fce686ee24c
MD5 963a0b9337c663c3377318707fc3f9f2
BLAKE2b-256 cab0e56ba376e6be0c1373a0e0fc010e29b505513dbd3884460c9ea9f844e274

See more details on using hashes here.

Provenance

The following attestation bundles were made for lspinstaller-0.2.0-py3-none-any.whl:

Publisher: release.yaml on LunarWatcher/lspinstaller

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page