VSCode - Elixir LS + WSL

Has anyone had any luck using VSCode (win 10) and WSL (asdf elixir/erlang) with Elixir LS? I’m not even sure its possible, I am curious to if it will work and if anyone has it working then what is involved?

VSCode will run in Windows 10
Projects + Elixir + Erlang would run via WSL
ElixirLS would need its language server to run in WSL and communicate with VSCode in Windows 10.

2 Likes

This would go against all I have been told and taught about WSL: Don’t mix and match access through WSL and native Windows to the same resource.

This were a bit like running the LS on a remote computer, which is currently not possible as far as I know.


At my working place I tried WSL a bit and ran into nothing but trouble, setting up a Ubuntu VM was straight forward and “just works”.

2 Likes

As long as the files live on the windows file system and are read by WSL it should be fine based on everything I’ve read. Accessing files stored on WSL from Windows is what I’ve read is a big no no. Am I wrong? I don’t use WSL ATM, and work only on Linux. I wanted to see what the other side is doing with WSL.

:frowning:

Thanks for the info!

The real answer here is to run X on windows and run vscode from inside wsl :slight_smile:

I went from 8 years on osx to ragequitting in disgust after fighting brew for a whole day.

Spent half a year using plain windows, was not happy. Wsl came out and I was more happy, but since my editor ran in windows it kept screwing up locks and whatnot. It even corrupted my git making me lose my work a few times.

Spent half a year on ubuntu, disgusted with how bad linux is for desktop usage i went back to wsl again, this time running Mobaxterm.

It works sooooo well. The vscode and gitkraken windows run from wsl and show up as native apps in win10. All the awesomeness of a «real» desktop environment with proper drivers, wifi not dying after closing laptop lid etc while also having a proper nix env to do my work in.

I’m very happy with this, even more so than the «golden years» before osx started to decline in quality.

5 Likes

I setup vscode to run from the wsl bash also using MobaXterm, but at first I had a tiny immovable and non-resizable window stuck between my 2 monitors.

I got it working by setting Settings-X11 to "Rootless" Transparent X11 server with Fvwm window borders (experimental)…now it is moveable and resizable, but a little clunky and has some lag. Plus, you have to start a second instance from the wsl bash also (starting one from the file menu starts a windows instance instead), code runner doesn’t recognise elixir for some reason, and prob a few more minor issues I’m missing.

So I’m interested how you set yours up, I’ve never seen that info mentioned anywhere, so was surprised I had to find a non-default way to run it properly. Maybe your way is better as you didn’t mention any latency/lag.

I use WSL full time and VSCode (installed on Windows).

However, I also run my web apps in Docker so I don’t have to worry about installing things directly inside of WSL’s filesystem. At some point in the future VSCode is going to support seamlessly finding interpreter and library code running in a container instead of the local machine, so if you happen to use Docker, you’ll get the best of both worlds.

For the time being, I don’t even use extensions like Elixir-LS. I just installed vscode-elixir to get syntax highlighting.

Overall I’m super happy with the set up. I never liked heavy auto-complete because I find it creates micro-stutters and 95% of the time it gets in the way. My philosophy has always been to use snippets (works just fine with WSL) to help deal with code complete / boilerplate.

If you’re interested, here’s a video demo’ing my entire set up. It also has links to config files, etc. https://nickjanetakis.com/blog/a-linux-dev-environment-on-windows-with-wsl-docker-tmux-and-vscode. I just recorded it the other day.

2 Likes

Well hello Nick, I started using MobaXterm after following one of your excellent tutorials. :slight_smile:

That video and included references looks just what I’m after, I’ll let you know how I go with it.

You’ve been very prolific, I may end up doing your docker course once I get through all the free tutorials, it might save me some time cross-referencing umpteen blogs and books. I’ve had docker on my to-do list for a while, and using the windows version of vs code via wsl is a pretty great motivation. (I’m doing the tmux tutorial atm so I have a bit to go yet).

Thanks!

Hey, good luck with the set up and if you have any questions let me know. Also thanks for the support!

I went back to running vscode from windows just keeping everything else in wsl. The main thing to run in wsl natively is git due to how git on windows does weird things with ntfs that somehow makes wsl folders either unreadable without a reboot or just plain corrupts them.

You can configure VSCode (on Windows) to use git that’s installed in WSL. I don’t even have git installed on Windows but the VSCode Git integration works.

One key thing is to keep all of your source code outside of WSL’s file system, so it gets mounted in by WSL. Then you’ll have no problem opening and modifying the files from Windows or directly in WSL if you use nano or something.

Is this possible using the remote Wsl extension now?

Yes. Took me two min to set up.

Indeed, it works like a charm.

During the last weeks I’ve been using the remote WSL extension with the VSCode Insiders build. I can now keep everything in WSL. Autocomplete, syntax highlighting and Git all work seamlessly.

Ok thanks, looks like there’s something weird going on with my PATH so elixir is not starting … I’ll have a play

Also working here, Set elixir in the wsl 2 and use vscode in windows with wsl remote.
in wsl 2 terminal, run “code ‘somedirwithyourcode’” install the elixir LS extension in the wsl and that’s all.