Class: RubyLsp::Addon
- Inherits:
-
Object
- Object
- RubyLsp::Addon
- 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
- #activate ⇒ Object
- #add_error(error) ⇒ Object
- #backtraces ⇒ Object
- #create_code_lens_listener(uri, emitter, message_queue) ⇒ Object
- #create_definition_listener(uri, nesting, index, emitter, message_queue) ⇒ Object
- #create_document_symbol_listener(emitter, message_queue) ⇒ Object
- #create_hover_listener(nesting, index, emitter, message_queue) ⇒ Object
- #deactivate ⇒ Object
- #error? ⇒ Boolean
- #formatted_errors ⇒ Object
-
#initialize ⇒ Addon
constructor
A new instance of Addon.
- #name ⇒ Object
Constructor Details
#initialize ⇒ Addon
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
.addons ⇒ Object
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_addons ⇒ Object
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.(addon) rescue => e warn(e.) 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
#activate ⇒ Object
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 |
#backtraces ⇒ Object
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, ); 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, ); end |
#create_document_symbol_listener(emitter, message_queue) ⇒ Object
137 |
# File 'lib/ruby_lsp/addon.rb', line 137 def create_document_symbol_listener(emitter, ); 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, ); end |
#deactivate ⇒ Object
103 |
# File 'lib/ruby_lsp/addon.rb', line 103 def deactivate; end |
#error? ⇒ Boolean
78 79 80 |
# File 'lib/ruby_lsp/addon.rb', line 78 def error? @errors.any? end |
#formatted_errors ⇒ Object
83 84 85 86 87 88 |
# File 'lib/ruby_lsp/addon.rb', line 83 def formatted_errors <<~ERRORS #{name}: #{@errors.map(&:).join("\n")} ERRORS end |
#name ⇒ Object
107 |
# File 'lib/ruby_lsp/addon.rb', line 107 def name; end |