Class: RubyLsp::ExtensibleListener
- Extended by:
- T::Generic, T::Sig
- Defined in:
- lib/ruby_lsp/listener.rb
Overview
ExtensibleListener is an abstract class to be used by requests that accept extensions.
Direct Known Subclasses
Requests::CodeLens, Requests::Definition, Requests::DocumentSymbol, Requests::Hover
Constant Summary collapse
- ResponseType =
type_member
Instance Method Summary collapse
-
#initialize(emitter, message_queue) ⇒ ExtensibleListener
constructor
A new instance of ExtensibleListener.
- #initialize_external_listener(extension) ⇒ Object
- #merge_external_listeners_responses! ⇒ Object
- #merge_response!(other) ⇒ Object
- #response ⇒ Object
Methods inherited from Listener
Methods included from Requests::Support::Common
#create_code_lens, #full_constant_name, #markdown_from_index_entries, #range_from_syntax_tree_node, #visible?
Constructor Details
#initialize(emitter, message_queue) ⇒ ExtensibleListener
Returns a new instance of ExtensibleListener.
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/ruby_lsp/listener.rb', line 47 def initialize(emitter, ) super @response_merged = T.let(false, T::Boolean) @external_listeners = T.let( Extension.extensions.filter_map do |ext| initialize_external_listener(ext) end, T::Array[RubyLsp::Listener[ResponseType]], ) end |
Instance Method Details
#initialize_external_listener(extension) ⇒ Object
74 |
# File 'lib/ruby_lsp/listener.rb', line 74 def initialize_external_listener(extension); end |
#merge_external_listeners_responses! ⇒ Object
61 62 63 |
# File 'lib/ruby_lsp/listener.rb', line 61 def merge_external_listeners_responses! @external_listeners.each { |l| merge_response!(l) } end |
#merge_response!(other) ⇒ Object
79 80 |
# File 'lib/ruby_lsp/listener.rb', line 79 def merge_response!(other) end |
#response ⇒ Object
66 67 68 69 |
# File 'lib/ruby_lsp/listener.rb', line 66 def response merge_external_listeners_responses! unless @response_merged super end |