The VS Code Elixir extension keeps reporting “Building core Dialyzer Elixir PLT. This will take a few minutes…”, and it keeps restarting.
If I look in the “Problems” tab in VS Code, it says “could not make directory (with -p) “/.mix”: permission denied.”
Why is it attempting to write to
/? How can I fix it?
It also occasionally asks about installing rebar3, which is already installed. I’m assuming it’s failing for the same reason.
ElixirLS has the option: “Project Dir: ubdirectory containing Mix project if not in the project root
Value must be 1 or more characters long.”.
(I had “.” in that field, had to left it blank or the extension didn’t work.)
Maybe your problem has something to do with that.
April 23, 2020, 12:59pm
It seems that whatever starts the LS, and therefore the LS and everything it starts, has a malformed view on one of these system variables:
When you run eg
mix archive.install hex phx_new from a terminal, what does happen then? In that same terminal, what are the values of these environment variable mentioned above?
How do you start vscode?
code . in the terminal from within the relevant directory. I should note that this has been working fine until fairly recently.
The same problem occurs in more than one folder, incidentally. In the first, I’m using direnv and kiex to manage Elixir; in the second, it’s the system default (1.10.2).
Looking at the stack trace, it’s failing here:
Which suggests that
Mix.Utils.mix_home() is returning an invalid value. But if I run
iex -S mix in the VS Code terminal, that function returns
/home/roger/.mix, as expected.
$ code --list-extensions
I’ve uninstalled and reinstalled the ElixirLS extension and it’s still doing it.
Seems like you are using the original ElixirLS extension, which is not receiving updates anymore. I don’t know if this will solve your problem, but take a look at
As far as I understand it, the new fork uses the same extension ID, as of quite recently.
It doesn’t. I tried a git clone of that extension directly, and filed
Fixed it. ElixirLS recently started honouring asdf configuration. A while back I switched from asdf to direnv and my asdf configuration was apparently broken, resulting in MIX_HOME=/.
I nuked ~/.asdf and it all seems OK now.