GeezerVison is showing github.com — Add pylsp-workspace-symbols to third-party plugins list · Issue #699 · python-lsp/python-lsp-server
Add pylsp-workspace-symbols to third-party plugins list #699DescriptionHi,
I've published a third-party plugin that adds workspace/symbol support to pylsp via Jedi — a feature that has been missing since 2022 (see #237, #564, #511 or similar).
Plugin: https://github.com/Hanatarou/pylsp-workspace-symbols
PyPI: https://pypi.org/project/pylsp-workspace-symbols
How it works
- Uses
pylsp_experimental_capabilities to advertise workspaceSymbolProvider: true
- Uses
pylsp_dispatchers to register a custom workspace/symbol handler
- Calls
jedi.Project.complete_search("") and filters client-side by case-insensitive substring match
- Automatically skips noise folders (
.venv, __pycache__, node_modules, etc.)
Install
pip install pylsp-workspace-symbols
Would you consider adding it to the third-party plugins section of the README?
This also serves as a working solution for users while #564 is pending merge.
Thanks! ActivityHanatarou commented on Feb 22, 2026 Hi again,
Just released v0.2.0 — the plugin now also adds inlay hints (textDocument/inlayHint) via Jedi inference, which should be relevant to anyone following #397.
What's new in v0.2.0
- Uses
pylsp_experimental_capabilities to advertise inlayHintProvider: true
- Handles
textDocument/inlayHint requests with a hybrid regex + Jedi approach
- Four independently configurable hint categories:
- Assignment hints —
x = 42 → : int, including self.attr in __init__
- Return hints — unannotated
def/async def → -> str, inferred from the first return
- Raise hints —
raise ValueError(...) → Raises: ValueError
- Parameter hints — positional args at call sites →
a=1, b=2 (keyword args skipped)
- Smart literal fast-path for common types (
str, int, bool, None, list, dict, set, tuple, Callable) without Jedi overhead
- Fully respects existing annotations — annotated functions and variables are never hinted twice
Note on client compatibility: as @claytharrison noted in #397, some clients (e.g. eglot) look for inlayHintProvider as a regular capability rather than an experimental one. This plugin advertises it via pylsp_experimental_capabilities for now, since there is no hookspec for proper capabilities. If pylsp adds one in the future, this will be updated accordingly.
Install
pip install pylsp-workspace-symbols
PyPI: https://pypi.org/project/pylsp-workspace-symbols
Repo: https://github.com/Hanatarou/pylsp-workspace-symbols Hanatarou commented on Feb 23, 2026 Hi again!
Just released v0.2.1 — a small but meaningful improvement for broader client compatibility.
Capabilities (workspaceSymbolProvider, inlayHintProvider) are now injected directly into pylsp's proper capabilities channel via monkey-patch, making the plugin work out-of-the-box with clients like Neovim and eglot that require proper (non-experimental) capabilities. Automatic fallback to pylsp_experimental_capabilities is maintained for clients that honour the experimental channel.
Thanks to @claytharrison for the approach documented in #397 — that comment was exactly the nudge needed to implement this properly. Hanatarou commented on Mar 13, 2026 Hi,
just dropping a quick update: v0.3.0 is now out with several new features beyond workspace symbols:
- 🌳 Call hierarchy (
callHierarchy/incomingCalls, callHierarchy/outgoingCalls)
- 🧬 Type hierarchy (
typeHierarchy/supertypes, typeHierarchy/subtypes)
- 🔗 Document links (URLs in comments/strings + import resolution to stdlib source)
- 🎨 Document colors (hex, RGB, HSL, CSS named colors)
Still zero configuration required — just pip install pylsp-workspace-symbols.
Best regards,
Bruno Eduardo Hanatarou commented on Mar 15, 2026 Hi again,
Just dropping a quick update: v0.4.0 is now out with two new major features and several fixes:
- 🔭 Code lens — reference counts (👥), subclass/override counts (🔗), run entry points (▶), and test markers (🧪)
- 🎨 Semantic tokens — Jedi-backed token classification with full, delta, and range support (opt-in)
Still zero configuration required — just pip install pylsp-workspace-symbols.
Best regards,
Bruno Eduardo Hanatarou commented on Mar 24, 2026 Hi,
Just dropping a quick update: v0.6.0 is now out with a major semantic tokens overhaul — richer token types, more accurate modifiers, and better coverage of Python-specific constructs across the entire codebase.
Still zero configuration required — just pip install pylsp-workspace-symbols.
Best regards,
Bruno Eduardo eyalbold commented on Apr 16, 2026 Yeh, this plugin works well and very much needed feature. Reacted by Bruno Eduardo Reacted by Bruno Eduardo Reacted by Bruno Eduardo Hanatarou commented on Jun 27, 2026 Hi,
Just released v0.7.0 of pylsp-workspace-symbols with a significant new feature: textDocument/onTypeFormatting — seven trigger characters covering smart indent/dedent, dict/annotation spacing, f-string promotion, PEP 8 hash spacing, Google-style docstring templates, and multiline closer alignment. All independently configurable.
PyPI: https://pypi.org/project/pylsp-workspace-symbols/0.7.0
Also wanted to take a moment to acknowledge that python-lsp-server has been very quiet lately — no commits, no responses to open PRs or issues. I hope the project finds new energy soon, whether through existing maintainers returning or new ones stepping up. It's genuinely one of the most valuable tools in the Python ecosystem and a lot of people depend on it. Rooting for it.
Best regards,
Bruno Eduardo
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|