Skip to content

Add workspace-wide Go to Symbol via # mode in quick-open - #726

Merged
mehmetozguldev merged 3 commits into
athasdev:mainfrom
mmiraly:feat/workspace-symbol-search
Jul 18, 2026
Merged

Add workspace-wide Go to Symbol via # mode in quick-open#726
mehmetozguldev merged 3 commits into
athasdev:mainfrom
mmiraly:feat/workspace-symbol-search

Conversation

@mmiraly

@mmiraly mmiraly commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Lets users fuzzy-search for any symbol across the entire project and jump straight to it, opening the containing file if needed, via a new # prefix mode in the Cmd+P quick-open overlay (mirrors the existing file-scoped @ mode).

  • Add LspClient::workspace_symbol and advertise WorkspaceSymbolClientCapabilities during initialize() by @mmiraly
  • Fan the workspace/symbol request out concurrently to every LSP client running for a workspace via tokio::task::JoinSet, tolerating per-server errors without failing the whole call, by @mmiraly
  • Flatten and dedupe results across servers into FlatWorkspaceSymbol, handling both Flat and Nested response shapes by @mmiraly
  • Add # mode to quick-open with a debounced, stale-response-guarded search hook, and route selection through the existing "open file if not already a tab" navigation path (pushing a jump-list entry first) by @mmiraly

Lets users fuzzy-search for any symbol across the entire project and jump
straight to it, opening the containing file if needed, via a new `#` prefix
mode in the Cmd+P quick-open overlay (mirrors the existing file-scoped `@`
mode).

Rust: adds LspClient::workspace_symbol (workspace/symbol request) and
advertises WorkspaceSymbolClientCapabilities during initialize(). LspManager
fans the request out concurrently to every LSP client running for a
workspace via tokio::task::JoinSet, tolerating per-server errors/timeouts
without failing the whole call. The Tauri command flattens and dedupes
results across servers into FlatWorkspaceSymbol, handling both the Flat
(SymbolInformation) and Nested (WorkspaceSymbol) response shapes, including
the OneOf<Location, WorkspaceLocation> variant in lsp-types 0.95.

Frontend: new useWorkspaceSymbolSearch hook debounces the query and guards
against stale responses (unlike @ mode, this is a live per-keystroke IPC
round trip, not an in-memory filter). use-quick-open.ts wires up # mode
alongside @ mode, and selecting a result pushes a jump-list entry before
opening the target file/position (since results can point at files that
aren't open yet).
@mmiraly
mmiraly marked this pull request as ready for review July 14, 2026 21:21
@mehmetozguldev
mehmetozguldev self-requested a review July 16, 2026 21:28
Search every active language-server workspace in the current project instead
of relying on the active editor buffer. Preserve Windows workspace roots and
use collision-safe symbol identities across overlapping results.

Copy link
Copy Markdown
Member

Thanks for this. I pushed a follow-up that makes workspace symbol search cover every active project root, fixes Windows workspace parsing, and prevents symbol key collisions. I also added regression tests for these cases.

@mehmetozguldev
mehmetozguldev merged commit 80c9ac1 into athasdev:main Jul 18, 2026
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.

2 participants