nim-lang / vscode-nim

A VS Code plugin for the Nim language
Other
75 stars 8 forks source link

Fix parameters for running nimlangserver.cmd on Windows #80

Closed Phytolizer closed 1 month ago

Phytolizer commented 1 month ago

New node.js versions on Windows require you to pass {shell: true} in ChildProcess.spawn for .cmd scripts, as a mitigation for the BatBadBut vulnerability from earlier this year (I think).

Currently, attempting to run the language server gives this output:

[Error - 6:05:15 PM] Nim Language Server client: couldn't create connection to server.
Error: spawn EINVAL
    at ChildProcess.spawn (node:internal/child_process:421:11)
    at Object.spawn (node:child_process:799:9)
    at c:\Users\me\.vscode-insiders\extensions\nimlang.nimlang-1.0.0\node_modules\vscode-languageclient\lib\node\main.js:426:46
    at LanguageClient.createConnection (c:\Users\me\.vscode-insiders\extensions\nimlang.nimlang-1.0.0\node_modules\vscode-languageclient\lib\common\client.js:1144:28)
    at LanguageClient.start (c:\Users\me\.vscode-insiders\extensions\nimlang.nimlang-1.0.0\node_modules\vscode-languageclient\lib\common\client.js:681:32)
    at startLanguageServer_2214593244 (c:\Users\me\.vscode-insiders\extensions\nimlang.nimlang-1.0.0\out\nimvscode.js:17412:8)
    at activate_553649241 (c:\Users\me\.vscode-insiders\extensions\nimlang.nimlang-1.0.0\out\nimvscode.js:19607:6)
    at m.n (c:\Users\me\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:144:6409)
    at m (c:\Users\me\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:144:6372)
    at m.l (c:\Users\me\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:144:5829)

I found https://github.com/nodejs/node/issues/52554 by attempting to narrow down this error.

It can be worked around for now by setting nim.lsp.path to the direct path to nimlangserver.exe (for me this is "C:\Users\me.nimble\pkgs2\nimlangserver-1.4.0-20579f6b83a2b3b7b2af7e3e9cef94c27266fe1b\nimlangserver.exe").