So, two problems. One, we didn't actually fully re-sync testing
decorations when explicitly updated by the extension, since we attempted
to get the test URI from the _diff_ which would never actually be
present on single updates (since the test item URI cannot be changed).
I think this was the main problem people saw.
So, this fixes that. It also applies a change so that we only sync the
ranges to what the extension gives us if the document version is up to
date with what was in the extension host. This should avoid syncing
decorations to the wrong place--instead just use VS Code's own decoration
location tracking until we get a newer update from the extension.
Fixes#158475Fixes#153304
* Add canonical workspace identifier proposed API
* Use canonical id to store and resume edit sessions
* Add git extension workspace identity provider
* Fix warning incorrectly showing up
* Make auto resume behavior opt in
* * Create a separate service
* Accept WorkspaceFolder instead of URI
* Return string instead of object
* Make edit session restores resilient to provider registration races
* Introduce an activation event
* Activate contributing extension before using provider
* `CanonicalWorkspaceIdentity` -> `EditSessionIdentity`
* Show progress while resuming edit session
* Store edit session even if extension will take care of opening target workspace
* Address most of PR feedback
* `IEditSessionsWorkbenchService` -> `IEditSessionsStorageService`
* Unregister provider in renderer
* Split out proposal into new `editSessionIdentityProvider.d.ts`
* Fix bad merge
* Always show progress in window
* Convert URI schemes
* Remove the notebookEditorDecorationType API proposal
Fixes#146838
* Remove all the infastructure around the now removed notebookEditorDecorationType api
This updates the text editor drop proposal (#142990). This change introduces `DocumentDropEdit` which removes the need for `SnippetTextEdit`. This interface may also be extended in the future with additional metadata
* Iterate on paste edit provider api
For #30066
- Pass all selections to paste providers. For #151326
- Introduce `DocumentPasteEdit` as return type. This new type uses an `insertText` that is applied to every paste location (for multicursor), plus an optional additional edit
- Add `DocumentPasteProviderMetadata`. This lets extensions tell us which types of mimetypes they are interested in, letting us avoid round trips if no extensions care about the pasted data
* Correctly batch insertText
For #30066
This adds a new `documentPaste` api proposal that lets extensions hook into copy and paste.
This can be used to do things such as:
- Create link when pasting an image
- Bring along imports when copy and pasting code
* Finalize NotebookEditor api proposal
Fixes#149271
This finalizes most parts of the NotebookEditor api proposal. I haven't removed the proposal entirely as there are still a few parts being left behind:
- The deprecated properties/functions
- A few contribution points such as `notebook/cell/executePrimary`
* remove extra quote
* Add notebookWorkspaceEdit api proposal
Splits a new `notebookWorkspaceEdit` out of the existing `notebookEditorEdit` proposal.
The notebookWorkspaceEdit reflects the api that we believe should be finalized instead of `notebookEditorEdit`. It lets extensions use workspaceedits to change cells in a notebook or replace the metadata for a notebook document
As part of this change, I've also marked all of the `notebookEditorEdit` apis as deprecated (except for `replaceNotebookMetadata` which exists in the new proposal too)
* Export type from extHost
* Remove the textDocumentNotebook API proposal
All consumers have now been migrated off of this proposal, so it is safe to remove from our code
* Remove deprecated api usage from test