Skip to content

Simpler quick fix API  #46249

Open
Open
@mjbvz

Description

@mjbvz

Follow up on #27614

Search terms

  • code action / codeaction
  • quick fix / quickfix
  • getCodeFixes
  • getSupportedCodeFixes

Problem

The getCodeFixes API currently takes a range plus a diagnostic code. Currently, the range we pass to it has to match the range of the diagnostic we are trying to fix. This API is difficult for editors to implement for a few reasons:

  • We need to make multiple requests if we want to display quick fixes for multiple (potentially overlapping) diagnostics
  • The editor has to ensure that the diagnostics as fully synchronized with the current text buffer state before making the request. It's easy for the editor's diagnostics to get temporarily out of sync with those on the server
  • The editor has to keep around a list of diagnostics to make these requests

Proposal

We should consider a new quick fix API that addresses these problems and also is better aligned with the language server protocol. My proposal is that instead of having to think about diagnostics, editors pass the TS Server a range and are returned the valid quick fixes in that range.

Here's what the VS Code api for this looks like:

https://github.com/microsoft/vscode/blob/9a21b536639c2d986c50fb51b7da67bafdb50c9b/src/vs/vscode.d.ts#L2336

And here's the LSP:

https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_codeAction

Metadata

Metadata

Assignees

Labels

APIRelates to the public API for TypeScriptDomain: TSServerIssues related to the TSServerIn DiscussionNot yet reached consensusRescheduledThis issue was previously scheduled to an earlier milestoneSuggestionAn idea for TypeScriptVS Code PriorityCritical issues that VS Code needs fixed in the current TypeScript milestone

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions