arduino / arduino-language-server

An Arduino Language Server based on Clangd to Arduino code autocompletion
GNU Affero General Public License v3.0
133 stars 11 forks source link

Failed to start the language server. Error: command 'clangd.applyFix' already exists #126

Closed kittaakos closed 2 years ago

kittaakos commented 2 years ago

Describe the problem

Related to https://github.com/arduino/arduino-language-server/issues/125#issue-1313341722.

The second instance fails when I start multiple language servers in the workspace.

Failed to start the language server. Error: command 'clangd.applyFix' already exists
    at o.registerCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:85:61206)
    at Object.registerCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:106:30919)
    at ExecuteCommandFeature.register (/Users/a.kitta/dev/git/vscode-arduino-tools/node_modules/vscode-languageclient/lib/common/executeCommand.js:50:1)
    at ExecuteCommandFeature.initialize (/Users/a.kitta/dev/git/vscode-arduino-tools/node_modules/vscode-languageclient/lib/common/executeCommand.js:30:1)
    at LanguageClientPerSketch.initializeFeatures (/Users/a.kitta/dev/git/vscode-arduino-tools/node_modules/vscode-languageclient/lib/common/client.js:1286:1)
    at LanguageClientPerSketch.doInitialize (/Users/a.kitta/dev/git/vscode-arduino-tools/node_modules/vscode-languageclient/lib/common/client.js:823:1)
    at processTicksAndRejections (/Users/a.kitta/dev/git/vscode-arduino-tools/lib/internal/process/task_queues.js:96:5)
    at async LanguageClientPerSketch.start (/Users/a.kitta/dev/git/vscode-arduino-tools/dist/bundle.js:13668:13) {stack: 'Error: command 'clangd.applyFix' already exis…vscode-arduino-tools/dist/bundle.js:13668:13)', message: 'command 'clangd.applyFix' already exists'}

To reproduce

See #125 for the steps.

Expected behavior

It's possible to start multiple language servers from the same workspace.

Arduino Language Server version

0.7.1

Arduino CLI version

0.25.0

Operating system

macOS

Operating system version

12.3.1

Additional context

No response

Issue checklist

kittaakos commented 2 years ago

I am going to close it as invalid.

The client must handle the command ID collision if they want to support a multi-LS setup.

For example, remap the command-id to $sketchUri:command-id with an LSP middleware.