microsoft / microsoft/language-server-protocol

Allow for 'incomplete' result in a `workspace/symbol` response

Open
#307 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature-request workspace symbols
Dominant language
TypeScript
Stars
13k
Forks
1k
Avg merge
6d 1h
Merged PRs (30d)
10

Description

See: https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#workspace_symbol

The response is defined as being a simple SymbolInformation[]. It would be useful to enhance the protocol to allow a server to return only a subset of symbols for very broad queries and somehow indicate to the client that the returned list is incomplete (so, for example, the client should not rely on the list to filter down as a user types more in their search box).

This would be useful in cases where the 'query' is a short string (possibly even the empty string) which would otherwise result in a huge 'complete' list which could be very lengthy to compute and consume a lot of memory and bandwidth to transmit as well.

I.e. I would like something similar as is being done for completion item list (https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#completion-request) which allows for a boolean 'isIncomplete' flag.

Of course, even without this flag, it is always possible for a server to cut short the list of results. But without a way to convey the result's incompleteness to the client, the client has no way to know whether it is safe to use the posibly incomplete list and filter it down further or make a new request when the user types more characters in the search box.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with protocol.md at the workspace/symbol section and compare its response definition with the completion request section linked in the issue. Done is a documented response contract that lets clients distinguish incomplete symbol results and explains the expected client behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.