File tree Expand file tree Collapse file tree 4 files changed +19
-5
lines changed Expand file tree Collapse file tree 4 files changed +19
-5
lines changed Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ class GlobalState
21
21
def initialize
22
22
@workspace_uri = T . let ( URI ::Generic . from_path ( path : Dir . pwd ) , URI ::Generic )
23
23
24
- @formatter = T . let ( detect_formatter , String )
24
+ @formatter = T . let ( "auto" , String )
25
25
@test_library = T . let ( detect_test_library , String )
26
26
@typechecker = T . let ( detect_typechecker , T ::Boolean )
27
27
@index = T . let ( RubyIndexer ::Index . new , RubyIndexer ::Index )
@@ -42,6 +42,10 @@ def active_formatter
42
42
def apply_options ( options )
43
43
workspace_uri = options . dig ( :workspaceFolders , 0 , :uri )
44
44
@workspace_uri = URI ( workspace_uri ) if workspace_uri
45
+
46
+ specified_formatter = options . dig ( :initializationOptions , :formatter )
47
+ @formatter = specified_formatter if specified_formatter
48
+ @formatter = detect_formatter if @formatter == "auto"
45
49
end
46
50
47
51
sig { returns ( String ) }
Original file line number Diff line number Diff line change @@ -129,8 +129,6 @@ def run_initialize(message)
129
129
130
130
progress = options . dig ( :capabilities , :window , :workDoneProgress )
131
131
@store . supports_progress = progress . nil? ? true : progress
132
- formatter = options . dig ( :initializationOptions , :formatter ) || "auto"
133
-
134
132
configured_features = options . dig ( :initializationOptions , :enabledFeatures )
135
133
@store . experimental_features = options . dig ( :initializationOptions , :experimentalFeaturesEnabled ) || false
136
134
@@ -177,7 +175,7 @@ def run_initialize(message)
177
175
document_link_provider : document_link_provider ,
178
176
folding_range_provider : folding_ranges_provider ,
179
177
semantic_tokens_provider : semantic_tokens_provider ,
180
- document_formatting_provider : enabled_features [ "formatting" ] && formatter != "none" ,
178
+ document_formatting_provider : enabled_features [ "formatting" ] && @global_state . formatter != "none" ,
181
179
document_highlight_provider : enabled_features [ "documentHighlights" ] ,
182
180
code_action_provider : code_action_provider ,
183
181
document_on_type_formatting_provider : on_type_formatting_provider ,
Original file line number Diff line number Diff line change @@ -51,6 +51,18 @@ def test_direct_dependency_returns_false_outside_of_bundle
51
51
refute ( GlobalState . new . direct_dependency? ( /^ruby-lsp/ ) )
52
52
end
53
53
54
+ def test_apply_option_selects_formatter
55
+ state = GlobalState . new
56
+ state . apply_options ( { initializationOptions : { formatter : "syntax_tree" } } )
57
+ assert_equal ( "syntax_tree" , state . formatter )
58
+ end
59
+
60
+ def test_applying_auto_formatter_invokes_detection
61
+ state = GlobalState . new
62
+ state . apply_options ( { initializationOptions : { formatter : "auto" } } )
63
+ assert_equal ( "rubocop" , state . formatter )
64
+ end
65
+
54
66
private
55
67
56
68
def stub_dependencies ( dependencies )
Original file line number Diff line number Diff line change @@ -141,7 +141,7 @@ def test_server_info_includes_version
141
141
end
142
142
143
143
def test_server_info_includes_formatter
144
- @server . global_state . expects ( :formatter ) . returns ( "rubocop" )
144
+ @server . global_state . expects ( :formatter ) . twice . returns ( "rubocop" )
145
145
capture_subprocess_io do
146
146
@server . process_message ( {
147
147
id : 1 ,
You can’t perform that action at this time.
0 commit comments