@@ -63,6 +63,8 @@ defmodule ElixirLS.LanguageServer.Server do
63
63
awaiting_contracts: [ ] ,
64
64
supports_dynamic: false ,
65
65
mix_project?: false ,
66
+ mix_env: nil ,
67
+ mix_target: nil ,
66
68
no_mixfile_warned?: false
67
69
]
68
70
@@ -1147,7 +1149,7 @@ defmodule ElixirLS.LanguageServer.Server do
1147
1149
Dialyzer . check_support ( ) == :ok && Map . get ( settings , "dialyzerEnabled" , true )
1148
1150
1149
1151
env_vars = Map . get ( settings , "envVariables" )
1150
- mix_env = Map . get ( settings , "mixEnv" , "test" )
1152
+ mix_env = Map . get ( settings , "mixEnv" )
1151
1153
mix_target = Map . get ( settings , "mixTarget" )
1152
1154
project_dir = Map . get ( settings , "projectDir" )
1153
1155
additional_watched_extensions = Map . get ( settings , "additionalWatchedExtensions" , [ ] )
@@ -1217,11 +1219,11 @@ defmodule ElixirLS.LanguageServer.Server do
1217
1219
else
1218
1220
JsonRpc . show_message (
1219
1221
:warning ,
1220
- "Environment variables have changed . ElixirLS needs to restart"
1222
+ "Environment variables change detected . ElixirLS will restart"
1221
1223
)
1222
-
1224
+ # sleep so the client has time to show the message
1223
1225
Process . sleep ( 5000 )
1224
- System . stop ( 1 )
1226
+ ElixirLS.LanguageServer . restart ( )
1225
1227
end
1226
1228
1227
1229
state
@@ -1234,19 +1236,20 @@ defmodule ElixirLS.LanguageServer.Server do
1234
1236
end
1235
1237
1236
1238
defp set_mix_env ( state = % __MODULE__ { } , env ) do
1237
- prev_env = state . settings [ "mixEnv" ]
1239
+ prev_env = state . mix_env
1238
1240
1239
1241
if is_nil ( prev_env ) or env == prev_env do
1240
1242
System . put_env ( "MIX_ENV" , env )
1241
1243
Mix . env ( String . to_atom ( env ) )
1244
+ % { state | mix_env: env }
1242
1245
else
1243
1246
JsonRpc . show_message ( :warning , "Mix env change detected. ElixirLS will restart." )
1244
1247
1248
+ # sleep so the client has time to show the message
1245
1249
Process . sleep ( 5000 )
1246
- System . stop ( 0 )
1250
+ ElixirLS.LanguageServer . restart ( )
1251
+ state
1247
1252
end
1248
-
1249
- state
1250
1253
end
1251
1254
1252
1255
defp set_mix_target ( state = % __MODULE__ { } , target ) when target in [ nil , "" ] do
@@ -1255,19 +1258,20 @@ defmodule ElixirLS.LanguageServer.Server do
1255
1258
end
1256
1259
1257
1260
defp set_mix_target ( state = % __MODULE__ { } , target ) do
1258
- prev_target = state . settings [ "mixTarget" ]
1261
+ prev_target = state . mix_target
1259
1262
1260
1263
if is_nil ( prev_target ) or target == prev_target do
1261
1264
System . put_env ( "MIX_TARGET" , target )
1262
1265
Mix . target ( String . to_atom ( target ) )
1266
+ % { state | mix_target: target }
1263
1267
else
1264
1268
JsonRpc . show_message ( :warning , "Mix target change detected. ElixirLS will restart" )
1265
1269
1270
+ # sleep so the client has time to show the message
1266
1271
Process . sleep ( 5000 )
1267
- System . stop ( 0 )
1272
+ ElixirLS.LanguageServer . restart ( )
1273
+ state
1268
1274
end
1269
-
1270
- state
1271
1275
end
1272
1276
1273
1277
defp set_project_dir (
@@ -1299,8 +1303,9 @@ defmodule ElixirLS.LanguageServer.Server do
1299
1303
"Project directory change detected. ElixirLS will restart"
1300
1304
)
1301
1305
1306
+ # sleep so the client has time to show the message
1302
1307
Process . sleep ( 5000 )
1303
- System . stop ( 0 )
1308
+ ElixirLS.LanguageServer . restart ( )
1304
1309
1305
1310
true ->
1306
1311
state
0 commit comments