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 Attribute Summary collapse
-
.addon_classes ⇒ Object
readonly
Returns the value of attribute addon_classes.
-
.addons ⇒ Object
Returns the value of attribute addons.
-
.file_watcher_addons ⇒ Object
Returns the value of attribute file_watcher_addons.
Class Method Summary collapse
- .get(addon_name) ⇒ Object
- .inherited(child_class) ⇒ Object
- .load_addons(global_state, outgoing_queue) ⇒ Object
Instance Method Summary collapse
- #activate(global_state, outgoing_queue) ⇒ Object
- #add_error(error) ⇒ Object
- #create_code_lens_listener(response_builder, uri, dispatcher) ⇒ Object
- #create_completion_listener(response_builder, node_context, dispatcher, uri) ⇒ Object
- #create_definition_listener(response_builder, uri, node_context, dispatcher) ⇒ Object
- #create_document_symbol_listener(response_builder, dispatcher) ⇒ Object
- #create_hover_listener(response_builder, node_context, dispatcher) ⇒ Object
- #create_semantic_highlighting_listener(response_builder, dispatcher) ⇒ Object
- #deactivate ⇒ Object
- #error? ⇒ Boolean
- #errors_details ⇒ Object
- #formatted_errors ⇒ Object
-
#initialize ⇒ Addon
constructor
A new instance of Addon.
- #name ⇒ Object
Constructor Details
#initialize ⇒ Addon
Returns a new instance of Addon.
92 93 94 |
# File 'lib/ruby_lsp/addon.rb', line 92 def initialize @errors = T.let([], T::Array[StandardError]) end |
Class Attribute Details
.addon_classes ⇒ Object (readonly)
Returns the value of attribute addon_classes.
43 44 45 |
# File 'lib/ruby_lsp/addon.rb', line 43 def addon_classes @addon_classes end |
.addons ⇒ Object
Returns the value of attribute addons.
37 38 39 |
# File 'lib/ruby_lsp/addon.rb', line 37 def addons @addons end |
.file_watcher_addons ⇒ Object
Returns the value of attribute file_watcher_addons.
40 41 42 |
# File 'lib/ruby_lsp/addon.rb', line 40 def file_watcher_addons @file_watcher_addons end |
Class Method Details
.get(addon_name) ⇒ Object
83 84 85 86 87 88 |
# File 'lib/ruby_lsp/addon.rb', line 83 def get(addon_name) addon = addons.find { |addon| addon.name == addon_name } raise "Could not find addon '#{addon_name}'" unless addon addon end |
.inherited(child_class) ⇒ Object
47 48 49 50 |
# File 'lib/ruby_lsp/addon.rb', line 47 def inherited(child_class) addon_classes << child_class super end |
.load_addons(global_state, outgoing_queue) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/ruby_lsp/addon.rb', line 56 def load_addons(global_state, outgoing_queue) # Require all addons entry points, which should be placed under # `some_gem/lib/ruby_lsp/your_gem_name/addon.rb` errors = Gem.find_files("ruby_lsp/**/addon.rb").filter_map do |addon| require File.(addon) nil rescue => e e end # Instantiate all discovered addon classes self.addons = addon_classes.map(&:new) self.file_watcher_addons = addons.select { |addon| addon.respond_to?(:workspace_did_change_watched_files) } # 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(global_state, outgoing_queue) rescue => e addon.add_error(e) end errors end |
Instance Method Details
#activate(global_state, outgoing_queue) ⇒ Object
123 |
# File 'lib/ruby_lsp/addon.rb', line 123 def activate(global_state, outgoing_queue); end |
#add_error(error) ⇒ Object
97 98 99 100 |
# File 'lib/ruby_lsp/addon.rb', line 97 def add_error(error) @errors << error self end |
#create_code_lens_listener(response_builder, uri, dispatcher) ⇒ Object
142 |
# File 'lib/ruby_lsp/addon.rb', line 142 def create_code_lens_listener(response_builder, uri, dispatcher); end |
#create_completion_listener(response_builder, node_context, dispatcher, uri) ⇒ Object
194 |
# File 'lib/ruby_lsp/addon.rb', line 194 def create_completion_listener(response_builder, node_context, dispatcher, uri); end |
#create_definition_listener(response_builder, uri, node_context, dispatcher) ⇒ Object
183 |
# File 'lib/ruby_lsp/addon.rb', line 183 def create_definition_listener(response_builder, uri, node_context, dispatcher); end |
#create_document_symbol_listener(response_builder, dispatcher) ⇒ Object
161 |
# File 'lib/ruby_lsp/addon.rb', line 161 def create_document_symbol_listener(response_builder, dispatcher); end |
#create_hover_listener(response_builder, node_context, dispatcher) ⇒ Object
152 |
# File 'lib/ruby_lsp/addon.rb', line 152 def create_hover_listener(response_builder, node_context, dispatcher); end |
#create_semantic_highlighting_listener(response_builder, dispatcher) ⇒ Object
169 |
# File 'lib/ruby_lsp/addon.rb', line 169 def create_semantic_highlighting_listener(response_builder, dispatcher); end |
#deactivate ⇒ Object
128 |
# File 'lib/ruby_lsp/addon.rb', line 128 def deactivate; end |
#error? ⇒ Boolean
103 104 105 |
# File 'lib/ruby_lsp/addon.rb', line 103 def error? @errors.any? end |
#errors_details ⇒ Object
116 117 118 |
# File 'lib/ruby_lsp/addon.rb', line 116 def errors_details @errors.map(&:full_message).join("\n\n") end |
#formatted_errors ⇒ Object
108 109 110 111 112 113 |
# File 'lib/ruby_lsp/addon.rb', line 108 def formatted_errors <<~ERRORS #{name}: #{@errors.map(&:).join("\n")} ERRORS end |
#name ⇒ Object
132 |
# File 'lib/ruby_lsp/addon.rb', line 132 def name; end |