I’m trying to run vscode-java extension as a plugin in Theia. This extension wants to execute editor.action.showReferences but as I see in https://github.com/theia-ide/theia/blob/master/packages/monaco/src/browser/monaco-command.ts#L124 the command to show references is registered with different id (textEditor.commands.showReferences). So if some plugin executes (editor.action.showReferences) it won’t find this command because it was registered as textEditor.commands.showReferences. Should this command be registered with
[original thread by Valeriy Svydenko]
We should NOT change ids of existing commands. Changing existing command can break existing clients.
But introduce new commands in plugin-ext-vscode extension delegating to existing commands. When we don’t need to check whether existign command can be removed or not.
I’ve created an issue for that https://github.com/theia-ide/theia/issues/4084
AFAIK the command alias should be in plugin-ext as the name is generic enough to be used for all plug-ins. (not only in vscode model)
Also is that possible to deprecate older name of commands when they’re close but not the same than in VSCode ?
So for example we may remove them in a future.
I think we should align with vs code commands, at least that should be our longterm goal. I’d prefer to change the commands and register the old one as deprecated somehow.
ok, if we announce it somewhere, changelog?
I’ve just realized that we already have
editor.action.showReferences command registered by Monaco
if we rename
editor.action.showReferences then it will override Monaco command
@vsvydenko are you sure that
editor.action.showReferences does not work at the moment? to me it looks like it is already there and does exactly what we want
ok, not totally, Monaco 1-based, VS Code api 0-bazed
I don’t think we can replace
editor.action.showReferences, it would break
Find References Monaco feature
Would it be possible to intercept a command call from plugins, do conversion of positions/locations and then call our command registry?
It doesn’t work because the handler was registered with id
textEditor.commands.showReferences but plugin searches
command.CommandRegistry. I think we can redirect
editor.action.showReferences command to
textEditor.commands.showReferences as it was done here https://github.com/theia-ide/theia/blob/master/packages/plugin-ext-vscode/src/browser/plugin-vscode-commands-contribution.ts#L35
yes, something like that should work
There are a bunch of commands that are predefined in vscode: vscode extensions may rely on them being present:
I think we’ll have to provide them all if we want to be vscode-compatible.