Skip to content

Commit 2f706a6

Browse files
authored
Allow server addons to write responses back (#460)
1 parent 416fac1 commit 2f706a6

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

lib/ruby_lsp/ruby_lsp_rails/server.rb

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,24 @@ def delegate(name, request, params)
2626
end
2727

2828
# Instantiate all server addons and store them in a hash for easy access after we have discovered the classes
29-
def finalize_registrations!
29+
def finalize_registrations!(stdout)
3030
until @server_addon_classes.empty?
31-
addon = @server_addon_classes.shift.new
31+
addon = @server_addon_classes.shift.new(stdout)
3232
@server_addons[addon.name] = addon
3333
end
3434
end
3535
end
3636

37+
def initialize(stdout)
38+
@stdout = stdout
39+
end
40+
41+
# Write a response back. Can be used for sending notifications to the editor
42+
def write_response(response)
43+
json_response = response.to_json
44+
@stdout.write("Content-Length: #{json_response.length}\r\n\r\n#{json_response}")
45+
end
46+
3747
def name
3848
raise NotImplementedError, "Not implemented!"
3949
end
@@ -97,11 +107,11 @@ def execute(request, params)
97107
write_response(resolve_route_info(params))
98108
when "server_addon/register"
99109
require params[:server_addon_path]
100-
ServerAddon.finalize_registrations!
110+
ServerAddon.finalize_registrations!(@stdout)
101111
when "server_addon/delegate"
102112
server_addon_name = params.delete(:server_addon_name)
103113
request_name = params.delete(:request_name)
104-
write_response(ServerAddon.delegate(server_addon_name, request_name, params))
114+
ServerAddon.delegate(server_addon_name, request_name, params)
105115
end
106116
rescue => e
107117
write_response({ error: e.full_message(highlight: false) })

test/ruby_lsp_rails/server_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def name
144144
end
145145
146146
def execute(request, params)
147-
{ request:, params: }
147+
write_response({ request:, params: })
148148
end
149149
end
150150
RUBY

0 commit comments

Comments
 (0)