Commit Graph

177 Commits

Author SHA1 Message Date
Johannes Rieken ab6087f090 update format ranges API proposal based on feedback (#179166)
https://github.com/microsoft/vscode/issues/158776
2023-04-04 19:19:15 +02:00
Johannes f6d3226ade remove inactive remains of Range | Range[] 2023-03-30 16:57:19 +02:00
Johannes Rieken a47c78516c Merge branch 'main' into multirange-formatting 2023-03-30 16:33:11 +02:00
Matt Bierner ce00cd7812 Add initial prototype for JS/TS move to file refactoring (#178535)
Add initial support for move to file

Fixes #176705
For https://github.com/microsoft/TypeScript/pull/53542
2023-03-28 16:49:50 -07:00
Johannes ab81ed0b35 fix breakage 2023-02-24 18:06:28 +01:00
Johannes 9a6bf40e40 fix https://github.com/microsoft/vscode/issues/173501 2023-02-24 17:10:07 +01:00
Cristopher Claeys 636dd226c6 Address PR comments 2023-02-16 19:43:29 +01:00
Cristopher Claeys 17f5d8b168 Add support for multiRange formatting 2023-02-16 19:43:29 +01:00
Henning Dieterichs c3bf0fb83c Fixes #172384 2023-01-30 14:35:39 +01:00
Matt Bierner a8c16a0d82 Try to reduce size of completions DTO (#164087)
JS/TS can return a lot of completions. I noticed that just parsing this was taking a bit of time, so I tried to reduce the message size with the following changes:

- Inline the command properties on `ISuggestDataDto`
- Drop the `title` and `tooltip` from the command since we don't use these
- Shorten the delegate command name
- If using an `$ident` command, don't send over the command arguments since the arguments are always `[$ident]`
- Make commit characters a string instead of an array

Here's an example of a dto for a completion item before:

```
{"x":[2,0],"a":"$","b":4,"e":"15","i":0,"k":[".",",",";","("],"m":{"$ident":867,"id":"_vscode_delegate_cmd_l9g7z48t","title":"","arguments":[867]}}
```

And after:

```
{"x":[1,0],"a":"$","b":4,"e":"15","i":0,"k":".,;(","n":11,"o":"__vsl9g7vfno"}
```

For global completions in a JS/TS file, this makes the completion response a little over 40% smaller.
2022-10-24 14:16:52 -07:00
Baptiste Augrain 6e76e0e1b7 feat: select the folding provider to use (#157434)
* feat: support extension id in property `editor.foldingStrategy`

* work in progress

* use new setting 'editor.defaultFoldingRangeProvider' defined in workspace

* revert editorOptions changes

Co-authored-by: Martin Aeschlimann <martinae@microsoft.com>
2022-10-23 15:45:34 +02:00
Matt Bierner 1d45633795 Add DisposableMap helper (#163006)
Adds `DisposableMap` to help manage the lifecycle of maps of  disposable values. This is useful for a few reasons:

- `DisposableMap` is itself disposable, so you can use it with `_register` or add it to a `DisposableStore`
- The implementation of `set` on `DisposableMap` prevents leaking values on override
- The `delete` implementation also makes sure it disposes of the deleted values
2022-10-07 15:28:36 -07:00
Matt Bierner f86ceb6749 Use ids instead of indexes for resolving data transfer files (#160349)
When an extension needs to read a data transfer file, we were previously using the index of the item. This is unreliable as it means we have to ensure the array of data transfer items never changes order

With this PR, i've switched us to use a unique `id` instead
2022-09-07 13:18:49 -07:00
Johannes Rieken e0ccceeb04 Use canonical uris when applying bulk edits (#159067)
* Use canonical uris when applying bulk edits

* move `reviveWorkspaceEditDto` into mainThreadBulkEdit
* make `reviveWorkspaceEditDto` require the uri ident service
* add test

fixes https://github.com/microsoft/vscode/issues/158845

* revive first, otherwise the `is` checks don't work

* fix tests
2022-09-06 14:51:11 +02:00
Matt Bierner 7f6984e71b Fix copy paste for files (#155915)
This fixes the copy paste proposed api to correctly support pasting of files and file data
2022-07-21 16:49:25 -07:00
Matt Bierner f17b33faf2 Use .?method() in more places (#152112)
Switches simple patterns like:

```ts
if (some.thing) {
    some.thing.method();
}
```

to:

```ts
some.thing?.method()
```

This is more concise and avoids having to repeat the `some.thing` part
2022-06-15 16:28:31 +00:00
Johannes 3622010b64 Merge branch 'main' into joh/voluminous-lobster 2022-06-09 09:08:20 +02:00
Matt Bierner d7c90c2b2b Update text editor drop proposal (#151552)
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
2022-06-08 17:44:28 -04:00
Matt Bierner 370dfd5fee Iterate on paste edit provider api (#151477)
* 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
2022-06-08 15:06:55 -04:00
Johannes 0656d21d11 auto-fixed prefer-const violation 2022-06-08 17:49:21 +02:00
Matt Bierner 528ee1ae3d Allow multiple entries with the same mimetype in dataTransfer (#150425)
Currently our data transfer implementation only allows a single entry of each mimeType. There can only be a single `image/gif` file for example.

However this doesn't match how the DOM apis work. If you drop multiple gifs into VS Code for example, the DataTransfer you get contains entries for each of the gifs.

This change allows us to also support DataTransfers that have multiple entries with the same mime type. Just like with the DOM, we support constructing these duplicate mime data transfers internally, but do not allow extensions to create them

As part of this change, I've also made a few clean ups:

- Add helpers for creating dataTransfer items
- Clarify when adding a data transfer item should `append` or `replace`
- Adopt some helper functions in a few more places
2022-05-25 18:29:28 -07:00
Matt Bierner e4f7f6a9da Add PasteEditProvider (#107283)
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
2022-05-25 12:27:58 +02:00
Matt Bierner 91923bab48 Cleanup data transfer types (#149774)
This change attempts to clean up our internal data transfer types

- Replace `IDataTransfer` (which was just an alias for map) with a `VSDataTransfer` helper class.

    This lets us add helpers and also restrict what you can do on a datatransfer

- Move `DataTransferDTO` types into `protocol`

- Move `DataTransferTypeConverter` into `typeConvert`

- Don't return internal types to ext host callers

     For example, previously we leaked `IDataTransfer` out into providers / controllers. Instead we should always return an instance of `vscode.DataTransfer` to extensions
2022-05-23 23:28:02 +00:00
Matt Bierner 116c10e0ee Add drop into editor option (#147049)
* Add drop into editor option

This change adds a new `enableDropIntoEditor` editor option that enables/disables dropping an extermal resources into an editor

Previously this option was exposed `IEditorConstructionOptions`, however this did not correctly disable drop into editor when dragging and dropping unknown types (such as dragging emoji from the MacOS emoji panel)

With this change, disabling `workbench.editor.dropIntoEditor.enabled` should fully disable the new drop into behavior

* Move drop into editor from workbench to editor

This moves the `dropIntoEditorContribution` from the workbench layer to the platform layer

As part of this change, I also add to move `extractEditorsDropData` up to `platform` so that it could be used from the `editor` layer

This change also enables drop into for the SCM message box

* Fixing monaco errors

* Revert id change
2022-05-17 11:35:04 -07:00
Matt Bierner 1c7ab35761 Rename to DocumentOnDropEditProvider (#149730)
This change renames `DocumentOnDropProvider` to `DocumentOnDropEditProvider`. This new name aligns with the existing `DocumentFormattingEditProvider`
2022-05-17 09:26:54 -07:00
Henning Dieterichs f98ae66391 Merge pull request #148767 from microsoft/hediet/inline-completion-update
Updates inlineCompletions proposal from inlineCompletionsNew proposal.
2022-05-05 13:51:21 +02:00
Henning Dieterichs bae40168ae Fixes issues from code review 2022-05-05 09:54:41 +02:00
Matt Bierner 93fd393a0e Add API proposal for reading files in data transfer (#148596)
* Add experimental support for reading files in data transfer

Adds a new `DataTransfer.asFile` method which lets you get file objects from a `DataTransfer`. This is currently only hooked up for drop into editors.

A few follow ups:

- Right now the file data is also read eagerly when it is transfered to the extension host. Before shipping this we would make this happen lazily instead
- The drop into editor api does not provide a nice way to do anything with the dropped files.

    We should at least support returning a `WorkspaceEdit`. However `WorkspaceEdit` only supports text files, so we would also need to add an API that lets it deal with binary files

* Make `asFile` return a value instead of a promise

`asFile().data()` already returns a promise so `asFile` doesn't also need to be async

* Trying resolving data files transfer lazily

* Cleaning up code for lazy drop

* Remove testing code

* Remove unneeded buffer serialize

* 💄
2022-05-04 12:59:27 -07:00
Johannes c4dd43dd79 💄 2022-04-14 14:53:24 +02:00
Matt Bierner 23c7781b9f Create drop into editor contribition
Will use this to add a default implementation and other features for drop into editor
2022-04-04 15:56:27 -07:00
Matt Bierner ae0f691839 _codeEditorService is optional in tests 2022-04-01 16:32:53 -07:00
Matt Bierner 44ffeba237 Switch to provider based model for on drop
This simplifies implementing the provider and also give potentially gives us more control over how the drop happens
2022-04-01 15:51:38 -07:00
Alex Dima 8c9663f461 Remove the static LanguageConfigurationRegistry 2022-03-31 16:25:57 +02:00
Alex Dima 6136c815bc Renames 2022-02-04 15:01:44 +01:00
Johannes Rieken 4a130c40ed enable @typescript-eslint/member-delimiter-style, https://github.com/microsoft/vscode/issues/140391 2022-02-02 14:35:33 +01:00
Johannes Rieken 54dec24a4d Merge pull request #141872 from microsoft/joh/langFeatures 2022-02-01 10:40:19 +01:00
Alex Dima e2541e9263 Move extHostCustomers.ts to workbench/services (#141003) 2022-01-31 19:57:21 +01:00
Johannes Rieken 1ad8719a2f replace CodeActionProviderRegistry with service property 2022-01-31 18:17:56 +01:00
Johannes Rieken 56a52eea57 replace DocumentSemanticTokensProviderRegistry with service property 2022-01-31 18:02:25 +01:00
Johannes Rieken b9686f35a3 replace DocumentRangeSemanticTokensProviderRegistry with service property 2022-01-31 17:48:44 +01:00
Johannes Rieken 530f762d14 replace EvaluatableExpressionProviderRegistry with service property 2022-01-31 17:29:36 +01:00
Johannes Rieken fe103b623e replace InlineValuesProviderRegistry with service property 2022-01-31 17:26:56 +01:00
Johannes Rieken 672633f825 replace LinkedEditingRangeProviderRegistry with service property 2022-01-31 17:17:04 +01:00
Johannes Rieken dd79e3fcbd replace CompletionProviderRegistry with service property 2022-01-31 16:45:30 +01:00
Johannes Rieken f42bd599c4 replace InlineCompletionsProviderRegistry with service property 2022-01-31 16:10:04 +01:00
Johannes Rieken ff47d8fd85 replace LinkProviderRegistry with service property 2022-01-31 15:27:02 +01:00
Johannes Rieken 9308c64386 replace ColorProviderRegistry with service property 2022-01-31 14:16:32 +01:00
Johannes Rieken 6374172cb6 replace FoldingRangeProviderRegistry with service property 2022-01-31 14:10:27 +01:00
Johannes Rieken 05a6debf18 replace SelectionRangeRegistry with service property 2022-01-31 14:07:00 +01:00
Johannes Rieken aa5e35f7f2 Merge branch 'main' into joh/langFeatures 2022-01-31 12:47:42 +01:00