Class: RubyLsp::ExtensibleListener

Inherits:
Listener
  • Object
show all
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.

Constant Summary collapse

ResponseType =
type_member

Instance Method Summary collapse

Methods inherited from Listener

#_response

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, message_queue)
  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

#responseObject



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

def response
  merge_external_listeners_responses! unless @response_merged
  super
end