elixir-tools / next-ls

The language server for Elixir that just works. Ready for early adopters!
https://www.elixir-tools.dev/next-ls
MIT License
699 stars 40 forks source link

Windows Support #102

Open RoboZoom opened 1 year ago

RoboZoom commented 1 year ago

I attempted to enable NextLS via the VSCode Extension, however the client was not created.

The first question is, in a general sense, is NextLS viable in windows?

If NextLS supports windows, but the initialization script is unsupported in windows, then there is an issue packaging and initializing it for windows users of VSCode.

simonmcconnell commented 1 year ago

Trying to use NextLS in WSL:

[Error - 9:56:36 PM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 9:56:36 PM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:96701)
    at _.stop (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:96282)
    at _.stop (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:102789)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

Trying to use NextLS on Windows:

[Error - 9:58:50 PM] NextLS client: couldn't create connection to server.
Launching server using command c:\Users\simon\scoop\apps\vscode\1.80.1\data\extensions\elixir-tools.elixir-tools-0.3.0\bin\nextls failed. Error: spawn c:\Users\simon\scoop\apps\vscode\1.80.1\data\extensions\elixir-tools.elixir-tools-0.3.0\bin\nextls ENOENT
apoorv-2204 commented 1 year ago

windows is very weird, when dealing with dev tools.

mhanberg commented 1 year ago

I now have windows binaries uploaded to the releases, but I still use a bash script so I'll need to convert that to a bat script or might not need it at all.

Should be good to test on windows after that

cvkmohan commented 1 year ago

https://github.com/elixir-tools/next-ls/pull/144 - now that binaries are getting downloaded - will it work in WSL?

mhanberg commented 1 year ago

@cvkmohan i believe so. @zachallaun has gotten it working in WSL2 i believe, but he needed to update to a more recent Ubuntu version. he tried on 20.XX and the version of glibc was too old.

cvkmohan commented 1 year ago

I can confirm that on WSL2, with Ubuntu 22.04, it is working. It downloaded the executable.
Thanks a lot. BTW, I am a big fan of your Temple library.

One question: what is the correct place for the code completion of definitions? I mean - when you type defmodule or def end automatically appearing. In this extension or code snippets?

mhanberg commented 1 year ago

Completions are not implemented yet, but are coming up soon on the roadmap.

BTW, I am a big fan of your Temple library.

That's awesome to hear! The https://www.elixir-tools.dev is built with Temple.

marking this comment as off topic tho, to keep the issue focused. You can open a github discussion on the Org for general questions or join the discord invite link

spapas commented 1 year ago

Hey friends, tried installing it on windows and getting:

2023-11-01 12:45:45.869 [error] Error: Download failed (https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64, status=404)
    at c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:432487
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at l.force (c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:432228)
    at c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:431445
    at e.activate (c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:430807)
    at v.n (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:6205)
    at v.m (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:6168)
    at v.l (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:5625)
2023-11-01 12:49:48.601 [info] ExtensionService#_doActivateExtension vscode.simple-browser, startup: false, activationEvent: 'onOpenExternalUri:https'

Plase notice that the correct filename is next_ls_windows_amd64.exe !

chgeuer commented 9 months ago

Yes, like @spapas mentioned

2024-01-19 09:20:06.744 [info] ExtensionService#_doActivateExtension elixir-tools.elixir-tools, startup: false, activationEvent: 'onLanguage:elixir'
2024-01-19 09:20:10.850 [error] Activating extension elixir-tools.elixir-tools failed due to an error:
2024-01-19 09:20:10.850 [error] Error: Download failed (https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64, status=404)
    at c:\Users\chgeuer\.vscode\extensions\elixir-tools.elixir-tools-0.12.1\dist\extension.js:2:432487
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
cvkmohan commented 8 months ago

I tried all I could - but - had to come back here. After reinstalling wsl2 on my system, next-ls stopped working. image glibc is 2.35 - and I tried all troubleshooting in https://www.elixir-tools.dev/docs/next-ls/troubleshooting/

  1. No logs are getting recorded.
  2. I have pasted vscode Output tab error in the above image.
  3. When I start nextls independently and run it in tcp mode it is working fine.

However, when I install the latest vscode extension and reopen the download is not happening into /.cache/elixir-tools directory. Even if I have downloaded the executable manually and placed in the directory - vscode extension is not picking it up - and - autostart is not working.

mhanberg commented 8 months ago

I'll try and get windows installed today and try it out.

Sorry about that!

cvkmohan commented 8 months ago

My frustration in the question is more about - It was working earlier - not working now - what did I miss? I installed lexical-vscode package and it shows a message that it is downloading lexical executable. I am not getting the same message with elixir-tools.vscode package. Problem might be mostly there. Unable to overwrite older version? Thinking aloud... if it helps. You are doing amazing work. We should be thankful - you should not be sorry!

mhanberg commented 8 months ago

It was working earlier - not working now - what did I miss?

There is a bug in the auto updater that I fixed yesterday, but if you delete Next LS and reopen VSCode, it should prompt you to install it.

I just tested on my Mac and it worked, so I'm not really sure what is different about running VSCode on Windows using WSL2, which will require me to install and debug.

You are doing amazing work. We should be thankful - you should not be sorry!

🙇

cvkmohan commented 8 months ago

That updater is in 0.19.1 and that is not yet released?

I tried reinstalling.

  1. Removed elixir-tools.vscode from vscode
  2. rm -rf ~/.cache/elixir-tools
  3. Restart vscode
  4. Install elixir-tols.vscode Even on restart, it is not prompting to download. Socket Closed is the message in Output window.
mhanberg commented 8 months ago

That updater is in 0.19.1 and that is not yet released?

Correct, but that should only effect an existing Next LS installation trying to update itself.

Thanks for the repro steps.

Can you also include your Windows versions and WSL2 information? like what distro do you have installed with WSL2, also VSCode version

cvkmohan commented 8 months ago

Windows 11. WSL2 - Ubuntu 22.04

mhanberg commented 8 months ago

Thanks, downloading as ISO now

mhanberg commented 8 months ago

Okay, sort of bad-ish news...

Works on my machine 😅.

Link to a video recording of me installing the extension for the first time: https://f005.backblazeb2.com/file/elixir-tools/elixir-tools-wsl-test.mp4

Timeline is basically

cvkmohan commented 8 months ago

Thanks. You took a lot of effort. One difference I could spot is - you are using nix for everything - and - I am using asdf for elixir. Not sure if it makes any difference. Another thing to ponder is the burrito file is not there in the local/.hex folder. I guess some caching somewhere in my system with the old version and is not getting deleted. I will come back to you when I find something. Till then, please ignore this and move on. Again, thanks a lot for the prompt response and huge time you put in.

mhanberg commented 8 months ago

it did actually crash after i let it sit there for a minute, investigating that now, but seems orthogonal to your issue.

I don't think asdf vs nix will make a difference for yours not even prompting you to install it

Another thing to ponder is the burrito file is not there in the local/.hex folder.

i'm not sure what you mean here

I guess some caching somewhere in my system with the old version and is not getting deleted.

you can uninstall from the command palette (search elixir tools and it will be there), then restart to see if it prompts you to download

Till then, please ignore this and move on.

no 😎

cvkmohan commented 8 months ago

Interestingly, when I try to uninstall from the command palette, it gives an error message that Failed to uninstall NextLS from nextls image However, when I uninstall from Extensions tab, it is getting removed without any warnings/notices. image

Does that trigger anything?

mhanberg commented 8 months ago

Hmm, could you audit your settings to see what the value of elixir-tools.nextLS.installationDirectory is?

cvkmohan commented 8 months ago

It was showing empty. I clicked on the gear icon and asked it to reset it. ~/.cache/elixir-tools/nextls/bin/ is what it is. After that I did a couple of restarts - but same status. Socket closed before connection is established.

mhanberg commented 8 months ago

Can you confirm is that directory exists at all?

cvkmohan commented 8 months ago

No. The directory does not exist.

mhanberg commented 8 months ago

As an experiment, can you manually create that directory and then restart VScode to see if it tries to install it?

cvkmohan commented 8 months ago

No. nothing happened. This is the full error log.

[Error - 1:27:21 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:21 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:21 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:21 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Info  - 1:27:21 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:21 AM] Server initialization failed.
  Message: Socket closed before the connection was established
  Code: -32099 
[Error - 1:27:21 AM] NextLS client: couldn't create connection to server.
  Message: Socket closed before the connection was established
  Code: -32099 
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: startFailed
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: startFailed
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
    at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
    at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
    at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] The NextLS server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.
mhanberg commented 8 months ago

can you check the permissions on that directory?

cvkmohan commented 8 months ago

image

mhanberg commented 8 months ago

and there is nothing in there in any of the dirs?

cvkmohan commented 8 months ago

yes, the directories are empty.

mhanberg commented 8 months ago

Can you confirm your adapter is set to stdio and not tcp? In elixir tools settings

cvkmohan commented 8 months ago

Yes. I confirm. It is stdio.

cvkmohan commented 8 months ago

Not sure what happened. Today I uninstalled the vscode extension restarted WSL and installed nextls vscode extension. It downloaded the latest version and is working. Same process was not working earlier. Maybe your new release solved the issue?

Anyway, thanks a lot for the effort.

mhanberg commented 8 months ago

Nice!

I added more logging so if it happens again we'll have more to go on