Skip to content

feat(lsp): add zuban and jedi-language-server configs, default to zuban#32

Open
Laughing-q wants to merge 3 commits into
masterfrom
feat/add-zuban-jedi-lsp-configs
Open

feat(lsp): add zuban and jedi-language-server configs, default to zuban#32
Laughing-q wants to merge 3 commits into
masterfrom
feat/add-zuban-jedi-lsp-configs

Conversation

@Laughing-q
Copy link
Copy Markdown
Owner

Adds two new Python LSP alternatives alongside the existing pyright config.

New servers added

  • Zuban (enabled by default): High-performance Python LSP written in Rust by David Halter (author of Jedi). Optimized for low memory and CPU usage. 20-200x faster than Mypy.

    • Install: pip install zuban
    • LSP command: zuban server
  • jedi-language-server (disabled by default): Lightweight, fast, low RAM option. Good for pure completion/navigation without type checking.

    • Install: pip install jedi-language-server

Changes

  • Zuban is now the default Python LSP
  • Pyright config is kept but disabled by default
  • Users can easily switch between zuban, jedi-language-server, and pyright by toggling the vim.lsp.enable() lines in lspconfig.lua
  • Uses Neovim 0.11+ native vim.lsp.config()/vim.lsp.enable() API

Switching between Python LSPs

To try a different server, edit lua/lq/configs/lsp/lspconfig.lua and change:

Adds two new Python LSP alternatives alongside the existing pyright config:

- Zuban (default): high-performance Python LSP written in Rust by the
  author of Jedi. Optimized for low memory and CPU usage.
  Install: pip install zuban

- jedi-language-server: lightweight, fast, low RAM option.
  Install: pip install jedi-language-server

Pyright config is kept but disabled by default so users can easily switch
between zuban, jedi-language-server, and pyright by toggling the
vim.lsp.enable() lines.

Neovim 0.11+ native vim.lsp.config()/vim.lsp.enable() API is used.
Zuban's default type-checking behaviour is stricter than the user's
previous pyright config (typeCheckingMode = off). This adds a dedicated
settings file that disables the strictest checks so Zuban feels similar:

- strict = false
- disallow_untyped_defs = false
- warn_unreachable = false
- check_untyped_defs = false
- follow_untyped_imports = true
- ignore_missing_imports = true
- allow_untyped_globals = true
- exclude_gitignore = true

Zuban also respects [tool.zuban] in pyproject.toml / mypy.ini, so users
can override per-project if needed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant