SublimeLinter-any-lsp
SublimeLinter adapter to any LSP server
Details
Installs
- Total 91
- Win 52
- Mac 11
- Linux 28
| Apr 22 | Apr 21 | Apr 20 | Apr 19 | Apr 18 | Apr 17 | Apr 16 | Apr 15 | Apr 14 | Apr 13 | Apr 12 | Apr 11 | Apr 10 | Apr 9 | Apr 8 | Apr 7 | Apr 6 | Apr 5 | Apr 4 | Apr 3 | Apr 2 | Apr 1 | Mar 31 | Mar 30 | Mar 29 | Mar 28 | Mar 27 | Mar 26 | Mar 25 | Mar 24 | Mar 23 | Mar 22 | Mar 21 | Mar 20 | Mar 19 | Mar 18 | Mar 17 | Mar 16 | Mar 15 | Mar 14 | Mar 13 | Mar 12 | Mar 11 | Mar 10 | Mar 9 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Windows | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| Mac | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Readme
- Source
- raw.githubusercontent.com
SublimeLinter-any-lsp 🎴
SublimeLinter-any-lsp is a plugin for SublimeLinter that allows you to use Language Server Protocol (LSP) servers as linters within Sublime Text.
Status
I use it since May 2024. Needs spread and contributions. Unsure about which parts (if any) should be ported to SublimeLinter core. Lack of time to make it shine, also maybe, because it just works for me.
How It Works
This package implements a generic linter backend (AnyLSP) for SublimeLinter. It communicates with LSP servers, sends file contents, and parses diagnostics messages from the server to display them as linting errors/warnings in Sublime Text.
- Each LSP server defined by a linter class (e.g.,
Ruff,Pyright,Eslint) as usual, inheritingAnyLSPinstead ofLinter. - Diagnostic messages from the LSP server are mapped to SublimeLinter errors and warnings.
Design
Be open, user-friendly, playful.
# Make a config
config = ServerConfig(
"ruff-lsp",
("ruff", "server", "--preview"),
"/user/knowles/and-her-working-dir",
)
# and ask for a server attached to a view
ensure_server_for_view(config, view)
# or a plain server
server = ensure_server(config)
# and communicate with it
req = server.request("textDocument/diagnostic", inflate({
"textDocument.uri": canoncial_uri_for_view(self.view),
}))
@req.on_response
def on_diagnostics(msg):
....
# done. Idle servers shutdown automatically. 🌆
Example Linter Classes
class Ruff(AnyLSP):
name = "ruff-lsp"
cmd = ("ruff", "server", "--preview")
defaults = {"selector": "source.python"}
class Pyright(AnyLSP):
name = "pyright-lsp"
cmd = ("pyright-langserver", "--stdio")
defaults = {
"disable": True,
"selector": "source.python",
"settings": {
"python.analysis.autoSearchPaths": True,
"python.analysis.diagnosticMode": "openFilesOnly",
"python.analysis.useLibraryCodeForTypes": True,
}
}
Installation
Manual only. Not listed on PackageControl
Usage
- Ships ruff-lsp, pyright and eslint out-of-the-box
- Any other LSP (-configuration) must be added here, as a separate (private or public) package, or just in your User folder as a plugin.
Configuration
Each linter class may be configured through SublimeLinter's settings system. For example, to enable or disable specific servers, or to pass settings to the underlying LSP.
Example:
"SublimeLinter.linters.ruff-lsp.selector": "source.python",
Contributing
Contributions are welcome! Please open issues or pull requests for bug fixes, new features, or improvements.