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:
npmpython3withvenv
Installing
From pypi
https://pypi.org/project/lspinstaller/
pip3 install lspinstaller
From source
IOU 1x instruction set
General usage
lspinstaller listto see what existslspinstaller updateto update LSPs you have installedlspinstaller install <lsp>to install new LSPslspinstaller find <lsp>to print the binary path of the provided lsp.lspinstaller hometo print the root directory where all the LSPs are installed- Copypasta for interactive use:
cd $(lspinstaller home)
- Copypasta for interactive use:
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:
- Binary install
- Npm install (requires
npmin PATH) - Pip install (requires
python3andvenvfor 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 (barring the LSP itself doing an incompatible change, of course). lspinstaller find can also be used if your LSP client supports invoking scripts, and provided you've got lspinstaller in your PATH.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lspinstaller-0.2.1.tar.gz.
File metadata
- Download URL: lspinstaller-0.2.1.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81a8abd22113009d64d9b6bc5c128d4af902577f5efa517bb4e9f0652beb2f42
|
|
| MD5 |
5102f9bcdcaef31abe9587a9d677c790
|
|
| BLAKE2b-256 |
13c5bd9b92f021c8d909c56f328c5a8179e1990c74d836abad225ce9e89fad67
|
Provenance
The following attestation bundles were made for lspinstaller-0.2.1.tar.gz:
Publisher:
release.yaml on LunarWatcher/lspinstaller
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lspinstaller-0.2.1.tar.gz -
Subject digest:
81a8abd22113009d64d9b6bc5c128d4af902577f5efa517bb4e9f0652beb2f42 - Sigstore transparency entry: 1059270384
- Sigstore integration time:
-
Permalink:
LunarWatcher/lspinstaller@b6c92ea7756c39df91795a08edf30d77b5f6bf00 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/LunarWatcher
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@b6c92ea7756c39df91795a08edf30d77b5f6bf00 -
Trigger Event:
release
-
Statement type:
File details
Details for the file lspinstaller-0.2.1-py3-none-any.whl.
File metadata
- Download URL: lspinstaller-0.2.1-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5149d7a0be3aa6a2822f462bdbbc5cce81a3fdaa7c8eb1221c65300962dfef04
|
|
| MD5 |
7aca99e921394bafd16b5523d5f605ce
|
|
| BLAKE2b-256 |
75112f2cc102329111ca399846428f9dc8a9c54ffaafe34b7e5d75b38257d1ec
|
Provenance
The following attestation bundles were made for lspinstaller-0.2.1-py3-none-any.whl:
Publisher:
release.yaml on LunarWatcher/lspinstaller
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lspinstaller-0.2.1-py3-none-any.whl -
Subject digest:
5149d7a0be3aa6a2822f462bdbbc5cce81a3fdaa7c8eb1221c65300962dfef04 - Sigstore transparency entry: 1059270424
- Sigstore integration time:
-
Permalink:
LunarWatcher/lspinstaller@b6c92ea7756c39df91795a08edf30d77b5f6bf00 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/LunarWatcher
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@b6c92ea7756c39df91795a08edf30d77b5f6bf00 -
Trigger Event:
release
-
Statement type: