Class: RubyLsp::Refactor::Addon
- Inherits:
-
Addon
- Object
- Addon
- RubyLsp::Refactor::Addon
- Defined in:
- lib/ruby_lsp/ruby_lsp_refactor/addon.rb
Class Method Summary collapse
-
.refactor_actions_for(document, range) ⇒ Array<Interface::CodeAction>
Runs the full listener pipeline against
documentatrangeand returns an array of Interface::CodeAction objects.
Instance Method Summary collapse
-
#activate(global_state, _message_queue) ⇒ Object
Called once when the language server activates this add-on.
- #deactivate ⇒ Object
- #name ⇒ Object
- #version ⇒ Object
Class Method Details
.refactor_actions_for(document, range) ⇒ Array<Interface::CodeAction>
Runs the full listener pipeline against document at range and returns an array of Interface::CodeAction objects.
Called from CodeActionsExtension#perform and from the test helper.
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/ruby_lsp/ruby_lsp_refactor/addon.rb', line 87 def self.refactor_actions_for(document, range) return [] unless document.is_a?(RubyLsp::RubyDocument) return [] if document.source.empty? cursor_range = Interface::Range.new( start: Interface::Position.new( line: range.dig(:start, :line), character: range.dig(:start, :character) ), end: Interface::Position.new( line: range.dig(:end, :line), character: range.dig(:end, :character) ) ) node_context = NodeContext.new(document.uri.to_s, cursor_range) response_builder = RubyLsp::ResponseBuilders::CollectionResponseBuilder.new dispatcher = Prism::Dispatcher.new ConditionalListener.new(response_builder, node_context, dispatcher) EarlyReturnListener.new(response_builder, node_context, dispatcher) StringListener.new(response_builder, node_context, dispatcher) StringArrayListener.new(response_builder, node_context, dispatcher) StringFreezeListener.new(response_builder, node_context, dispatcher) ArrayListener.new(response_builder, node_context, dispatcher) HashListener.new(response_builder, node_context, dispatcher) EnumerableListener.new(response_builder, node_context, dispatcher) VariableListener.new(response_builder, node_context, dispatcher) ConstantListener.new(response_builder, node_context, dispatcher) MethodListener.new(response_builder, node_context, dispatcher) ExtractPredicateListener.new(response_builder, node_context, dispatcher) AccessorListener.new(response_builder, node_context, dispatcher) RescueListener.new(response_builder, node_context, dispatcher) SuperListener.new(response_builder, node_context, dispatcher) ExtractIncludeFileListener.new(response_builder, node_context, dispatcher) TapListener.new(response_builder, node_context, dispatcher) LogicalOperatorListener.new(response_builder, node_context, dispatcher) RaiseListener.new(response_builder, node_context, dispatcher) RspecLetListener.new(response_builder, node_context, dispatcher) dispatcher.dispatch(document.ast) response_builder.response rescue StandardError [] end |
Instance Method Details
#activate(global_state, _message_queue) ⇒ Object
Called once when the language server activates this add-on.
62 63 64 65 66 67 |
# File 'lib/ruby_lsp/ruby_lsp_refactor/addon.rb', line 62 def activate(global_state, ) @global_state = global_state # Inject our actions into the standard code-actions response. RubyLsp::Requests::CodeActions.prepend(CodeActionsExtension) end |
#deactivate ⇒ Object
69 |
# File 'lib/ruby_lsp/ruby_lsp_refactor/addon.rb', line 69 def deactivate; end |
#name ⇒ Object
71 72 73 |
# File 'lib/ruby_lsp/ruby_lsp_refactor/addon.rb', line 71 def name "Ruby LSP Refactor" end |
#version ⇒ Object
75 76 77 |
# File 'lib/ruby_lsp/ruby_lsp_refactor/addon.rb', line 75 def version "0.1.0" end |