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