We should ensure that operations such as documentSymbols, diagnostics, and semantic tokens are only run once for a given document. A new request should automatically cancel the previous request. A quick scan of other LSP implementations indicates that this should be handled for us automatically by the LSP framework - we shouldn't need explicit handling / debouncing.
Feature
ResponseError
on cancellationExample of
runSafeAsync
implementation - https://github.com/microsoft/vscode/blob/aa31bfc9fd1746626b3efe86f41b9c172d5f4d23/extensions/css-language-features/server/src/utils/runner.ts#L21Other implementation examples can be found in the vscode tree: https://github.com/microsoft/vscode/tree/aa31bfc9fd1746626b3efe86f41b9c172d5f4d23/extensions/css-language-features/server/src
Implementation / Validation Notes
We should ensure that operations such as documentSymbols, diagnostics, and semantic tokens are only run once for a given document. A new request should automatically cancel the previous request. A quick scan of other LSP implementations indicates that this should be handled for us automatically by the LSP framework - we shouldn't need explicit handling / debouncing.