@@ -155,9 +155,11 @@ defmodule ElixirLS.LanguageServer.Server do
155
155
156
156
Logger . error ( "Terminating #{ __MODULE__ } : #{ message } " )
157
157
158
- unless Application . get_env ( :language_server , :test_mode ) do
158
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
159
159
Process . sleep ( 2000 )
160
160
System . halt ( 1 )
161
+ else
162
+ IO . warn ( "Terminating #{ __MODULE__ } : #{ message } " )
161
163
end
162
164
end
163
165
@@ -326,8 +328,13 @@ defmodule ElixirLS.LanguageServer.Server do
326
328
327
329
Logger . error ( message )
328
330
JsonRpc . show_message ( :error , message )
329
- Process . sleep ( 2000 )
330
- System . halt ( 1 )
331
+
332
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
333
+ Process . sleep ( 2000 )
334
+ System . halt ( 1 )
335
+ else
336
+ IO . warn ( message )
337
+ end
331
338
end
332
339
333
340
state =
@@ -545,10 +552,10 @@ defmodule ElixirLS.LanguageServer.Server do
545
552
defp handle_notification ( notification ( "exit" ) , state = % __MODULE__ { } ) do
546
553
code = if state . received_shutdown? , do: 0 , else: 1
547
554
548
- unless Application . get_env ( :language_server , :test_mode ) do
555
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
549
556
System . stop ( code )
550
557
else
551
- Process . exit ( self ( ) , { :exit_code , code } )
558
+ Logger . info ( "Received exit with code #{ code } " )
552
559
end
553
560
554
561
state
@@ -1358,8 +1365,13 @@ defmodule ElixirLS.LanguageServer.Server do
1358
1365
1359
1366
Logger . error ( message )
1360
1367
JsonRpc . show_message ( :error , message )
1361
- Process . sleep ( 2000 )
1362
- System . halt ( 1 )
1368
+
1369
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1370
+ Process . sleep ( 2000 )
1371
+ System . halt ( 1 )
1372
+ else
1373
+ IO . warn ( message )
1374
+ end
1363
1375
end
1364
1376
end
1365
1377
@@ -1618,8 +1630,12 @@ defmodule ElixirLS.LanguageServer.Server do
1618
1630
"Invalid `dialyzerWarnOpts` in configuration. Expected list of strings or nil, got #{ inspect ( dialyzer_warn_opts ) } ."
1619
1631
)
1620
1632
1621
- Process . sleep ( 2000 )
1622
- System . halt ( 1 )
1633
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1634
+ Process . sleep ( 2000 )
1635
+ System . halt ( 1 )
1636
+ else
1637
+ IO . warn ( "Invalid `dialyzerWarnOpts` #{ inspect ( dialyzer_warn_opts ) } " )
1638
+ end
1623
1639
end
1624
1640
1625
1641
dialyzer_formats = [
@@ -1638,8 +1654,12 @@ defmodule ElixirLS.LanguageServer.Server do
1638
1654
"Invalid `dialyzerFormat` in configuration. Expected one of #{ Enum . join ( dialyzer_formats , ", " ) } or nil, got #{ inspect ( dialyzer_format ) } ."
1639
1655
)
1640
1656
1641
- Process . sleep ( 2000 )
1642
- System . halt ( 1 )
1657
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1658
+ Process . sleep ( 2000 )
1659
+ System . halt ( 1 )
1660
+ else
1661
+ IO . warn ( "Invalid `dialyzerFormat` #{ inspect ( dialyzer_format ) } " )
1662
+ end
1643
1663
end
1644
1664
end
1645
1665
@@ -1711,8 +1731,12 @@ defmodule ElixirLS.LanguageServer.Server do
1711
1731
"Invalid `additionalWatchedExtensions` in configuration. Expected list of extensions starting with `.` or nil, got #{ inspect ( exts ) } ."
1712
1732
)
1713
1733
1714
- Process . sleep ( 2000 )
1715
- System . halt ( 1 )
1734
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1735
+ Process . sleep ( 2000 )
1736
+ System . halt ( 1 )
1737
+ else
1738
+ IO . warn ( "Invalid `additionalWatchedExtensions`: #{ inspect ( exts ) } " )
1739
+ end
1716
1740
end
1717
1741
1718
1742
case JsonRpc . register_capability_request (
@@ -1800,8 +1824,14 @@ defmodule ElixirLS.LanguageServer.Server do
1800
1824
"Invalid `envVariables` in configuration. Expected a map with string key value pairs, got #{ inspect ( env ) } ."
1801
1825
)
1802
1826
1803
- Process . sleep ( 2000 )
1804
- System . halt ( 1 )
1827
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1828
+ Process . sleep ( 2000 )
1829
+ System . halt ( 1 )
1830
+ else
1831
+ IO . warn (
1832
+ "Cannot set environment variables to #{ inspect ( env ) } : #{ Exception . message ( e ) } "
1833
+ )
1834
+ end
1805
1835
end
1806
1836
else
1807
1837
JsonRpc . show_message (
@@ -1849,8 +1879,12 @@ defmodule ElixirLS.LanguageServer.Server do
1849
1879
"Invalid `mixEnv` in configuration. Expected a string or nil, got #{ inspect ( env ) } ."
1850
1880
)
1851
1881
1852
- Process . sleep ( 2000 )
1853
- System . halt ( 1 )
1882
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1883
+ Process . sleep ( 2000 )
1884
+ System . halt ( 1 )
1885
+ else
1886
+ IO . warn ( "Cannot set mix env to #{ inspect ( env ) } : #{ Exception . message ( e ) } " )
1887
+ end
1854
1888
end
1855
1889
else
1856
1890
JsonRpc . show_message ( :warning , "Mix env change detected. ElixirLS will restart." )
@@ -1892,8 +1926,12 @@ defmodule ElixirLS.LanguageServer.Server do
1892
1926
"Invalid `mixTarget` in configuration. Expected a string or nil, got #{ inspect ( target ) } ."
1893
1927
)
1894
1928
1895
- Process . sleep ( 2000 )
1896
- System . halt ( 1 )
1929
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1930
+ Process . sleep ( 2000 )
1931
+ System . halt ( 1 )
1932
+ else
1933
+ IO . warn ( "Cannot set mix target to #{ inspect ( target ) } : #{ Exception . message ( e ) } " )
1934
+ end
1897
1935
end
1898
1936
else
1899
1937
JsonRpc . show_message ( :warning , "Mix target change detected. ElixirLS will restart" )
@@ -1934,17 +1972,26 @@ defmodule ElixirLS.LanguageServer.Server do
1934
1972
"Invalid `projectDir` in configuration. Expected a string or nil, got #{ inspect ( project_dir_config ) } ."
1935
1973
)
1936
1974
1937
- Process . sleep ( 2000 )
1938
- System . halt ( 1 )
1975
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1976
+ Process . sleep ( 2000 )
1977
+ System . halt ( 1 )
1978
+ else
1979
+ IO . warn ( "Invalid `projectDir`: #{ inspect ( project_dir_config ) } " )
1980
+ end
1939
1981
end
1940
1982
end
1941
1983
1942
1984
cond do
1943
1985
not File . dir? ( project_dir ) ->
1944
1986
Logger . error ( "Project directory #{ project_dir } does not exist" )
1945
1987
JsonRpc . show_message ( :error , "Project directory #{ project_dir } does not exist" )
1946
- Process . sleep ( 2000 )
1947
- System . halt ( 1 )
1988
+
1989
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
1990
+ Process . sleep ( 2000 )
1991
+ System . halt ( 1 )
1992
+ else
1993
+ IO . warn ( "Project directory #{ project_dir } does not exist" )
1994
+ end
1948
1995
1949
1996
is_nil ( prev_project_dir ) ->
1950
1997
with :ok <- File . cd ( project_dir ) ,
@@ -1964,8 +2011,12 @@ defmodule ElixirLS.LanguageServer.Server do
1964
2011
"Please make sure the directory exists and you have necessary permissions"
1965
2012
)
1966
2013
1967
- Process . sleep ( 2000 )
1968
- System . halt ( 1 )
2014
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
2015
+ Process . sleep ( 2000 )
2016
+ System . halt ( 1 )
2017
+ else
2018
+ IO . warn ( "Unable to change directory into #{ project_dir } : #{ inspect ( reason ) } " )
2019
+ end
1969
2020
end
1970
2021
1971
2022
prev_project_dir != project_dir ->
@@ -2015,8 +2066,12 @@ defmodule ElixirLS.LanguageServer.Server do
2015
2066
"Cannot create .elixir_ls/.gitignore"
2016
2067
)
2017
2068
2018
- Process . sleep ( 2000 )
2019
- System . halt ( 1 )
2069
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
2070
+ Process . sleep ( 2000 )
2071
+ System . halt ( 1 )
2072
+ else
2073
+ IO . warn ( "Cannot create .elixir_ls/.gitignore, cause: #{ Atom . to_string ( err ) } " )
2074
+ end
2020
2075
end
2021
2076
end
2022
2077
@@ -2062,8 +2117,12 @@ defmodule ElixirLS.LanguageServer.Server do
2062
2117
message
2063
2118
)
2064
2119
2065
- Process . sleep ( 2000 )
2066
- System . halt ( 1 )
2120
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
2121
+ Process . sleep ( 2000 )
2122
+ System . halt ( 1 )
2123
+ else
2124
+ IO . warn ( message )
2125
+ end
2067
2126
end
2068
2127
2069
2128
case File . cwd ( ) do
@@ -2092,8 +2151,12 @@ defmodule ElixirLS.LanguageServer.Server do
2092
2151
message
2093
2152
)
2094
2153
2095
- Process . sleep ( 2000 )
2096
- System . halt ( 1 )
2154
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
2155
+ Process . sleep ( 2000 )
2156
+ System . halt ( 1 )
2157
+ else
2158
+ IO . warn ( message )
2159
+ end
2097
2160
end
2098
2161
else
2099
2162
message =
@@ -2106,8 +2169,12 @@ defmodule ElixirLS.LanguageServer.Server do
2106
2169
message
2107
2170
)
2108
2171
2109
- Process . sleep ( 2000 )
2110
- System . halt ( 1 )
2172
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
2173
+ Process . sleep ( 2000 )
2174
+ System . halt ( 1 )
2175
+ else
2176
+ IO . warn ( message )
2177
+ end
2111
2178
end
2112
2179
2113
2180
{ :error , reason } ->
@@ -2119,8 +2186,12 @@ defmodule ElixirLS.LanguageServer.Server do
2119
2186
message
2120
2187
)
2121
2188
2122
- Process . sleep ( 2000 )
2123
- System . halt ( 1 )
2189
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
2190
+ Process . sleep ( 2000 )
2191
+ System . halt ( 1 )
2192
+ else
2193
+ IO . warn ( message )
2194
+ end
2124
2195
end
2125
2196
end
2126
2197
end
@@ -2255,25 +2326,25 @@ defmodule ElixirLS.LanguageServer.Server do
2255
2326
2256
2327
defp do_sanity_check ( _state ) do
2257
2328
try do
2258
- unless function_exported? ( ElixirSense , :module_info , 1 ) and
2259
- :persistent_term . get ( :language_server_lib_dir ) ==
2260
- ElixirLS.LanguageServer . module_info ( :compile ) [ :source ] do
2261
- raise "sanity check failed"
2262
- end
2329
+ unless :persistent_term . get ( :language_server_test_mode , false ) do
2330
+ unless function_exported? ( ElixirSense , :module_info , 1 ) and
2331
+ :persistent_term . get ( :language_server_lib_dir ) ==
2332
+ ElixirLS.LanguageServer . module_info ( :compile ) [ :source ] do
2333
+ raise "sanity check failed"
2334
+ end
2263
2335
2264
- unless function_exported? ( ElixirLS.LanguageServer , :module_info , 1 ) and
2265
- :persistent_term . get ( :language_server_elixir_sense_lib_dir ) ==
2266
- ElixirSense . module_info ( :compile ) [ :source ] do
2267
- raise "sanity check failed"
2336
+ unless function_exported? ( ElixirLS.LanguageServer , :module_info , 1 ) and
2337
+ :persistent_term . get ( :language_server_elixir_sense_lib_dir ) ==
2338
+ ElixirSense . module_info ( :compile ) [ :source ] do
2339
+ raise "sanity check failed"
2340
+ end
2268
2341
end
2269
2342
rescue
2270
2343
_ ->
2271
2344
Logger . error ( "Sanity check failed. ElixirLS needs to restart." )
2272
2345
2273
- unless Application . get_env ( :language_server , :test_mode ) do
2274
- Process . sleep ( 2000 )
2275
- System . halt ( 1 )
2276
- end
2346
+ Process . sleep ( 2000 )
2347
+ System . halt ( 1 )
2277
2348
end
2278
2349
end
2279
2350
end
0 commit comments