Skip to content

Commit dfb5bef

Browse files
committed
reorder
1 parent db4b5fb commit dfb5bef

File tree

1 file changed

+21
-7
lines changed
  • apps/language_server/lib/language_server

1 file changed

+21
-7
lines changed

apps/language_server/lib/language_server/build.ex

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,6 @@ defmodule ElixirLS.LanguageServer.Build do
33
alias ElixirLS.Utils.MixfileHelpers
44
require Logger
55

6-
defp store_required_apps() do
7-
unless :persistent_term.get(:language_server_required_apps, false) do
8-
apps = Application.loaded_applications() |> Enum.map(&elem(&1, 0))
9-
:persistent_term.put(:language_server_required_apps, apps)
10-
end
11-
end
12-
136
def build(parent, root_path, opts) when is_binary(root_path) do
147
Application.loaded_applications() |> Enum.map(&elem(&1, 0))
158

@@ -187,6 +180,19 @@ defmodule ElixirLS.LanguageServer.Build do
187180
:global.trans({__MODULE__, self()}, func)
188181
end
189182

183+
## Mix Project Reloading
184+
185+
# Make sure we store the list of applications required by the language server.
186+
defp store_required_apps() do
187+
unless :persistent_term.get(:language_server_required_apps, false) do
188+
apps = Application.loaded_applications() |> Enum.map(&elem(&1, 0))
189+
:persistent_term.put(:language_server_required_apps, apps)
190+
end
191+
end
192+
193+
# Reloads the Mix project. This function prunes existing project modules,
194+
# clears Mix caches, resets logger and compiler options, and finally
195+
# compiles the mixfile (collecting any diagnostics).
190196
defp reload_project(mixfile, root_path) do
191197
store_required_apps()
192198

@@ -436,6 +442,8 @@ defmodule ElixirLS.LanguageServer.Build do
436442
end
437443
end
438444

445+
## Compilation and Cleaning
446+
439447
defp run_mix_compile(force?) do
440448
opts = [
441449
"--return-errors",
@@ -497,6 +505,8 @@ defmodule ElixirLS.LanguageServer.Build do
497505
end
498506
end
499507

508+
## Dependency Purging
509+
500510
defp purge_module(module) do
501511
:code.purge(module)
502512
:code.delete(module)
@@ -673,6 +683,8 @@ defmodule ElixirLS.LanguageServer.Build do
673683
:ok
674684
end
675685

686+
## Compiler Options and Diagnostics
687+
676688
def set_compiler_options(options \\ [], parser_options \\ []) do
677689
parser_options =
678690
Keyword.merge(parser_options,
@@ -716,6 +728,8 @@ defmodule ElixirLS.LanguageServer.Build do
716728
end
717729
end
718730

731+
# Wraps the given function in a diagnostics context (using Code.with_diagnostics
732+
# on newer Elixir versions).
719733
def with_diagnostics(opts \\ [], fun) do
720734
# Code.with_diagnostics is broken on elixir < 1.15.3
721735
if Version.match?(System.version(), ">= 1.15.3") do

0 commit comments

Comments
 (0)