I use Visual Studio Code with the ElixirLS Fork extension.
I am trying out Elixir/Phoenix and when i call the ‘use’ Macro for something like
defmodule TestWeb.MyController
use TestWeb :controller
...
or
defmodule Test.mySchema
use Ecto.Schema
...
there is no Autocomplete or Documentation available from the Modules that are imported or aliased in the __using__/1 macro. The Code does work and there are no Errors or Warnings from ElixirLS or Dialyzer.
Importing/Aliasing the needed Modules directly, like
defmodule TestWeb.MyController
use TestWeb :controller
import Phoenix.Controller
import Plug.Conn
import TestWeb.Gettext
alias TestWeb.Router.Helpers, as: Routes
...
does provide autocomplete and Documentation in VSCode.
So is ElixirLS not evaluating the __using__ macro for autocomplete? Or is maybe something wrong with my Setup?
And is there a way to make autocomplete work without importing/aliasing the Modules directly?
Well that isn’t expected. Are you getting any errors in the ElixirLS Fork output? Also can you try with elixir 1.10.2-otp22 (instead of elixir 1.10.2-otp21).
After installing Elixir 1.10.2-otp22 the log looks like this:
Started ElixirLS Fork v0.3.2
Elixir version: "1.10.2 (compiled with Erlang/OTP 22)"
Erlang version: "22"
but this also doesn’t work.
And i don’t see any errors in the ElixirLS Output.
I also tried a clean install of VSCode, with default Settings and ElixirLS Fork as the only plugin, but with no success.
Yes, I tried removing the folder and restarting the Editor. I’m on Ubuntu 18.04 LTS, but I also tried it on Windows 10 with the same result.
No, I do not use Docker.
I do not have autocompletion/Documentation on any imports/alias from ‘use’ macros.
I noticed it while trying out Phoenix, after creating a new Phoenix (1.4.16) Project with mix phx.new ..
I also made a simple example, created with mix new ., with only 2 .ex files in /lib and without any dependencies here: https://github.com/JanKneiphof/autocomplete_problem