Class: RubyLsp::Requests::CodeLens

Inherits:
Request
  • Object
show all
Extended by:
T::Generic, T::Sig
Defined in:
lib/ruby_lsp/requests/code_lens.rb

Overview

![Code lens demo](../../code_lens.gif)

The [code lens](microsoft.github.io/language-server-protocol/specification#textDocument_codeLens) request informs the editor of runnable commands such as tests

# Configuration

To disable gem code lenses, set ‘rubyLsp.featuresConfiguration.codeLens.gemfileLinks` to `false`.

# Example

“‘ruby # Run class Test < Minitest::Test end “`

Constant Summary collapse

ResponseType =
type_member { { fixed: T::Array[Interface::CodeLens] } }

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(uri, lenses_configuration, dispatcher) ⇒ CodeLens

Returns a new instance of CodeLens.



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/ruby_lsp/requests/code_lens.rb', line 49

def initialize(uri, lenses_configuration, dispatcher)
  super()
  @listeners = T.let(
    [Listeners::CodeLens.new(uri, lenses_configuration, dispatcher)],
    T::Array[Listener[ResponseType]],
  )

  Addon.addons.each do |addon|
    addon_listener = addon.create_code_lens_listener(uri, dispatcher)
    @listeners << addon_listener if addon_listener
  end
end

Class Method Details

.providerObject



35
36
37
# File 'lib/ruby_lsp/requests/code_lens.rb', line 35

def provider
  Interface::CodeLensOptions.new(resolve_provider: false)
end

Instance Method Details

#performObject



63
64
65
# File 'lib/ruby_lsp/requests/code_lens.rb', line 63

def perform
  @listeners.flat_map(&:response)
end