class RubyLsp::Addon
“‘
end
end
end
“My addon name”
def name
end
# Perform any relevant initialization
def activate
class MyAddon < Addon
module MyGem
“`ruby
# Example
To register an addon, inherit from this class and implement both `name` and `activate`
def activate(message_queue); end
def activate(message_queue); end
def add_error(error)
def add_error(error) @errors << error self end
def addons
def addons @addons ||= T.let([], T.nilable(T::Array[Addon])) end
def backtraces
def backtraces @errors.filter_map(&:backtrace).join("\n\n") end
def create_code_lens_listener(response_builder, uri, dispatcher); end
def create_code_lens_listener(response_builder, uri, dispatcher); end
def create_definition_listener(response_builder, uri, nesting, index, dispatcher); end
def create_definition_listener(response_builder, uri, nesting, index, dispatcher); end
def create_document_symbol_listener(response_builder, dispatcher); end
def create_document_symbol_listener(response_builder, dispatcher); end
def create_hover_listener(response_builder, nesting, index, dispatcher); end
def create_hover_listener(response_builder, nesting, index, dispatcher); end
def create_semantic_highlighting_listener(response_builder, dispatcher); end
def create_semantic_highlighting_listener(response_builder, dispatcher); end
def deactivate; end
def deactivate; end
def error?
def error? @errors.any? end
def formatted_errors
def formatted_errors <<~ERRORS #{name}: #{@errors.map(&:message).join("\n")} ERRORS end
def inherited(child_class)
def inherited(child_class) addons << child_class.new super end
def initialize
def initialize @errors = T.let([], T::Array[StandardError]) end
def load_addons(message_queue)
def load_addons(message_queue) # Require all addons entry points, which should be placed under # `some_gem/lib/ruby_lsp/your_gem_name/addon.rb` Gem.find_files("ruby_lsp/**/addon.rb").each do |addon| require File.expand_path(addon) rescue => e $stderr.puts(e.full_message) end # Activate each one of the discovered addons. If any problems occur in the addons, we don't want to # fail to boot the server addons.each do |addon| addon.activate(message_queue) nil rescue => e addon.add_error(e) end end
def name; end
def name; end