Class: RubyLsp::Addon

Inherits:
Object
  • Object
show all
Extended by:
T::Helpers, T::Sig
Defined in:
lib/ruby_lsp/addon.rb

Overview

To register an addon, inherit from this class and implement both ‘name` and `activate`

# Example

“‘ruby module MyGem

class MyAddon < Addon
  def activate
    # Perform any relevant initialization
  end

  def name
    "My addon name"
  end
end

end “‘

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAddon

Returns a new instance of Addon.



67
68
69
# File 'lib/ruby_lsp/addon.rb', line 67

def initialize
  @errors = T.let([], T::Array[StandardError])
end

Class Method Details

.addonsObject



39
40
41
# File 'lib/ruby_lsp/addon.rb', line 39

def addons
  @addons ||= T.let([], T.nilable(T::Array[Addon]))
end

.inherited(child_class) ⇒ Object



33
34
35
36
# File 'lib/ruby_lsp/addon.rb', line 33

def inherited(child_class)
  addons << child_class.new
  super
end

.load_addonsObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/ruby_lsp/addon.rb', line 45

def load_addons
  # 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
    warn(e.message)
    warn(e.backtrace.to_s) # rubocop:disable Lint/RedundantStringCoercion
  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
    nil
  rescue => e
    addon.add_error(e)
  end
end

Instance Method Details

#activateObject



98
# File 'lib/ruby_lsp/addon.rb', line 98

def activate; end

#add_error(error) ⇒ Object



72
73
74
75
# File 'lib/ruby_lsp/addon.rb', line 72

def add_error(error)
  @errors << error
  self
end

#backtracesObject



91
92
93
# File 'lib/ruby_lsp/addon.rb', line 91

def backtraces
  @errors.filter_map(&:backtrace).join("\n\n")
end

#create_code_lens_listener(uri, emitter, message_queue) ⇒ Object



117
# File 'lib/ruby_lsp/addon.rb', line 117

def create_code_lens_listener(uri, emitter, message_queue); end

#create_definition_listener(uri, nesting, index, emitter, message_queue) ⇒ Object



149
# File 'lib/ruby_lsp/addon.rb', line 149

def create_definition_listener(uri, nesting, index, emitter, message_queue); end

#create_document_symbol_listener(emitter, message_queue) ⇒ Object



137
# File 'lib/ruby_lsp/addon.rb', line 137

def create_document_symbol_listener(emitter, message_queue); end

#create_hover_listener(nesting, index, emitter, message_queue) ⇒ Object



128
# File 'lib/ruby_lsp/addon.rb', line 128

def create_hover_listener(nesting, index, emitter, message_queue); end

#deactivateObject



103
# File 'lib/ruby_lsp/addon.rb', line 103

def deactivate; end

#error?Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/ruby_lsp/addon.rb', line 78

def error?
  @errors.any?
end

#formatted_errorsObject



83
84
85
86
87
88
# File 'lib/ruby_lsp/addon.rb', line 83

def formatted_errors
  <<~ERRORS
    #{name}:
      #{@errors.map(&:message).join("\n")}
  ERRORS
end

#nameObject



107
# File 'lib/ruby_lsp/addon.rb', line 107

def name; end