Skip to content

Commit 7899d19

Browse files
committed
extract ensure_logger_backend
1 parent 9c40536 commit 7899d19

File tree

1 file changed

+24
-19
lines changed
  • apps/language_server/lib/language_server

1 file changed

+24
-19
lines changed

apps/language_server/lib/language_server/build.ex

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -249,33 +249,19 @@ defmodule ElixirLS.LanguageServer.Build do
249249

250250
Mix.Task.clear()
251251

252-
if Version.match?(System.version(), ">= 1.15.0-dev") do
253-
if Logger.Backends.JsonRpc not in :logger.get_handler_ids() do
254-
Logger.error("Build without intercepted logger #{inspect(:logger.get_handler_ids())}")
255-
256-
for handler_id <- :logger.get_handler_ids() do
257-
:ok = :logger.remove_handler(handler_id)
258-
end
259-
260-
:ok =
261-
:logger.add_handler(
262-
Logger.Backends.JsonRpc,
263-
Logger.Backends.JsonRpc,
264-
Logger.Backends.JsonRpc.handler_config()
265-
)
266-
end
267-
end
252+
ensure_logger_backend()
268253

269254
# we need to reset compiler options
270255
# project may leave tracers after previous compilation and we don't want them interfering
271256
# see https://github.com/elixir-lsp/elixir-ls/issues/717
272257
set_compiler_options()
273258

274259
# Override build directory to avoid interfering with other dev tools
275-
Mix.ProjectStack.post_config(build_path: ".elixir_ls/build")
276-
Mix.ProjectStack.post_config(prune_code_paths: false)
277-
260+
# Disable elixir 1.15+ code path pruning as it would prune ElixirLS code paths
261+
# Make sure docs and debug info is enabled even when MIX_ENV is test
278262
Mix.ProjectStack.post_config(
263+
build_path: ".elixir_ls/build",
264+
prune_code_paths: false,
279265
test_elixirc_options: [
280266
docs: true,
281267
debug_info: true
@@ -426,6 +412,25 @@ defmodule ElixirLS.LanguageServer.Build do
426412
end
427413
end
428414

415+
# Ensure that the JSON-RPC logger backend is installed.
416+
defp ensure_logger_backend() do
417+
if Version.match?(System.version(), ">= 1.15.0-dev") do
418+
unless Logger.Backends.JsonRpc in :logger.get_handler_ids() do
419+
Logger.error("Build without intercepted logger #{inspect(:logger.get_handler_ids())}")
420+
421+
for handler_id <- :logger.get_handler_ids() do
422+
:logger.remove_handler(handler_id)
423+
end
424+
425+
:logger.add_handler(
426+
Logger.Backends.JsonRpc,
427+
Logger.Backends.JsonRpc,
428+
Logger.Backends.JsonRpc.handler_config()
429+
)
430+
end
431+
end
432+
end
433+
429434
defp run_mix_compile(force?) do
430435
opts = [
431436
"--return-errors",

0 commit comments

Comments
 (0)