Class: RubyLsp::RailsPartial::Addon
- Inherits:
-
Addon
- Object
- Addon
- RubyLsp::RailsPartial::Addon
- Defined in:
- lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb
Overview
Ruby LSP add-on that provides go-to-definition and completion for the partial name string of a render call.
The view root is fixed to app/views (this add-on does not support prepend/append_view_path or independent engines).
Constant Summary collapse
- WATCHER_REGISTRATION_ID =
"rails-partial-watcher"
Instance Method Summary collapse
- #activate(global_state, outgoing_queue) ⇒ Object
- #create_completion_listener(response_builder, node_context, dispatcher, uri) ⇒ Object
- #create_definition_listener(response_builder, uri, node_context, dispatcher) ⇒ Object
- #create_hover_listener(response_builder, node_context, dispatcher) ⇒ Object
- #deactivate ⇒ Object
- #name ⇒ Object
- #version ⇒ Object
-
#workspace_did_change_watched_files(changes) ⇒ Object
Watches partial changes under app/views and updates the index incrementally.
Instance Method Details
#activate(global_state, outgoing_queue) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 21 def activate(global_state, outgoing_queue) views_path = File.join(global_state.workspace_path, "app", "views") @index = PartialIndex.new(views_path) @resolver = PartialResolver.new(@index, views_path) register_file_watcher(global_state, outgoing_queue) end |
#create_completion_listener(response_builder, node_context, dispatcher, uri) ⇒ Object
45 46 47 48 49 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 45 def create_completion_listener(response_builder, node_context, dispatcher, uri) return unless @resolver Completion.new(response_builder, node_context, @resolver, uri, dispatcher) end |
#create_definition_listener(response_builder, uri, node_context, dispatcher) ⇒ Object
39 40 41 42 43 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 39 def create_definition_listener(response_builder, uri, node_context, dispatcher) return unless @resolver Definition.new(response_builder, uri, node_context, @resolver, dispatcher) end |
#create_hover_listener(response_builder, node_context, dispatcher) ⇒ Object
51 52 53 54 55 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 51 def create_hover_listener(response_builder, node_context, dispatcher) return unless @resolver Hover.new(response_builder, node_context, @resolver, dispatcher) end |
#deactivate ⇒ Object
29 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 29 def deactivate; end |
#name ⇒ Object
31 32 33 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 31 def name "Rails Partial" end |
#version ⇒ Object
35 36 37 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 35 def version VERSION end |
#workspace_did_change_watched_files(changes) ⇒ Object
Watches partial changes under app/views and updates the index incrementally.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/ruby_lsp/ruby_lsp_rails_partial/addon.rb', line 58 def workspace_did_change_watched_files(changes) return unless @index changes.each do |change| path = Util.uri_to_path(change[:uri]) next unless path case change[:type] when Constant::FileChangeType::CREATED, Constant::FileChangeType::CHANGED @index.add(path) when Constant::FileChangeType::DELETED @index.remove(path) end end end |