Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add theia.Uri.joinPath and theia.PluginContext.extensionUri API #9199

Merged
merged 1 commit into from
Mar 18, 2021

Conversation

svor
Copy link
Contributor

@svor svor commented Mar 15, 2021

What it does

How to test

  1. Clone https://github.com/RomanNikitenko/vscode-test-extension.git
  2. Build the extension using yarn and copy it to theia/plugins folder.
  3. Start Theia and open Theia project as a workspace folder - it's required to have some files for testing.
  4. F1 => run Test 'vscode.Uri.joinPath'

The command for testing should just display a notification with info about path to package.json file.

Review checklist

Reminder for reviewers

@vince-fugnitto vince-fugnitto added the vscode issues related to VSCode compatibility label Mar 15, 2021
Copy link
Contributor

@RomanNikitenko RomanNikitenko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested both: extensionUri and joinPath - it works well for me!

joinPath_test

Copy link
Member

@vince-fugnitto vince-fugnitto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@svor please squash to a single commit before we can merge the changes 👍

Signed-off-by: svor <vsvydenk@redhat.com>
@svor
Copy link
Contributor Author

svor commented Mar 16, 2021

@svor please squash to a single commit before we can merge the changes +1

done

@svor
Copy link
Contributor Author

svor commented Mar 17, 2021

@vince-fugnitto is this PR good enough to merge?

@vince-fugnitto
Copy link
Member

vince-fugnitto commented Mar 17, 2021

@svor just a question, can we re-use Utils to make use of the joinPath method?

@svor
Copy link
Contributor Author

svor commented Mar 17, 2021

@svor just a question, can we re-use Utils to make use of the joinPath method?

@vince-fugnitto in case we update vscode-uri to 3.0.1. Currently Theia uses 2.1.1

@vince-fugnitto
Copy link
Member

vince-fugnitto commented Mar 17, 2021

@svor just a question, can we re-use Utils to make use of the joinPath method?

@vince-fugnitto in case we update vscode-uri to 3.0.1. Currently Theia uses 2.1.1

Thanks for following up, it's probably something we should look into updating (to a version supported by our monaco) rather than add the wrapper around it for the plugin system.

Copy link
Member

@vince-fugnitto vince-fugnitto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functionally the pull-request works well 👍

@svor
Copy link
Contributor Author

svor commented Mar 18, 2021

Thanks for following up, it's probably something we should look into updating (to a version supported by our monaco) rather than add the wrapper around it for the plugin system.

@vince-fugnitto Thanks for your review, after updating monaco all these problem related to Uri should be resolved but before that I don't see another way except adding Uri class with the implementation of joinPath.

@vince-fugnitto
Copy link
Member

Thanks for following up, it's probably something we should look into updating (to a version supported by our monaco) rather than add the wrapper around it for the plugin system.

@vince-fugnitto Thanks for your review, after updating monaco all these problem related to Uri should be resolved but before that I don't see another way except adding Uri class with the implementation of joinPath.

I'm fine with the approach for now :) it is definitely something to think about when we do the upgrade thank you!

@svor
Copy link
Contributor Author

svor commented Mar 18, 2021

@vince-fugnitto @RomanNikitenko I don't have permissions to merge the PR, who is the best person to do that or we need more reviewers here?

@ericwill ericwill mentioned this pull request Mar 18, 2021
46 tasks
@paul-marechal paul-marechal merged commit 37a0a2f into eclipse-theia:master Mar 18, 2021
@vinokurig
Copy link
Contributor

@svor Looks like your commit caused this bug #9221. The timeline provider which is implemented in the vscode git plugin doesn't go to this condition: https://github.com/microsoft/vscode/blob/3767f97bc32b815802ceeac007a142c56581ca8b/extensions/git/src/model.ts#L423

@paul-marechal
Copy link
Member

paul-marechal commented Mar 18, 2021

@vinokurig nice catch, it seems like this is due to the way the URI class from vscode-uri is extended now. There's plenty of places in the plugin-ext package where the new extended class is not used, potentially leading to extensions handling both types of instances depending on what API they use.

From there it is not hard to imagine landing in the scenario where hint has the URI type from vscode-uri, which will fail the instanceof check done against the new class.

list of places where vscode-uri is still used...

cmd>rg -g "packages/plugin-ext/**/*.ts" "vscode-uri"

packages\plugin-ext\src\plugin\uri.ts
17:import { URI as Uri } from 'vscode-uri';

packages\plugin-ext\src\plugin\window-state.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\editors-and-documents.ts
25:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\workspace.ts
37:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\webviews.ts
22:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\node\debug\debug.ts
20:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\type-converters.ts
19:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\types-impl.ts
28:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\timeline.ts
29:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\quick-open.ts
24:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\scm.ts
38:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\preferences\configuration.spec.ts
23:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\preferences\configuration.ts
20:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\plugin-manager.ts
41:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\plugin-icon-path.ts
18:import { URI as Uri } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages.ts
36:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\definition.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\type-definition.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\signature.ts
23:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\selection-range.ts
25:import { URI } from 'vscode-uri/lib/umd';

packages\plugin-ext\src\plugin\languages\semantic-highlighting.ts
27:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\rename.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\reference.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\range-formatting.ts
20:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\outline.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\on-type-formatting.ts
20:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\link-provider.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\lens.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\implementation.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\hover.ts
18:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\folding.ts
19:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\document-highlight.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\document-formatting.ts
20:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\diagnostics.ts
24:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\declaration.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\completion.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\color.ts
18:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\code-action.ts
18:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\languages\call-hierarchy.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\known-commands.ts
18:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\known-commands.spec.ts
19:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\workspace-main.ts
21:import { URI as Uri } from 'vscode-uri';

packages\plugin-ext\src\main\browser\window-state-main.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\webviews-main.ts
18:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\timeline-main.ts
21:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\text-editors-main.ts
17:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\scm-main.ts
39:import { URI as vscodeURI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\quick-open-main.ts
38:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\file-system-main-impl.ts
26:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\menus\menus-contribution-handler.ts
19:import { URI as CodeUri } from 'vscode-uri';

packages\plugin-ext\src\main\browser\documents-main.ts
26:import { URI as CodeURI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\debug\debug-main.ts
32:import { URI as Uri } from 'vscode-uri';

packages\plugin-ext\src\main\browser\comments\comments-main.ts
37:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\comments\comments-service.ts
18:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\callhierarchy\callhierarchy-type-converters.ts
21:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\comments\comments-contribution.ts
25:import { URI } from 'vscode-uri';

packages\plugin-ext\src\main\browser\custom-editors\custom-editors-main.ts
30:import { URI } from 'vscode-uri';

packages\plugin-ext\src\common\plugin-api-rpc-model.ts
21:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\file-system-event-service-ext-impl.ts
33:import { URI, UriComponents } from 'vscode-uri';

packages\plugin-ext\src\plugin\documents.ts
24:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\document-data.ts
20:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\dialogs.ts
19:import { URI as Uri } from 'vscode-uri';

packages\plugin-ext\src\plugin\decorations.ts
27:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\custom-editors.ts
26:import { URI } from 'vscode-uri';

packages\plugin-ext\src\plugin\comments.ts
21:import { URI } from 'vscode-uri';

packages\plugin-ext\src\common\rpc-protocol.ts
28:import { URI as VSCodeURI } from 'vscode-uri';

packages\plugin-ext\src\plugin\file-system-ext-impl.ts
31:import { URI, UriComponents } from 'vscode-uri';

From there we either update most places to make sure only our own instance type is being passed around, or we don't subclass the URI type? Can we just add a new property directly onto the class reference (monkey-patching)?

@svor
Copy link
Contributor Author

svor commented Mar 19, 2021

@vinokurig @marechal-p thank you for your comments, I tried to reuse the new extended class everywhere in plugin-ext and it didn't help.
I don't see another way except revert current changes and wait when monaco will be updated. WDYT?

@svor
Copy link
Contributor Author

svor commented Mar 19, 2021

PR to revert changes: #9222

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
vscode issues related to VSCode compatibility
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants