@@ -249,33 +249,19 @@ defmodule ElixirLS.LanguageServer.Build do
249
249
250
250
Mix.Task . clear ( )
251
251
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 ( )
268
253
269
254
# we need to reset compiler options
270
255
# project may leave tracers after previous compilation and we don't want them interfering
271
256
# see https://github.com/elixir-lsp/elixir-ls/issues/717
272
257
set_compiler_options ( )
273
258
274
259
# 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
278
262
Mix.ProjectStack . post_config (
263
+ build_path: ".elixir_ls/build" ,
264
+ prune_code_paths: false ,
279
265
test_elixirc_options: [
280
266
docs: true ,
281
267
debug_info: true
@@ -426,6 +412,25 @@ defmodule ElixirLS.LanguageServer.Build do
426
412
end
427
413
end
428
414
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
+
429
434
defp run_mix_compile ( force? ) do
430
435
opts = [
431
436
"--return-errors" ,
0 commit comments