1Code.require_file "../helpers/complete.exs", __DIR__ 2Code.require_file "../helpers/response.exs", __DIR__ 3 4defmodule Alchemist.API.Comp do 5 6 @moduledoc false 7 8 alias Alchemist.Helpers.Complete 9 alias Alchemist.Helpers.Response 10 11 def request(args) do 12 args 13 |> normalize 14 |> process 15 end 16 17 def process([nil, _, imports, _]) do 18 Complete.run('', imports) ++ Complete.run('') 19 |> response 20 end 21 22 def process([hint, _context, imports, aliases]) do 23 Application.put_env(:"alchemist.el", :aliases, aliases) 24 25 Complete.run(hint, imports) ++ Complete.run(hint) 26 |> response 27 end 28 29 defp normalize(request) do 30 {{hint, [ context: context, 31 imports: imports, 32 aliases: aliases ]}, _} = Code.eval_string(request) 33 [hint, context, imports, aliases] 34 end 35 36 defp response(result) do 37 result 38 |> Enum.join("\n") 39 |> Response.endmark("COMP") 40 end 41 42end 43