Skip to content

Commit b6acb47

Browse files
committed
rebuild project if tracing databases are not found
1 parent bdd5030 commit b6acb47

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

apps/language_server/lib/language_server/server.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,6 +1120,7 @@ defmodule ElixirLS.LanguageServer.Server do
11201120
|> set_dialyzer_enabled(enable_dialyzer)
11211121
|> add_watched_extensions(additional_watched_extensions)
11221122

1123+
maybe_rebuild(state)
11231124
state = create_gitignore(state)
11241125
Tracer.set_project_dir(state.project_dir)
11251126
trigger_build(%{state | settings: settings})
@@ -1298,4 +1299,12 @@ defmodule ElixirLS.LanguageServer.Server do
12981299
_ -> false
12991300
end)
13001301
end
1302+
1303+
defp maybe_rebuild(state = %__MODULE__{}) do
1304+
# detect if we are opening a project that has been compiled without a tracer
1305+
if is_binary(state.project_dir) and state.mix_project and File.dir?(Path.join([project_dir, ".elixir_ls"])) and not Tracer.has_databases?(project_dir) do
1306+
Logger.info("DETS databases rebuild will be rebuilt")
1307+
Build.clean(true)
1308+
end
1309+
end
13011310
end

apps/language_server/lib/language_server/tracer.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ defmodule ElixirLS.LanguageServer.Tracer do
9595
:ok
9696
end
9797

98+
def has_databases?(project_dir) do
99+
File.exists?(dets_path(project_dir, hd(@tables)))
100+
end
101+
98102
defp dets_path(project_dir, table) do
99103
Path.join([project_dir, ".elixir_ls", "#{table}.dets"])
100104
end

0 commit comments

Comments
 (0)